RPG
68. 複数のスプールをひとつにまとめるには?
請求書や伝票出力において表紙(鑑)の部分は、あるRPGで出力しているが
明細部分は別の異なるRPGによって印刷している。
そして合計行のフッター部分はさらに別のRPGによって印刷出力している。
これらを単に印刷する目的であれば何の問題も無かったのだが
PDFに保管したい場合は3つの部分がバラバラではどうにも扱いにくいし
取引先などに渡すには不向きである。
できるだけ簡単に3つのRPGによるスプールをひとつにまとめる方法はないだろうか?
それには印刷ファイルを3つのPGMの実行でオープンにしたままで
連続して実行して次々と同じスプールに追加していくことで、ひとつのスプールに
まとめることができる。


OVRPRTF FILE(QPRINT) SECURE(*YES) OVRSCODE(*JOB) SHARE(*YES) .... @

CALL MYLIB/PRTHED
CALL MYLIB/PRTDETAIL
CALL MYLIB/PRTEND
line2
A
DLTOVR FILE(QPRINT) LVL(*JOB) ................ B
 

【解説】
 @
共通して使用する印刷ファイルQPRINT を3つのプログラムで共用できるように
SHARE(*YES) を指定する。SECURE(*YES) は上位の他の一時変更からの保護。
OVRSCODE(*JOB) はV3R2M0 以降では明示的に指定しないとOVRPRTF
効かない場合がある。

 A
各印刷PGMを実行するが最初の2つのPGM : PRTHEDPRTDETAIL では
LR標識を ONにしないで処理を終了するようにしておく。
LR標識をONにすると印刷ファイルがクローズされてしまうからである。
最後の PRTEND では LR標識をONにして終了する。
これによって印刷ファイルがクローズされる。

 B
印刷ファイルの一時変更を解除する。

PREVIOUS INDEX NEXT
HOME