Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.

For information on migrating to InterSystems IRIS, see How to Migrate to InterSystems IRIS, available on the WRC Distributions page (login required).

Structured System Variables

A structured system variable name, or SSVN, is a nonscalar system variable that is organized like a global variable. SSVNs allow you to write portable programs that can retrieve information about system data. The same ObjectScript code can retrieve system data information from any Caché implementation using structured system variables.

Each SSVN has a structure where subscript values are any of the following:

  • Entity identifiers

  • Literals

  • Attribute keywords.

You provide information about entities by providing values for subscripts which are identifiers and for attribute nodes.

SSVNs use the caret and dollar sign (^$) as a standard prefix followed by:

  1. An optional (extended syntax ) specification of the namespace about which you want information

  2. One of a designated list of names.

You then follow the name with one or more expressions in parentheses. These expressions are called subscripts. The syntax is as follows:

^$[|namespace|] ssvn_name(expression)

Generally, you cannot use SET and KILL commands for structured system variables because they do not necessarily have data values. The information that structured system variables provide is often the existence of specific subscript values. In most cases, you can use the $DATA, the $ORDER, and the $QUERY functions to examine subscript values.

Caché supports the following structured system variables:

  • ^$GLOBAL

  • ^$JOB

  • ^$LOCK


The meaning of each of these SSVNs and use of their subscripts is explained in the following sections.

Each description identifies which functions are allowed with the particular structured system variable. Each description contains one or more examples about how to use structured system variable as arguments to the $DATA, $ORDER, and $QUERY functions to scan system table information.

  • ^$GLOBAL – Provides information about globals and process-private globals.
  • ^$JOB – Provides Caché process (job) information.
  • ^$LOCK – Provides lock name information.
  • ^$ROUTINE – Provides routine information.