$Order 関数 (2)
$Order では、逆の順序で添え字を検索することもできます。この場合、第 2 引数で -1 を指定します。
ターミナル
USER>write
x(1)=1
x(4)=2
x(9)=3
USER>write $order(x(""), -1)
9
USER>write $order(x(9), -1)
4
USER>write $order(x(4), -1)
1
USER>write $order(x(1), -1)
USER>
多くの場合、$Order を使用して有効な添え字値を取得する際には、配列のその位置に格納されている値も取得します。
例えば、以下のコードは、次の添え字を a の 4 の後に入れ、そこに格納されていた値を b に入れます。
ターミナル
USER>set a = $order(x(4)), b = x(a) write a, " ", b
9 3
USER>
同じことを簡単で高速な方法で実行できます。$Order の 3 番目の引数に変数名を割り当てると、2 ステップの代わりに 1 ステップでこれらの値を取得できます。2 番目の引数には 1 (前方検索) または -1 (後方検索) を指定します。
ターミナル
USER>set a = $order(x(4), 1, b) write a, " ", b
9 3
USER>set a = $order(x(9), -1, b) write a, " ", b
4 2
USER>