AS400のRNX8888再帰的エラー対応|ジョブログとCALL関係から原因を追う確認手順

AS400のRNX8888メッセージの詳細画面
RNX8888の「追加のメッセージ情報」。重大度50、メッセージ・タイプはエスケープ、原因として「RPGプロシージャーが自身または他のプロシージャーを呼び出してから、プロシージャーを呼び出した」と出ています。ジョブログの一覧ではここまで見えません。メッセージにカーソルを当ててF1を押すと、この画面に入れます。

RNX8888で検索して来た人が最初に見るポイント

RNX8888の追加メッセージ情報
RNX8888を7番で開いた画面です。メッセージ・タイプはエスケープ、重大度50。「が再帰的に呼び出された」という原因と、「プログラムの保守担当者に連絡して」という回復手順まで出ます。プログラム名とプロシージャー名は伏せてあります。

RNX8888は、単独の原因というより、RPGの例外処理中にさらにエラーが起きている時に見かけることがあります。そのため、RNX8888の行だけを見て判断せず、直前に出ているCPFメッセージ、呼び出し元プログラム、例外処理、ログ出力処理を順に確認します。

現場で多いのは、元のエラーを処理しようとした出口処理、エラーログ出力、メッセージ送信、ファイル更新、CALL先の処理でさらにエラーが起き、原因が二重に見えるパターンです。最初に発生したエラーと、例外処理中に起きた二次エラーを分けて読むと整理しやすくなります。

  • ジョブログでRNX8888の直前にあるCPF/RNXメッセージを見る
  • CALL関係とプログラムスタックを確認する
  • エラー処理、ログ出力、メッセージ送信の中で再度エラーが起きていないか見る
  • ファイル更新が絡む場合は、対象ファイルとキーを確認する
  • 本番対応では、ジョブ終了、リラン、データ補正を急いで決めない

ジョブログの基本的な読み方はAS400のジョブログ確認手順で、CPFメッセージの入口はAS400 CPFエラー・メッセージID索引で整理しています。症状から探す場合はAS400トラブル逆引きも使えます。

RNX8888を相談する前に残す情報

RNX8888は、最初のエラーではなく、例外処理中に起きた二次エラーとして見えることがあります。本番で発生した場合は、ジョブを止めるか、MSGWへ返信するかを急ぐ前に、発生時刻、ジョブログ、直前のCPF/RNX、CALL関係、業務影響を残します。

残す情報確認する記事
本番影響と初動判断本番トラブル初動チェックリスト
QSYSOPRやMSGWの状態QSYSOPR / DSPMSG / WRKMSGQの確認手順
症状別の確認入口AS400トラブル逆引き
改修前の影響範囲AS400保守会社に相談する前のチェックリスト|障害・小改修・データ抽出・リプレースで整理すること

RNX8888は、再帰の有無だけでなくCALL関係を追う

RNX8888は再帰的な呼び出しや異常終了の連鎖で出ることがありますが、実際の調査では「どのプログラムが、どの順番で、何を呼んだか」を追うことが重要です。ジョブログの最後だけを見ると、本当の入口になったプログラムや、直前に渡したパラメータを見落とすことがあります。

見る観点確認内容関連する確認
CALL関係親プログラム、子プログラム、再呼び出しの有無を見るAS400保守会社に相談する前のチェックリスト|障害・小改修・データ抽出・リプレースで整理すること
ジョブログの前後最後のエラーだけでなく、その前のCPF/RNXを見るCPFエラーとジョブログ
パラメータ呼び出し時の桁、型、未設定値を確認するRPG保守の基本
同じ条件で再現するか特定データだけか、毎回発生するかを分けるトラブル逆引き

RNX8888の調査では、結論を急がず、呼び出し関係、入力値、直前メッセージ、再現条件を分けて整理します。社内で引き継ぐ場合は、エラー番号だけでなく「どこまで確認済みか」を残すと、次の担当者が同じ確認を繰り返さずに済みます。

RNX8888の直前メッセージから追う例

RNX8888が表示されても、メッセージIDだけで再帰呼び出しと断定せず、同じジョブログ内で先に発生した異常を探します。

確認点確認内容判断
時系列RNX8888より前のCPF/RNXと送信元プログラムを記録する最初の異常と後続エラーを分ける
呼び出しCALL関係、サブルーチン、エラー処理経路を整理する同じ処理へ戻る条件をソースで確認する
入力発生データ、パラメータ、再現条件、直前変更を比較する特定データだけか全件かを分ける

修正後は正常系だけでなく、元のエラー条件を再現し、エラー処理が再び自分自身を呼ばないことを確認します。ジョブログには確認したプログラムと未確認の経路を残します。

参考:IBM公式ドキュメント(CALL)

本記事で扱った CALL の全パラメーターと指定できる値は、IBM公式ドキュメントで確認できます。指定できる値や既定値はOSリリースによって異なるため、本番環境では自社のリリースに合わせて確認してください。