AS400 / IBM i の障害調査では、ジョブログに出てくるメッセージIDをどう読むかが大事です。CPF、RNX、MCH、RNF、MSGW などの文字を見るだけではなく、「そのメッセージが原因なのか、結果として出ているだけなのか」を分けて考える必要があります。
このページでは、AS400初心者や保守担当者向けに、現場でよく見るメッセージIDの種類と確認順をまとめます。販売管理システムのように、受注、出荷、在庫引当、売上計上、請求、外部連携がつながっている環境では、メッセージIDの見方を間違えると後続処理やリカバリー判断にも影響します。
MSGWで返答に迷ったら C・I・R・D・Gを返す前に、AS400 MSGW返答判断表 も確認してください。特にDやGは、リトライ可能な処理や後続処理に影響することがあります。
CPF番号から確認したい場合 CPF0000、CPF4101、CPF4131、CPF9801など、よく見るCPFの確認ポイントは AS400 CPFエラー一覧 にまとめています。
RNX番号から確認したい場合 RPG実行時エラーの見方は、AS400 RNXエラー一覧 にまとめています。配列、10進数データ、RNX8888などを調べる入口になります。
実例でジョブログを読みたい場合 CPF・RNX・MSGWが出た時の読み方は、AS400ジョブログ実例集 にまとめています。最後のエラーだけで判断しない練習になります。
AS400のメッセージIDで最初に見る分類
| 分類 | よく見る場面 | 最初に確認すること | 関連記事 |
|---|---|---|---|
CPF | ファイルオープン、権限、オブジェクト存在、ジョブ制御などのシステム系メッセージ | ジョブログ内で同じCPFがどこから出ているか、直前に別の原因メッセージがないかを見る | CPFエラーの調査手順 |
RNX | RPG実行時エラー。配列、桁あふれ、データ変換、再帰的エラーなど | プログラム名、ステートメント、直前のCALL関係、同じエラーの繰り返しを確認する | RNX8888の対応 |
MCH | マシン・例外系。プログラムやデータ状態が原因で出ることがある | 単独で判断せず、前後のCPF/RNXや呼び出し元を合わせて確認する | ジョブログ確認手順 |
RNF | RPGコンパイル時のエラーや警告 | コンパイルリストの下部、重大度、RNF番号、該当行を確認する | コンパイルリストの見方 |
MSGW | ジョブがメッセージ待ちで止まっている状態 | 7番で詳細メッセージを確認し、勝手にDやGを返さない | MSGWの対応 |
CPFエラーを見る時の考え方
CPF はAS400の現場でかなりよく見ます。ファイルオープンエラー、権限不足、オブジェクトが存在しない、ジョブ待ち行列やスプール周りなど、範囲が広いのが特徴です。初心者は「CPFが出たから障害」とだけ見がちですが、実際にはその前後に原因があることもあります。
私なら、まずメッセージIDを確認し、ジョブログ全体を検索して、同じメッセージや関連メッセージがどこで出ているかを見ます。ファイルオープン系なら、ライブラリリスト、対象ファイル、コンパイル環境、実行環境の違いを疑います。販売管理システムでは、受注、出荷、在庫、売上など後続処理に影響するため、すぐに止めるかどうかもCL全体を見て判断します。
RNXエラーを見る時の考え方
RNX はRPG実行時のメッセージです。配列の指標エラー、10進数データエラー、変換エラー、再帰的エラーなど、プログラム実行中に起きた問題を追う時に出てきます。RNX8888のような再帰的エラーは、表に出ているメッセージだけでなく、その前に何が起きたかを見ることが大事です。
特にRPG保守では、配列の定義数が少なすぎて、ある日データ件数が増えた時にパンクすることがあります。こういう不具合は、単体テストでフル桁入力や件数増加パターンを見ていないと本番で出ます。RNX系は、プログラム名、該当ステートメント、呼び出し元、入力データの状態をセットで確認します。
MSGWでやってはいけない返答
MSGW は、ジョブがメッセージ待ちで止まっている状態です。WRKACTJOBでMSGWを見つけたら、まず詳細メッセージを確認します。初心者がやりがちで危ないのは、落ち着かずにジョブを強制終了したり、Dを返してしまうことです。
| 返答 | 意味 | 現場での注意 |
|---|---|---|
C | キャンセル | 処理を止める判断。後続処理やリカバリー方針を確認してから返す |
I | 無視 | 無視してよいメッセージか、ジョブログと処理内容を見て判断する |
R | リトライ | 一時的なロックや状況次第では復旧できる可能性がある |
D | ダンプを取りキャンセル | 安易に返すとリトライで復旧できた処理を戻せなくすることがある |
G | 強制的に進める系の返答 | RPGがこけた状態で後続処理を進める可能性があり、かなり危険 |
昔、仕事ができない人が勝手にDを返して大惨事になったことがあります。リトライで復旧できたかもしれない処理を、自分の判断で戻せない状態にしてしまう。MSGWは「止まっているから早く何か返す」ではなく、「何を返すと業務データにどう影響するか」を考えるところです。
コンパイル時のRNFは実行時エラーとは分けて考える
RNF は、RPGのコンパイルリストで見るメッセージです。実運用の障害対応で直接見る機会はCPFやRNXほど多くありませんが、開発・保守では重要です。コンパイルリストの一番下で、コンパイルされたか失敗したか、重大度がいくつかを確認します。
重大度40はファイル定義など致命的な問題につながりやすく、重大度30はフィールド定義などの修正で改善できることがあります。RNF7031のような番号を見たら、コンパイルリスト内で番号を検索し、該当箇所にあたりをつけてソースを直し、再コンパイルします。
メッセージIDを見た後の確認順
- WRKACTJOBでMSGWや暴走ジョブがないかを見る
- 対象ジョブのジョブログを開く
- 一番下の重大度や最後のメッセージを確認する
- 最後のエラーだけで判断せず、前後のメッセージを追う
- ライブラリ、ファイル、プログラム、呼び出し順を確認する
- MSGWの場合は、返答前に上長やメンバーへ共有する