このトピックでは、PL/I でサポートされる組み込みコード・レビュー規則について説明します。
以下の規則は、PL/I のコード・レビュー・コンポーネントに組み込まれており、パラメーターは不要です。 ソフトウェア分析構成エディターの「命名規則」、「パフォーマンス」、および「プログラム構造」のカテゴリーから以下の規則を選択できます。 構成のスコープと規則の選択を参照してください。
- 命名規則:
- ソース・ファイル名に一致するメイン・プロシージャー名を使用する
- この規則を使用して、ソース・ファイル名と一致しない名前のメイン・プロシージャーにフラグを立てます。
- パフォーマンス:
- 異なるパラメーター・リストを持つ 2 つの ENTRY 変数の割り当てまたは比較を避ける
- この規則を使用して、異なるパラメーター記述リストを持つ 2 つの ENTRY 変数の割り当てまたは比較にフラグを立てます。
- 異なる RETURNS 属性を持つ 2 つの ENTRY 変数の割り当てまたは比較を避ける
- この規則を使用して、異なる RETURNS 属性を持つ 2 つの ENTRY 変数の割り当てまたは比較にフラグを立てます。
- 属性を指定した複数のデータ項目の宣言を避ける
- この規則を使用して、属性を指定して複数のデータ項目を宣言するデータ宣言にフラグを立てます。 例: declare (A,B,C,D) binary fixed (31);
- 偶数の精度の FIXED DECIMAL 宣言を避ける
- この規則を使用して、偶数の桁数を指定する FIXED DECIMAL 変数の宣言にフラグを立てます。
- 暗黙宣言を避ける
- この規則を使用して、明示的に宣言されていないデータ項目への参照にフラグを立てます。
- IF、WHILE、UNTIL、または WHEN 節で単一変数を BIT(1) NONVARYING として宣言する
- この規則を使用して、BIT(1) NONVARYING として宣言されていない単一変数で構成される IF、WHILE、UNTIL、または WHEN 節にフラグを立てます。
- EXEC SQL: SELECT * を避ける
- この規則を使用して、SELECT * を含む EXEC SQL ステートメントにフラグを立てます。
- EXEC SQL: 非修飾テーブル名を使用する
- この規則を使用して、修飾されているか、または明示的に指定されていないテーブル名を含む EXEC SQLステートメントにフラグを立てます。
- FIXED BINARY、FLOAT、ORDINAL、HANDLE、POINTER、または OFFSET であるループ制御変数を使用する
- この規則を使用して、ループ変数が FIXED BINARY、FLOAT、ORDINAL、HANDLE、POINTER、または OFFSET 以外であるループ条件にフラグを立てます。
- STATIC データ宣言で INITIAL を使用する
- この規則を使用して、STATIC 属性が含まれているが INITIAL 属性が含まれていないデータ宣言にフラグを立てます。
- プログラム構造:
- INONLY または NONASSIGNABLE パラメーターへの値の割り当てを避ける
- この規則を使用して、INONLY または NONASSIGNABLE プロシージャー・パラメーターに値を割り当てるステートメントにフラグを立てます。
- 別のブロック内のラベルを指定する GO TO ステートメントを避ける
- この規則を使用して、別のブロック内のラベルを指定するすべての GO TO ステートメントにフラグを立てます。
- ラベル変数を指定する GO TO ステートメントを避ける
- この規則を使用して、ラベル変数を指定する GO TO ステートメントにフラグを立てます。
- できる限り GO TO ステートメントの使用を避ける
- この規則を使用して、開始ブロックの外部に制御権を移動する GO TO ステートメント以外のすべての GO TO ステートメントにフラグを立てます。
- STOP ステートメントを避ける
- この規則を使用して、すべての STOP ステートメントにフラグを立てます。
- EXEC CICS®: DFHRESP を使用して戻り値を検査する
- この規則は、EXEC CICS コマンドの RESP パラメーターまたは RESP2 パラメーターとして使用されているデータ項目に適用されます。
この規則を使用して、以下のコンテキストでそのようなデータ項目と DFHRESP 関数呼び出しの戻り値以外のものとの比較にフラグを立てます。(1) すべての比較条件の中、および (2) データ項目が選択対象である SELECT ステートメントのすべての WHEN ユニットの中。
- EXEC CICS: RESP オプションを使用する
- この規則を使用して、RESP オプションが含まれていない EXEC CICS コマンドにフラグを立てます。
この規則では、すべての EXEC CICS ブロックを検査し、RESP() オプションが存在するかどうかチェックします。そのオプションが存在しない場合、そのブロックに違反としてフラグを立てます。
- 基本ストレージに使用されるロケーター変数を初期化する
- この規則を使用して、ロケーター変数が初期化されていない可能性がある基本データ項目へのすべての参照にフラグを立てます。
この規則は、次のすべての条件に該当する場合に、ロケーター変数が初期化されていない可能性があると判断します。
(1) ロケーター変数に INIT 属性が指定されていないか、INIT(NULL) または INIT(SYSNULL) が指定されている。
(2) 割り当てステートメントでロケーター変数の値を設定していない。
(3) 割り振りステートメントで明示的または暗黙的にロケーター変数の値を設定していない。
(4) 割り振りステートメントでロケーター変数をベースとして使用するデータ項目の値を設定していない。
この規則は、SIZE または STORAGE 組み込み関数の入力パラメーターである基本データへの参照にはフラグを立てません。
- ELSE-IF の代わりに SELECT ステートメントを使用する
- この規則を使用して、ELSE の直後に別の IF ステートメントがある ELSE ユニットが含まれている IF ステートメントにフラグを立てます。
既に規則違反のフラグが立っている別の IF ステートメント内に含まれている IF ステートメントには、フラグは立てられません。
- レベル 1 ではない構造体メンバーの参照にドット修飾参照を使用する
- この規則を使用して、レベル 1 ではない構造体メンバーへの非ドット修飾参照にフラグを立てます。