Robert Cemper · Aug 4, 2025 go to post

It might be great to remove the related refences also
from official documentation
Py
https://docs.intersystems.com/components/csp/docbook/Python-Native/v1.0.0/irisnative.iris.html#irisnative.iris.function

Nodes.js
https://docs.intersystems.com/components/csp/docbook/NodeJS-Native/v2019.2/external-_intersystems-iris-native_.Iris.html

Java
https://docs.intersystems.com/iris20201/csp/docbook/DocBook.UI.Page.cls?KEY=BJAVNAT_call#BJAVNAT_call_function

.NET
https://docs.intersystems.com/iris20201/csp/docbook/DocBook.UI.Page.cls?KEY=BNETNAT_call#BNETNAT_call_function

Also Class reference for 2025.1
https://docs.intersystems.com/iris20251/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25Net.DB.Iris#Function

like this:
Calls a function (label^routine), passing zero or more arguments and returning the function's return value. Trailing arguments may be omitted, causing default values to be used for those arguments.

This method throws an exception when an error condition is encountered.

routineName

input

The name of the routine that implements the function to be called.

functionName

input

The name of the function to be invoked.

args

input...

The arguments to be passed to the method.

 

return

The value returned by the functionName function.


  • Such a misleading documentation roughly 1.5 years behind reality is not so impressive
  • It took days to find this out.  😖
Robert Cemper · Aug 3, 2025 go to post

quite an interesting hidden feature.

Though testing with _SYSTEM/SYS and %All, this had no visible impact
It is exactly 1 method that breaks in all 4 Nativ packages 
And with %All the rest is available anyhow and working fine.
 

BUT eventually %All is not All enough

Robert Cemper · Aug 1, 2025 go to post

Thanks for the input.
A good idea to put the demo in a separate repo
It is just not directly obvious from OEX
works fine, and module.xml looks good. Review placed 

Robert Cemper · Jul 21, 2025 go to post

>> Naming in ObjectScript has a historic background 
In the beginning, the grand-grandfather of IRIS was a full-stack operating system
And it was running on machines with only 64 KBytes of memory
So saving space in memory was the highest virtue of a developer then.
Consequently, all names were as short as short could be.
Typically using single-character named variables.
And A was different from a to widen the available scope
Over the years, this was kept for backward compatibility and to decrease the fear of upgrades
And I have seen customers running 40+ year old code also in IRIS without any bit changed.

Robert Cemper · Jul 18, 2025 go to post

In your screenshot, I see 

