RPG プログラム内のプログラム呼び出しが失敗したときに、より具体的な詳細を伝えることができるようにしようとしています。監視したい例外は、ゼロ除算などの悪いプログラムロジックとは何の関係もありません。確認したいのは、権限の問題でプログラム呼び出しが失敗したか、プログラムが見つからないかです。73 ~ 74 のインジケータは、例外があることを示すだけで、その背後にある理由はわかりません。CL プログラムの MONMSG ステートメントのように、RPG でこれを検出する手段はありますか?
2 に答える
エラーには、プログラムとファイルの 2 つのクラスがあります。プログラム エラーとは、ゼロ除算、CALL の失敗などです。完全なリストはProgram Status Codesにあります。これらのエラー コードは非常に粗いものです。PGMX を呼び出して権限に問題がある場合は、00211 が返されます。プログラムがライブラリ リストにない場合は、00211 が返されます。プログラムが異常終了した場合 (たとえば、エスケープ メッセージが原因で) CALL が失敗した理由を知る必要がある場合は、ジョブ ログ/プログラム メッセージ キューを調べる必要があります。
ファイル エラーの場合、ファイル情報データ構造にエラー コードが記録されます。ファイル エラーは、参照制約違反や永久 I/O エラーなどです。繰り返しますが、これらのファイル ステータス コードはそれほど詳細ではありません。権限エラーが発生したことを知る必要がある場合は、ジョブ ログから調べる必要があります。
ファイル エラーに関する 1 つのメモ。独自のエラー ハンドラー (ファイル例外エラー サブルーチン) を作成する場合、このハンドラーはサイクルがファイルを開くまでアクティブにならないことに注意する必要があります。つまり、サイクルでファイルを開くと、「ファイルがライブラリ リストにありません」や「ファイルへのアクセス権がありません」などのエラーをキャッチできません。オープン時に発生するエラーをキャッチするには、OPEN オペコードを使用して自分でファイルを開く必要があります。それらもCLOSEすることを忘れないでください。
エラー処理操作および/またはプログラム例外サブルーチンとプログラム ステータス データ構造を使用して、特定のエラー条件をキャッチして解釈します。