コンパイル・エラーの訂正

コンパイル・エラーの修正に有用なコンパイラー・リストの主要なセクションは以下のとおりです。

ソース・セクションにあるインライン診断メッセージはコンパイラーが すぐにフラグを付けることができるエラーを示します。 その他のエラーはコンパイル時に追加の情報が受け取られてからフラグが 付けられます。 これらのエラーにフラグを付けるメッセージは、ソース・セクションおよび 追加のメッセージ・セクションにあります。

コンパイル・エラーの訂正を援助するために、また特にユーザーが RPG の初心者の場合、 リストに第 2 レベルのメッセージを組み込みたい場合が あります。 これを実行するためには、どちらかの作成コマンドで OPTION(*SECLVL) を指定します。これにより、第 2 レベルのテキストがメッセージ要約にリストされた メッセージに追加されます。

最後に、コンパイラー・リストがプログラムのレコードであることを忘れないでください。したがって、プログラムのテスト中にエラーを見付けた場合には、 ソースが思ったとおりにコード化されていることを検査するために、 このリスト出力を使用することができます。 ソースの他に確認したいリスト出力の一部に以下のものが含まれて います。

インライン診断メッセージの使用

2 つのタイプのインライン診断メッセージがあります。 フィンガーとノンフィンガーです。フィンガー・メッセージは、 どこでエラーが起きたかを正確に示します。 図 34 は、フィンガー・インライン診断メッセージの例を示したものです。

図 34. サンプル・フィンガー・インライン診断メッセージ
行     <--------------------------ソースの仕様 ----------------------------------><------ 注記 ----->  DO  PAGE  変更   SRC  SEQ
番号   ....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+...10 NUM 行    日付   ID   番号
   63  C                   SETOFF                                       _12___                                               003100
======>                                                                 AAHH
======>                                                                 CCCCCC
*RNF5051 20 A      003100  結果の標識の項目が正しくありません。省略時の値としてブランクが使用されます。
*RNF5051 20 B      003100  結果の標識の項目が正しくありません。省略時の値としてブランクが使用されます。
*RNF5053 30 C      003100  結果の標識の項目が指定された操作に対してブランクです。

この例では、標識が 71 〜 72 桁目または 73 〜 74 桁目ではなく間違って 72 〜 73 桁目 に入れられています。 3 つのフィンガー 'aa'、'bb'、および 'cccccc' がエラーのある行の一部を識 別します。 実際の欄はメッセージによってさらに説明される変数によって、 強調表示されます。この場合には、メッセージ RNF5051 は、'aa' および 'bb' で印が付けられた フィールドには正しい標識が入っていないことを示しています。 正しい標識がないために、コンパイラーはフィールドがブランクであると見なし ます。 しかし、SETOFF 命令が標識を必要とするので、 'cccccc' およびメッセージ RNF5053 によって指摘されたように別のエラーが起こります。

エラーは見付かった順序でリストされます。 一般的に、 しばしば他のエラーの原因となるため最初のいくつかの 重大度 30 および 40 のエラーの訂正に重点を置くべきです。

ノンフィンガー・インライン診断メッセージもまたエラーを示します。 しかし、これらはただちにエラーの行に続いて出されるわけではありません。 図 35 は、ノンフィンガー・インライン診断メッセージの例を示したものです。

図 35. ノンフィンガー・インライン診断メッセージの例
行    <--------------------------ソースの仕様 ----------------------------------><------ 注記 ----->  DO  PAGE  変更   SRC SEQ
番号  ....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+...10 NUM 行    日付   ID  番号
    1 D FLD1            S             +5    LIKE(FLD2)                                                                     000100
    2 D FLD2            S               D                                                                                  000200
*RNF3479 20      1 000100  指定されたデータ・タイプのフィールドでは長さ調整はできません。
                           

この例では、FLD1 は FLD2 と同じように 5 バイト以上の長さで定義されます。後から FLD2 は日付として定義されますが、これは FLD1 の定義において 長さの調整を無効にします。 メッセージ RNF3479 は、リストの 1 行目を指して 出されます。SEU 順序番号 (000100) も与えられますが、これは、エラーのソース行をより早く見つけるのを 助けるためであることに注意してください (また、SEU 順序番号はリスト出力行 1 にも入っています)。

追加の診断メッセージの使用

追加の診断メッセージのセクションは複数のコード行の検討で見付かる エラーを指定します。 これらのメッセージは、問題のあるコード内には置かれません。 一般的には、ソースのその部分の検査時にコンパイラーは、 何か問題があることは分かりません。 しかし、可能な場合には、リスト出力行番号および SEU 順序番号または (メッセージに関連するソース行の) ステートメント番号がメッセージ行に入れられます。

SEU を使用したコンパイラー・リストのブラウズ

SEU 分割 / ブラウズ・セッション (F15) によって、出力待ち行列の コンパイラー・リストをブラウズすることができます。 ソース・コードに必要な変更を加えながら、 前のコンパイルの結果を表示することができます。

コンパイラー・リストのブラウズ中に、エラーを走査し、エラーのあるこれらの ソース・ステートメントを訂正することができます。 エラーを走査するには、ブラウズ・セッションの SEU コマンド行 に F *ERR を入力します。 最初の (または次の) エラーがある行は強調 表示され、同じメッセージの第 1 レベル・テキストが画面の最下部に現れます。最下部のメッセージにカーソルを置き F1 (ヘルプ) キーを押すことによって、 第 2 レベル・テキストを見ることができます。

可能な時は、リスト中のエラー・メッセージは、エラーのある行の SEU 順序 番号を指定します。 順序番号は、メッセージ・テキストの直前にあります。

コンパイラー・リストのブラウズについての詳細な情報は、「AS/400 適用業務開発ツールセット AS/400 用 原始ステートメント入力ユーティリティー 使用者の手引きと参照」を 参照してください。