AS400のコンパイルリストの読み方|RPGエラーと重大度を初心者向けに解説

AS400(IBM i)のRPGコンパイルリストは、最初に一番下の最終サマリーを見ます。プログラムが作成されたか、最高重大度はいくつかを確認し、その後にメッセージIDと該当ソースをたどると調査が速くなります。

コンパイルリストはプログラムを作成した時の記録で、ジョブログはプログラムを実行した時の記録です。25年以上、販売管理システムを保守してきた現場では、この2つを分けて確認しています。この記事では、RPG初心者がコンパイルエラーを直し、単体テストへ進むまでの順番を整理します。

コンパイルリストで最初に見る順番

順番見る場所確認すること
1最終サマリープログラムやモジュールが作成されたか、最高重大度はいくつか
2メッセージサマリー重大度別の件数と、繰り返し出ているメッセージ
3メッセージIDRNF7031などのID、原因、回復処置
4ソースセクション該当行と前後の定義、参照ファイル、コピー句
5再コンパイル後同じメッセージが消えたか、新しい警告が増えていないか
AS400のスプールファイル表示画面。RPGコンパイルリストでメッセージ合計やRNF7031などのコンパイルメッセージが表示されている例
RPGコンパイルリストの例。まず最終結果と最高重大度を確認します。

上から全行を読み始めるより、最終結果から逆にたどる方が、失敗理由へ早く到達できます。実行時のエラーや処理経路を調べる場合は、WRKJOBとDSPJOBLOGの確認手順へ切り替えます。

RPGコンパイルリストを出力する条件

ILE RPGでは、CRTBNDRPGまたはCRTRPGMODOUTPUT(*PRINT)でコンパイルリストを出力できます。IBMの資料では*PRINTが既定で、OUTPUT(*NONE)を指定するとリストが出ません。現場のコンパイル用CLやメニューがパラメーターを上書きしている場合もあるため、スプールが見つからない時は実行した作成コマンドも確認します。

コンパイルリストは、読み方を一度教われば独力で進められるようになる部分です。逆に教わらないと、エラーが出るたびに人を呼ぶことになります。この独り立ちの手前を短時間で越えるための研修がAS400 / IBM i の現場向け研修です。

初心者が原因を追う場合は、OPTION(*SECLVL)でメッセージの二次レベルテキストを出すと、原因と回復処置を読みやすくなります。

重大度00・10・20・30・40の意味

重大度IBM iコンパイラーの扱い現場での判断
00情報。コンパイルは継続内容を確認し、意図した通知かを見る
10警告。コンパイルは継続動く可能性はあっても、意図しない記述でないか確認する
20エラー。補正しながら処理を継続する場合があるオブジェクト生成の有無にかかわらず修正対象として扱う
30重大エラー。オブジェクトコードは生成されない該当メッセージと関連定義を直して再コンパイルする
40回復不能エラー。コンパイラーが停止環境・コンパイラー側を含めて原因を確認する

CRTBNDRPGではGENLVLがオブジェクト生成を許す重大度を制御し、既定値は10です。重大度だけを眺めて「たぶん作成された」と判断せず、最終サマリーと生成オブジェクトを確認してください。

RNFメッセージからソースを直す手順

  1. RNF7031など、メッセージIDをそのまま控える
  2. リスト内でIDを検索し、一次・二次レベルの説明を読む
  3. 示されたソース行だけでなく、前後の定義と参照ファイルを見る
  4. 外部記述ファイル、プロトタイプ、コピー句との不一致を確認する
  5. ソースを修正し、同じ条件で再コンパイルする
  6. 最終サマリーへ戻り、メッセージが消えたことを確認する

私はコンパイルリストとソース全体を最初から横並びで読むのではなく、メッセージIDで当たりを付けてから該当箇所を開きます。ただし、該当行だけを直すと別の定義不整合を見落とすため、直前の変更範囲、参照ファイル、コピー句、呼び出し先まで広げて確認します。変更範囲の確認にはAS400 RPGの固定形式・自由形式の読み方も役立ちます。

コンパイルが通っても作業完了ではない

コンパイルは「作成できるか」の確認で、単体テストは「業務仕様どおりに動くか」の確認です。受注、出荷、在庫、売上、請求、帳票、外部インターフェースがつながる販売管理では、コンパイル成功後に基本動作、境界値、DB更新、スプール、ジョブログまで確認します。

段階残すもの確認内容
コンパイル前変更理由、対象ソース、影響調査別オブジェクトやファイルへの影響
コンパイル後日時、コマンド、リスト、生成先最高重大度、メッセージ、オブジェクト作成
単体テスト入力条件、期待値、実行結果DB、帳票、外部I/F、ジョブログ
本番反映前反映手順、戻し手順、確認担当本番で初めてコンパイルする手順になっていないか

テスト観点はRPG/CL修正後の単体テスト、本番前の確認はAS400本番対応チェックリストに分けて整理しています。

Codexへ確認させる時に渡す情報

Codexへは、発生した事象、変更目的、メッセージID、対象プログラム、関連ファイル、該当箇所の前後を整理して渡します。エラー行だけよりも、何を直そうとしたかが分かる方が確認観点を出しやすくなります。

IBM公式資料

まとめ

RPGコンパイルリストは、一番下の最終サマリーから確認し、最高重大度、メッセージID、ソースの順にたどります。重大度30はオブジェクトコードが生成されない重大エラー、40はコンパイラー停止につながる回復不能エラーです。修正後は再コンパイルで終わらせず、単体テストとジョブログ確認まで進めてください。

コンパイルリストを読む作業は、使っているエディタによって手間が変わります。PDM・SEU・RDi・VS Codeの使い分けも合わせて見ておくと、修正の往復が減ります。