文章目录
第三十六章 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在这个全局变量之后找不到另一个全局变量。