NewBie's Corner Session 2 Variables Set and Write commands

Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.

Session 2 – Click on the Caché Cube in your system tray and select Terminal to try out the commands.


Like other computer programming languages, Caché uses Variables and the values they represent to control programming. Variables are elements that represent data values. Manipulating and interrogating variables is at the root of programming.

2 0
0 321
InterSystems Developer Community is a community of 12,744 amazing developers
We're a place where coders learn and share, stay up-to-date, grow together and have fun!

Hi all,

I have a dashboard which shows the growth of the months compared with the month from the last year.

The way I found to develop that, it was with a kpi. So, I overrode the %OnLoadKPI method with two mdx:

SELECT NON EMPTY [DataD].[H1].[MothYear].Members ON ROWS, [Measures].[CountVisits] ON COLUMNS FROM SubjectAtendimento %FILTER [DataD].[H1].[Year].&[2016]

SELECT NON EMPTY [DataD].[H1].[MonthYear].Members ON ROWS, [Measures].[CountVisits] ON COLUMNS FROM SubjectAtendimento %FILTER [DataD].[H1].[Year].&[2015]

0 5
0 332

Hello, our customer, large industrial company, is considering modernizing their old CSP application so it can run on multiple client device types, using responsive design.

They have a lot of experience with CSP and some ZEN.

They are new to REST and have some limited knowledge of javascript - perhaps not enough to the extent used by client framework.

Does anyone have a framework or a set of templates that you would be willing to share?

Thank you!

Dan Kutac

2 7
0 675


I'm trying to connect to a Caché server from Atelier; the Caché server is 2015.x.

The address and port I'm trying to connect to is the SQL gateway server; and I get, each time, an "unexpected end of file from server".

Note that unfortunately, for the moment, I connect as _system... And the Caché install has the default privileges.

What am I doing wrong?

1 1
0 417

This is a bit weird. I'm trying to use `DATEDIFF()` to calculate the time since the last message on an interface. For some reason, when no messages are received, the number steadily decreases. This is the opposite of what should happen. Here is my current query and a few sequential result sets:

SELECT getDate() as now, max(TimeCreated) as latest, DATEDIFF (s,getdate(), max(TimeCreated)) as difference
FROM EnsLib_HL7.Message
0 4
0 577
Mike Henderson · Apr 20, 2016
Consistent window/tab names

When a class is opened from the Atelier explorer the full classname is used as the tab name. However classes opened from the server explorer only use the class shortname.

It would be nice to always use full classnames so it is easier to navigate open files:

1 2
0 266
Blaise ZARKA · May 13, 2016 1m read
mySQL data importer tool


If you want to import data from a mySQL export file (exported with mysqldump), you will find here a little script that could help.

Only the INSERT commands in the sql file are executed into Caché. Indices are not computed for better performance.
%NOINDEX, %NOCHECK and %NOLOCK are generated on each INSERT line.

Currently, the file can not contain a "),(" pattern inside the values part of the INSERT command. If this is the case, the line is skipped. This feature may be implemented in the extractValuesList method.

2 3
0 436

Hi -

I've been trying to create a "sub packaged class" (i.e. TopPackage.SubPackage.Classname) but the current version of the "New Class Wizard" doesn't seem to allow me to do this.

If I try to specify a \project\subdirectory in the "Project" or I try to specify a Package.Subpackage form in the "Package", or I try to specify "Subpackage.Classname" in the "Class Name" they ALL fail to give me a "next" or "finish" button that works (the buttons stay greyed out)

1 4
0 350

Hi -

I'm trying to figure out what is the best (or at least pros & cons) on how to manage login accounts in a multi-tenant SaaS web based application context.

Assume that a company is designing a collections of web based applications that they will be selling as "services" to their clients, and that these clients will each have their own "users" and "customers" that will be logging into these services.

0 3
0 350
John Murray · Apr 22, 2016 1m read
Huge icon on Atelier's Help menu

I'm using Atelier 1.0.145 on Windows (x64). When I open the Help menu from the menubar the final entry (About Atelier) has a huge version of the Atelier icon alongside it. This distorts the menu. I can't post a screenshot here because my simplistic screen capture tool causes the faulty menu to close. But the large icon I see is also (correctly) displayed on the About box itself:

1 5
0 432
Chip Gore · May 10, 2016
Modifying "New Class" template

Hi -

