記事
· 2023年3月8日 2m read

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ユーティリティの使用方法については、以下の関連記事をご覧ください。
 

enlightened【関連】
2つのデータベースにある複数のグローバルやルーチンを比較する方法

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください