メニューボタン
製品・技術情報2019.06.27

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のプログラム資料説明書を確認する必要があります。

軽微な変更の場合、記載されないこともあるようです。十分検証を行ってください。

サイト内全文検索

PAGE TOP