このトピックでは、COBOL コード・レビュー規則について詳しく説明します。
- 命名規則:
- ソース・メンバー名と一致する PROGRAM-ID を使用する
- この規則では、PROGRAM-ID をソース・メンバー名 (ファイル拡張子を除く) と比較します。両者が一致しない場合、その PROGRAM-ID に違反としてフラグを立てます。
- パフォーマンス:
- INITIALIZE ステートメントを避ける。基本的な MOVE ステートメントまたは VALUE 節を使用する。
- この規則では、すべての INITIALIZE ステートメントを検索して、違反としてフラグを立てます。
- OCCURS DEPENDING ON 節を避ける。
- この規則では、すべての OCCURS DEPENDING ON 句を検索して、違反としてフラグを立てます。
- テーブル・アクセスで添え字を避ける。索引を使用する。
- この規則では、プログラム内で索引として使用されているすべての変数を検査します。各変数の宣言を調べて、その変数が INDEXED BY によって宣言されていない場合は、違反としてフラグを立てます。
- COMP-3 PICTURE 節で奇数の桁数を使用する。
- すべての COMP-3 PICTURE 宣言を検査して、PICTURE 句に含まれる桁数が奇数でない場合、その宣言に違反としてフラグを立てます。
- 2 進法の添え字を使用する。
- この規則では、変数の添え字をすべての箇所について検索します。変数にリテラルの添え字が付いている場合、そのインスタンスは無視します。リテラル以外の各添え字について、データ部内でその添え字の定義を検索します。各定義を検査して、添え字が COMP、COMPUTATIONAL、および BINARY 以外のものとして宣言されている場合、その添え字に規則違反としてフラグを立てます。
- DFHRESP 値を使用して応答コードを検査する。
- この規則では、RESP() または RESP2() による例外処理についてすべての EXEC CICS® ブロックを検査し、使用されている変数の COBOL 定義を記録します。それに続き、その変数についてすべての比較条件 (IF、ELSE、EVALUATE WHEN などで使用されている箇所) を検索します。見つかった箇所で、DFHRESP マクロ以外に対する等価チェックが行われている場合、その比較条件を規則違反として記録します。さらに、WHAT 条件として応答変数を使用している EVALUATE ステートメントがあれば、その WHEN 節を検査します。その節に DFHRESP マクロ以外に対する参照が含まれている場合、その WHEN 節に規則違反としてフラグを立てます。
- ネストされた IF ステートメントの代わりに EVALUATE ステートメントを使用する。
- この規則では、すべての IF ステートメントを検査し、そのステートメントがネストした IF 構造に含まれていないかどうか、そして含まれている場合は、親 IF 構造がすでに違反として記録されていないかどうかをチェックします。この 2 つの条件に当てはまるステートメントに、規則違反としてフラグを立てます。
- EXEC コマンドで RESP オプションを使用する。
- この規則では、すべての EXEC CICS ブロックを検査し、RESP() オプションが存在するかどうかチェックします。そのオプションが存在しない場合、そのブロックに違反としてフラグを立てます。
- プログラム構造:
- GO TO ステートメントでパラグラフを参照できるのは、参照先が出口パラグラフの場合に限られる。
- この規則では、プログラム内の各 GO TO ステートメントを検査します。GO TO がセクション名を指している場合、そのステートメントに違反としてフラグを立てます。GO TO がパラグラフ名を指している場合、規則はそのパラグラフを検索して、パラグラフが完全に EXIT ステートメントだけで構成されているかどうかチェックします。そうでない場合、その GO TO に規則違反としてフラグを立てます。
- ACCEPT FROM CONSOLE ステートメントを避ける。
- この規則では、すべての ACCEPT ステートメントを検索し、CONSOLE パラメーターや SYSIN パラメーターを使用しているステートメントに違反としてフラグを立てます。
- ACCEPT ステートメントを避ける。
- この規則では、すべての ACCEPT ステートメントに違反としてフラグを立てます。
- ALTER ステートメントを避ける。
- この規則では、すべての ALTER ステートメントに違反としてフラグを立てます。
- プログラム名を使用した CALL ステートメントを避ける。
- 動的呼び出しを使用します。この規則では、すべての CALL ステートメントを検索し、リテラル識別子を使用しているものに違反としてフラグを立てます。
- COPY SUPPRESS ステートメントを避ける。
- すべての COPY ステートメントを検査します。SUPPRESS 句が含まれているものに違反としてフラグを立てます。
- CORRESPONDING 句を避ける。
- ADD、SUBTRACT、および MOVE の各ステートメントをすべて検査し、CORRESPONDING 句が含まれていないかどうかチェックします。含まれているステートメントに違反としてフラグを立てます。
- ENTRY ステートメントを避ける。
- この規則では、すべての ENTRY ステートメントに違反としてフラグを立てます。
- EXIT PROGRAM ステートメントを避ける。
- この規則では、すべての EXIT PROGRAM ステートメントを検索して、違反としてフラグを立てます。
- GO TO ステートメントを避ける。
- この規則では、すべての GO TO ステートメントを検索して、違反としてフラグを立てます。
- NEXT SENTENCE 句を避ける。
- この規則では、すべての NEXT SENTENCE 句を検索して、違反としてフラグを立てます。
- FILE-CONTROL パラグラフで RESERVE 節を避ける。
- この規則では、プログラム内のすべての RESERVE 節を検索して、違反としてフラグを立てます。
- STOP RUN リテラル・ステートメントと STOP リテラル・ステートメントを避ける。
- この規則では、プログラム内のすべての STOP RUN リテラル・ステートメントと STOP リテラル・ステートメントを検索して、違反としてフラグを立てます。
- PERFORM ステートメントで THRU 句を避ける。
- この規則では、すべての PERFORM ステートメントを検査し、THRU 句が含まれるものに規則違反としてフラグを立てます。
- PERFORM ステートメントで THRU 句を使用する。
- この規則では、すべての PERFORM ステートメントを検査し、THRU 句が含まれないものに規則違反としてフラグを立てます。
- EVALUATE ステートメントで WHEN OTHER 句を使用する。
- この規則では、すべての EVALUATE ステートメントを検査します。WHEN OTHER 句が含まれないものに違反としてフラグを立てます。