$('<div>') simpledialog2(

But W3Schools says:
https://www.w3schools.com/Jquery/jquery_syntax.asp

Basic syntax is: $(selector).action()
  • A $ sign to define/access jQuery
  • A (selector) to "query (or find)" HTML elements
  • A jQuery action() to be performed on the element(s)

I didn't write JavaScript for decades, and I'm not an expert.
BUT: I fail to detect the point after the closing bracket
It was just my Studio that marked it as an error.

created with NPI

Robert Cemper · Jul 17, 2025 go to post

I wonder how you expect to know that your input is complete without any terminator.
And according to your example, you also don't have a fixed length:
Withoit an clear signal timeout seems to be the only way to know you are complete.
You may read input character by character without guarantee  
how do decide for 1 or 10 or 100 or 1000  ?
Some ending character (eg. not numeric) or a fixed length is required

Robert Cemper · Jul 17, 2025 go to post

Confirmed. I just checked:

  • containers.intersystems.com/intersystems/iris-community:2025.1
  • containers.intersystems.com/intersystems/iris-community:latest-cd

license valid to 4/6/2026

Robert Cemper · Jul 17, 2025 go to post

The correct syntax is &html <   your  content  >

I didn't detect the closing > in your screenshot

It generates:
Write "  your content  "
in the resulting .int code
Just the same as it did in Caché or Ensemble
created with NPI

Robert Cemper · Jul 16, 2025 go to post

My personal preference would be

  • verify Websockets with a js client (even in CSP)
  • then move it to IRIS with all hidden and default features if required at all.

You may check all the old WS examples in OEX

Robert Cemper · Jul 16, 2025 go to post

Hi 

your code
Set WebSoc=##class(%Net.WebSocket.Client).%New(WebSocURL,cre,evl)   
Just uses the Default %Net.HTTPrequest that contains url port, ....
But %New offers more
• Methode %OnNew(pURL As %String, pCredentials As %Net.WebSocket.ICredentials = $$$NULLOREF, pEventListener As %Net.WebSocket.IEventListener = $$$NULLOREF, pAcceptedProtocols As %String = "", pRequest As %Net.HttpRequest = $$$NULLOREF) als %Status
and in %Net.HTTPrequest you have a property port
https://docs.intersystems.com/iris20251/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&PRIVATE=1&CLASSNAME=%25Net.HttpRequest
I never needed it as protocol ws and wss was sufficient.
But there is no other place for a port to be assigned
 

Robert Cemper · Jul 16, 2025 go to post

You mentioned:

WebSockets are enabled on ports 80 & 443, but the code fails

Websockets work bi-directional
SO: Did you assign / map  those ports also in your docker-compose ?

Robert Cemper · Jul 14, 2025 go to post

Docker  build fails :

ERROR MESSAGE
! iris The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested 0.0s
✔ Container docker-setup-1

The required Platform is not mentioned as a Prerequisite

Is it also available for amd64 processors ?

Robert Cemper · Jul 11, 2025 go to post

Possible workaround:
 

$ListToString(%DLIST(DISTINCT(REPLACE(ARCIM_Desc,'<br/>',''))),'<br/>') as "ARCIM_Desc", 
Robert Cemper · Jul 11, 2025 go to post

Details on $LISTTOSTRING  
Your source seems to contain the <br/>
Try a different separator e.g. @ to verfiy it.
If it is in and you can see it, HTML tags < > might be escaped for some reason and not be
recognized but displayed as text instead
 

Robert Cemper · Jul 9, 2025 go to post
	#; Recompute hash here now we have the lock
	Set hashval=$$$hash($lb($$ClassIndexTS^%SYS.cspServer2(db),$roles)_rangelist)

$ROLES of the user might also be involved in the issue

Robert Cemper · Jul 9, 2025 go to post

As a first step, I would check file/directory owner + protection in WINDOWS related to Studio Windows user
< DIRECTORY> is not so specific on the reasons

Robert Cemper · Jun 30, 2025 go to post

again YES !
Any expansion is related to an extension of the internal mapping structure of the  .DAT  file
written to disk If you don't have any restrictions on disk space, you consume the related
overhead in 1 single shot at a time that you control (e.g., startup)
 

Robert Cemper · Jun 27, 2025 go to post

A possible escape from that trap could be to use a dedicated box
That just runs TCPTRACE
So the message runs CLIENT -> BOX -> SERVER -> BOX -> CLIENT

Of course, a qualified network manager might use Wireshark for this issue
 

Robert Cemper · Jun 25, 2025 go to post

In short: 

  • Index ZipIDX On (City,State)  sorts by 2 levels City and State and holds a pointer to the  referred record
  • Index ZipIDX On ZipCode [ Data = (City,State) ] sorts just by ZipCode and holds a pointer to the  referred record but also a copy of City and State This is faster if all you want is to map ZIP to City, State and have no need to access what else is in your record
Robert Cemper · Jun 25, 2025 go to post

Assuming you have full access to your Windows you may take this approach.

  • install TCPTRACE as a local forward
  • it shows you what it gets from Caché
  • and passes it along to your target system
  • you can be sure it knows the network mechanics
  • if you see your text, but no reply you most likely
  • are a victim of Windows firewalls
    • OUTGOING on your end,
    • INCOMING at the target system
    • OUTGOING for the target reply
    • INCOMING from the target on your side
  • So in the worst case, you need 4 explicit rules ! 
  • Adding TCPTRACE on the target system also improves insight on the other end