I am getting the following error periodically:
CP: Pausing users because the Write Daemon has not shown
InterSystems Caché is a multi-model DBMS and application server. See more details here.
I am getting the following error periodically:
CP: Pausing users because the Write Daemon has not shown
Too run SQL in Terminal use $system.SQL.Shell().
Please refer to the sample below.
SAMPLES>do $System.SQL.Shell()
SQL Command Line Shell
---------------------------------------------------- The command prefix is currently set to: <>.
Enter q to quit, ? for help.
SAMPLES>>select * from Sample.Vendor
1. select * from Sample.
In some cases, it's necessary to manipulate data from one namespace to another. For example, a routine in the "N1" namespace needs data from the "N2" namespace. In legacy systems (using only globals), it's common to make the global universal, but what about persistent classes? Is this type of globalization also possible?
In the same context, how could I make a persistent class global for all namespaces? The only way I know is by putting it in %SYS.
Recently, we implemented some Java-based services using JDBC. And some time ago, I refactored some legacy PHP programs that used "csession" for communication between systems to use PDO with ODBC.
This raised a question for me about how license management is done in this scenario.
Is a license used per pool? Or per connection? How is this management done?
A unit of ObjectScript code (a ClassMethod, say) may produce a variety of unexpected side effects by interacting with parts of the system outside of its own scope and not properly cleaning up. As a non-exhaustive list, these include:
Use of these important language features without proper cleanup and defensive coding can lead to an application that normally works correctly, but that may fail in unexpected and difficult-to-debug ways.
When using standard SQL or the object layer in InterSystems IRIS, metadata consistency is usually maintained through built-in validation and type enforcement. However, legacy systems that bypass these layers—directly accessing globals—can introduce subtle and serious inconsistencies.
Understanding how drivers behave in these edge cases is crucial for diagnosing legacy data issues and ensuring application reliability.
The DATATYPE_SAMPLE database is designed to help analyze error scenarios where column values do not conform to the data types or constraints defined in the metadata.
Embedded SQL is a tool that allows us to execute SQL statements in Caché Object Script. For example, to select the name of a person with a particular SSN from the Sample.Person class we can do the following:
&SQL(SELECT Nameinto:tNameFromSample.PersonWhereSSN = :tSSN )
The colon syntax is used to identify local variables, in this case tName and tSSN. Here, tSSN will be defined prior to execution and tName will be set during execution of the statement. &SQL indicates to our compiler that this is SQL syntax.
gj :: configExplorer is a new VS Code extension integrating with Server Manager and leveraging Structurizr to produce configuration diagrams of your servers.
Here's a short introductory video.
By using the InterSystems IRIS Native API for Node.js it avoids the need for any support code to be installed on the servers. This technology choice also qualifies it for entry into the current Developer Community contest.
The initial release focuses on two aspects of server configuration:
Suggestions for what to add next are welcome, as is general feedback.
Studio's Output window is interactive, and code can ask questions there if it is a Studio environment. How do I check for that?
In my previous article, I structured network communications
in these 3 possible layers, and covered the last
In fact, you have the most control over the last one.
The IRIS side as a server is yours and under your full control.
Up to now, the Transport layer was assumed to be as passive as a bare wire.
This assumption should be verified. I once met a Windows environment with
a quite surprising setup where a Firewall-like filter was isolating internal
processes and causing a lot of trouble.
Chasing errors or misbehavior in the network can be quite a challenge.
Differently to a local application on the DB server, you always have at least 3 players:
This results in a minimum of 3 possible communication layers
The last one is probably the easiest to check, while the other
two deal with the same counterpart just from opposite sides.
APM normally focuses on the activity of the application but gathering information about system usage gives you important background information that helps understand and manage the performance of your application so I am including the IRIS History Monitor in this series.
In this article I will briefly describe how you start the IRIS or Caché History Monitor to build a record of the system level activity to go with the application activity and performance information you gather. I will also give examples of SQL to access the information.
Trying to check date in DTL.
Want to throw a custom error not the default one from the $ZDTH. It does in the try as will write "Error" when testing the DTL but the actual error not showing. Report errors is turned on. I also tried the THROW logic from best practices but that doesn't work either. $SYSTEM.Status.DisplayError(status) does display what the error should be returned.
try
{
set tDateH = $ZDATEH(tDateofDeath, 8)
}
catch ex
{
w"error"set status = $$$ERROR($$$GeneralError,"Custom error message")
do$SYSTEM.Status.DisplayError(status)
do$SystemStatus..png)
Hi Community,
In this article, we will explore the concepts of Dynamic SQL and Embedded SQL within the context of InterSystems IRIS, provide practical examples, and examine their differences to help you understand how to leverage them in your applications.
InterSystems SQL provides a full set of standard relational features, including the ability to define table schema, execute queries, and define and execute stored procedures. You can execute InterSystems SQL interactively from the Management Portal or programmatically using a SQL shell interface. Embedded SQL enables you to embed SQL statements in your ObjectScript code, while Dynamic SQL enables you to execute dynamic SQL statements from ObjectScript at runtime. While static SQL queries offer predictable performance, dynamic and embedded SQL offer flexibility and integration, respectively.
As a developer who uses Cache as DB for a couple of projects, I'm using REST API's every time, knowing how to consume a resource from REST API, in my opinion, it's crucial to know how to consume external REST Api's using %Net.HttpRequest because it enables integration with modern web applications and services, and it's a crucial skill for a backend developer who loves and uses Cache as a DB.
What and who is %Net.
The Interoperability user interface now includes modernized user experiences for the DTL Editor and Production Configuration applications that are available for opt-in in all interoperability products. You can switch between the modernized and standard views. All other Interoperability screens remain in the Standard user interface. Please note that changes are limited to these two applications and we identify below the functionality that is currently available.
To try out the new screens prior to upgrading, you can download the 2025.
When exporting using the Export() method of the %Library.Global class, if the export format (fourth argument: OutputFormat) is set to 7, "Block format/Caché block format (%GOF)," mapped globals cannot be exported (only globals in the default global database of the namespace are exported). To export mapped globals in "Block format/Caché block format (%GOF)," specify the database directory to which you want to map them in the first parameter of %Library.Global.Export().
An example of execution is shown below.
There is documentation for single dolalr macros but $$$ dollar seems to be referenced on individual pages or not at all.
So, you checked your server and saw that IRISTEMP is growing too much. There's no need to panic. Let’s investigate the issue before your storage runs out.
Before assuming IRISTEMP is the problem, let’s check its actual size.
Run the following command in the IRIS terminal:
%SYS>do ^%FREECNTWhen prompted, enter:
Database directory to show free space for (*=All)? /<your_iris_directory>/mgr/iristemp/If the output shows very low free space, IRISTEMP is filling up your storage like an overstuffed closet.
For example, I'm creating a customer at front end interface. I want to list down all the routines and child sub routines that are called at backend in mumps/cache. What's the best way to do it?
Yes, that's right, a Cache 2017.1 question. Let's all take a trip in the Wayback Machine.
The company I'm working for is in the process of starting to use the %UnitTest framework, and we are experiencing some errors in the code with some existing logic. Long story short, it looks like the best way to handle the issue would be to recognize we're executing the job as a part of a unit test. Is there any sort of variable or property that can be checked to confirm the process is indeed executing a unit test?
$System.Util.GetEnviron("USERPROFILE") returns "C:\WINDOWS\system32\config\systemprofile". I don't know what that is, but that folder doesn't even exist. The correct value which I need is "C:\Users\robert.steed", as seen via the Windows command line "set" command.
I am regularly contacted by customers about memory sizing when they get alerts that free memory is below a threshold, or they observe that free memory has dropped suddenly. Is there a problem? Will their application stop working because it has run out of memory for running system and application processes? Nearly always, the answer is no, there is nothing to worry about. But that simple answer is usually not enough. What's going on?
Consider the chart below. It is showing the output of the free metric in vmstat.
Hi,
I'm trying to run some scripting in Windows. I'm using an instance of the IRISHealth community.
I'm just trying to run a simple sequence of commands so I can run irissession in a non-interactive mode, like:
irissession.exe IRISHEALTH -U "%SYS" < "myprogram.iris"
The contents of my program.iris are, for instance, these ones, to run an online backup:
set$namespace="%SYS"set cbk = "C:\Test1.cbk"set log = "C:\Test1.Hello community,
I wanted to share my experience about working on Large Data projects. Over the years, I have had the opportunity to handle massive patient data, payor data and transactional logs while working in an hospital industry. I have had the chance to build huge reports which had to be written using advanced logics fetching data across multiple tables whose indexing was not helping me write efficient code.
Here is what I have learned about managing large data efficiently.
Choosing the right data access method.
As we all here in the community are aware of, IRIS provides multiple ways to access data. Choosing the right method, depends on the requirement.
Set ToDate=+HSet FromDate=+$H-1ForSet FromDate=$O(^PatientD("Date",FromDate)) Quit:FromDate>ToDate Do
. Set PatId=""ForSet PatId=$Order(^PatientD("Date",FromDate,PatID)) Quit:PatId=""Do
. . Write$Get(^PatientD("Date",FromDate,PatID)),!Our application has a ZEN report that accepts a sorting parameter and a fundraiser parameter. Sorting tells us which order the pages are to be in and the fundraiser limits the data shown (e.g. which user has requested the report)
/// the passed in fundraiser parameter
Property fundraiser As %ZEN.Datatype.string(ZENURL = "FID");
Property SortOrder As %ZEN.Datatype.string(ZENURL = "SORTME") [ InitialExpression = "WorkId" ];
/// This XML defines the logical contents of this report.
XData ReportDefinition [ XMLNamespace = "http://www.intersystems.
Starting out with ObjectScript, it is really exciting, but it can also feel a little unusual if you're used to other languages. Many beginners trip over the same hurdles, so here are a few "gotchas" you'll want to watch out for. (Also few friendly tips to avoid them)
NAMING THINGS RANDOMLY
We have all been guilty of naming something Test1 or MyClass just to move on quickly. But once your project grows, these names become a nightmare.
➡ Pick clear, consistent names from the start. Think of it as leaving breadcrumbs for your future self and your teammates.
This web interface is designed to facilitate the management of Data Lookup Tables via a user-friendly web page. It is particularly useful when your lookup table values are large, dynamic, and frequently changing. By granting end-users controlled access to this web interface (read, write, and delete permissions limited to this page), they can efficiently manage lookup table data according to their needs.
The data managed through this interface can be seamlessly utilized in HealthConnect rules or data transformations, eliminating the need for constant manual monitoring and management of the lookup tables and thereby saving significant time.
Note:
If the standard Data Lookup Table does not meet your mapping requirements, you can create a custom table and adapt this web interface along with its supporting class with minimal modifications. Sample class code is available upon request.
If you have already built unit tests using the %UnitTest framework, or are thinking about doing so, please take a look at InterSystems Testing Manager.
Without leaving VS Code you can now browse your unit tests, run or debug them, and view previous run results.
InterSystems Testing Manager works with both of the source code location paradigms supported by the ObjectScript extension. Your unit test classes can either be mastered in VS Code's local filesystem (the 'client-side editing' paradigm) or in a server namespace ('server-side editing').
Is there a way to create a table for the results of a SQL statement ?
Example: Consider the below query and results.
Select ID,Name,DOB,Gender from EMS.EMS
RESULT
| ID | NAME | DOB | Gender |
|---|---|---|---|
| 1 | Wijnschenk,Greta N. | 03/09/2009 | F |
| 2 | Klausner,Barbara L. | 03/08/2014 | M |
| 3 | Eastman,Liza X. | 03/11/2000 | F |
| 4 | O'Brien,Barb K. | 03/07/2016 | M |
| 5 | Anderson,Nataliya Y. | 03/14/1991 | F |
| 6 | Long,Debby Z. | 03/12/1999 | F |
| 7 | Rogers,Susan W. | 03/12/1997 | F |
| 8 | Ott,Lola J. | 03/09/2009 | F |
| 9 | Yu,Alice S. | 03/14/1990 | M |
| 10 | Wilson,Debby I. |