1
0

Db2 for i Services Directory : SYSTOOLS.COMPARE_FILE 表関数②ソースPFの比較

Last updated at Posted at 2024-04-07

前回の続きです。今回はSYSTOOLS.COMPARE_FILE 表関数でソース物理ファイル(オブジェクトタイプ*PF 属性 SRC-PF)の比較をしてみます。
image.png

テスト用ファイル

比較用SRCPF① DEMOLIB/QRPGLESRC/K201R*
※EOLのK201RをCVTRPGSRCコマンドでILE RPG変換したソースファイルです。
今回は50.00行目のEXCEPT命令を修正しソースファイルに差異を作ってみます。
image.png

ファイルの所有者はQDFTOWNです。
image.png

比較用SRCPF② GOMALIB/QRPGLESRC/BCH110*
※①のファイルをコピーして作成し、50.00行目をSEUで編集。命令ステートメント自体は①と同一に書き戻します。ですが、行の更新日付は更新されます。(下記では240408に更新されています)。①のファイルでは 880528 となっています。
image.png

※余談ですが、つまりこのファイルのオリジナルRPGⅢの作成日は1988/05/28なのでしょうか?OS/400 V.1で書いたソースファイルが何世代もSAVE/RESTOREされて今に至る、、みたいな・・だとしたら感無量T T)。あれ、でもCVTRPGSRCしたときソース編集日付も残りましたっけ?確認してみます。

ファイルの所有者はGOMAに変更しています。
image.png

テスト結果

実行例1 属性の比較 ATTRIBUTES *YES

SELECT * FROM TABLE(QSYS2.COMPARE_FILE(
                                       LIBRARY1=>'DEMOLIB', FILE1=>'QRPGLESRC', 
                                       LIBRARY2=>'GOMALIB', FILE2=>'QRPGLESRC',
                                       COMPARE_ATTRIBUTES=>'YES',
                                       COMPARE_DATA=>'NO'
                                       ));

※(現在の?)首記関数ではソースメンバー名の指定ができません。メンバー名指定できるとより使いやすいのではと思います。
結果の方は、データベーステーブルと同様にオブジェクト属性の差異を表示してくれました。
image.png

実行例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行目が返されました。
image.png

なるほど、この結果からするとソースファイルの比較には使えるかもしれません。
パッと触った考慮点としては、ソースファイルを総なめしますので相応に処理時間がかかりそうなこと、CPU負荷などは気にする必要がありそうです。

1
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0