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 

Robert Cemper 路 Oct 28, 2025 go to post

Strange.  It should generate   IF (3>0) {QUIT 5} and accept it.
Could you pls simplify the case for testing to 

#define TestIf(%arr) if %arr>0 QUIT 5

Not yet Halloween, but this looks spooky:
For me, all variants work: 
My versions:
InterSystems Studio Client  2024.1.0 Build 262
Server IRIS for Windows (x86-64) 2024.3 (Build 217U)

Robert Cemper 路 Oct 28, 2025 go to post

Now it's clear   instead of   (%arr 0)  you simply should write (%arr>0)  
The ObjectScript compiler is interpreting the blank after %arr as an argument terminator

Robert Cemper 路 Oct 28, 2025 go to post

Another challenge is to enable WebSocket protocol on your webserver
I just had the "pleasure" to do this for IIS 馃懞
It's not a default

Robert Cemper 路 Oct 28, 2025 go to post

(error on compiling within a class) like: 
#define TestIf(%arr)        if (%arr > 0) { QUIT 5 }    ; no final dot.

#define is an element of ObjectScript
so it has to be embedded in a [Class]Method 
and it is only available within that method

It can't be flying free inside a class definition.

If you need your $$$TestIf(...)  in more than 1 method, you can deposit
it in some TestIf.INC  and include it BEFORE the Class statement !!
Then it is visible to ALL methods.

Attention: You can INCLUDE just 1 single  *.INC in a class definition.
If you need more than 1, you have to cascade it with #include  in  the first *.inc

Include TestIf

Class A.PERSON1 Extends %Library.Persistent
{
Parameter GlobalName = "^.........!"  ;;
/// .......
ClassMethod michael(param) as %Integer
{
    $$$TestIf(param)
 .........
    quit $$$OK
}

 
   

Robert Cemper 路 Oct 28, 2025 go to post

The AI example is misleading anyhow, as it just does a $O loop without any action to be done 
*.inc is typically kind of text generation code during compilation. 
What is your expectation for using the *.inc ?

%in and %gn are just text replacement parameters:
%gn is used as globalname, %in as first level subscript

Robert Cemper 路 Oct 27, 2025 go to post

If you just see pre you may have a problem with your  &html< ........>  sequence
that translates to write ........,! including all quoting requirements,

while <pre> any text </pre>  is just straight HTML

and  #(variable)# is a CSP instruction to display the actual content of a variable
and avoid any extra spaces

Robert Cemper 路 Oct 25, 2025 go to post

this may help to get the plain %request object:

k ^SPOOL s %io=$I O 2 u 2 ZW %request c 2 u %io

or whatever object you need to trace

Robert Cemper 路 Oct 25, 2025 go to post

From Class Docs.:

Somewhere in the CSP page. This is just ~20% of the content

Robert Cemper 路 Oct 22, 2025 go to post

I can just confirm your experience. Must be a bug in irisession on WIN.
My workaround for termination:

HALT followed by blank
Then an empty line following.

Otherwise, the last character is repeated endlessly until all memory is consumed.
Neither mouse nor keyboard reacts. I had to reboot several times
 

Robert Cemper 路 Oct 22, 2025 go to post

There are geographies in this world where a Decimal-Comma is used instead of a Decimal-Point.
Never met a Decimal-Pipe  馃槈