第五十三章 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
网友评论