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!

💐🌸🌷🏵🌺🌻🥀

Robert Cemper · Dec 4, 2025 go to post

Late suggestion:
if you interpret your <entry> as a piece separator in your XML string, you may apply this trick

;; asssuming your input is in xmltext
;; get the 4th entry
set entry4=$piece($piece(xmltest,"<entry>",4+1),"</entry>")
;;-------^---------------------------------^
Robert Cemper · Dec 4, 2025 go to post

A guess from the hip:

  • import of *.CSP is followed by compiling it to *.CLS,  which is compiled to *.INT
  • import of *.CLS doesn't necessarily trigger a compile
     
Robert Cemper · Dec 2, 2025 go to post

* It's just great to see  this  excellent example
* still in maintenance and updated
* It's my personal favourite 
* working, refreshed and kept in shape over the years.

I wish I could see more of those packages in OEX

Muchas Gracias Salva ! 🤝

Robert Cemper · Nov 26, 2025 go to post

This reminds me of the ages-old service rule

  1.  The customer is always right
  2.  If it is not right, then #1. applies automatically

😁

Robert Cemper · Nov 26, 2025 go to post

I composed a small example as DV.MAC  with  36 conditions. and  -as expected- hit no limit.
 

DV ;
	for i=1:1:50 {
		set x=$r(40)
		set col=$SELECT(
 			x=1:"col_1",
			x=2:"col_2",
			x=3:"col_3",
			x=4:"col_4",
			x=5:"col_5",
			x=6:"col_6",
			x=7:"col_7",
			x=8:"col_8",
			x=9:"col_9",
			x=10:"col_10",
			x=11:"col_11",
			x=12:"col_12",
			x=13:"col_13",
			x=14:"col_14",
			x=15:"col_15",
			x=16:"col_16",
			x=17:"col_17",
			x=18:"col_18",
			x=19:"col_19",
			x=20:"col_20",
			x=21:"col_21",
			x=22:"col_22",
			x=23:"col_23",
			x=24:"col_24",
			x=25:"col_25",
			x=26:"col_26",
			x=27:"col_27",
			x=28:"col_28",
			x=29:"col_29",
			x=30:"col_30",
			x=31:"col_31",
			x=32:"col_32",
			x=33:"col_33",
			x=34:"col_34",
			x=35:"col_35",
			1:"more")
		write i,?4,x,?10,col,!
	}		
 

result:

. . . . 
23  32    col_32
24  39    more
25  39    more
26  31    col_31
27  10    col_10
28  36    more
29  24    col_24
30  21    col_21
31  2     col_2
. . . .
Robert Cemper · Nov 24, 2025 go to post

I met a similar issue.
A new IDEA might be to fix the interface for IDEAS   😉

Robert Cemper · Nov 14, 2025 go to post

While you are in  terminal  $IO="|TRM|:|10468" or similar

from Studio it is  "|TCP|1972|11096"   with  1972 as Superserver port
It's one of the differences

Robert Cemper · Nov 14, 2025 go to post

I fully support your proposal.
I published >700 reviews for the actual 1156 visible packages.
And there are several challenges to be addressed with any new structure.

  • The reviews with stars focus on an actual individual snapshot.
  • Similar to the code or example, they age and may become invalid.
  • Ongoing maintenance by creators can't be expected
  • So a clear separation between actual and maintained packages and those just kept for historical reference could be useful.
  • The decision for maintenance must be left to the creator
    • Example:
    • If some essential function in IRIS is dropped without replacement
    • with no acceptable workaround, I'd move it to the archive
    • I just had to unpublish some packages for this reason 
  • Another category could be packages where ISC takes responsibility.

This isn't a solution, but a step in between to improve the actual situation
I wonder how many of the 1156 packages might move to the archive without maintenance

There is no voting on the numbers added

Robert Cemper · Nov 13, 2025 go to post

Chrome could be a beast on caching
For other cases, I had to clear  its cache from settings several times
The latest AI stuff even modified my text during typing.
I had to fight to lock it in chains 

Robert Cemper · Nov 9, 2025 go to post

Hi @Evgeny Shvarov 
You inspired me to extend the standard Dockerfile sequence by this line

