第五十三章 Caché 函數大全 $QLENGTH 函數 第五十三章 Caché 函數大全 $QLENGTH 函數 大綱 描述 參數 示例

第五十三章 Caché 函數大全 $QLENGTH 函數

返回變量中的下標級別數。

大綱

$QLENGTH(var)
$QL(var)

參數

  • var 字符串或計算結果爲字符串的表達式,其中包含變量的名稱。變量名稱不能指定下標,也不能指定一個或多個下標。

描述

$QLENGTH返回var中的下標級別數。 $QLENGTH只計算var中指定的下標級別數。不必爲$QLENGTH定義var變量以返回下標級別的數量。

參數

var

帶引號的字符串或計算結果爲字符串的表達式,用於指定變量。它可以是局部變量,進程專用全局變量或全局變量。

如果字符串是全局引用,則var可以通過包含名稱空間名稱來指定擴展的全局引用。由於var是帶引號的字符串,因此必須將名稱空間引用周圍的引號加倍以正確地解析爲文字引號。例如,"^|""SAMPLES""|myglobal(1,4,6)"。對於使用“^”語法的進程專用全局引用,也是如此。例如,"^|""^""|ppgname(3,6)"$QLENGTH不檢查指定的名稱空間是否存在,或者用戶是否具有對該名稱空間的訪問權限。

var必須以規範形式(完全擴展的引用)指定變量名稱。要將$QLENGTH與裸全局引用或間接引用一起使用,可以使用$NAME函數返回相應的完全擴展的引用。

示例

以下示例顯示了與帶下標和未下標的全局變量一起使用時$QLENGTH的結果。第一個$QLENGTH接受不帶下標的全局變量,並返回0。第二個$QLENGTH接受不帶下標的全局變量,並返回2。

請注意,由於將var指定爲帶引號的字符串,因此在變量名中找到的引號會加倍。

/// d ##class(PHA.TEST.Function).QLENGTH()
ClassMethod QLENGTH()
{
    WRITE !,$QLENGTH("^|""USER""|test")
    ; returns 0
    SET name="^|""USER""|test(1,""customer"")"
    WRITE !,$QLENGTH(name)
    ; returns 2
}

DHC-APP>d ##class(PHA.TEST.Function).QLENGTH()
 
0
2

以下示例返回具有三個下標級別的進程專用全局變量的$QLENGTH值。 $ZREFERENCE特殊變量包含最近引用的變量的名稱。

/// d ##class(PHA.TEST.Function).QLENGTH1()
ClassMethod QLENGTH1()
{
    SET ^||myppg("food","fruit",1)="apples"
    WRITE !,$QLENGTH($ZREFERENCE)   ; returns 3
}
DHC-APP> d ##class(PHA.TEST.Function).QLENGTH1()
 
5

以下示例返回指定爲裸全局引用的進程專用全局的$QLENGTH值。 $NAME函數用於將裸全局引用擴展爲規範形式:

/// d ##class(PHA.TEST.Function).QLENGTH2()
ClassMethod QLENGTH2()
{
    SET ^grocerylist("food","fruit",1)="apples"
    SET ^(2)="bananas"
    SET ^(3)="pig"
    WRITE !,$QLENGTH($NAME(^(2)))   ; returns 3
}

DHC-APP> d ##class(PHA.TEST.Function).QLENGTH2()
 
3
DHC-APP>zw ^grocerylist
^grocerylist("food","fruit",1)="apples"
^grocerylist("food","fruit",2)="bananas"
^grocerylist("food","fruit",3)="pig"

注意 ^(2) 的用法。

/// d ##class(PHA.TEST.Function).QLENGTH2()
ClassMethod QLENGTH2()
{
    SET ^grocerylist("food","fruit",1)="apples"
    SET ^(2)="bananas"
    SET ^(3)="pig"
    WRITE !,$QLENGTH($NAME(^(2),1))   
}
DHC-APP> d ##class(PHA.TEST.Function).QLENGTH2()
 
1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章