go to post Otto Medin · Aug 7, 2017 This only matters for very long loops (and you'd need a pretty extreme scenario for it to matter even then), but a post-conditional 'quit' is only meaningful if there's more code after it, and it comes with a performance cost, so this line: USER>for count = count:1 set ref=$query(@ref) quit:ref="" ...should be: USER>for count = count:1 set ref=$query(@ref) if (ref="") quit
go to post Otto Medin · Jun 16, 2017 ...or did you already have data in the table when you added the index on A? Assuming that some or all of the pre-existing data is in your WHERE range, that would explain your problem, and as others have commented, an index rebuild is the remedy.
go to post Otto Medin · Jun 16, 2017 ([@Kyle.Baxter]: Your answer is in response to [@Scott.Morrison]'s comment, right?)Another thing to consider is that child objects have non-integer IDs, so you can't use bitmap or bitslice indices on their properties.
go to post Otto Medin · Jun 13, 2017 Since %PARALLEL was added to the mix, you can't be sure that $order beats SQL.
go to post Otto Medin · Jun 8, 2017 Depending on the exact behavior you're after, the "binary follows" operator (]) may do the trick. For your two values, it yields the desired result, regardless of how you set them: USER>set a = "1.0", b = "2.2" write a]b 0 USER>set a = "1.0", b = 2.2 write a]b 0 USER>set a = 1.0, b = 2.2 write a]b 0 USER>set a = 1.0, b = "2.2" write a]b 0
go to post Otto Medin · May 22, 2017 Hi,Here's how to add an HL7 Business Operation to your Production:https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=EHL72_business_operationNote that the instruction to "Click HL7 Output" refers to a tab in the wizard window. Once there, you can select HTTP as the Output Type.Otto
go to post Otto Medin · May 22, 2017 Hi,Here's how to add an HL7 Business Operation to your Production:https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=EHL72_business_operationNote that the instruction to "Click HL7 Output" refers to a tab in the wizard window. Once there, you can select HTTP as the Output Type.Otto
go to post Otto Medin · May 22, 2017 Hi,A couple of questions, in order to better understand what to recommend:Is the Caché instance where you're running the script an ECP client of the remote Caché instance?I can't quite parse "on just one server for all server". Is there a typo in there somewhere?Cheers,Otto
go to post Otto Medin · May 18, 2017 That counts the first-level subscripts, but it ignores the root node, as well as deeper-level subscripts, e.g: USER>set (^x, ^x("a"), ^x("b","c"), ^x("b","d")) = "" USER>set global=$name(^x),count=0 USER>set i="" for { set i=$o(@global@(i)) quit:i="" if $increment(count) } USER>write count 2 Otto
go to post Otto Medin · May 18, 2017 USER>set (^x, ^x("a"), ^x("b","c")) = "" USER>set ref = "^x", count = $data(@ref)#2 USER>for count = count:1 set ref=$query(@ref) quit:ref="" USER>write count 3 USER> Perhaps someone has a more elegant way to make sure the root node gets counted...? Otto
go to post Otto Medin · May 17, 2017 Hi Jiri,The article you're referring to is from the early days of Ensemble, when we used an adapter library from a partner. This arrangement changed a few years ago, when the important needs of our users were sufficiently covered by our native adapter library. At that point, support for some non-critical interfaces was dropped.I've looked around for examples of AS2 use with Ensemble, but so far I've drawn a blank. Perhaps others can comment, but failing that, my advice is that you speak to your local InterSystems representatives about your requirements and potential ways forward.Kind regards,Otto
go to post Otto Medin · May 9, 2017 Here's a thread on how to use ^%GSIZE, as well as a couple of its 21st century peers:https://community.intersystems.com/post/database-table-size...and here's info on global mapping:http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...Otto
go to post Otto Medin · May 9, 2017 Hi Steve,Here are a couple of ways to do this:1. Use ^%GSIZE to look at the size of your index global before and after you populate your new index. (If you look at the class definition, the global name is listed as "IndexLocation" in the "Storage" section.)2. Map the index global to a separate database and look at the size of the CACHE.DAT.The advantage of the second approach is that subscript-level mapping lets you selectively isolate indices.Otto
go to post Otto Medin · Mar 22, 2017 Hi,Ensemble has a piece of infrastructure to handle parallel calls. Here's how to run it:for tCounter = 1:1:10 { set tCall = ##class(Ens.CallStructure).%New() set tCall.TargetDispatchName = ”MyBusinessHostClass" set tCall.Request = ##class(MyRequestClass).%New() set tCall.Request.MyProperty = "Some value" set tRequestList(tCounter) = tCall}set tTimeout = 10set tSC = ..SendRequestSyncMultiple(.tRequestList, tTimeout)After that finishes, you can access the individual responses like this:for tCounter = 1:1:10 { set tStatus = tRequestList(tCounter).ResponseCode set tResponse = tRequestList(tCounter).Response}Hope that's what you're looking for,Otto