I'm surprised that   data is already imported via SQL but ^myclassD has no content.
So take a look into the related generated class:

Storage Default
{
<Data name="DirDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
- - - - - -
after all properties
</Data>
<DataLocation>^oex.DirD</DataLocation>
<DefaultData>DirDefaultData</DefaultData>
<ExtentSize>986</ExtentSize>
<IdLocation>^oex.DirD</IdLocation>
<IndexLocation>^oex.DirI</IndexLocation>

 <IdLocation> is the one to go for
with all the new Storage strategies (columnar, sharded, ...  )
This might be quite an exotic global name and rarely the traditional.

I was right. 
My 7* review in OEX is still blocked by OEX censors, and your stars are suppressed.
24hrs are promised for reviews in OEX.
Just found it published now  [2026-01-04 13:18:45 UTC]

Using methods inside the class instead of
The external MAC routine in the original code is an elegant and valid approach

Robert Cemper · Dec 31, 2025 go to post

Happy New Year!
Here is a draft version of ZPretty.mac for ISIS
I'm not sure if this is worth to be public at all.

ZPretty ; make JSON readable
#; input= JSON string 
Do(input) public {
    if $e(input)="{" do ##class(%JSON.Formatter).%New().Format(input)
    else  write "<UNDEFINED>"
    quit ""
    }
tst  public ; 
    set jsn={"Name":"Li,Robert K.","SSN":"672-92-9664","DOB":"1975-01-12","Home":{"Street":"986 Washington Blvd","City":"Boston","State":"PA","Zip":"95802"},"Office":{"Street":"6012 First Place","City":"Reston","State":"MT","Zip":"77739"},"Spouse":{"Name":"Avery,Zelda H.","SSN":"323-13-7437","DOB":"1943-03-27","Home":{"Street":"196 Main Drive","City":"Youngstown","State":"WY","Zip":"53229"},"Office":{"Street":"4056 Franklin Court","City":"Bensonhurst","State":"IA","Zip":"27688"},"FavoriteColors":["Black"],"Age":77},"Age":45,"Title":"Associate Marketing Manager","Salary":10421}
    quit jsn 
Robert Cemper · Dec 31, 2025 go to post

I run iris.script at docker start in this demo :  UDP
see docker-compose.yml.
It's for 2 containers. In your case half of it would be enough. 

Robert Cemper · Dec 30, 2025 go to post

In IRiS, instead of ZPretty, you may use this ugly official approach

jsn(jsn) 
    if $e(jsn)="{" do ##class(%JSON.Formatter).%New().Format(jsn)
    else  write "<UNDEFINED>"
    quit

ZPretty was initially designed for Caché, Ensemble, ...

Robert Cemper · Dec 30, 2025 go to post

ZPretty is not in OEX anymore for various version conflicts
But in IPM you may find this workaround left over.

user>zpm "install pretty-json-upd" 

For this and other incompatibilities introduced by version changes the
repo on GitHub is broken and not available until several fixes.
Workaround for the left over version is ZPM once again

USER>zpm "install objectscript-native-api"


Studio-2024.1.5.649.0-win.msi  is still available from WRC download for contracted customers
It works perfectly for me on  IRIS for Windows (x86-64) 2025.1

Robert Cemper · Dec 29, 2025 go to post

My guess youw workaroud ERROR 2 cause ERROR 1

ERROR 2:
Your import of the code is just WRONG.   Wherever you may have it copied  it from

jsn(jsn) 
	if $e(jsn)="{" write $$Do^ZPretty(jsn)
	else  write "<UNDEFINED>"
	quit }

 jsn(jsn)  is a Label with a parameter

But if your COPY/ TEXT manipulator doesn't understand ObjectScript and 
inserts a BLANK before jsn(jsn)  ,  it's no longer a label anymore but just nonsens 
therefore :

ERROR: ONAPI.demo.cls(Menu+35) #1026: Invalid command : 'jsn(jsn)' :
Offset:7 [Menu+34^ONAPI.demo.1]

