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 Why Migrate to InterSystems IRIS?


Work with routines programmatically (create, compile, get time stamp, export, and so on); configure mappings.

Background Information

You can create routines in ObjectScript, Caché MVBasic, and Caché Basic. For information, see the following books:

You typically create, compile, and export routines in Studio; see Using Studio.

You can define routine mappings so that you can access code in a non-default location; see “Configuring Namespaces” in the chapter “Configuring Caché” in the Caché System Administration Guide. Typically you do this within the Management Portal.

Available Tools

This structured system variable returns information about routines.

Availability: All namespaces.

%Routine class

Enables you to read, create, manipulate, save, and compile routines. This class provides methods such as the following:

  • CheckProtect()

  • CheckSyntax()

  • Compile()

  • GetCurrentTimeStamp()

  • Lock()

  • Rewind()

  • RoutineExists()

  • And others

It also provides the following queries:

  • Compare()

  • Find()

  • RoutineList()

  • RoutineSortByField()

Availability: All namespaces.

Index for all the routines in this namespace.

Availability: All namespaces.

Includes the following class methods that you can use with routines:

  • CompileList()

  • Export()

  • ExportToStream()

  • Load()

Availability: All namespaces.

Enables you to modify and obtain information about the [] section of the CPF file, which defines routine mappings. (Note that you usually perform this configuration via the Management Portal, as noted above.)

The class also provides the List() class query.

The class documentation includes examples and details.

Availability: %SYS namespace.

%Installer.Manifest class and other classes in the %Installer package

Enable you to define and use an installation manifest. Among other tasks, you can configure routine mappings.

Availability: All namespaces.


The special variable $SYSTEM is bound to the %SYSTEM package. This means that (for ObjectScript) instead of ##class(%SYSTEM.class).method(), you can use $SYSTEM.class.method().