AS400(IBM i)のRPGコンパイルリストは、最初に一番下の最終サマリーを見ます。プログラムが作成されたか、最高重大度はいくつかを確認し、その後にメッセージIDと該当ソースをたどると調査が速くなります。
コンパイルリストはプログラムを作成した時の記録で、ジョブログはプログラムを実行した時の記録です。25年以上、販売管理システムを保守してきた現場では、この2つを分けて確認しています。この記事では、RPG初心者がコンパイルエラーを直し、単体テストへ進むまでの順番を整理します。
コンパイルリストで最初に見る順番
| 順番 | 見る場所 | 確認すること |
|---|---|---|
| 1 | 最終サマリー | プログラムやモジュールが作成されたか、最高重大度はいくつか |
| 2 | メッセージサマリー | 重大度別の件数と、繰り返し出ているメッセージ |
| 3 | メッセージID | RNF7031などのID、原因、回復処置 |
| 4 | ソースセクション | 該当行と前後の定義、参照ファイル、コピー句 |
| 5 | 再コンパイル後 | 同じメッセージが消えたか、新しい警告が増えていないか |

上から全行を読み始めるより、最終結果から逆にたどる方が、失敗理由へ早く到達できます。実行時のエラーや処理経路を調べる場合は、WRKJOBとDSPJOBLOGの確認手順へ切り替えます。
RPGコンパイルリストを出力する条件
ILE RPGでは、CRTBNDRPGまたはCRTRPGMODのOUTPUT(*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メッセージからソースを直す手順
RNF7031など、メッセージIDをそのまま控える- リスト内でIDを検索し、一次・二次レベルの説明を読む
- 示されたソース行だけでなく、前後の定義と参照ファイルを見る
- 外部記述ファイル、プロトタイプ、コピー句との不一致を確認する
- ソースを修正し、同じ条件で再コンパイルする
- 最終サマリーへ戻り、メッセージが消えたことを確認する
私はコンパイルリストとソース全体を最初から横並びで読むのではなく、メッセージIDで当たりを付けてから該当箇所を開きます。ただし、該当行だけを直すと別の定義不整合を見落とすため、直前の変更範囲、参照ファイル、コピー句、呼び出し先まで広げて確認します。変更範囲の確認にはAS400 RPGの固定形式・自由形式の読み方も役立ちます。
コンパイルが通っても作業完了ではない
コンパイルは「作成できるか」の確認で、単体テストは「業務仕様どおりに動くか」の確認です。受注、出荷、在庫、売上、請求、帳票、外部インターフェースがつながる販売管理では、コンパイル成功後に基本動作、境界値、DB更新、スプール、ジョブログまで確認します。
| 段階 | 残すもの | 確認内容 |
|---|---|---|
| コンパイル前 | 変更理由、対象ソース、影響調査 | 別オブジェクトやファイルへの影響 |
| コンパイル後 | 日時、コマンド、リスト、生成先 | 最高重大度、メッセージ、オブジェクト作成 |
| 単体テスト | 入力条件、期待値、実行結果 | DB、帳票、外部I/F、ジョブログ |
| 本番反映前 | 反映手順、戻し手順、確認担当 | 本番で初めてコンパイルする手順になっていないか |
テスト観点はRPG/CL修正後の単体テスト、本番前の確認はAS400本番対応チェックリストに分けて整理しています。
Codexへ確認させる時に渡す情報
Codexへは、発生した事象、変更目的、メッセージID、対象プログラム、関連ファイル、該当箇所の前後を整理して渡します。エラー行だけよりも、何を直そうとしたかが分かる方が確認観点を出しやすくなります。
IBM公式資料
- IBM Docs: ILE RPG Compiler Listings
- IBM Docs: Correcting Compilation Errors
- IBM Docs: Create Bound RPG Program (CRTBNDRPG)
まとめ
RPGコンパイルリストは、一番下の最終サマリーから確認し、最高重大度、メッセージID、ソースの順にたどります。重大度30はオブジェクトコードが生成されない重大エラー、40はコンパイラー停止につながる回復不能エラーです。修正後は再コンパイルで終わらせず、単体テストとジョブログ確認まで進めてください。
コンパイルリストを読む作業は、使っているエディタによって手間が変わります。PDM・SEU・RDi・VS Codeの使い分けも合わせて見ておくと、修正の往復が減ります。
