Discover AS/400

AS/400に関する覚書

スプール(罫線情報)を保存する方法

スプールの保存方法でCPYSPLFでのテキスト情報のみの保存が有名ですが、次の方法を使用すると、罫線等のバイナリーの情報を含めて保存する事が可能となるようです。

用紙タイプやCPI、LPIなどのスプール属性も保存復元できます。
CALL_ PGM(QSYS/QSPGETF)_ PARM('QSYSPRT___'_ 'SPLPF_____XYZLIB____'_ 'DSP01_____USER1_____123456'_ X'0001'_ 'SPLPF_____')

"_"はスペースを表しています。パラメータ中のスペース数は意味があるそうですので注意してください。全て英大文字で入力してください。

物理ファイルとメンバーは自動的に作成されます。1物理ファイルには1メンバーでの作成を推奨するそうです。

パラメータは5つとも全て指定して下さい。

パラメータの説明
1 10文字 スプールファイル名
2 20文字(10文字) 任意の物理ファイル名(自動作成)
  (10文字) 任意のライブラリー名(既存のライブラリを指定)
3 26文字(10文字) ジョブ名
  (10文字) ユーザー名
  (6文字) ジョブ番号
4 16進4桁 スプールファイル番号16進数で指定X'0001'〜X'270F'まで
V5R1以降では8桁に変更になっているようです

日本IBM「iSeriesのスプールをファイルに落とす方法」で公開されています。


■保存した、スプールを復元する方法

CALL PGM(QSYS/QSPPUTF) PARM('SPLPF_____XYZLIB____' 'QPRINTS___QGPL______' 'SPLPF_____')

   "_"はスペースを表しています。上記コマンド実行後にスプールが出力されます。

パラメータの説明
1 20文字(10文字) 保存した物理ファイル名
  (10文字) 保存した物理ファイルのライブラリー名
2 20文字(10文字) 出力するプリントファイル名
  (10文字) 出力するプリントファイルのライブラリー名
3 10文字 保存した物理ファイルのメンバー名


■(参考)CPYSPLFで保管復元する方法

制限として、重ね打ちや罫線情報などのバイナリー情報などが含まれるものは完全に復元できません。

【CPYSPLFでの保存方法】
> CRTPF QTEMP/SPLPF RCDLEN(134) IGCDTA(*YES)
 ライブラリー QTEMP にファイル SPOOLPF が作成された。
 メンバー SPOOLPF が QTEMP のファイル SPOOLPF に追加された。
> CPYSPLF FILE(QSYSPRT) TOFILE(QTEMP/SPLPF) JOB(123456/USER/JOBNAME) CTLCHAR(*FCFC)
 桁調整機能はサポートされていない。
 21 個のレコードが QTEMP のファイル SPOOLPF にコピーされた。

帳票の幅+2バイトの物理ファイルを作成し、CTLCHAR(*FCFC)でコピーします。
物理ファイルの中身を見るとその意味がわかります。

以下のように先頭2バイトに制御文字が付加されます。
SPYSPLF.jpg


【CPYSPLFでの復元方法】

以下の方法でCPYSPLFで保管した物理ファイルをスプールファイルへ戻せます。

この方法ではスプール属性までは保存されませんので、必要であればOVRPRTFで指定変更の必要があります。
必ずCTLCHAR(*FCFC)の指定を行ってください。
> OVRPRTF QPRINTS CPI(1O) PAGESIZE(66 132) CTLCHAR(*FCFC)
> CPYF QTEMP/SPLPF QPRINTS
ファイル QPRINTS の印刷レコードは次の行から続けられる。
メンバー SPLPF から 19 個のレコードがコピーされた。

HOME : TOP

Category

Archive