第五十四章 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