DSPFFD処理時にCPI9802のエラーが出てしまう
Question
CLプログラムの処理の一つにDSPFFD処理があります。実行するとジョブログにCPI9802のエラーが出ています。
このエラーは何でしょうか。出ないように回避することは可能でしょうか。
Answer
CPI9802の内容はDSPMSGDで確認すると、以下の内容です。
メッセージID . . . . . . . : CPI9802
メッセージ . . : &2 のファイル &1 のレコード様式がモデル・ファイルと一致しません。
原因--ライブラリー &2 の出力ファイル &1 のレコード様式が,システム提供のモデル・ファイルと同じレコード様式になっていません。
以下のロジックを実行しているログがジョブログにありました。
DSPFFD FILE(BELLDATA/DATA) OUTPUT(*OUTFILE) +
OUTFILE(BELLDATA/DSPFDP)
OUTPUTファイルはIBM i(AS400)OSのVersionによって変わっている場合があります。
例えば、DSPFFDをOUTFILEにすると、
V6.1 レコード長 1,046
V7.2 レコード長 1,066 ※レコード様式名は同じでした。
OUTPUTファイルが下位のVersionから持ってきて使用した場合、レコード長が異なるためCPI9802とメッセージが出てしまいます。
その場合、ご利用しているVersionで新たに作成しておく必要があります。
上記以外でもVersionによってレイアウトが変わる場合があります。
例えばOUTPUTを*PRINTとしてそれをCPYSPLFでファイル化している場合にも発生します。
下位のVersionからプログラムを移行した場合には、十分な検証を行ってください。
リスクとしては正しい結果が得られない場合がありますので、その際は
バージョン 7.2 プログラム資料説明書
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_72/rzaq9/rzaq9.pdf?view=kc
を読んで、仕様変更があったかを確認する必要があります。
上記の資料はV7.1→V7.2になりますので、V6.1→V7.2やV5.4→V7.2と間が開いていく場合は、 それぞれのVersionのプログラム資料説明書を確認する必要があります。
軽微な変更の場合、記載されないこともあるようです。十分検証を行ってください。
by けやきのじぃじ