Robert Cemper · Feb 23, 2022 go to post

and that's the effective code behind

Set rc=$zf(-1,cmd_" 2> """_errorfile_""" > """_outputfile_"""")

Robert Cemper · Feb 23, 2022 go to post

Why together ? ? ?  Who wants that ? ? ?   Where ? ? ?
A simple MERGE ^archive(....)=^source(....)  just doesn't maintain any index.
this was my message    

Robert Cemper · Feb 22, 2022 go to post

You have a lucky design without indices. That makes life with 2 distinct globals easy.
The archiving action maintaining the original ID could be achieved by a simple
MERGE from ^source to ^archive.  maintenance of indices could be slightly
effort requiring class methods.  
 

Robert Cemper · Feb 21, 2022 go to post

Sorry. it just turned out that sharing across namespaces doesn't (yet?) work with embedded Python

Robert Cemper · Feb 21, 2022 go to post

I just verified that neither class nor routing mapping works with embedded Python.
Not even the elementary trick to have it as a %Z* class in %SYS.
This applies also to 2022.1 preview. The BUG is logged at WRC.
I share your disappointment.

Robert Cemper · Feb 20, 2022 go to post

Hello Peter,
Like you, I have an > 40-year history with MUMPS dating back before DSM-11.
Not every implementation of the global storage was effíent (no names, no finger-pointing)
What you see today in IRIS is the result of continuous effort on improving performance
and storage efficiency.
In past, the size of a physical disk was the limit. Today with virtual storage systems the
limit is set only by the file system used. This is a fact that InterSystems lives with since "ever". 
A word concerning global efficiency:
Multiple experiences over years showed me that the space consumption with IRIS and 
its predecessor Caché was always significantly lower than with the various source  DBs
I was invited to migrate.  With Sybase, it was rather more impressive than with others.
The immediate consequence of this high efficient storage technology is the gain in speed.
Also with the most modern technologies, there is still a transfer between persistent 
storage  (aka. disk) and memory.  And the less you have to transfer the faster you are.
 
Finally, welcome to this society!
Robert
 

Robert Cemper · Feb 20, 2022 go to post

But be aware to have the method SetNamespace available also the new target namespace to be able to return !
So you either map the class to Namespace %All,
or name the class %ZEmbedded.Utils or similar,  to make it available across all namespaces.

Robert Cemper · Feb 18, 2022 go to post

I couldn't identify in my examples any $LB(),$LI(), $LV,$LL()  like feature.
- In the mixed PY/ISOS example I just called from PY a method in ISOS [ = InterSystems ObjectScrtipt]
- in the PY pure I kept the binary string as found and reloaded it the same way.
  

Robert Cemper · Feb 18, 2022 go to post

AS you push on "nothing in memory" which is not related at all to INDIRECTION 
I have streamlined your code to not leave any traces in memory.

 
ClassMethod PPG() {
 set TABLES(0)="EVEN",TABLES(1)="ODD"
 kill ^||Arturo
 for i=1:1:100 set ^||Arturo(TABLES((i#2)),i)=i 
 set evenTotal=0
 set i=""  if $D(^||Arturo("EVEN",0))
 for  set i=$ORDER(^(i),1,val) QUIT:i=""  if $i(evenTotal,val) 
 zwrite evenTotal kill ^||Arturo QUIT}

OLÉ

Robert Cemper · Feb 17, 2022 go to post

just do it in a classMethod in Objectscript
don't forget to return to your original namespace to find where you came from

Robert Cemper · Feb 17, 2022 go to post

Which evidently proves that you have  to chase a network performance  problem   ( !! REMOTELY !!)
and not a problem in the code of the API.

Robert Cemper · Feb 17, 2022 go to post

Next variant

ClassMethod Indirection() [  PublicList = (ODD, EVEN) ]


or using %EVEN,%ODD instead of EVEN, ODD

Robert Cemper · Feb 14, 2022 go to post

It should be sufficient to add this to init:script

set user=##class(Security.Users).%OpenId("unknownuser")
do user.Roles.Insert("%All")
do user.%Save()
 ;;; just for comfort
set smp=##class(Security.Applications).%OpenId("/csp/sys")
set smp.AutheEnabled=64
do smp.%Save()

set

Robert Cemper · Feb 9, 2022 go to post

FOR loop does not accept a quit with argument.

ERROR: CodeGolf.CHK.cls(7) :QUIT with arguments not allowed here c

but return is 5 chars more 

Robert Cemper · Feb 6, 2022 go to post

possible but not likely:  your friendly WIN Firewall blocks port 1972 in both directions)

Robert Cemper · Feb 6, 2022 go to post

You could check in mgmt Portal  MEMORY at the Bottom Super server Port
The next chance is that you run out of licenses. Also available in MgmPortal.  
(CSP/ZEN can be a huge license eater)

Robert Cemper · Feb 6, 2022 go to post

#1
Caché Studio can't access IRIS for version reasons. Reverse IRIS studio can sometimes.
Better run separate versions.
#2
Studio requires access to SuperServerPort.  Actual 1972 previous was 51773.
if your IRIS runs in a Docker Container check the port mapping .