第三十六章 Caché 变量大全 $ZORDER 变量
包含下一个全局节点的值。
大纲
$ZORDER
$ZO
描述
$ZORDER
包含当前全局引用之后的下一个全局节点的值(在$QUERY
序列中,而不是$ORDER
序列中)。如果没有下一个全局节点,访问$ZORDER
将导致<unfined>
错误,指示$ZORDER
成功访问的最后一个全局节点。
不能使用SET
命令修改此特殊变量。尝试这样做会导致<SYNTAX>
错误。
示例
下面的示例使用WHILE
循环重复调用$ZORDER
以遍历一系列下标节点:
/// d ##class(PHA.TEST.SpecialVariables).ZORDER()
ClassMethod ZORDER()
{
SET ^||a="groceries"
SET ^||a(1)="fruit"
SET ^||a(1,1)="apples"
SET ^||a(1,2)="oranges"
SET ^||a(3)="nuts"
SET ^||a(3,1)="peanuts"
SET ^||a(2)="vegetables"
SET ^||a(2,1)="lettuce"
SET ^||a(2,2)="tomatoes"
SET ^||a(2,1,1)="iceberg"
SET ^||a(2,1,2)="romaine"
SET $ZERROR="unset"
WRITE !,"last referenced: ",^||a(1,1)
WHILE $ZERROR="unset" {
WRITE !,$ZORDER
}
QUIT
}
DHC-APP>d ##class(PHA.TEST.SpecialVariables).ZORDER()
last referenced: apples
oranges
vegetables
lettuce
iceberg
romaine
tomatoes
nuts
peanuts
WRITE !,$ZORDER
^
<UNDEFINED>zZORDER+15^PHA.TEST.SpecialVariables.1 ^||a(3,1)
上面的示例从最后引用的全局变量(在本例中是进程私有全局变量)开始:^||a(1,1)
。$ZORDER
不包含^||a(1,1)
的值,但从该点开始向前工作。对$ZORDER
的调用按以下顺序遍历下标树节点:(1,2),(2),(2,1),(2,1,1),(2,1,2),(2,2),(3),(3,1)
。每次写入$ZORDER
都会显示每个后续节点中的数据值。然后,它会耗尽节点并生成以下错误:^||a(3,1)
。请注意,^||a(3,1)
不是未定义的;之所以指定它,是因为$ZORDER
在这个全局变量之后找不到另一个全局变量。
网友评论