ファイル同士の照合(データの内容比較)
-
似たデータが入っているファイルが2つ有って、そのデータの差異の有無を比較したい時に使います。
同じデータのデータが入っていても、登録された順番が違ったり、途中で1行ずれていたりすると、その後のレコードが全部”差異有り”となるので注意。(一度実行してみるとどうなるかわかります。)
同じ種類のファイルでもできますが、それでは面白くないので、順編成ファイルと複数索引順編成ファイルのデータを比較してみます。
ファイル名 ZAIKOMASTER ファイル形式 順編成 レコード長 40バイト ブロック化係数 12レコード/ブロック 領域サイズ 200セクタ
ファイル名 ZAIKO ファイル形式 複数索引順編成 レコード長 40バイト ブロック化係数 12レコード/ブロック 領域サイズ 200セクタ キーファイル名 ZAIKOKEY1 キー先頭位置 1バイト目 キー長 6バイト キー使用効率 50% キーファイルサイズ 100 -
ファイル名も中に入っているデータも、たった今即興でそれっぽい感じで作った適当なものです。
下の説明をする為に、この2つのファイルのデータはほとんどデータが同じで、2レコード分だけ違っているように仕込んでいます。
RUNコマンド入力行で、「#ABC;」と入力して「ENTERキー」を押します。
簡易操作ユーティリティ#ABCが起動されました。
実行したい機能を選びます。「1.ファイル情報の保守」を選択します。
次はこのような画面になります。
「6.照合」を選択します。
「1.ファイル」を選択します。
マスタファイルには、比較する2つのファイルのうちのどちらかのファイル名を入力します。
「ZAIKOMASTER」と入力しました。
マスタ用オプションに何か入力したいならば「YES」、特に入力することが無いならば「NO」を選択します。 下の画面は「YES」にした場合です。マスタファイルに入力したファイルの詳細情報などを入力することになります。
トランザクションファイルには、もう一方のファイルの名前を入力します。
今回の例では「ZAIKO」と入力しました。
トランザクション用オプションは何も入力する必要が無ければ「NO」を選択します。
下の画面は「YES」にした場合です。
オプション機能は何も入力する必要が無ければ「NO」を選択します。
削除レコードも比較するかどうかや実行結果を印刷するプリンタを指定したい場合は「YES」にします。
「NO」にしたときは削除レコードは比較しない、実行結果はPRN999に印刷になります。
たくさん印刷されると困るので、印刷しないでスプールに落とした方がいいかもしれません。
ここまで入力するとファイルの照合(比較)が行われ、結果がガリガリと印刷されます。
照合作業が終了すると最初の画面に戻ります。
簡易操作ユーティリティを終了したいときは、「99」と入力して「ENTERキー」を押します。
それでは、結果を見てみましょう。 下が2つのファイルの比較結果を印刷したものです。
RECORD-NO. ....-....1....-....2....-....3....-....4....-....5....-.. 000055 00005500000100 MS FFFFFFFFFFFFFF44444444444444444444444444 0000550000010000000000000000000000000000 000055 00005500000140 TR ************F*************************** ************4*************************** 000075 00007500000100 MS FFFFFFFFFFFFFF44444444444444444444444444 0000750000010000000000000000000000000000 000075 00007500000030 TR ***********FF*************************** ***********03*************************** HISTORY MASTER TRANSACTION DEVICE : MSD000 MSD000 VOLUME NAME : AVX000 AVX000 FILE NAME : ZAIKOMASTER ZAIKO RECORD SIZE : 0040 0040 NUMBER OF RECORDS : 000201 000201 NUMBER OF UNMATCHED RECORDS : ****** 000002 END OF LISTING
55レコード目と75レコード目に差異があるという結果です。
55レコード目は、13桁目に差異があり、ZAIKOMASTERの方は「0」だが、ZAIKOの方は「4」になっています。 75レコード目は、12桁目と13桁目に差異があり、ZAIKOMASTERの方は「10」だが、ZAIKOの方は「03」になっていることが分かります。