このトピックでは、COBOL でサポートされる組み込みコード・レビュー規則について説明します。
以下の規則は、COBOL のコード・レビュー・コンポーネントに組み込まれており、パラメーターは不要です。 ソフトウェア分析構成エディターの「命名規則」、「パフォーマンス」、および「プログラム構造」のカテゴリーから以下の規則を選択できます。 構成のスコープと規則の選択を参照してください。
- 命名規則:
- ソース・ファイル名に一致するプログラム名を使用する
- この規則を使用して、プログラム名がそのソース・ファイル名と異なる PROGRAM-ID division にフラグを立てます。 ソース・ファイルのファイル拡張子 (ある場合) は、比較対象から除外されます。
- パフォーマンス:
- INITIALIZE ステートメントを避ける。 基本的な MOVE ステートメントまたは VALUE 節を使用する。
- この規則を使用して、INITIALIZE ステートメントにフラグを立てます。
- OCCURS DEPENDING ON 句を避ける
- この規則を使用して、OCCURS DEPENDING ON 句にフラグを立てます。
- テーブルにアクセスするための添え字の使用を避ける。 索引を使用する。
- この規則を使用して、(a) テーブル・エレメントにアクセスするための添え字として使用されており、かつ (b) テーブルを定義する 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 ステートメントにフラグを立てます。 ネストの深さが複数レベルである場合、この規則は、ネストの最外部の IF ステートメントにのみフラグを立てます。
「指定したレベル数より深い IF ステートメントのネストを避ける」テンプレートと比較してください。
- COMP-3 または PACKED-DECIMAL データ定義で奇数の桁数を使用する
- この規則を使用して、COMP-3 または PACKED-DECIMAL 型として宣言されており、奇数桁が含まれていないデータ定義にフラグを立てます。
- 2 進法の添え字を使用する。
- この規則を使用して、(a) テーブル・エレメントにアクセスするための添え字として使用されており、かつ (b) 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 ステートメント以外のすべての GO TO ステートメントにフラグを立てます。 EXIT パラグラフとは、EXIT ステートメントのみを含むパラグラフです。
すべての GO TO ステートメントに例外なくフラグを立てるには、「GO TO ステートメントを避ける」規則を使用してください。
- ELSE がない IF を避ける
- この規則を使用して、ELSE 節が含まれていない IF ステートメントにフラグを立てます。
- NEXT SENTENCE 句を避ける。
- この規則を使用して、すべての NEXT SENTENCE 句にフラグを立てます。
「スコープ範囲内で NEXT SENTENCE の代わりに CONTINUE を使用する」規則比較してください。
- PERFORM セクションは例外として、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 ステートメントは、次のいずれも伴っていない場合にフラグが立てられます: (a) EIBRESP を参照する IF または EVALUATE ステートメント、(b) 最初のステートメントが、EIBRESP を参照する IF または EVALUATE ステートメントであるコード・ブロックを実行する PERFORM ステートメント。
- EXEC CICS: DFHRESP を使用して戻り値を検査する
- この規則は、EXEC CICS コマンドの RESP パラメーターまたは RESP2 パラメーターとして使用されているデータ項目に適用されます。
この規則を使用して、以下のコンテキストでそのようなデータ項目と DFHRESP 関数呼び出しの戻り値以外のものとの比較にフラグを立てます。(1) すべての比較条件の中、および (2) データ項目が選択対象である 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 ステートメントは、次のいずれも伴っていない場合にフラグが立てられます: (a) SQLCODE を参照する IF または EVALUATE ステートメント、(b) 最初のステートメントが、SQLCODE を参照する IF または EVALUATE ステートメントであるコード・ブロックを実行する PERFORM ステートメント。
- 各セクションで EXIT パラグラフを使用する
- この規則を使用して、EXIT パラグラフが含まれていないセクションにフラグを立てます。 EXIT パラグラフとは、EXIT ステートメントのみを含むパラグラフです。
- EVALUATE ステートメントで WHEN OTHER 句を使用する
- この規則を使用して、WHEN OTHER 句が含まれていない EVALUATE ステートメントにフラグを立てます。
- スコープ範囲内の NEXT SENTENCE の代わりに CONTINUE を使用する
- この規則を使用して、明示範囲終了符号があるステートメントのスコープ内にある NEXT SENTENCE ステートメントにフラグを立てます。
例えば、NEXT SENTENCE ステートメントが IF ステートメントとそれに対応する END-IF 句の間にある場合は、フラグを立てられます。
明示範囲終了符号があるステートメントとしては、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、... の順に使用する
- この規則を使用して、(a) 昇順でないレベル番号、または (b) 1 でも 5 の倍数でもない値のレベル番号、が含まれているデータ構造定義にフラグを立てます。
- テーブル・サーチで SEARCH の代わりに SEARCH ALL を使用する
- この規則を使用して、SEARCH ALL ではなく SEARCH を使用しているテーブル・サーチにフラグを立てます。
- PERFORM ステートメントで THRU 句を使用する
- この規則を使用して、THRU 句が含まれていない PERFORM ステートメントにフラグを立てます。