RUN --mount=type=bind,src=.,dst=. \
    iris start IRIS && \
    iris session IRIS < zpm.script && \
    iris session IRIS < iris.script && \
    iris stop IRIS quietly

and zpm.script is basically the version-independent one-liner sliced to readable pieces

zn "%SYS"
 ;; from onezpm
hang 3
write !,"from onezpm",!
set r=##class(%Net.HttpRequest).%New()
set r.Server="pm.community.intersystems.com"
set r.SSLConfiguration="ISC.FeatureTracker.SSL.Config"
do r.Get("/packages/zpm/latest/installer")
do $system.OBJ.LoadStream(r.HttpResponse.Data,"c")
ZPM "repo -r -n registry -url https://pm.community.intersystems.com/ -user """" -pass """""
zpm "enable -community"
hang 2
Write !,"ZPM ready",!
halt

This makes me independent from the limits of intersystemsdc/.....
and I can use images from 
containers.intersystems.com/intersystems/****-community
with a minimal invasive approach without touching any other part of the repo

Robert Cemper · Nov 9, 2025 go to post

In most cases, I've seen working before
the real message was "community license expired."
You see it only in the builder log. OR
using  docker compose --progress plain build  from command line.
workaround:
use instead.  intersystemsds/iris-community or intersystemsdc/irishealth-community  
:latest is always the default

Robert Cemper · Nov 9, 2025 go to post

Yeah!
If there is a reference of how to add -ml- functionality to available intersystemsds/iris-community and intersystemsdc/irishealth-community 
The other possibility could be to change to NON-intersystemsdc versions
and add the single-line installation for ZPM.  Not my favorite.  

Robert Cemper · Nov 9, 2025 go to post

That means that the -ml- versions are requested in Dockerfile or docker-compose.yml.
It is not immediately visible that ML is required and used.
For a few packages, it was pretty obvious that
it came in by cut&paste from previous packages..

Robert Cemper · Nov 5, 2025 go to post

technically correct but not really a practical solution
for 50+ affected packages in  OEX  

Robert Cemper · Nov 4, 2025 go to post

Thank you @Dmitry Maslennikov !
You confirmed my initial suspicion.

And the missing intersystemsdc version (including preinstalled ZPM) 
affects a rather broad range of packages in OEX.

Robert Cemper · Oct 29, 2025 go to post

1) you miss a final condition in $SELECT(). It's the 1:
$SELECT(^GlFSL("Debug")>0:Entry^HS.Local.VA.Util.Log(%arr,,"D"),1:QUIT)
2) QUIT doesn't return a value but <UNDEFINED> error if you don't have 
a SET QUIT=""  somwhere before or use $GET()
this may fit

$SELECT(^GlFSL("Debug")>0:Entry^HS.Local.VA.Util.Log(%arr,,"D"),1:$GET(QUIT))

Command QUIT is just appropriate with $CASE(...)
https://docs.intersystems.com/iris20252/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_fselect#RCOS_fselect_select_and_case

Robert Cemper · Oct 29, 2025 go to post

TestFor.inc
 

#define MyLoop(%count) set x="" for i=1:1:%count set x=$order(^%SYS("JOURNAL",x),-1) write x,! 

in Test class:
 

ClassMethod Mike()
{
	$$$MyLoop(7) Write ?5,$get(@$ZR," *** "),!
}	

Resulting in

PURGED
      ***
PREFIX
 
MAXSIZE
     1073741824
LIFESPAN
      ***
LAST
     1^C:\InterSystems\IRIS242\mgr\journal\20251029.003
EXPSIZE
     0
CURRENT
     1^C:\InterSystems\IRIS242\mgr\journal\20251029.003
Robert Cemper · Oct 29, 2025 go to post

Thanks for the correction.
I had something similar in mind, but didn't find the related doc!

Robert Cemper · Oct 28, 2025 go to post

So this means that the IF is not applicable in your context.
What commands are before the $$$TestIf(3) and after  ? 
I think of some  WRITE  $$$TestIf(3) .....    
Or you may try to explicitly write the macro-generated code to see any hidden issue
I'm running a bit out of fantas,y what may go on