OPTIMIZE は、オブジェクト・プログラムの実行時間を短縮するために使用します。 最適化によって、オブジェクト・プログラムが使用するストレージの量を減らすこともできます。実行される最適化には、定数の伝搬や、結果が使用されない計算の除去などが含まれます。OPTIMIZE を使用すると、コンパイル時間が長くなり、プログラム内のステートメントの順序が変わることがあるので、デバッグの際にはこのオプションを使用しないでください。
| OPTIMIZE オプションの構文 |
|---|
|
デフォルト: NOOPTIMIZE
省略形: OPT|NOOPT
サブオプションを付けないで OPTIMIZE を指定すると、OPTIMIZE(STD) が有効になります。
FULL サブオプションは、OPT(STD) で実行される最適化に加えて、コンパイラーが DATA DIVISION から未参照のデータ項目を廃棄し、さらにこれらのデータ項目をそれぞれの VALUE 文節の値に初期化するコードの生成を抑止するように要求します。OPT(FULL) が有効であると、未参照の 77 レベル項目および基本 01 レベルがすべて破棄されます。さらに、どの従属項目も参照されなければ、01 レベルのグループ項目も破棄されます。削除された項目はリストの中で示されます。MAP オプションが有効であれば、データ・マップ情報内の XXXXX の BL 番号は、そのデータ項目が破棄されたことを示します。
推奨: データベース・アプリケーションには、OPTIMIZE(FULL) を使用してください。関連付けられた COPY ステートメントによって未使用の定数が組み込まれた場合は、それらの定数が除去されるため、パフォーマンスを大幅に向上させることができます。ただし、データベース・アプリケーションが未使用のデータ項目に依存する場合は、下記の推奨事項を参照してください。
未使用データ項目: プログラムで未使用データ項目を意図的に利用している場合は、OPT(FULL) を使用しないでください。従来は、次のような 2 つの方法が一般に使用されていました。
重大レベル以上のエラーが起こった場合、OPTIMIZE オプションはオフにされます。
OPTIMIZE オプションと TEST オプションは、どちらか一方しか指定することができません。両方を指定した場合は、OPTIMIZE が無視されます。
関連概念
最適化
関連参照
矛盾するコンパイラー・オプション