$Query()

M照合順序でその引数によって指定されたノードに続き、そして、データ値を持つレベルの独立している、次の添字ありのローカルまたはグローバル変数ノードの名前を返します。

$QUERY関数のフォーマット:

$Q[UERY](glvn)

$QUERY() はデータ値を持つノードの配列全体をスキャンするためのツールとして使用することができます。$QUERY() は、その引数とは異なるレベルを指定して結果を返すことができるため、結果は完全な変数名を提供します。これは、添字の値を返す$ORDER() とは対照的です。ノードでのデータ値にアクセスするには、$ORDER() の戻り値は添字として使用することができますが、$QUERY()の戻り値は間接指定で使用する必要があります。配列が、レベル間ではなく、レベル内で同種類の値を持つ傾向があるため、$QUERY() は、アプリケーションプログラムに比べてユーティリティプログラムのツールとしてより有用です。$QUERY() は、ネストされた$ORDERループを回避するのに役立ちます。

標準は $QUERY() の後にネイキッドリファレンスインジケータの状態を明確に定義していないことに注意してください。$QUERY() の後でGT.Mの中にある間は、ネイキッド レファレンスインジケータは、その結果ではなく、$QUERY() の引数を反映します。

$QUERY()の例

例:

set ^X(1,2,3)="123"
set ^X(1,2,3,7)="1237"
set ^X(1,2,4)="124"
set ^X(1,2,5,9)="1259"
set ^X(1,6)="16"
set ^X("B",1)="AB"

下のツリー図は、前述のルーチンによって生成された構造を表します。

以下のルーチン:

set y="^X"
for  set y=$query(@y) quit:y=""  write !,y,"=",@y

実行結果:

^X(1,2,3)=123
^X(1,2,3,7)=1237
^X(1,2,4)=124
^X(1,2,5,9)=1259
^X(1,6)=16
^X("B",1)=AB

例:

GTM>zwrite lcl
lcl("")=1
lcl(1)=1
lcl(1,2)=2
lcl(1,2,"")=3
lcl(1,2,"","")=4
lcl(1,2,"","",4)=5
lcl(1,2,0)=6
lcl(1,2,"abc",5)=7
lcl("x")=1
GTM>set y="lcl"
GTM>for  set y=$query(@y) quit:y=""  write !,y,"=",@y

この例では、以下の結果を生成します:

lcl("")=1
lcl(1)=1
lcl(1,2)=2
lcl(1,2,"")=3
lcl(1,2,"","")=4
lcl(1,2,"","",4)=5
lcl(1,2,0)=6
lcl(1,2,"abc",5)=7
lcl("x")=1

結果はZWRITEの出力と同じであることに注意してください。

inserted by FC2 system