コード・レビューのコンポーネントは、COBOL の組み込みコード・レビュー規則をサポートします。
以下の規則は、COBOL のコード・レビュー・コンポーネントに組み込まれており、パラメーターは不要です。 ソフトウェア分析構成エディターの「命名規則」、「パフォーマンス」、および「プログラム構造」のカテゴリーから以下の規則を選択できます。
このエディターの使用について詳しくは、ソフトウェア分析構成の作成を参照してください。
- 命名規則:
- ソース・ファイル名に一致するプログラム名を使用する
- この規則では、プログラム名がそのソース・ファイル名と異なる PROGRAM-ID division にフラグを立てます。ソース・ファイルのファイル拡張子 (ある場合) は、比較対象から除外されます。
- パフォーマンス:
- INITIALIZE ステートメントを避ける。 基本的な MOVE ステートメントまたは VALUE 節を使用する。
- この規則を使用して、INITIALIZE ステートメントにフラグを立てます。
- OCCURS DEPENDING ON 句を避ける
- この規則を使用して、OCCURS DEPENDING ON 句にフラグを立てます。
- テーブルにアクセスするための添え字の使用を避ける。 索引を使用する。
- この規則では、以下の特性を持つデータ項目にフラグを立てます。
- テーブル・エレメントにアクセスするための添え字として使用される
- テーブルを定義する OCCURS 節の INDEXED BY 句で指定されない。
この規則は、リテラルの添え字にはフラグを立てません。
- EXEC SQL: SELECT * を避ける
- この規則を使用して、SELECT * ステートメントを含む EXEC SQL ステートメントにフラグを立てます。
- EXEC SQL: カーソルの宣言に ORDER BY 節を使用する
- この規則では、内部の SELECT ステートメントで ORDER BY 節を指定せずにカーソルを宣言する EXEC SQL ステートメントにフラグを立てます。
- ファイル記述項目の BLOCK CONTAINS 節で 0 RECORDS を指定する
- この規則では、0 RECORDS を指定しない BLOCK CONTAINS 節にフラグを立てます。
- ネストされた IF ステートメントの代わりに EVALUATE ステートメントを使用する
- この規則を使用して、ネストされた IF ステートメントにフラグを立てます。ネストが 2 レベル以上の深さになっている場合、この規則は、最も外側のネストした IF ステートメントにのみフラグを立てます。
「指定したレベル数より深い IF ステートメントのネストを避ける」テンプレートと比較してください。
- COMP-3 または PACKED-DECIMAL データ定義で奇数の桁数を使用する
- この規則では、タイプ COMP-3 または PACKED-DECIMAL として宣言され、奇数の桁数が含まれていないデータ定義にフラグを立てます。
- 2 進法の添え字を使用する。
- この規則では、以下の特性を持つデータ項目にフラグを立てます。
- テーブル・エレメントにアクセスするための添え字として使用される
- COMP、COMPUTATIONAL、または BINARY を使用して宣言されない。
この規則は、リテラルの添え字にはフラグを立てません。
- プログラム構造:
- ACCEPT ステートメントを避ける。
- この規則では、すべての ACCEPT ステートメントにフラグを立てます。
「FROM CONSOLE または FROM SYSIN を含む ACCEPT ステートメントを避ける」規則と比較してください。
- FROM CONSOLE または FROM SYSIN を含む ACCEPT ステートメントを避ける
- この規則では、FROM CONSOLE 句または FROM SYSIN 句を含む ACCEPT ステートメントにフラグを立てます。
すべての ACCEPT ステートメントに例外なくフラグを立てるには、「ACCEPT ステートメントを避ける」規則を使用してください。
- ALTER ステートメントを避ける。
- この規則を使用して、ALTER ステートメントにフラグを立てます。
- リテラルのプログラム名を使用した CALL ステートメントを避ける
- この規則では、プログラム名をリテラルとして指定している CALL ステートメントにフラグを立てます。
- CANCEL ステートメントを避ける
- この規則を使用して、CANCEL ステートメントにフラグを立てます。
- COPY SUPPRESS ステートメントを避ける。
- この規則では、SUPPRESS 句を含む COPY ステートメントにフラグを立てます。
- CORRESPONDING 句を避ける。
- この規則では、CORRESPONDING 句を含む ADD、SUBTRACT、および MOVE ステートメントにフラグを立てます。
- UPON CONSOLE を含む DISPLAY ステートメントを避ける
- この規則を使用して、UPON CONSOLE を含む DISPLAY ステートメントにフラグを立てます。
- ENTRY ステートメントを避ける。
- この規則を使用して、ENTRY ステートメントにフラグを立てます。
- EXIT PROGRAM ステートメントを避ける。
- この規則を使用して、EXIT PROGRAM ステートメントにフラグを立てます。
- GO TO ステートメントを避ける。
- この規則では、すべての GO TO ステートメントにフラグを立てます。
「EXIT パラグラフを参照する場合以外は GO TO ステートメントを避ける」規則と比較してください。
- EXIT パラグラフを参照する場合以外は GO TO ステートメントを避ける
- この規則では、EXIT パラグラフに制御を移すステートメント以外の、すべての GO TO ステートメントにフラグを立てます。EXIT パラグラフとは、EXIT ステートメントのみを含むパラグラフです。
すべての GO TO ステートメントに例外なくフラグを立てるには、「GO TO ステートメントを避ける」規則を使用してください。
- ELSE がない IF を避ける
- この規則では、ELSE 節を含まない IF ステートメントにフラグを立てます。
- NEXT SENTENCE 句を避ける。
- この規則では、すべての NEXT SENTENCE 句にフラグを立てます。
「スコープ範囲内で NEXT SENTENCE の代わりに CONTINUE を使用する」規則比較してください。
- PERFORM セクションは例外として、PERFORM を避ける。
- この規則では、セクションのみを含むステートメント以外のすべての PERFORM ステートメントにフラグを立てます。
注: この規則は、PERFORM section-name または PERFORM section-name-1 THRU section-name-2 を除くすべての PERFORM ステートメントにフラグを立てます。
インライン PERFORM ステートメントおよびパラグラフを参照する PERFORM ステートメントにフラグを立てます。
- FILE-CONTROL パラグラフで RESERVE 節を避ける
- この規則を使用して、FILE-CONTROL パラグラフ内の RESERVE 節にフラグを立てます。
- STOP RUN リテラル・ステートメントと STOP リテラル・ステートメントを避ける。
- この規則を使用して、STOP RUN リテラル・ステートメントおよび STOP リテラル・ステートメントにフラグを立てます。
- PERFORM ステートメントで THRU 句を避ける
- この規則を使用して、THRU 句を含む PERFORM ステートメントにフラグを立てます。
- データ記述でレベル 88 項目の使用を避ける
- この規則を使用して、レベル 88 項目を使用するデータ記述にフラグを立てます。
各レベル 88 項目にフラグを立てられます。
- セクションあたりの複数の EXIT ステートメントの使用を避ける
- この規則では、複数の EXIT ステートメントを含むセクションにフラグを立てます。
- 手続き部で SECTION の使用を避ける
- この規則では、手続き部にある SECTION 宣言にフラグを立てます。
- XML PARSE ステートメントを避ける
- この規則を使用して、XML PARSE ステートメントにフラグを立てます。
- EXEC CICS®: NOHANDLE の後に EIBRESP があるか検査する
- この規則では、NOHANDLE オプションが指定されて、直後に EIBRESP の値を検査する IF ステートメントまたは EVALUATE ステートメントがない EXEC CICS ステートメントにフラグを立てます。
EXEC CICS ステートメントは、次のステートメントの
いずれも伴っていない場合にフラグが立てられます。
- EIBRESP を参照する IF または EVALUATE ステートメント
- 最初のステートメントが EIBRESP を参照する IF または EVALUATE ステートメントであるコード・ブロックを実行する PERFORM ステートメント
- EXEC CICS: DFHRESP を使用して戻り値を検査する
- この規則は、EXEC CICS コマンドの RESP パラメーターまたは RESP2 パラメーターとして使用されているデータ項目に適用されます。
この規則を使用して、そのようなデータ項目と
DFHRESP 関数呼び出しの戻り値以外のものとの比較に以下のコンテキストでフラグを立てます。
- 比較条件の中
- データ項目が選択対象である SELECT ステートメントのすべての WHEN ユニットの中
この規則では、RESP() または RESP2() による例外処理についてすべての EXEC CICS ブロックを検査し、使用されている変数の COBOL 定義を記録します。すべての比較条件 (IF、ELSE、および EVALUATE WHEN ステートメントでの条件など) が、この変数について検索されます。一致が見つかった場合、および DFHRESP マクロ以外に対する等価チェックが行われている場合、その比較条件を規則違反として記録します。さらに、WHAT 条件として応答変数を使用している EVALUATE ステートメントがあれば、その WHEN 節を検査します。その節に DFHRESP マクロ以外に対する参照が含まれている場合、その WHEN 節に規則違反としてフラグを立てます。
- EXEC CICS: RESP オプションを使用する
- この規則を使用して、RESP オプションが含まれていない EXEC CICS コマンドにフラグを立てます。
この規則では、すべての EXEC CICS ブロックを検査し、RESP() オプションが存在するかどうかチェックします。そのオプションが存在しない場合、そのブロックに違反としてフラグを立てます。
- EXEC SQL: EXEC SQL ステートメントの後で SQLCODE の値をチェックする
- この規則を使用して、SQLCODE の値をチェックする IF または EVALUATE ステートメントを伴っていない EXEC SQL ステートメントにフラグを立てます。
EXEC SQL ステートメントは、次のステートメントの
いずれも伴っていない場合にフラグが立てられます。
- SQLCODE を参照する IF または EVALUATE ステートメント
- 最初のステートメントが SQLCODE を参照する IF または EVALUATE ステートメントであるコード・ブロックを実行する PERFORM ステートメント
- 各セクションで EXIT パラグラフを使用する
- この規則を使用して、EXIT パラグラフが含まれていないセクションにフラグを立てます。 EXIT パラグラフとは、EXIT ステートメントのみを含むパラグラフです。
- EVALUATE ステートメントで WHEN OTHER 句を使用する
- この規則を使用して、WHEN OTHER 句が含まれていない EVALUATE ステートメントにフラグを立てます。
- スコープ範囲内の NEXT SENTENCE の代わりに CONTINUE を使用する
- この規則では、明示範囲終了符号を持つステートメントのスコープ内にある NEXT SENTENCE ステートメントにフラグを立てます。 例えば、IF ステートメントとそれに対応する END-IF 句の間に NEXT SENTENCE ステートメントがある場合、その NEXT SENTENCE ステートメントにフラグが立てられます。
明示範囲終了符号を持つステートメントは、ADD、CALL、COMPUTE、DELETE、DIVIDE、EVALUATE、IF、INVOKE、MULTIPLY、PERFORM、READ、RETURN、REWRITE、SEARCH、START、STRING、SUBTRACT、UNSTRING、WRITE、および XML です。
すべての NEXT SENTENCE ステートメントに例外なくフラグを立てるには、「NEXT SENTENCE 句を避ける」規則を使用してください。
- ACCEPT DATE または ACCEPT TIME の代わりに CURRENT-DATE を使用する
- この規則を使用して、ACCEPT DATE および ACCEPT
TIME ステートメントにフラグを立てます。
- レベル番号を 01、05、10、15、... の順に使用する
- この規則では、以下の特性を持つレベル番号が含まれているデータ構造定義にフラグを立てます。
- 昇順でない。
- 値が 1 でも 5 の倍数でもない。
- テーブル・サーチで SEARCH の代わりに SEARCH ALL を使用する
- この規則では、SEARCH ALL ではなく SEARCH を使用しているテーブル検索にフラグを立てます。
- PERFORM ステートメントで THRU 句を使用する
- この規則では、THRU 句が組み込まれていない PERFORM ステートメントにフラグを立てます。