ダンプ・リスト: QPSRVDMP は通常はファイルとして出力されるのだが
ダンプ・リストのデータ利用をソフトウェア製品として使う場合には
スプールにダンプ・リスト: QPSRVDMPを出力してCPYSPLFで
QTEMPのファイルに変換していたのではパフォーマンスが低下するし
何よりQTEMPに作業ファイルが出力されているのは
ソフトウェア製品としては素人みたいで不格好である。
_
そこでOVRPRTFを使えばスプールではなくファイルにダンプ・リストを
出力することができる。
OVRPRTF で TOFILE に印刷ファイルではなくて物理ファイルを指定するのである。
例えば QTEMPに作成した物理ファイルをTOFILEとして指定すればよい。
さらにQTEMPのファイルに出力するのではQTEMPにファイルを作成する
時間がとられてしまう。
既存のファイルのメンバーとして追加すれば作業ファイルを
QTEMPになど作成する必要はなく良好なパフォーマンスを得ることができる。
ソフトウェア製品であれば少しでもパフォーマンスを良くするための工夫が必要である。
[例: TESTOVR3 ]
ソースはこちらから
0001.00 PGM 0002.00 /*-------------------------------------------------------------------*/ 0003.00 /* TESTOVR3 : QPSRVDMP オーバーレイテスト */ 0004.00 /* */ 0005.00 /* 2024/04/12 作成 */ 0006.00 /*-------------------------------------------------------------------*/ 0007.00 0008.00 ADDPFM FILE(QRYLIB/QPSRVDMP) MBR(@SIREMT) 0009.00 MONMSG CPF7300 0010.00 CLRPFM FILE(QRYLIB/QPSRVDMP) MBR(@SIREMT) 0011.00 OVRPRTF FILE(QPSRVDMP) TOFILE(QRYLIB/QPSRVDMP) + 0012.00 LVLCHK(*NO) OVRSCOPE(*JOB) + 0013.00 OPNSCOPE(*JOB) 0014.00 OVRDBF FILE(QPSRVDMP) TOFILE(QRYLIB/QPSRVDMP) + 0015.00 MBR(@SIREMT) OVRSCOPE(*JOB) OPNSCOPE(*JOB) 0016.00 DMPOBJ OBJ(QTROBJ/@SIREMT) OBJTYPE(*QRYDFN) 0017.00 DLTOVR FILE(QPSRVDMP) LVL(*JOB) 0018.00 ENDPGM
[解説]
さてメンバーを指定するのにはちょっとしたコツがある。
OVRPRTF では TOFILEパラメータでメンバーを指定することができないので
OVRDVF の MBR で指定することになるのだが
OVRPRTF の前に OVRDBF を実行してもメンバー指定は効果はなく無視されてしまう。
OVRPRTF を実行したから OVRDBF で MBR を指定するとメンバー指定が有効になる。
0016.00 DMPOBJ OBJ(QTROBJ/@SIREMT) OBJTYPE(*QRYDFN)
の実行でわかるようにQUERYオブジェクトのダンプ・リストを出力して解析しようと
していることがわかる。
㈱オフィスクアトロではIBM iのオブジェクトを直接読み取る技術はあるのだが
*QRYDFN (=QUERYオブジェクト)はユーザーが作成したオブジェクトであっても
ライセンス・プログラムと見なされてオブジェクトの読み取りが禁止されている。
それでDMPOBJによってダンプ・リストを出力してQUERYオブジェクトを
解析しようというわけでこれはもちろん次期製品開発のためである。
この方法によってオブジェクトの解析は圧倒的にパフォーマンスが良くなった。
製品として優れたパフォーマンスを発揮してくれる。
製品としてリリースするからには機能として動作するだけではなく
最適なパフォーマンスをユーザーに提供しなければならない。
※今回紹介した方法で*OUTFILEとしてファイル出力が用意されていないIBMユーティリティであっても
OVRPRTF + OVRDBF のこの方法でファイルに出力することができるので試して頂きたい。
_