COBOL for Windows コンパイラーは、次の 2 つのうちのいずれかのような矛盾するコンパイラー・オプションを検出することができます。1 つのオプションの肯定形式と否定形式の両方が、優先順位の階層の中で同じレベルで指定されている場合、または互いに排他的なオプションが 階層の同じレベルで指定されている場合です。
矛盾するオプションを階層の同じレベルで指定した場合は、最後に指定したオプションの方が有効になります。
互いに排他的なコンパイラー・オプションを同じレベルで指定すると、コンパイラーはエラー・メッセージを生成し、 オプションの一方を対立しない値に強制します。例えば、PROCESS ステートメントで OPTIMIZE と TEST の両方を指定すると、指定した順序に関係なく、 TEST が有効になり、OPTIMIZE は無視されます。
しかし、高レベルの優先順位で指定されたオプションは、低レベルの優先順位で指定されたオプションを オーバーライドします。 コンパイラーは、次の優先順位 (高位から下位の順) に従ってオプションを認識します。
例えば、COBOPT 環境変数では TEST をコーディングし、 PROCESS ステートメントでは OPTIMIZE を コーディングすると、PROCESS ステートメントでコーディングされた オプションと、PROCESS ステートメントでコーディングされたオプションによって 強制的にオンにされたオプションの優先順位の方が高いため、 OPTIMIZE が有効になります。
| 指定される | 無視される | 強制 |
|---|---|---|
| CICS | DYNAM | NODYNAM |
| NOLIB | LIB | |
| NOTHREAD | THREAD | |
| MDECK | NOLIB | LIB |
| SQL | NOLIB | LIB |
| TEST | OPTIMIZE | NOOPTIMIZE |