AS400 / IBM i のRPG保守で実行時エラーを見る時、RNX で始まるメッセージは重要です。CPFがシステム系のメッセージとして出ることが多いのに対して、RNXはRPGプログラムの実行中に起きた問題を追う入口になります。
このページでは、AS400初心者やRPG保守担当者向けに、RNXエラーを見た時の確認ポイントを整理します。厳密な意味はメッセージ詳細と環境で確認する必要がありますが、現場では「どのプログラムで、どの入力データで、どの呼び出し順で起きたか」を見ることが大切です。
現場目線の基本 RNXは番号だけで結論を出さず、ジョブログの前後、該当プログラム、入力データ、配列、ファイル定義、CALL関係をセットで確認します。最後のRNXだけを見ても、根本原因にたどり着けないことがあります。
実例でジョブログを読みたい場合 CPF・RNX・MSGWが出た時の読み方は、AS400ジョブログ実例集 にまとめています。最後のエラーだけで判断しない練習になります。
RNXエラーを見る時の最初の確認順
- ジョブログでRNXの前後に出ているメッセージを確認する
- プログラム名、ステートメント、呼び出し元を確認する
- 入力データ、桁数、符号、ブランク、ゼロ、件数を確認する
- 配列、添字、ループ条件、最大件数を確認する
- ファイル定義、DSPFFD、コンパイル環境と実行環境の差を見る
よく見るRNXエラーと確認ポイント
| RNX | 現場で疑うこと | 最初に見るポイント | 関連 |
|---|---|---|---|
RNX0100系 | RPG実行時エラー全般の入口として見る | メッセージ詳細、プログラム名、発生箇所、直前のCPF/RNXを確認する | ジョブログ確認 |
RNX0112 | 数値、桁、変換、入力データの不整合を疑う場面がある | 対象項目の桁数、符号、ブランク、文字混入、DDS定義を確認する | DSPFFD/DSPPFM |
RNX0121 | 計算、代入、変換系の不整合を疑う場面がある | 数値項目、編集項目、フル桁入力、異常値の有無を確認する | 単体テスト |
RNX0301 | 配列、添字、範囲外アクセスを疑う入口 | 配列定義数、入力件数、ループ条件、添字の加算条件を確認する | RPG保守 |
RNX0351 | ファイル、レコード、入出力処理まわりの問題を疑う | ファイル定義、レコード形式、READ/CHAIN/UPDATE周りを確認する | PF/LF |
RNX1216 | 10進数データ、数値変換、テスト不足を疑う | 入力データ、外部連携データ、数値項目の桁・符号・ブランクを確認する | 単体テスト |
RNX8888 | 再帰的エラー。表に出ているメッセージだけでは原因が見えにくい | CALL関係、直前のエラー、繰り返し発生しているメッセージを追う | RNX8888対応 |
配列系RNXで見るポイント
RPG保守で怖いのは、配列の定義数が少なすぎて、ある日データ件数が増えた時にパンクするケースです。最初は問題なく動いていても、販売管理システムでは商品数、店舗数、明細件数、外部連携件数が増えることで、今まで通っていた処理が突然落ちることがあります。
配列系のRNXを見た時は、単に該当行だけを直すのではなく、配列の最大件数、ループ条件、入力データ件数、終了条件を確認します。単体テストでは、通常件数だけでなく、件数を増やしたパターンを見ておくと事故を減らせます。
10進数・数値変換系RNXで見るポイント
10進数データエラーや数値変換系のRNXは、単純にテスト不足で出ることがあります。数字項目に想定外の文字が入っている、ブランクが入っている、符号や桁数が合っていない、外部連携データの形式が違う、というようなケースです。
販売管理では、数量、金額、単価、税額、在庫数、発注数、売上金額など、数値項目が多くあります。フル桁入力テスト、ゼロ、マイナス、最大桁、外部CSV連携データなどを確認していないと、本番でRNXとして出ることがあります。
RNX8888は前後の流れを見る
RNX8888 は、再帰的エラーとして出ることがあり、最後のメッセージだけを見ても原因が分かりにくいことがあります。RNX8888が出た時は、CALL関係、呼び出し元、直前のCPFやRNX、同じメッセージが繰り返されていないかを見ます。
RNX8888は、見えているエラーが「結果」で、その前に別の原因があることがあります。ジョブログを下から見るだけでなく、少し上に戻って、どの処理から流れが変になったのかを追うことが大事です。
RNXエラーで単体テストを見直す
RNXが出た時は、プログラム修正だけで終わらせず、単体テストの見直しも必要です。仕様通りに動くか、パターンテストを行ったか、フル桁入力を見たか、データ件数を増やしたか、外部連携データを確認したかを見るべきです。
エビデンスだけきれいに残っていても、実際に動かしてみたら結果が違うことがあります。プログラムを直したら再テストする。これは基本ですが、現場ではここを手抜きすると後工程でみっともない不具合になります。