go to post Robert Cemper · May 21 Write to a DataBase with no Read is not possible by principle.Think if indices and other information for structural maintenance.BUT:You may create your own WRITE in a method, function, background job, ...that elevates to RW access and drops it at completion.details: Privileged Routine Applications
go to post Robert Cemper · May 11 I prepared a pull request for standard Docker supporthttps://github.com/r-cemper/PR_First-Vector-Search-on-IRIS
go to post Robert Cemper · Apr 30 #1) in %SYS find the sessions by this Stored Procedure: #2 Next based on the SessionId I can open the Object %SYS>set sess=##class(%CSP.Session).%OpenId("kTkyVXwgxw") %SYS>set pid=sess.ProcessId %SYS>if $l(pid) set tSC=$$DeleteSession^%SYS.cspServer(pid) The last row was found in Class %CSP.UI.Portal.CSPSessions ClassMethod EndSessionAttention. Not every CSP Session has also a pid !
go to post Robert Cemper · Apr 18 That's a typical case,where I write my personal ZZanyname function into %ZLANGF00.macto hide the details
go to post Robert Cemper · Apr 18 which version ? I tried and failed.CLASS DOES NOT EXIST>%FromOref+8^%Library.DynamicObject.1 *%Library.EntityProjectionUtilSAMPLES>w $zvIRIS for Windows (x86-64) 2024.3 (Build 217U) Thu Nov 14 2024 17:59:58 EST
go to post Robert Cemper · Apr 14 Just to confirm naming in COS GlobalName is everything between Caret ^ and left Parenthesis (GlobalSubscript is everything within left and right Parenthesis ( )
go to post Robert Cemper · Apr 14 Did you mean to map this Global ? ^DepartmentMasterData("^E2C8.D9IS.*") ????? or just ^E2C8.D9IS.* ? with all subscripts
go to post Robert Cemper · Apr 8 OK To Stream needs 1 line 2 statements ClassMethod personsidGET(messageRequest As dc.Sample.v3rest.requests.personsidGET) As %Stream.Object { set stream=##class(%Stream.TmpCharacter).%New(),sc=##class(dc.Sample.Person).%OpenId(messageRequest.pathid).%JSONExportToStream(.stream) return stream } To String is shorter (just 1 statement) as you don't need to initialize %String) ClassMethod personsidGET(messageRequest As dc.Sample.v3rest.requests.personsidGET) As %String do ##class(dc.Sample.Person).%OpenId(messageRequest.pathid).%JSONExportToString(.string) return string {
go to post Robert Cemper · Apr 7 not just Sample.Person but also Sample.Address,or whatever serial class you refer to require %JSON Adaptor.then set person=##class(Sample.Person).%OpenId(3) >set sc=person.%JSONExportToString(.Jperson) set zjson={}.%FromJSON(Jperson) ZWRITE Jperson="{"LIMIT":103,"Name":"O'Rielly,Xavier E.","SSN":"331-77-5308","DOB":"1957-05-26","Home":{"Street":"8757 Elm Place","City":"Miami","State":"FL","Zip":"92027"},"Office":{"Street":"413 First Drive","City":"Miami","State":"NH","Zip":"83830"},"Age":67,"RowVer":0}" person=<OBJECT REFERENCE>[2@Sample.Person] sc=1 zjson=<OBJECT REFERENCE>[13@%Library.DynamicObject] and there is your dynamic object
go to post Robert Cemper · Apr 1 there is no description of how to communicate with Butlerat the moment it hangs around like a lazy chap
go to post Robert Cemper · Mar 10 Congratulations to the participants and winners.Special BIG THANKS to the organizers and administrators of this contest. 💐🏵🌷🌻🌹I'm really proud to see how this community has grown and raised in quality.
go to post Robert Cemper · Mar 3 do ^ADMIN indicates that you run a classic straight ObjectScript program.while WRITE just has 1 direction to act READ is bi-directional.READ can send some text as prompt and waits for reply.The only bi-directinal device I know of are network connections as TCP, UDP, TRM,FTP,..The common feature is : they communicate out of your IRIS instance.Inside IRIS you may do a redirection e.g to some TCP port like |TCP|7000but then this port is blocked. No other process can touch |TCP|7000.So you need an external port wrapper to some other port. e.g. |TCP|7100 Then you can handle this bi-directional communication either by sequenceor you have a list of prompts and the expected replies or similar. The sequence of operation could then be: have a STARTER that runs in background initiate the external wrapper run do ^ADMIN start the FOREGROUND connect to external wrapper send prompts to terminal get replies from external file send it back to port which forwards it to ^ADMIN hanging in background The most tricky point is to handle situations where the communicationif it is not just 1 Prompt :=> 1 Answer butmultiple Prompts or WRITEs :=>1 Answer or 1 Prompt :=> multiple Answers.So I'd suggest instead of an IRIS internal solution rather look for anexternal Terminal program to consume and apply your answer script.
go to post Robert Cemper · Feb 26 check if your lines start with the labels or if you have some leading <blank> or <tab>if so it is interpreted as function call instead of a label
go to post Robert Cemper · Feb 25 slightly shorter using Julian Date USER>set hours=-3 write $zdt($zdth(hours*3600+$zdt($h,-2),-2)) Sorry, I just couldn't resist
go to post Robert Cemper · Feb 25 From Ensemble.inc: #define TRACE(%arg) $$$catTRACE("user",%arg) #define sysTRACE(%arg) $$$catTRACE("system",%arg) #define catTRACE(%cat,%arg) Do:$$$DoTrace ##class(Ens.Util.Trace).WriteTrace(%cat,$$$CurrentClass,$$$CurrentMethod,%arg) #; #define DoTrace $S($D($$$EnsJobLocal("DoTrace")):$$$EnsJobLocal("DoTrace"),1:##class(Ens.Util.Trace).DoTrace()) #; #define EnsJobLocal %Ensemble #; . . . . Class Ens.Util.Trace [ Abstract, ClassType = "", ProcedureBlock, System = 4 ] { ClassMethod DoTrace() { Set tJobConfigName=$$$JobConfigName Quit $G($$$ConfigTrace(tJobConfigName),0)||(""'=$G($$$JobTraceDevice))||$$$IsTerminalDevice($IO) }
go to post Robert Cemper · Feb 21 Never tried it for long time , but $system.CSP.Shell() might be a starting point$system.CSP.* seems to have some more useful methods.
go to post Robert Cemper · Feb 20 I followed this rules with (1,1) as baseStarting any other point than (1,1) simply shortens the spiral.now I reached 259 I really dislike the result as it is composed so unfriendlyjust to save same bytes that nobody asked for.