前回の続きです。今回はSYSTOOLS.COMPARE_FILE 表関数でソース物理ファイル(オブジェクトタイプ*PF 属性 SRC-PF)の比較をしてみます。
テスト用ファイル
比較用SRCPF① DEMOLIB/QRPGLESRC/K201R*
※EOLのK201RをCVTRPGSRCコマンドでILE RPG変換したソースファイルです。
今回は50.00行目のEXCEPT命令を修正しソースファイルに差異を作ってみます。
比較用SRCPF② GOMALIB/QRPGLESRC/BCH110*
※①のファイルをコピーして作成し、50.00行目をSEUで編集。命令ステートメント自体は①と同一に書き戻します。ですが、行の更新日付は更新されます。(下記では240408に更新されています)。①のファイルでは 880528 となっています。
※余談ですが、つまりこのファイルのオリジナルRPGⅢの作成日は1988/05/28なのでしょうか?OS/400 V.1で書いたソースファイルが何世代もSAVE/RESTOREされて今に至る、、みたいな・・だとしたら感無量T T)。あれ、でもCVTRPGSRCしたときソース編集日付も残りましたっけ?確認してみます。
テスト結果
実行例1 属性の比較 ATTRIBUTES *YES
SELECT * FROM TABLE(QSYS2.COMPARE_FILE(
LIBRARY1=>'DEMOLIB', FILE1=>'QRPGLESRC',
LIBRARY2=>'GOMALIB', FILE2=>'QRPGLESRC',
COMPARE_ATTRIBUTES=>'YES',
COMPARE_DATA=>'NO'
));
※(現在の?)首記関数ではソースメンバー名の指定ができません。メンバー名指定できるとより使いやすいのではと思います。
結果の方は、データベーステーブルと同様にオブジェクト属性の差異を表示してくれました。
実行例2 データの比較 COMARE_DATA *YES
次はファイルの中身の比較です。
SELECT * FROM TABLE(QSYS2.COMPARE_FILE(
LIBRARY1=>'DEMOLIB', FILE1=>'QRPGLESRC',
LIBRARY2=>'GOMALIB', FILE2=>'QRPGLESRC',
COMPARE_ATTRIBUTES=>'NO',
COMPARE_DATA=>'YES'
)
その結果は、、ソースの行単位の編集日付も比較してくれているようです。50.00行目が返されました。
なるほど、この結果からするとソースファイルの比較には使えるかもしれません。
パッと触った考慮点としては、ソースファイルを総なめしますので相応に処理時間がかかりそうなこと、CPU負荷などは気にする必要がありそうです。