第五十四章 Caché 函数大全 $QSUBSCRIPT 函数
返回变量名称或下标名称。
大纲
$QSUBSCRIPT(namevalue,intexpr)
$QS(namevalue,intexpr)
参数
- namevalue 字符串或计算结果为字符串的表达式,它是带有或不带有下标的局部变量,进程专用全局变量或全局变量的名称。
- intexpr 一个整数代码,用于指定要返回的名称:变量名称,下标名称或名称空间名称。
描述
$QSUBSCRIPT根据intexpr的值返回变量名称或namevalue的指定下标的名称。如果namevalue是全局变量,则还可以返回名称空间名称(如果已明确指定)。 $QSUBSCRIPT不返回默认的名称空间名称。
参数
namevalue
带引号的字符串或计算结果为字符串的表达式,该字符串是本地或全局引用。它可以采用以下形式:Name(s1,s2,...,sn)。
如果字符串是全局引用,则它可以包含名称空间引用。因为namevalue是带引号的字符串,所以名称空间引用周围的引号必须加倍以正确地解析为文字引号。
名称值必须以规范形式引用变量名(完全扩展的引用)。要将$QSUBSCRIPT与裸露的全局引用或间接引用一起使用,可以使用$NAME函数返回相应的完全扩展的引用。
intexpr
一个整数表达式代码,指示要返回的值。假定namevalue参数的格式为NAME(s1,s2,...,sn),其中n是最后一个下标的序号。 intexpr参数可以具有以下任何值:
| 代码 | 返回值 | ||
|---|---|---|---|
| < -1 | 产生一个 <FUNCTION> 错误;这些号码保留用于将来的扩展。 | ||
| -1 | 如果全局变量名称值包含一个名称空间,则返回名称空间名称;否则,返回名称空间名称。否则,返回空字符串(“”)。 | ||
| 0 | 返回变量名称。为全局变量返回^NAME,为进程专用全局变量返回`^ | NAME`。不返回名称空间名称。 | |
| <=n | 返回整数n指定的订阅级别的下标名称,其中1为第一个下标级别,n为定义的最高下标级别。 |
n | 大于
n的整数将返回空字符串(“”),其中n是定义的最高下标级别。
示例
以下示例在namevalue是具有一个下标级别和指定名称空间的下标全局值时返回$QSUBSCRIPT值:
/// d ##class(PHA.TEST.Function).QSUBSCRIPT()
ClassMethod QSUBSCRIPT()
{
SET global="^|""account""|%test(""customer"")"
WRITE !,$QSUBSCRIPT(global,-1) ; account
WRITE !,$QSUBSCRIPT(global,0) ; ^%test
WRITE !,$QSUBSCRIPT(global,1) ; customer
WRITE !,$QSUBSCRIPT(global,2) ; null string
}
DHC-APP>d ##class(PHA.TEST.Function).QSUBSCRIPT()
account
^%test
customer
以下示例在namevalue是具有两个下标级别的进程专用全局变量时返回$QSUBSCRIPT值。 $ZREFERENCE特殊变量包含最近引用的全局变量的名称。
/// d ##class(PHA.TEST.Function).QSUBSCRIPT1()
ClassMethod QSUBSCRIPT1()
{
SET ^||myppg(1,3)="apples"
WRITE !,$QSUBSCRIPT($ZREFERENCE,-1) ; null string
WRITE !,$QSUBSCRIPT($ZREFERENCE,0) ; ^||myppg
WRITE !,$QSUBSCRIPT($ZREFERENCE,1) ; 1
WRITE !,$QSUBSCRIPT($ZREFERENCE,2) ; 3
}
DHC-APP>d ##class(PHA.TEST.Function).QSUBSCRIPT1()
^||myppg
1
3
以下示例为指定为裸全局引用的全局变量返回$QSUBSCRIPT值。 $NAME函数用于将裸露的全局引用扩展为规范形式:
/// d ##class(PHA.TEST.Function).QSUBSCRIPT2()
ClassMethod QSUBSCRIPT2()
{
SET ^grocerylist("food","fruit",1)="apples"
SET ^(2)="bananas"
WRITE !,$QSUBSCRIPT($NAME(^(2)),2) ; returns "fruit"
}
DHC-APP>d ##class(PHA.TEST.Function).QSUBSCRIPT2()
fruit