Having been inspired with Shared code execution speed question/discussion, I dare to ask another one which is annoying me and my colleagues for several weeks.

We have a routine called Lib that comprises 200 $$-functions of 1500 code lines total. It was noticed that after calling _any_ function of another rather big routine (1900 functions, 32000 lines) the next call of $$someFunction^Lib(x) is getting 10-20% slower than previous call of the same function. This effect doesn't depend on:

0 16
0 280

Hey everyone,

I'm diving deeper into Caché ObjectScript and would love to open a discussion around the most useful tips, tricks, and best practices you’ve learned or discovered while working with it.

Whether you're an experienced developer or just getting started, ObjectScript has its own set of quirks and powerful features—some well-documented, others hidden gems. I’m looking to compile a helpful set of ideas from the community.

Some areas I’m especially interested in:

6 3
4 198

If you're migrating from Oracle to InterSystems IRIS—like many of my customers—you may run into Oracle-specific SQL patterns that need translation.

Take this example:

SELECT (TO_DATE('2023-05-12','YYYY-MM-DD') - LEVEL + 1) AS gap_date
FROM dual
CONNECT BY LEVEL <= (TO_DATE('2023-05-12','YYYY-MM-DD') - TO_DATE('2023-05-02','YYYY-MM-DD') + 1);

In Oracle:

2 1
0 132

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?

1 14
0 194
Question
· May 18, 2025
REST API Issue

I have a rest API Class used for getting data from Cache 2018 version.
I have single route '/callfuntions'
I send the following parameters to the API :- className, methodName, params
I use $CLASSMETHOD to execute and send the result back to the client.

If I make more that 10 to 12 requests in quick succession, then it stops sending data.

0 3
0 124

It helps to remove special characters, such as non-utf-8 characters either control characters or unicode characters from text that is not printable or can't be parsed by downstream systems.

There is also $C(32) in this condition; sometimes NBSP appears in the text and it will not be recognized by TIE, but downstream it displays as "?".

2 4
1 326

Hello, we are currently using the Cache Database released in January 2018.

There are no specific classes or SQL mappings in the namespaces where data is stored.

Only a few routines(.mac) and stored data are in the global area.

In this case, when accessing the Cache DB through Java, is it essential to write SQL mappings or wrapper classes? The reason I ask is that our team doesn't have advanced developers who specialize in Cache.

Alternatively, is it possible to directly call pre-existing routines from Java?

0 2
0 95

i have a line in my *.scr file like this:

send: s rlt=##class(%SYS.Namespace).ListAll(.rlt)<CR>
wait for:USER>
send: S A="" F S A=$O(rlt(A)) q:A="" I A["USER"!(A["CLIE") F I=1:1:$L(L,",") S G="^["""_A_"""]"_$P(L,",",I) S B="" F S B=$O(@G@(B)) Q:B="" F J=1:1:$L(B) S V=$A($E(B,J,J)) I (V<48!(V>57))&&(V<65!(V>90))&&(V<97!(V>122)) W A,?10,G,?30,B,!<CR>
wait for:USER>

it errors out with this <SYNTAX> error where the "<" or ">" are not accepted.

0 3
0 123

Using Cache 2017.2 sever as my target.

I have a x64 Ubuntu client setup going. This is NOT server. Just client.

I have the Linux Ubuntu x64 ODBC driver gzip file.

ODBC-2018.1.5.659.0-lnxubuntux64.tar.gz is all I could find. Someone posted it in another post.

I can connect to a test sever that does NOT use SSL. That works pretty easily.

But I have A server with SSL enabled. With Windows Cache ODBC drivers I can use SSL just fine.

This is what my SSLDefs.ini file on the Windows machines look like and it works just fine.

0 1
0 125

I ask ChatGPT periodically to produce ObjectScript or plain MUMPS code for string manipulation, or for implementing known algorithms etc. Occasionally, it does make mistakes or uses non-existing class members but generally not that bad. Is there any tutorial on the subject of using AI for coding, ideally specifically for ObjectScript/MUMPS? Any AI productivity advice, or tricks you are using, or another AI flavor?

Thanks in advance,
Anna

0 4
0 231

Hey everyone.

I'm currently looking at a process where we're utilising the Class Ens.StreamContainer, and was looking to do some deletions outside of any purge routines.

Having been burned before, I wanted to make sure that deleting the container also deletes the contents within.

From looking in the class, the %OnDelete ClassMethod appears to be removing an index from a search table and nothing more.

1 2
0 136

Hello,

One of our clients has a 'Notes' class with over 3 million records. We have a report that pulls data from this table that was taking about an hour to run. Our test environment (which has a copy of the production database) runs the same report query in 1 second.

We attempted to purge and rebuild indices which made an improvement (down to 15 minutes) but still not great.

0 3
0 120

I am receiving the garbled text due to incorrect encoding or decoding. I tried to use the $zconvert function to convert it into the normal text but failed to do that. Can anybody suggest what I have to use to convert that into normal text?

Example: Garbled text that I am getting is "canââ¬â¢t , theyââ¬â¢re".

0 6
0 269
Article
· Apr 1, 2025 1m read
How to get server/instance info

Hi all,

As part of the development an API to know what is the instance of IRIS is connected, I've found some methods to know information about the server that can help you.

Get the server name: $SYSTEM.INetInfo.LocalHostName()

Get the server IP: $SYSTEM.INetInfo.HostNameToAddr($SYSTEM.INetInfo.LocalHostName())

Get the instance name: $PIECE($SYSTEM,":",2)

6 2
0 327

We are receiving the report in text format and it has special characters like ', - like that in the text. Source system is using the UTF8 encoding format hence the text is showing as ' � ' . Is there a way to convert the utf8 to actual character in the DTL.

Thank you,

1 6
0 243

Is there a generic process for "walking" the structure of a virtual document - eg an HL7 message (EnsLib.HL7.Message) or an XML document (EnsLib.EDI.XML.Document).

At least we'd want to be able to visit all "nodes" (HL7 fields or sub-fields, XML nodes) in the virtual document and be able to work out/generate the Property Path (so we could call "GetValueAt").

We can just about come up with something generic for HL7, since it only nests down to 4 levels within each segment, though we're using numeric Property Path's at that point rather than symbolic ones (MSH:1.3 etc).

0 7
0 141