第五十四章 Caché 函数大全 $QSUBSCRIPT 函数
2020-10-14 本文已影响0人
Cache技术分享
第五十四章 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