Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 11756 (adopted as CAN/CSA-ISO/IEC 11756-02 in Canada) is the international standard that defines the syntax, semantics, and runtime behavior of the MUMPS programming language—often simply called M. Originally designed for healthcare information systems, MUMPS has evolved into a general-purpose language with unique features for hierarchical data management and multi‑user transaction processing. This article examines the standard’s scope, key technical requirements, implementation highlights, and compliance guidelines.
The standard formally known as ISO/IEC 11756:1999 and its Canadian adoption CAN/CSA-ISO/IEC 11756-02 specify the form and content of a MUMPS program, the data types supported, the rules for variable scope and persistence, and the behavior of built‑in functions and commands. It is intended for implementers of MUMPS interpreters, compilers, and runtime environments, as well as for developers writing portable MUMPS applications.
The scope covers:
SET, WRITE, READ, DO, GOTO, FOR, IF, ELSE) and operators.$HOROLOG, $JOB, $IO, $ZVERSION).$PIECE, $EXTRACT, $ORDER, $DATA, $FIND).TLOCK, TCOMMIT, TROLLBACK).Implementations claiming conformance must support all mandatory elements described in the standard and document any extensions or deviations.
MUMPS uses an extremely compact syntax where whitespace is significant. Statements are composed of a line label (optional), a command, and arguments separated by spaces. The standard defines a single data type – a string – but numeric interpretation is allowed in arithmetic contexts. Empty strings are valid and can represent logical false.
Key data elements include:
$HOROLOG for date/time).A defining characteristic of MUMPS is its global array model. A global is a sparse, tree‑structured persistent map of strings to strings, indexed by subscripts of any number of levels. For example:
SET ^Patient("12345","Name")="John Doe"
The standard prescribes the exact semantics for ordering, subscript evaluation, and the operations $ORDER, $QUERY, $DATA, and KILL. This model enables applications to dynamically create and query nested data without a schema.
$ORDER for forward/backward traversal of global subscripts. It is far more efficient than iterating over possible numeric indices.Multi‑user environments rely on the MUMPS transaction model. The standard defines TLOCK (acquire/release locks), TSTART, TCOMMIT, and TROLLBACK to ensure atomicity and consistency. Lock granularity is per variable (global or local). The standard requires that updates to globals within a transaction be atomic and recoverable in case of a system crash.
TLOCK with an error handler that calls TROLLBACK or LOCK -@variable.To produce a conforming implementation, developers must address the following:
The table below summarises the main compliance levels defined by the standard:
| Compliance Level | Description | Required Elements |
|---|---|---|
| Full | Complete implementation of all mandatory features | All commands, functions, special variables, globals, transaction processing, I/O, error handling |
| Embedded | Subset for use as a scripting language within a host environment | Core commands, local variables, limited I/O, no transaction processing |
| Partial (deprecated) | Implementation that omits certain optional features but documents the omissions | Must at least support SET, DO, WRITE, READ, GOTO, and local arrays |
Conformance to ISO/IEC 11756 is generally demonstrated through a self‑declaration, although third‑party test suites exist (e.g., the MUMPS Validation Suite developed by the MDC). The Canadian Standard CAN/CSA-ISO/IEC 11756-02 includes a normative annex that lists recognized deviations and corrigenda. Adopters should:
For organizations upgrading from older MUMPS dialects, the standard provides a migration guide (Informative Annex B) that highlights differences from pre‑1999 implementations.
Revision note: This article references ISO/IEC 11756:1999 and CAN/CSA-ISO/IEC 11756-02. All comments regarding conformance refer specifically to the 1999 edition and its Canadian adoption. Check with your standards body for the latest amendments. — Published 2026.