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