M[UMPS] Functions - $QS[UBSCRIPT]

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

This function returns the value of a subscript in a name- reference.

Assume that X is defined as in the example with the function $QLENGTH (X="^|""XXX""|ABC(1,2,3,5,6)").

Reference   Value
$QSUBSCRIPT(X,-2)   reserved (may be error)
$QSUBSCRIPT(X,1)   "1"
$QSUBSCRIPT(X,2)   "2"
$QSUBSCRIPT(X,3)   "3"
$QSUBSCRIPT(X,4)   "5"
$QSUBSCRIPT(X,5)   "6"

$QSUBSCRIPT is a lot easier to use than $PIECE with parentheses and commas as separators, especially when there are string-subscripts that contain commas and quotes:

SET Q="""",C=","

Reference   Value
SET X=$NAME(^ABC(1,Q,C,9_Q_C_8))   X="^ABC(1,"""""""","","",""9"""",8"")"
(or, without all those confusing double quotes, and using {curly braces} instead to delimit strings)
$QSUBSCRIPT(X,1)   "1"
$QSUBSCRIPT(X,2)   """"
$QSUBSCRIPT(X,3)   ","
$QSUBSCRIPT(X,4)   "9"",8"

Note that this function only operates on the string that contains the name of a variable. The variable that is identified in this string is never accessed by this function. Therefore, this function only affects the naked incator if the string in question is stored in a global variable.

SET ^NUM(5,6)=2
SET ^FOO(2,4,6)=$NAME(^A(1,"abc",9))

Reference   Value
$QSUBSCRIPT(^FOO(2,4,6),^NUM(5,6))   "abc"

in this example, the naked indicator becomes "^NUM(5,".

For additional examples of this function, see the function $NAME.

Approved for addition in a future ANSI M[UMPS] Language Standard:

It is allowed to specify a reference to $QSUBSCRIPT on the left hand side of the equal sign in a SET command.

SET N="^|""where""|ABC(11,22,33)"

Reference   Value
SET $QSUBSCRIPT(N,-1)="A"   N="^|""A""|ABC(11,22,33)"
SET $QSUBSCRIPT(N,0)="xxx"   N="^|""A""|xxx(11,22,33)"
SET $QSUBSCRIPT(N,2)=9   N="^|""A""|xxx(11,9,33)"
SET $QSUBSCRIPT(N,10)=123   N="^|""A""|xxx(11,9,33,"","","","","","",123)"

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.