$ZORDER (ObjectScript)
Synopsis
$ZORDER $ZO
Description
$ZORDER contains the value of the next global node (in $QUERY sequence, not $ORDER sequence), after the current global reference. If there is no next global node, accessing $ZORDER results in an <UNDEFINED> error, indicating the last global successfully accessed by $ZORDER. For further details on <UNDEFINED> errors, refer to $ZERROR.
This special variable cannot be modified using the SET command. Attempting to do so results in a <SYNTAX> error.
Example
The following example uses a WHILE loop to repeatedly call $ZORDER to traverse a series of subscript nodes:
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
The above example starts with the last-referenced global (in this case, process-private globals): ^||a(1,1). $ZORDER does not contain the value of ^||a(1,1), but works forward from that point. Calls to $ZORDER traverse the subscript tree nodes in the following order: (1,2), (2), (2,1), (2,1,1), (2,1,2), (2,2), (3), (3,1). Each WRITE $ZORDER displays the data value in each successive node. It then runs out of nodes and generates the following error: <UNDEFINED> ^||a(3,1). Note that ^||a(3,1) is not undefined; it is specified because $ZORDER could not find another global after this one.