AS400 MCH3601の確認ポイント|RPGのポインター・配列・CALLパラメーターを疑う

AS400 / IBM i のジョブログで MCH3601 が出ると、プログラム例外、ポインター、配列、データ構造、呼び出しパラメーターのどこを見ればよいか迷いやすくなります。RPGやCLの修正後、外部呼び出し、Web化・API化の途中で表面化することもあります。

この記事では、MCH3601を見た時の初動確認を、AS400保守現場の目線で整理します。最後の異常終了だけでなく、直前のCALL、RPGソース、パラメーター、ジョブログの前後関係を確認します。

MCH3601で最初に見る場所

  • ジョブログでMCH3601の直前に出ているメッセージ
  • 異常終了したプログラム名とモジュール名
  • RPGの該当ステートメント、配列、データ構造、ポインター
  • CALLやCALLPのパラメーター数、桁数、型の不一致
  • 直近で変更したソース、コピー句、ファイル定義

RPG修正後に出た場合

RPG修正後にMCH3601が出た場合は、まず変更箇所だけでなく、呼び出し元と呼び出し先のパラメーター定義を比べます。桁数、符号、小数点、文字長、配列要素数、データ構造のサブフィールドがずれると、実行時に例外になることがあります。

固定形式RPGの場合は、見た目では桁位置のずれに気づきにくいことがあります。コンパイルリスト、ソース行、DSPPGMREF、DSPFFDを合わせて確認し、必要なら一つ前の正常版と差分を見ます。

Web化・API化で出た場合

5250画面では動いていた処理をWebやAPIから呼び出した時にMCH3601が出る場合、対話型ジョブとサーバージョブで環境が変わっている可能性があります。ライブラリリスト、ユーザープロファイル、QTEMP、ジョブ記述、呼び出しパラメーターの作り方を確認します。

RPGをそのまま外部から呼ぶ場合は、画面入力前提の変数、初期化されていないフィールド、画面ファイル依存、出力キュー依存が残っていないかを確認します。Web化の入口は AS400のRPGをWeb化する前に確認すること にまとめています。

AIで調査メモを整理する時

MCH3601の調査にAIやCodexを使う場合は、機密情報を削除したうえで、ジョブログ、該当RPGソース、CALL関係、パラメーター定義を分けて整理します。AIの回答は原因確定ではなく、確認観点の洗い出しとして扱います。

AI・Codexの安全な使い方は AS400保守でAI・Codexを安全に使う方法、メッセージID全体の入口は AS400メッセージID・エラーコード索引、RPGの読み方は RPG固定形式・フリーフォーマットの読み方 を確認してください。

MCH3601対応前チェックリスト

  • ジョブログの前後を保存したか
  • 異常終了したプログラムと呼び出し元を確認したか
  • CALLパラメーターの数、型、桁数を比べたか
  • 配列、データ構造、ポインター、初期化漏れを確認したか
  • 直近変更とコンパイルリストを確認したか

MCH3601は、単なるエラー番号ではなく、プログラムの呼び出し方やデータの渡し方に問題が隠れているサインです。ジョブログ、RPGソース、パラメーター、実行環境を一つずつ確認すると、原因を絞りやすくなります。