The compiler is right ! Your code is broken
ERROR 1:
now as the label jsn doesn'1 exist anymore, this MUST be an ERROR

 if pop do jsn(..iris.ClassMethodValue("ONAPI.Person","JSON",pop))

ERROR: ONAPI.demo.cls(Menu+9) #8: <NOLINE> [Menu+8^ONAPI.demo.1] 
TEXT:     if pop do jsn(..iris.ClassMethodValue("ONAPI.Person","JSON",pop))

The compiler is right again! Your code is broken. The label jsn() is destroyed
In Intersystems ObjectScript blanks and tabs are not just for illustration
or visualization but are an essential part of the language with some functionality.
Somehow like exact indenting in Python, just ~60 years longer

In my Studio such typing errors are flagged red immediately during typing.
So I wonder where the obviously broken source came from and how you worked on it

Robert Cemper · Dec 28, 2025 go to post

What you describe is a Basic Class Query. Slightly advanced to embedded SQL
BUT inside a Custom Class Query 
https://docs.intersystems.com/supplychain20251/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_queries_userqueries

You have Exec, and Fetch methods. 
They can mask whatever you like as long as you feed the formal requirements.
Define the following class methods in the same class:

  • querynameExecute — This method must perform any one-time setup.
  • querynameFetch — This method must return a row of the result set; each subsequent call returns the next row.
  • querynameClose — This method must perform any cleanup operations.

Where queryname is the name of the query.

Each of these methods accepts an argument (qHandle), which is passed by reference. You can use this argument to pass information among these methods.

So you can mask your DELETE (implemented by embedded SQL) or any other way
It's not the standard way, but nothing prevents you as long as the formalism is served.

Robert Cemper · Dec 21, 2025 go to post

You may reduce the number of  XDBC connects by 50%
#1)
Create an SQL function for the update

CREATE FUNCTION done_func(integer,varchar) RETURNS integer
    AS 'update my_postgres_table set status=$2 where id=$1'
    LANGUAGE SQL
    IMMUTABLE
    RETURNS NULL ON NULL INPUT
    RETURN 1 ;

#2)
run your SELECT, adding the function in your WHERE clause which is always TRUE
 

select * from my_postgres_table limit 10000 Where 1 = done_Func(id,'S')	

You should check the exact syntax for PostgreSQL
I just composed it guided by
https://www.postgresql.org/docs/current/sql-createfunction.html 
 

Robert Cemper · Dec 20, 2025 go to post

