第五十四章 Caché 函數大全 $QSUBSCRIPT 函數 第五十四章 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 產生一個 <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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章