#InterSystems IRIS

19 Followers · 5.6K Posts

InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

Question Jeffrey Drumm · Apr 16, 2023

When an object is created in memory, the object reference (OREF) is represented as a string value when displayed with the Write command:

HICG>Set pat=##class(JD.Sample.patient).%OpenId(70)
HICG>Write pat
1@JD.Sample.patient ; "stringified" OREF
HICG>Zwrite pat
pat=1@JD.Sample.patient  ; <OREF>
+----------------- general information ---------------
|      oref value: 1
|      class name: JD.Sample.patient
|           %%OID: $lb("70","JD.Sample.
14
1 721
Question Anna Golitsyna · Jun 6, 2025

Let's suppose two different routines use one and the same chunk of code. From the object-oriented POV, a good decision is to have this chunk of code in a separate class and have both routines call it. However, whenever you call code outside of the routine as opposed to calling code in the same routine, some execution speed is lost. For reports churning through millions of transactions this lost speed might be noticeable. Any advice how to optimize specifically speed?
P.S. Whenever someone is talking about the best choice for whatever, I am always tempted to ask: "What are we optimizing?".

14
0 234
Question Pietro Di Leo · Jan 17, 2024

Hi everyone, 

Does anyone know how to export projects via VSC? 

I opened the project through the "InterSystems Tools" plugin (command is "Edit Code in Project") and I can correctly work on it.

However, when I try using the "ObjectScript" plugin to export the project (right click on the project -> "Export Project Contents")

This message appears and it is not possible to export the project:

I've tried also to open a new window, then a folder and finally the project, but nothing changes. 

This is an example of my workspace: 


Anyone knows how to do it? 

Thank you! 

14
0 3589
Question Ruiyan Yu · Oct 26, 2023

Hi,

An exception occurs randomly. I expect the value of ^TEST to be 20, but it's not. Did i miss something like closing, flush the stream or locking the global?

Exception

%SaveData+15^%Stream.GlobalCharacter.1×PRAX1Í+^%SaveData+15^%Stream.GlobalCharacter.1^1)e^%SerializeObject+6^%Stream.Object.1^2e^%Save+9^%Stream.Object.1^93e^zCopyFromAndSave+58^%Stream.GlobalCharacter.1^1e^test+11^ry^1e^test+3^ry^4d^^^0

Testcode

test
    n glob s glob=$na(^TEST) k @glob
    n file s file="C:/temp/file.xslt"
    n i f i=1:1:20 w !,$$save(file,glob)
    q