@Evgeny Shvarov  you  pointed me to the correct place
Did some checks using the most native approach.

 set sc=$system.OBJ.Import(file, . . . . .

Removing the Export Tag from the 2nd line in the 'hidden XML'  names DFI

<Export generator="IRIS" version="26" zv="IRIS for Windows (x86-64) 2024.3 (Build 217U)" ts="2025-09-21 16:53:05">

ends with unknown flle type !!!
After re-insert of that Export Tag all import works perfect


​​​​​​might be necessary to teach VScode to add that tag

Robert Cemper · Dec 19, 2025 go to post

Interesting observations.

My export came directly out of STUDIO.
InterSystems Studio Client  2024.1.0 Build 262
Server IRIS for Windows (x86-64) 2025.1 (Build 230.2U)
Simple right click + export ..... (+ Windows Directory).
Just straight, no flags, no anything extra

Robert Cemper · Dec 19, 2025 go to post

to me *.PKG is imported by $system.OBJ.LoadDir(...) whaever the file name is
one file contained a %ZX.* class.
That one required manual compilation as it didn't match the ZX.* pack
a real class, no DFI

Robert Cemper · Dec 18, 2025 go to post

Updated init + load + build of cubes
2025....latest had a minor surprise in init

Robert Cemper · Dec 17, 2025 go to post

here is it  - work in progress  ZPM load DFI
Analytics need manual enable, cube to build still manually
BUT:
all DFI are all there (checked with Studio) and working immedeately

Robert Cemper · Dec 17, 2025 go to post
Just can confirm that it works for me with a correct structure
.../src
       /DFI
           /first.DFI
           /next.DFI
           /andSoOn.DFI

And in module.xml the relevant part looks like this

      <Packaging>module</Packaging>
      <SourcesRoot>src</SourcesRoot>
      <Resource Name="DFI.PKG"/>

BINGO

Robert Cemper · Dec 16, 2025 go to post

No idea about zpm.
Just a guess: if not listed or in a PKG it won't be touched
BUT this loads and compiles it 

set tSC=$system.OBJ.Import(fileref,"ck")
Robert Cemper · Dec 12, 2025 go to post

1️⃣ When you joined the Developer Community and how you first discovered it.
I joined in 2017, and it was by accident.
Looking for help to work around a problem caused by "academic ignorance".
    Some linguistic university experts for German language up in sky, far from reality, decided:
    "S_sharp"  ß (a lowercase only character for hundreds of years)
    will be also an uppercase character from now on.
No one cared about the impact to sort orders, code conversions, pattern match. regular expressions, ...
My cry for help:
German collation of ß in upper and lower case
In DC I got help and advice within a few hours on how to escape
until a new release or bug fix might have an official solution.
Exploring DC was another big surprise for me.
It was rather similar to a proposal I had done in 2005
and  I was massively pushed back by service managers at that time.
DC covered and extended my basic intentions
I fell in love immediately and still feel like a proud grandfather
observing his successful growing grandchildren.
2️⃣ A meaningful moment or story from your personal journey here.
It was somewhat longer than a moment, though just a single trigger.
The challenge was to start working with Docker in some OEX package
Before that, I was rather resistant to publishing complex examples.
The effort to describe a complex setup and not having control
over implementation was rather significant.
With Docker I had a reproducible environment and no traces or remaining
junk after termination.
Another extra was learning to produce videos of my examples for contests.
I never did it before and still don't have any private videos on Youtube.
3️⃣ An article, question, or discussion you consider especially valuable
There are two recent articles that moved me most:
The Wait Is Over: Welcome GoLang Support for InterSystems IRIS + followers
and
Reducing the Footprint of the Docker image of IRIS Community Edition
It's 2 times the same authoring engineer, and what he presents matches my
personal understanding of what quality software system engineering is like:
- precise and detailed analysis
- detailed and fully through tested code before release
- 2 top-class projects

My personal sorrow:
There are groups that may force out the results just because of the
"NOT INVENTED HERE" mentality in some areas.
I speak based on personal experience after being attacked following
a backport of %JSON classes to Caché some years ago.

Robert Cemper · Dec 11, 2025 go to post

You got the point.  Before means "before this century" 
before CSP / WEBstack, .. were introduced 
There were INT routines in %SYS with lots of $ZU() and $VIEW(). Device 63 was quite busy. 
Most are unknown today. But some are still around and still work.  
It's not as rigid as GlobalDB was / (is?)  but has some similarity.

Robert Cemper · Dec 10, 2025 go to post

I'm delighted !
I publish my OEX review also here, just in case it might be "delayed" by OEX censors.

  • An excellent experience 7*
  • The image started so fast that I thought there was a mistake
  • Just ~400Kb instead of the usual 2.5 to 8 GB
  • Everything is there that you may need
    • an editor? there is x ^%
      • as in times before Studio
    • do ^JOBSTAT
      • as in times before CSP and SMP
    • run all classic command-line utilities
  • To me, a time travel back to when I started with InterSystems Products
  • Thank you for this birthday gift on the exact date.

Time travel is possible!!

Robert Cemper · Dec 10, 2025 go to post

BIG CONGRATULATIONS!  
And many thanks to the excellent and engaged team that runs and manages all parts of the Community!

💐🌸🌷🏵🌺🌻🥀