CL

166. ダンプ・リストをファイルに出力するには

ダンプ・リスト: 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 のこの方法でファイルに出力することができるので試して頂きたい。
_