Question Anna Golitsyna · Jun 6 Shared code execution speed 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? #Performance #Caché #InterSystems IRIS 0 14 0 117
Question Anna Golitsyna · Jun 2 How to access and clean Application Error Log programmatically? I like the Application Error Log functionality a lot. However, it becomes time consuming to inspect it date by date and directory by directory on a multidirectory server. Ideally, I would use an existing error class to write a custom error report by date, selected namespaces, etc. Does such a system class actually exist? Not that I found. The detail level on the screenshot below is enough. #Error Handling #Caché #InterSystems IRIS 0 9 0 74
Discussion Anna Golitsyna · Apr 10 Using AI to produce ObjectScript code 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 #Caché #InterSystems IRIS 0 4 0 111
Question Anna Golitsyna · Feb 4 How to find all globals in routines? The task is to find all globals that are referenced in certain routines. I could search for ^ using class(%Studio.Project).FindInFiles but that would also find ^ in comments and function calls. I can distinguish between a global and a function call visually, but it would be lovely to be able to skip function calls programmatically. Is it possible? #Key Question #InterSystems IRIS 0 16 0 182
Question Anna Golitsyna · Aug 22, 2024 Access to current line text Is there a general way to set a variable XYZ equal to the text of the code line being executed now? Debugger or production. For example, for a code below if code is currently assigning a to 1, XYZ would be equal "S a=1". The same question about a variable containing current routine name. S a=1 #Debugging #Caché 0 2 0 143
Question Anna Golitsyna · Jul 24, 2024 Undocumented RoutineList features As I was trying to create a routine search query via RoutineList, I discovered that documentation both for Cache and Iris offers only ABC* and ABC? syntax for including routine names and, unlike %RO, does not offer name ranges. Is that indeed so? After some system files reading, I discovered that you can EXCLUDE certain routines with ', by using the 'ABC or 'ABC* syntax. That is not documented but it should be. Any other non-documented RoutineList syntax capabilities? Example: #Caché 0 1 0 126
Question Anna Golitsyna · Jul 16, 2024 How to resync ^ROUTINE and ^rINDEX? I have a few routines in ^rINDEX that are missing in ^ROUTINE. At least some of those routines lack a timestamp, probably Date and Time Modified in ^rINDEX. It causes D %RO crash when such a routine is referenced by a routine range, since "" is an illegal $ZDTH value. Healthy entry (note the timestamp): ^rINDEX("ABC,"INT") = $lb("2021-06-15 15:08:38.846885",) ;The second argument is sometimes present and sometimes not, likely the routine size. Unhealthy entry (note an empty timestamp): ^rINDEX("DEF,"INT") = $lb("",21) #System Administration #Caché 0 3 0 136
Question Anna Golitsyna · May 2, 2024 Cache and IRIS: How to identify system namespaces? I am trying to locate a method that would allow me to differentiate between InterSystems preinstalled/system namespaces and "our own" namespaces. I am interested both in Cache and Iris answers if they are different. Yes, I can list what to disregard, like if not HSLIB or if not DOCBOOK but hoping for a more universal and elegant answer. #Namespace #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 3 0 208
Question Anna Golitsyna · Mar 5, 2024 How to read from file starting from a certain position? The task for a file on disk is to open it, find a keyword (unique) and then read the file line by line, starting with the line with this keyword, then find the next keyword (also unique) and read from that location etc. I would think ObjectScript classes should be able to do that, but the solution eludes me. I probably need to use FindAt to get a position, but ReadLine does not seem to have a position argument. Any advice? #Caché 0 6 0 306
Question Anna Golitsyna · Feb 27, 2024 How to find Routine Mappings programmatically? The goal is to identify programmatically all SOURCE namespaces on a server to which the routines are mapped. In the example below from the Namespaces page in Management Portal the answer would be USER. But some other namespaces on the same server could be mapped to a different namespace or even mapped to itself. #Caché 0 6 0 263
Question Anna Golitsyna · Jan 19, 2024 Global Size: Comparing different methods I am inspecting our DB globals in order to reduce sizes of the worst offenders if possible. When I come to a large global, I am interested which of its nodes are the largest. Hence code below with unexpected different results. Any explanations why are results different? #Globals #Caché 1 6 0 437
Question Anna Golitsyna · Oct 4, 2023 Is it possible to have a MUMPS variable representing all subscripts for a global? Is it possible to have a single MUMPS variable representing all subscripts for a global? For example, if I have an ^ABC global and the ^ABC(1,2) node exist, is it possible to have a variable TEMP so that ^ABC(TEMP) would represent ^ABC(1,2)? TEMP="1,2" obviously does not work since it is interpreted as a single subscript, not two subscripts. #Caché 0 4 0 338
Question Anna Golitsyna · Sep 13, 2023 Cache: Binary export output I have an odd binary result exporting a specific routine via Studio, Export. Below is the beginning. The seemingly same routine in a different directory is exported fine, regular human readable code. Inspecting ^ROUTINE and ^rIndex did not give me any clues. Any insights? #Caché 0 4 0 254
Question Anna Golitsyna · Apr 13, 2023 Breaking a string into words Is there any ObjectScript or a basic function that takes a string and separates it into words + punctuation/spaces array/list? Just not to reinvent the wheel. Say, process "It is a test, after all" into "It", space, "is", space, "a", space, "test", ", ", "after", space, "all". Or something to that effect. #ObjectScript #Caché 2 9 0 384
Question Anna Golitsyna · Feb 9, 2023 Tracking %RCOPY and %RI Let's supposed somebody updates routines via %RCOPY or %RI, the really old-style hardcore way which still works. Does that leave any log traces in Journaling or system globals, as of when exactly did it happen or what was the IP address of the machine changes came from? I am aware only of the Date Modified changes as seen when opening the file. #Caché 0 4 0 395
Question Anna Golitsyna · Dec 14, 2022 How to get current routine line? I am familiar with $TEXT which can get you any line in the current routine provided you know the offset. For example, $T(+1) will get you the first line of the current routine at the run time. In the same vein, how do I reference the current line number/offset at the run time? Something like $T(+$CURRENTLINENUMBER) where $CURRENTLINENUMBER is not yet known to me function. The sample below would write 3 as the line number. RTNNAME S A=1W $CURRENTLINENUMBER #Key Question #ObjectScript #Caché 1 13 1 616
Question Anna Golitsyna · Oct 13, 2021 ObjectScript analog of Find with Match Element Type Is there an ObjectScript analog of Find with Match Element Type option? I know there is an ObjectScript analog of Find in Files, Studio.Project.FindInFiles and Studio.Project.FindInProject, but I failed to locate so far an analog of Edit/Find. I am specifically interested in Match Element Type option so I could search across selected files for globals. Somehow Studio.Project.FindInFiles does not offer this option natively. #Caché 0 3 0 453
Question Anna Golitsyna · Oct 8, 2021 Object script analog of RCOPY I am trying to figure out the best ObjectScript analog to mimic, more or less, the %RCOPY functionality. What would be ObjectScript method(s) if any to copy a routine from the current namespace to another one and compile it there? #ObjectScript #Caché 0 12 0 364
Question Anna Golitsyna · Aug 6, 2021 Cache routines: Date and Time Saved vs. Date and Time Modified My objective is to find routine's Date/Time Saved someplace inside Cache. The routine's Date/Time Modified as returned by various queries like %Library.RoutineIndex and as seen on the File Open screen is actually Date/Time Compiled last, not Date/Time Saved last. Does anyone know if Date/Time Saved is created when the Save icon is pressed or the routine is imported? Such a timestamp should be immune to subsequent compilations with no changes. #Caché 0 5 0 589
Question Anna Golitsyna · May 12, 2021 $preprocess failure There is an undocumented command, $preprocess, that can be called as below. In this case it takes the class name and converts its code into a text array. That includes comments as well. Two questions about it if you know: #Caché 0 8 0 275