AS400 RNXエラーの調査例|RPG実行時エラーをジョブログから追う

AS400 / IBM i のRPGが実行時に落ちた時、ジョブログには RNX で始まるメッセージが出ることがあります。RNXはRPG実行時エラーの入口です。メッセージIDだけを見て終わるのではなく、直前の処理、対象プログラム、対象ファイル、入力値を合わせて確認します。

ここでは、売上更新RPGが実行時エラーで止まったという想定で、RNX系エラーの調査手順を実例として整理します。RNX番号ごとの厳密な意味は環境のメッセージ説明で確認し、この例では調査の流れを重視します。

想定する状況

項目
発生処理売上データ更新RPG
症状ジョブログにRNX系メッセージが出て異常終了
疑うこと数値変換、桁あふれ、日付変換、配列、ファイル更新、レコードロック

ジョブログで見ること

見るもの確認する理由
RNXメッセージIDRPG実行時エラーの種類を絞る
プログラム名どのRPGで発生したかを確認する
直前のCPFファイル、権限、ロックなど別原因がないか見る
発生時刻どの入力データやバッチ処理と重なるかを見る
ジョブユーザー画面実行かバッチ実行か、権限差を見る

RPGソースで追う場所

RNX系エラーでは、ソースを上から読むより、ジョブログで出たプログラム名と発生箇所の周辺を見ます。数値変換なら文字項目から数値項目への代入、日付なら文字列から日付型への変換、配列なら添字、ファイル処理ならCHAINやREAD、UPDATEの直前直後を確認します。UPDATEに指定するレコード様式名は環境ごとの定義に合わせます。

chain orderKey orderFile;
if %found(orderFile);
   amount = %dec(charAmount: 11: 0);
   update ORDERREC;
endif;

よくある原因

  • 数字欄に空白や文字が入っている
  • 想定より長い値が入り、桁あふれになる
  • 日付形式が環境や入力元で違う
  • 配列の範囲外を参照している
  • CHAINで見つからない時の処理が不足している

調査メモに残すこと

項目
RNXメッセージメッセージIDと本文
対象プログラムRPG名、呼び出し元CL
対象データキー、注文番号、売上番号など
原因候補数値変換、桁あふれ、日付、配列、ロック
再実行可否途中更新や帳票出力の有無

関連して読む記事

RPGの読み方は AS400 RPG保守の読み方、ジョブログ確認は ジョブログ確認手順、単体テスト観点は RPG/CL単体テスト観点 を確認してください。

まとめ

RNX系エラーは、RPGの実行時に何かが想定外になったサインです。ジョブログ、対象プログラム、対象データ、RPGソース、再実行可否をセットで見ることで、修正箇所と業務影響を切り分けやすくなります。