マージ(Merge)

MERGEコマンドは、別の変数へ、変数とそのすべての下位ノードをコピーします。 MERGEは、転送先の変数を削除しませんし、またその下位ノードも削除しません。

MERGEコマンドのフォーマットは:

M[ERGE][:tvexpr] glvn1=glvn2[,...]
[注意] 注意

GT.Mは、エラーのように標準で記述されている特定のシンタックスやアクションを許可することがあります。たとえば、ソースとディストネーションの位置で操作を指定するMERGEコマンドは重複します、しかし$DATA(source)=0 はエラーを生成しません(無操作に相当)。

MERGEでは、別のローカルまたはグローバル変数へ、ローカルまたはグローバル変数のサブツリーのコピーが簡単にできます。サブツリーは、指定された変数の下位ノードであるすべてのグローバルまたはローカル変数です。 MERGEは、サブツリーのコピーを行うため$ORDER()または$QUERY()の参照を、一連のSETコマンドを使用へのワンコマンド代替テクニックを提供しています。

MERGEの例

例:

GTM>Set ^gbl1="one"
                
GTM>Set ^gbl1(1,1)="oneone"
GTM>Set ^gbl1(1,1,3)="oneonethree"
GTM>Set ^gbl1(1,2,4)="onetwofour"
GTM>Set ^gbl2(2)="gbl2_2"
GTM>Set ^gbl2(2,1,3)="gbl2_2_1_3"
GTM>Set ^gbl2(2,1,4,5)="gbl2_2_1_4_5"
GTM>Merge ^gbl1(1)=^gbl2(2)
GTM>WRITE $Reference
^gbl1(1)
GTM>ZWRite ^gbl1
^gbl1="one"
^gbl1(1)="gbl2_2"
^gbl1(1,1)="oneone"
^gbl1(1,1,3)="gbl2_2_1_3"
^gbl1(1,1,4,5)="gbl2_2_1_4_5"
^gbl1(1,2,4)="onetwofour"
GTM>ZWRITE ^gbl2
^gbl2(2)="gbl2_2"
^gbl2(2,1,3)="gbl2_2_1_3"
^gbl2(2,1,4,5)="gbl2_2_1_4_5"
GTM>

この例では、MERGEは別に1つのグローバルのサブツリーをコピーする方法を示しています。$DATA()の値が1または11となっている ^gbl(2) のサブツリーの内のノードは、次のように ^gbl1(1) のサブツリーにコピーされます。

^gbl1(1) is updated from the value of ^gbl2(2)
^gbl1(1,1,3) is updated from the value of ^gbl2(2,1,3)
^gbl1(1,1,4,5) is updated from the value of ^gbl2(2,1,4,5)

^gbl1(2,1) と ^gbl2(2,2,4) は値を持っていないので($DATA()=0)、対応するノード ^gbl1(1,1) と ^gbl(1,2,4) のそれぞれ変更されません。あたかもSETがMERGEに置き換わったように、ネイキッドインジケータは 値 ^gbl(1) をとります。 MERGEコマンドでは ^gbl2(2) または その下位ノードが変更されないことに注意してください。 ^gbl(1)の上位ノードにも変更されません。

例:

GTM>Kill
                
GTM>Set ^gbl(1,2)="1,2"
GTM>Merge lcl(3,4)=^gbl(1)
GTM>Set ^("naked")=2
GTM>ZWRite ^gbl
^gbl(1,2)="1,2"
^gbl("naked")=2
GTM>ZWRite lcl
lcl(3,4,2)="1,2"
GTM>

この例では、MERGEは、変数が存在しない時に、変数のサブツリーを作成する方法を示しています。また、MERGEのソースがグローバルと転送先ローカルの場合に、ネイキッドインジケータがセットされている方法がわかります。

inserted by FC2 system