M[UMPS] Functions - $DATA

Introduced in the 1977 ANSI M[UMPS] language standard.

This function returns a code that describes the existence of descendants and values of variables.

Assume that the following elements of Y are defined:
Y(0)=0
Y(1)=1
Y(2)=2
Y(1,2,3)=123

Then the function $DATA will return the following results:

Y(0) has a value and no elements exist with indices like (0,...):

Reference   Value
$DATA(Y(0))   1

Y(1) has a value and at least one element exists with indices like (1,...), viz. Y(1,2,3):

Reference   Value
$DATA(Y(1))   11

Y(2) has a value and no elements exist with indices like (2,...):

Reference   Value
$DATA(Y(2))   1

Y(1,2) has no value, but at least one element exists with indices like (1,2,...), viz. Y(1,2,3):

Reference   Value
$DATA(Y(1,2))   10

Y(1,2,3) has a value and no elements exist with indices like (1,2,3,...):

Reference   Value
$DATA(Y(1,2,3))   1

Assume that no local variables exist and that each new example (except for the last) adds a new element to the set.

Reference   Value
Conditions:   Function-values:
Y not defined   $DATA(Y)=0
SET Y=100   $DATA(Y)=1
SET Y="AB"   $DATA(Y)=1
SET A(1)="ABC"   $DATA(A(1))=1
    $DATA(A)=10
SET B(1,2)="BC"   $DATA(B(1,2))=1
    $DATA(B(1))=10
    $DATA(B))=10
SET B(1)="CD"   $DATA(B(1))=11
KILL B(1,2)   $DATA(B(1,2))=0
    $DATA(B(1))=1
    $DATA(B)=10

$DATA with a global variable as the parameter:

KILL ^A SET ^A(1,2,3)="Value"

Examples with naked references:

Command Value of
X
Value of the
naked indicator
SET X=$DATA(^A) 10 not defined
SET X=$DATA(^(1)) error not defined
SET X=$DATA(^A(1)) 10 "^A("
SET X=$DATA(^A(99)) 0 "^A("
SET X=$DATA(^A(1)) 10 "^A("
SET X=$DATA(^(1,2)) 10 "^A(1,"
SET X=$DATA(^(2)) 10 "^A(1,"
SET X=$DATA(^(2,3)) 1 "^A(1,2,"
SET X=$DATA(^3)) 1 "^A(1,2,"
SET X=$DATA(^(4)) 0 "^A(1,2,"
SET X=$DATA(^A(1,2)) 10 "^A(1,"
SET ^A(1,2,3,4)=""   "^A(1,2,3,"
SET X=$DATA(^A(1,2,3)) 11 "^A(1,2,"

$DATA(GLVN)
SET ^ABC(1,2)="reset naked indicator"
; Naked indicator is now ^ABC(1,
SET ^(3,4)=$DATA(^(5,6))

; 1. fetch ^(5,6) = ^ABC(1,5,6)
; 2. store ^(3,4) = ^ABC(1,5,3,4)
; Naked indicator is now: ^ABC(1,5,3,


This document is © Ed de Moel, 1995-2005.
It is part of a book by Ed de Moel that is published under the title "M[UMPS] by Example" (ISBN 0-918118-42-5).
Printed copies of the book are no longer available.