save(file,glob) {
    s fs=##class(%Stream.FileBinary).
13
0 556
Question Corentin Blondeau · Jul 3, 2025

Hello
I want to get the property of a class, sorted by order in storage.

I know we can use
 

        Set definition = ##class(%Dictionary.ClassDefinition).%OpenId(className)
        Set listProperty = definition.Properties
        For ii = 1:1:listProperty.Count(){
                    write listProperty.GetAt(ii).Name

But using GetAt sorts the results alphabetically.

Example :

Class Test.class Extends (%SerialObject, %XML.Adaptor, %JSON.Adaptor)
{

    Property tiers As %String;
    Property journal As %String;
}

listProperty.GetAt(1).Name = "journal" and listProperty.GetAt(2).

13
0 253
Question Scott Roth · Jul 5, 2024

I have a question about using OnInit() within a Ens.BusinessOperation.

When you include OnInit(), does OnInit() only execute when you start a Business Operation? Or does it execute OnInit () every time you send a REST request to the operation. I am trying to pinpoint when the best time is to execute the POST command to get the Token

I am needing to get a Bearer Token from a REST POST call and return the Authorization key prior to making the rest of the REST calls to pull down data.

When not using OAuth, what have you done to get the Token prior to executing any Requests?

Thanks

Scott

13
0 325
Question Michael Akselrod · Oct 29, 2025

Environment:
    Targeted *.inc file (with hundreds of defined macros) is in use throughout the application and included into every class declaration.
    Statement "set a = $$$TestIf(3)" is included into a classmethod with no other code in. Expected output 5
Same macro options in *.inc:
    #define TestIf(%arr)    if %arr>0 QUIT 5
    #define TestIf(%arr)    if (%arr>0) {QUIT 5}
Issue:
    failure to compile class with the same error on all tried definition options as:

13
0 175
Question Raj Singh · Mar 1, 2023

My general question is how to convert to a %Library.ListOfObjects to a Python "array-like" structure for use in Matplotlib.

Specifically, I have a Line Object which is comprised of a list of Points (see classes below). I want to pass the line to Python to create a Matplotlib Path.

Bonus points for converting the Point to a Python tuple!

Class geo.model.Point Extends %SerialObject
{
  Property latitude As %Float(MAXVAL = 90.0, MINVAL = -90.0, SCALE = 6);
  Property longitude As %Float(MAXVAL = 180.0, MINVAL = -180.0, SCALE = 6);
}
Class geo.model.
13
0 608
Question Evgeny Shvarov · Jun 5, 2025

Hi IRIS experts!

I have a parameter in a class that stores a global name:

Parameter GlobalName = "^AGlobal";

then I'm trying to call it as:

set gn=$name(..#GlobalName)

to use it later as:

set @gn@("index")="value"

But! I'm having syntax at set gn=$name(..#GlobalName)

What am I doing wrong?

12
1 187
Question Evan Gabhart · Mar 13, 2025

Is there a way in ObjectScript to return the OS user of the superserver? I know %SYS.ProcessQuery can find this for a given process but is there a clean way independent of a specific process ID I can find the OS user used for background jobs?

For IRIS this is usually irisusr and Caché this is usually cacheusr but may vary based on installation and upgrade history of an instance. I would find it very useful to determine programmatically if a process is running as this particular user when the username may vary.

12
0 246
Question Evgeny Shvarov · Jan 15, 2023

Hi folks!

Have a question for those who are masters of interoperability.

I have a basic task of having one CSV with some data. I need to transform one column in the initial dataset and get the new csv with the same form.

What's the best approach with Interoperability?

Should I user record mapper?

Should I use streams, objects?

What is the best practice?

12
0 819
Question Scott Roth · Apr 12, 2023

We are currently using different iterations of Ens.Director.EnableConfig items to start/stop objects within the Interoperability Namespace. We are looking for ways to minimize our downtime as we move from AIX to a new section of our Network and Red Hat Servers.

Besides using Ens.Director.EnableConfig item and waiting for a response, or just disabling the objects through the Namespace class file, is there a quicker way to stop Services and Operations to ensure the TCP disconnect is sent to those endpoints so we can move the networking rules to ensure they point to new servers?

12
1 868
Question Alan Watts · Jan 2, 2024

We are trying to use Git for Source Code control in our existing application. Currently all Source Control is a manual process. We are running IRIS on a Windows server. The git extension has been installed and initial configuration done. We do get the git tab in Studio. We keep getting the following error:

Git Status:
fatal: detected dubious ownership in repository at 'C:/KBS/dev/server/db'
'C:/KBS/dev/server/db' is owned by:
'S-1-1-0'
but the current user is:
'S-1-5-18'
To add an exception for this directory, call: git config --global --add safe.directory C:/KBS/dev/server/db.

12
0 1041
Question Hannah Sullivan · Aug 24, 2023

I have a persistent class (GetOrgUpdatesResponse) that has a property which is a list of another persistent class (Organization).

What would be the best way to cascade deletes so that on deletion of a parent row each object in the list property is then also deleted? 

I have included a sample of my classes here for clarity

Class Integration.ISIS.BO.SyncOrg.Custom.GetOrgUpdatesResponse Extends (%Persistent, Ens.
12
1 695
Question Pietro Di Leo · Aug 11, 2023

Hi everyone,

Lately, I've been spending a lot of time with Visual Studio Code (VSC), and I've been wondering if there's a terminal or a panel within VSC that acts like the Intersystems Studio Output panel, which serves both as an input and output window and allows the execution of ObjectScript commands.

Could anyone help? Thanks :)

11
1 567
Question Veerraju Grandhi · Jun 16, 2024

Hi, My python code to import a task is as below –

# dont disturb below lines

import irisnative

hostname = "127.0.0.1"

port = 1972

namespace = "%SYS" #change the namespace based on situation

username = "_SYSTEM"

password = "xxxxxxxx"

logfile = "exetask.log"

connection = irisnative.createConnection(hostname, port, namespace, username, password)

dbnative = irisnative.createIris(connection)

# dont disturb upto here

print("Importing LIS Backup Task")

imptask = dbnative.classMethodValue('%SYS.Task','ImportTasks(FileName = "F:\ZBackup\LISBackupTask.

11
0 232
Question Enrico Parisi · Sep 2, 2022

I'm converting a .NET gateway interface (call .NET code from IRIS) from the old "Caché style" that use imported proxy class to the new $system.external .NET gateway as documented in:

https://docs.intersystems.com/iris20221/csp/docbook/DocBook.UI.Page.cls…

For simple case it works and I'm fine, unfortunately I don't understand how to implement/access .NET arrays from IRIS and unfortunately the documentation has no info whatsoever on how to work with arrays.

What I'm looking for is how to implement the same code as described in the old .

11
0 710
Question Lynton Blair · Feb 9

in C++ program with #include iris-callin.h..  The program terminateswhen it tries to execute IRISSECURESTARTA with exit code -1073741515.

const char *username="user", *password="xyz",*exename="Test_Callin";
int termflag = IRIS_PROGMODE|IRIS_TTNONE|IRIS_TTNEVER;

rc = IRISSECURESTARTA(&pusername, &ppassword, &pexename, termflag, timeout, NULL, NULL);

Note: the %Service_Callin setting is Enabled.

»  
11
0 102
Question Dmitrii Baranov · Dec 21, 2025

I have a business service that actively reads data from a remote Postgres database. OnProcessInput opens a XDBC (actually JDBC) connection, executes an SQL query, fetches several thousand rows, iterates the resultset, and closes the connection. On each iteration I also need to update each source row in the remote database using PreparedStatement.

In other words, in every OnProcessInput call I have a long running SELECT statement and several thousands small UPDATE statements.

11
0 153
Question Dmitry Maslennikov · Nov 4, 2022

I have a table, with autoincremented id

CREATE TABLE users (
    id SERIAL NOT NULL,
    name VARCHAR(30) NOT NULL,
    PRIMARY KEY (id)
)

I can add a new item there with an explicit id 

INSERT INTO users (id, name) VALUES (2, 'fred')

And while my id is autoincremented, I can omit it

INSERT INTO users (name) VALUES ('ed')

So, this time, I don't know the id, and I want to somehow get it.

I could do it with LAST_IDENTITY() function, but it just uses %RowID, and have no relation to the primary id

11
0 903