2つのグローバルの内容を比較する方法
これは InterSystems FAQ サイトの記事です。
^%GCMP ユーティリティにて2つのグローバルの内容を比較することができます。
例としてUSERとSAMPLESネームスペースにある、^testと^testを比較する場合は以下のようになります。
※以下の例では、2つのネームスペースに全く同じグローバルを700個作り、その中の一つの中身を変えて検出対象としています。
USER>kill ^test // USERネームスペースに、比較元のグローバル作成(削除したあとに作成)
USER>for i=1:1:100 { for j=1:1:7 { set ^test(i,j)="テスト"_i } }
USER>zn "samples" // SAMPLESネームスペースに、比較先のグローバル作成(削除したあとに作成)
SAMPLES>kill ^test
SAMPLES>for i=1:1:100 { for j=1:1:7 { set ^test(i,j)="テスト"_i } }
SAMPLES>set ^test(50,5,1)=1 // SAMPLESネームスペースに作成したグローバルの一つを変更
SAMPLES>do ^%GCMP
Compare global ^test // 比較したいグローバル
on directory set: (this system) // Enter
in namespace: SAMPLES => // Enter(このネームスペースで良ければ)
with global ^test=> // 比較相手のグローバル
on directory set: (this system) // Enter
in namespace: SAMPLES => USER // 比較相手のネームスペース
Output differences on
Device: // 結果出力先、ターミナルで見る場合は <Enter> 押下
// ※ログファイル名をフルパスで書けば、そちらに出力される
Right margin: 80 =>
Compare global ^test in SAMPLES
with global ^test in USER
^test(50,5,1) exists in ^|"SAMPLES"|test but not in ^|"USER"|test // 相違のあるグローバルを検出
Time=.001822
SAMPLES>
同一インスタンス内ではなく、異なるサーバのインスタンス間での比較を行いたい場合は、^DATACHECKユーティリティを使用します。
^DATACHECKユーティリティの使用方法については、以下の関連記事をご覧ください。