第五十四章 Caché 函数大全 $QSUBSCRIPT 函数

第五十四章 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 产生一个 错误;这些号码保留用于将来的扩展。
-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

你可能感兴趣的:(第五十四章 Caché 函数大全 $QSUBSCRIPT 函数)