RPG

68. 複数のスプールをひとつにまとめるには?

請求書や伝票出力において表紙(鑑)の部分は、あるRPGで出力しているが

明細部分は別の異なるRPGによって印刷している。

そして合計行のフッター部分はさらに別のRPGによって印刷出力している。

これらを単に印刷する目的であれば何の問題も無かったのだが

PDFに保管したい場合は3つの部分がバラバラではどうにも扱いにくいし

取引先などに渡すには不向きである。

できるだけ簡単に3つのRPGによるスプールをひとつにまとめる方法はないだろうか?

それには印刷ファイルを3つのPGMの実行でオープンにしたままで

連続して実行して次々と同じスプールに追加していくことで、ひとつのスプールに

まとめることができる。

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

CALL MYLIB/PRTHED   ......
CALL MYLIB/PRTDETAIL     :・・・・2
CALL MYLIB/PRTEND   ・・・・・・

DLTOVR FILE(QPRINT) LVL(*JOB) ................ 3
【解説】
  1. 共通して使用する印刷ファイルQPRINT を3つのプログラムで共用できるように

    SHARE(*YES) を指定する。SECURE(*YES) は上位の他の一時変更からの保護。

    OVRSCODE(*JOB) はV3R2M0 以降では明示的に指定しないとOVRPRTF

    効かない場合がある。

  2. 各印刷PGMを実行するが最初の2つのPGM : PRTHEDPRTDETAIL では

    LR標識を ONにしないで処理を終了するようにしておく。

    LR標識をONにすると印刷ファイルがクローズされてしまうからである。

    最後の PRTEND では LR標識をONにして終了する。

    これによって印刷ファイルがクローズされる。

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