3

プログラム内のファイルに CPF4131 が表示される理由として考えられるものは何ですか?

そして、これを解決するにはどうすればよいでしょうか?

 Message . . . . : Error message CPF4131 appeared during OPEN for file 
 TEST (C S D F). 

Cause . . . . . : RPG procedure TEST2 in program TESTLIB/TEST2
received the message CPF4131 while performing an implicit OPEN operation on 
file SOURCE. The actual file is SOURCE. 
4

2 に答える 2

15

レコードフォーマットレベルチェックです。これは、開いているファイルのレコード様式が、プログラムのコンパイル時に検出されたものと同じ様式レベル ID を持っていないことを意味します。つまり、レコード内のフィールドのレイアウトに違いがあります。ファイル レイアウトが変更されている可能性があります。変更されている場合は、おそらく RPG プログラムを再コンパイルする必要があります。

ID は、レコード内のすべてのフィールドの数と順序のハッシュとして計算され、その名前と、フィールドがプログラムによってレコード バッファから格納または取得される方法に影響を与える可能性のある属性が含まれます。したがって、フィールド名、データ型、長さ、フィールドの位置は、ID に影響を与える可能性のあるものの例ですが、列見出しやフィールド テキストは影響しません。

一般に、ジョブ・ログを調べて以前のメッセージを調べ、問題の原因を調べる方法を学習する必要があります。DSPJOB または WRKJOB がおそらく最も一般的な方法です。オプション 10 を選択し、F10 を押して低レベル メッセージを表示し、F18 (シフト F6) を押してリストの最後に移動し、ページを戻します。

于 2013-05-27T06:11:17.623 に答える
3

ARINQDSP という名前のワークステーション ファイルと、ARINQ という名前の RPG プログラムを想像してください。ARINQDSP を編集して、ディスプレイに新しいフィールドを追加してコンパイルすると、新しいレコード形式になります (@WarrenT で説明されているように)。ARINQ を呼び出すと、OS はプログラムに保存されているレコード形式を比較します。ファイルに保存されている実際のレコード形式. これらは異なるため、CPF4131 が発行されます. RPG プログラムを再コンパイルすると、現在のレコード形式 ID がプログラム オブジェクトに保存され (現在のバッファー レイアウトと共に!)、CALL ARINQ が期待どおりに実行されます。 . これがレベルチェックエラーの最も一般的な原因です。

これが発生する別の理由があります: ライブラリ リストの不一致です。上記と同じ一連のイベントを想像してください。今回は、開発ライブラリで作業を行うことを想像してください。ARINQDSP を変更し、ファイルとプログラムの両方を再コンパイルしました。ライブラリ リストの一番上に DEVELOPMENT があります。次のようにします。CALL PRODUCTION/ARINQ を呼び出します。OS は製品ライブラリの元のプログラムを呼び出しますが、ライブラリ リストのために、DEVELOPMENT ライブラリから ARINQDSP を開こうとします。実動プログラムに保管されているレコード様式 ID が、開発ライブラリーのワークステーション・ファイルおよびブーム: レベル・チェックに保管されているレコード様式レベル ID と一致しません。

于 2013-05-27T13:21:50.510 に答える