go to post Robert Cemper · Aug 31, 2020 make sure your / is really just a / and not surrounded by some nonprinting stuffdo a check e.g on https://www.xmlvalidation.com/ (ending at line 1 character 183) could also mean you are missing<?xml version="1.0" encoding="UTF-8"?> as first line. next possible trap: your xml is not encode in UTF-8 (but in some other [windows?] code after modification with Notepad.exe or similar.
go to post Robert Cemper · Aug 31, 2020 very quick: $DATA() returns: 0 no node, no data 1 node exist and has data 10 node exist has descendants but no data 11 node exist has descendants and has data # is the modulo operator and #10 means you just get the rightmost part of the $Data() result : 1 or 0 (true/false)So $Data(^EDLIST("DIAG",code),value)#10 means: If the node has data than the content is in value.otherwise value is useless, skip it
go to post Robert Cemper · Aug 31, 2020 @Evgeny Shvarov I appreciate that process with HUMAN verification. And there was never any issue with the other 35 applications.As a massive user, I state: II is just OK as it is ! Pls. don't change!
go to post Robert Cemper · Aug 30, 2020 this is a feature of OEX.The link only works after the application was approved. some times in the future.After a long day without reaction I didn't expect a fast reply in the meanwhile the link to GitHub: https://github.com/rcemper/Restart-httpd-for-SMP
go to post Robert Cemper · Aug 30, 2020 OK.There was no quick shot from the hip out of the community to help me.So I went to dig into the subject myself and found an acceptable solution.The result is now available on Open Exchange and it is also LINUX / UNIX aware and not just for windows
go to post Robert Cemper · Aug 29, 2020 A test with 102,794 rows confirmed the performance difference.#1) on index xitmRows selected: 61320 Global Ref: 488,861 Commands: 5.244,585 Cached Query: %sqlcq.CACHE.cls16 #2) on index ycolRows selected: 61320 Global-Ref: 133,812 Commands: 3.909,205 Cached Query: %sqlcq.CACHE.cls13 Reducing the query output to SELECT COUNT(ID) makes the difference even more dramatic#1) Performance: 0.457 sec Global-Ref: 574,193 Commands: 2.138,695#2) Performance: 0.082 sec Global-Ref: 205,973 Commands: 724,288
go to post Robert Cemper · Aug 29, 2020 This is am old post but I never got any reply or update on the subject.Is this still valid or fixed meanwhile ?
go to post Robert Cemper · Aug 29, 2020 This article may help you. Effective use of Collection Indexing and Querying Collections through SQL
go to post Robert Cemper · Aug 27, 2020 This might make your task easier ^EDLIST("DIAG", "X123")=" internal health"^EDLIST("DIAG", "X234")=" External health". . . So you will need this Function / Method to Update your segment:The class is just a container for the method Class ED.Update [abstract] { /// assumption you have the full Segment already in a string ClassMethod AddDescription(ByRef segment as %String) as %Boolean { set code=$piece(segment,"^") if $data(^EDLIST("DIAG",code),value)#10 set $piece(segment,"^",2)=value quit $test } } now all you have to do /// ... get the segment from DG1 if ##class(ED.Update).AddDescription(.segment) { /// .....Update the segment in DG1 } If the code is not defined you just skip the update
go to post Robert Cemper · Aug 27, 2020 "plan to load into a global" in which way? straight global, class, .. ??? pls. explain
go to post Robert Cemper · Aug 26, 2020 Try: Class test.Person Extends (%Persistent, %XML.Adaptor) { Property Id As %Integer [ Calculated, SqlComputeCode = { Set {*}={%%ID}}, SqlComputed ]; Property Name; } if you don't want to touch the Class you may inherit it from some common Super-Class.
go to post Robert Cemper · Aug 24, 2020 With pure routines, this is an almost impossible attempt.Since DO doesn't have a differentiator between calling a function or procedure, internal or public or just looping [ do {} while ] If you do it inside a class you have all this information on functions and procedures in %Dictionary.*So you can define exactly what you search. And using the code generator you may even do it at compile time.
go to post Robert Cemper · Aug 17, 2020 The most simple way is to redirect your I/O to a TCPport where another job provides you with the expected input:#1) have a listener: (any port, I use 7777 for the example) set listen="|TCP|7777"open listen:(:7777):0 if '$test write "port busy",! quituse listen read requestwhile request'="/* your end condition */" { /* match request for correct reply */ write reply,! }close listen #2) at your report side all you have to do is set server = "|TCP|7777"open server:("127.0.0.1":7777):0if '$test write "port busy",! /* termination sequence */ quituse server/* launch your program */ here the listener sits on the same machine but it could be any reachable IP-address.the only critical point is if your program fiddles around changing $IO
go to post Robert Cemper · Aug 17, 2020 it is not possible within the same class as you break the uniqueness of names. But if you have class A1 with Method MX(....) you can create class A2 Extends A1 and overload Method MX as you like or need.You still can call MX of class A1 from class A2 using ##super() All with the assumption that neither class A1 nor Method MX is FINAL
go to post Robert Cemper · Aug 17, 2020 Use method FindAt for %Library.GlobalCharacterStream https://cedocs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25Stream.Object#FindAt
go to post Robert Cemper · Aug 16, 2020 @Dmitry Maslennikov Thanks for the excellent example! The only addon: C/E code has to be separated from IRIS code. (Not really a challenge)
go to post Robert Cemper · Aug 15, 2020 Did you consider to run that single app on IRIS and connect to your Caché over ECP ?It works in both directions.
go to post Robert Cemper · Aug 13, 2020 Finally a serious follower to the FeatureMap we have seen last on C/E 2015.2 https://cedocs.intersystems.com/ens20152/csp/docbook/featuremapCache.csp