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 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  😉 

Robert Cemper · Oct 14, 2025 go to post

Totally right!
My intention was to show it as granular as possible
to avoid eventual confusion.
 

Robert Cemper · Oct 9, 2025 go to post

Just received notice:

Provide a single page view of free space in IRIS DBs
has changed status to: Community Opportunity
Robert Cemper · Oct 8, 2025 go to post

To me, the most impressive fact about InterSystems is that it doesn't
hide or deny its roots or reject its history, and keep its backward compatibility.

I remember a customer who had composed and used an incredible complicated
program to create knitwear patterns with his equipment for over 30 years without change.
When he migrated to IRIS it was running perfectly without changing a single bit.

This still impresses me more than all the new language features
that force me to adjust versions as an ongoing challenge.

Robert Cemper · Oct 7, 2025 go to post

As you say, IT SEEMS.
And I used it quite intensively. until it was blocked with <PROTECT> by 2024.1
see this Discussion  WARNING: Bug in IRIS Native API
It was intentionally https://community.intersystems.com/post/warning-bug-iris-native-api#comment-282334

Some documentation was adjusted, but not the internal Class Reference
https://docs.intersystems.com/iris20252/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25Net.DB.Iris#Function

It was quite some effort to rewrite all my 9 Native API examples
for Py,. JS, ObjectScript to make them work again

Robert Cemper · Oct 7, 2025 go to post

The Demo on OEX has been reworked
Using a more attractive display for JSON objects
and removing Functions that are not supported anymore.
In addition, I was able to update the version delivered by IPM 

Robert Cemper · Oct 6, 2025 go to post

3 variants come to my mind

  1. writing to ErrorLog  Do LOG^%ETN()
  2.  write to Systrem message.log
     set %evgeny=$io
     open 1 use 1 write !,"Was in my REST code",! close 1
     use %evgeny
  3. If you have a terminal session  LOCK  ^%EVGENY --- And into your code, add this simple loop 
  4.  for  LOCK +^%EVGENY QUIT:$TEST   HANG 0.5

    Now your method loops, and you can attach with any external debugger. Releasing the LOCK from Terminal does the "un-freeze"

Robert Cemper · Sep 28, 2025 go to post

Simplified:  %CSP.Page is a collection of methods and event handlers without any own properties.
Related data are kept outside in %CSP.Request and %CSP.response.
But you may mimic InitialExpressions by using PARAMETERS 

Robert Cemper · Sep 27, 2025 go to post

I've been offering my reports on reviews for more than four years now,
as a personal service to the DC community, to show recent reviews.
And this covers any new review I can detect, not just add-ons to my own 700+ positive reviews
I started it long before the quality reports you mention were even proposed and implemented.

And even at my advanced age, I'm not willing to leave my audience in the lurch
until I'm explicitly forced by DC+OEX managers with a reasonable explanation.
In addition, the quality reports you address have neither a selectable overview
nor any kind of summary or view of progress. 

Robert Cemper · Sep 26, 2025 go to post

DSW definitely offers a strong improvement in graphics.
THOUGH you require some externally installed tools/libraries.

My intention here was to make it IRIS-only and all internal,
concentrating on the actions behind the scene. (query, tables, cubes) 
The charts are more eye-catcher for the visualization 

Robert Cemper · Sep 25, 2025 go to post

I understand that using the IRIS Native API is the important feature.
Is this also valid for IRIS Native API for ObjectScript ????.  
No doubt it is EXTERNAL on a different instance,
talking to the same interface as Java, NodeJS, Python, .NET
facing the same limitations  (Functions !)

Robert Cemper · Sep 25, 2025 go to post

Release notes version 1.0.0

Based on the very positive feedback, I have added a new functionality.
It is now possible to also take a snapshot from a remote system.
The only requirement is to append an URL-Parameter formatted like this:

?SERVER=IP-Address[:SuperServerPort[:Username[:Password]]]

defaults: port=1972 user=_SYSTEM pw=SYS
Example 

http://localhost:42773/csp/user/ZX.dbdash.cls?SERVER=192.168.0.11:11972:SuperUser:SYS
Robert Cemper · Sep 24, 2025 go to post

From Class Docs:
• classmethod ExportAllClassesIndividual(dirname As %String = "", qspec As %String = "", ByRef errorlog As %String, Charset As %String = "", Package As %String = "*", SubDir As %Boolean = 0) as %Status

Export all the classes as individual XML files to a directory.

This method loops through all the classes, exporting each one as an individual XML file named after the classname to the directory dirname. If you specify a Package, then it exports only this package. If SubDir is true,, the method exports sub-packages as subdirectories.

Now the directory is your list of classes and equal sizes of files 
might most likely mean identical content. Or you do a text compare

Robert Cemper · Sep 24, 2025 go to post

You are right. $system.OBJ.Export~whatever is oriented to the Namespace

BUT:
There still seems to be no limitation to map a specific database file
to more than 1 namespace. e.g. USER and MERGER (here Read Only)
Then $system.OBJ.Export~whatever takes what it finds in MERGER.
It's quite a dirty approach and only meant for READING the code, therefore, ReadOnly

In any case, it's safer just to copy the (most likely static) DB of interest
and use it in MERGER