I would like to change the initial text that is generated by the New Class wizard in Atelier, but I'm not sure if I can or where to go to make the modification. I have a specific format for initial classes, and the wizard generated code isn't cutting it for me. I know it's trivial to take the generated text and just modify it, but if I could only have to do that in the wizard, that would be better.

The more generalized question is, which wizard output can be safely changed without fear of losing the change on upgrade, and where are these?



1 6
0 323


Cache 2016.2 running on fully patched minimal CentOS 7 install. No Firewall.

Atelier running on Centos 7 Desktop. No Firewall.

I was able to build and compile classes from Atelier.

When I try to run a routine or some class code from Atelier I get an error. It tells me to look at the Network Activities view.

When I do that I see the following:

1 7
0 604

Greetings! This article describes yet another simple way of creating installers for the solutions based on InterSystems Caché. The topic covers applications, which can be installed or completely removed from Caché with one action only. If you are still documenting installation instructions that have more than one step to do to install your application — it’s high time you automated this process.

5 14
0 1,465

I am trying to execute a system query. - %SYS.Journal.File_Search()

The Query is looking for a Journal File Name and a String.

However, the Query line accepts no parameters. - Query Search() As %Query(ROWSPEC = "Offset:%Integer")

But in the SearchExecute method if checks for File and String.

ClassMethod SearchExecute(ByRef qHandle As %Binary, String As %String, FileName As %String . . .
i $g(String)="" q $$$ERROR($$$JournalFileSearchUndefined)
i $g(FileName)="" q $$$ERROR($$$JournalFileUndefined)

1 5
0 752

Our company is looking for someone with expert object script skills and experience developing with REST using Caché. We have an existing application that currently supports a mobile application and a web application. The API is up and running but we need another developer to add new features and keep up with demand.

Experience with Amazon AWS is highly desired as the api is running on Windows in EC2. Familiarity with GitHub is also required.

Pay can be negotiated on a per hour basis after you provide an estimate for the time required to complete a given feature.

0 0
0 335

I was writing a routine that called some class methods and when I typed in ##class( and the package, there was a drop down list of all the classes that match that package but when I selected one of the dropdown entries it added the package name again.

For example if I enter ##class(dim.

I am presented with a list of classes in the dim package but when I selected one of them,(dim.OccupationList), what ended up in the editor was


1 1
0 347


Want to share with you code snippet of try catch block I usually use in methods which should return %Status.

 try {
 catch e {
 	set sc=e.AsStatus()
 	do e.Log()

Quit sc 

Here $$$TOE is a short form of $$$TROWONERROR macro.

Inside macro StatusMethod is any method you call which will return %Status value. This value will be placed into sc variable.

4 21
1 2,631

I have a class which, in the previous instance, was able to extract metadata field names and data from a text file, and load this information into a domain. I am trying to run this in the field test instance, but it is not loading the metadata - only the field names. I am not getting an error, but the data is not loaded.

The few changes I made to the original class:

Previously, this class also ran iTables. I commented all that code out.

To create the domain, I replaced the line:

0 1
0 328
Jeffrey Semmens · May 5, 2016
Using Snapshots in BPL

I have a scenario where I am calling a business operation which populates and returns an EnsLib.SQL.Snapshot via dynamic SQL to a Business Process. I then want to iterate over this snapshot and call a RecordMap Operation to write those records to a delimited file.

Is this the correct way to do something like this? If so, does anyone have a sample which illustrates its correct usage?

When the snapshot is returned I save it into a context variable with:

set context.Snapshot=callresponse where the pOutput variable of the operation is set to EnsLib.SQL.Snapshot.

0 1
0 552
Paul Gomez · Apr 20, 2016 1m read
Feedback on Product Documentation?

We are in the process of putting a new UI on the existing product documentation, including a mobile-optimized view. We also plan on releasing additional "solution based" documentation that is targeted at common usage scenarios or important configuration tasks.

We are interested in your feedback on our current product documentation - what you like and dislike and especially what changes you would expect to see to make it as useful as possible.

3 15
0 781

You may experience errors executing Java programs that rely on the JAVA_HOME environment.

For example when Create PDF from this pivot in DeepSee or in this case, outputting a Zen Report as PDF.

You can verify the PDF generation configuration by clicking on the Verify Now button on the Management Portal System > Configuration > Zen Report Settings page:

1 0
0 579