条件によっては、その条件を割り込み可能にするのか、割り込み禁止にするのかを指定することができます。 条件が割り込み可能な場合、コンパイラーは、条件の検出に必要な追加のコードを生成します。条件が割り込み禁止の場合は、追加のコードは生成されません。
条件を割り込み禁止にするということは、つまり条件が起こらないようにするということです。条件が起こった場合は、プログラムにエラーがあるということを意味します。
たとえば、SUBSCRIPTRANGE 条件が割り込み可能な場合、コンパイラーは追加のコードを生成して、あらゆる配列指標が必ずその配列の境界内に収まるようにします。 SUBSCRIPTRANGE 条件が割り込み禁止だと、追加コードは生成されないため、無効な配列指標が使用されて予期不能な結果となります。
条件がハードウェアによって検出されると、条件の割り込み禁止は無効になります。
条件接頭語を使用すれば、上記のような条件について、割り込み可能にするか、割り込み禁止にするかを指定できます。
|
次の例では、(size) : が条件接頭語です。 条件付き接頭部は、対応する条件が接頭部の有効範囲内で割り込み可能であることを表します。
(size): L1: X=(I**N) / (M+L);
条件は、条件名を指定する条件接頭語を使用して、割り込み可能にすることができます。 また、条件名を指定する条件接頭語の前にブランクを入れずに NO を付ければ、 条件を割り込み禁止にすることができます。 条件のタイプと状況を表 44 に示します。
| クラスと条件 | 状況 |
|---|---|
| 計算 (データの処理、式の計算、および計算) | |
| CONVERSION | デフォルトにより割り込み可能 |
| FIXEDOVERFLOW | デフォルトにより割り込み可能 |
| INVALIDOP | デフォルトにより割り込み可能 |
| OVERFLOW | デフォルトにより割り込み可能 |
| UNDERFLOW | 常に割り込み可能 |
| ZERODIVIDE | デフォルトにより割り込み可能 |
| 入出力 | |
| ENDFILE | 常に割り込み可能 |
| ENDPAGE | 常に割り込み可能 |
| KEY | 常に割り込み可能 |
| NAME | 常に割り込み可能 |
| RECORD | 常に割り込み可能 |
| TRANSMIT | 常に割り込み可能 |
| UNDEFINEDFILE | 常に割り込み可能 |
| プログラム・チェックアウト (プログラムの開発、デバッグに有効) | |
| SIZE | デフォルトにより割り込み禁止 |
| STRINGRANGE | デフォルトにより割り込み禁止 |
| STRINGSIZE | デフォルトにより割り込み禁止 |
| SUBSCRIPTRANGE | デフォルトにより割り込み禁止 |
| その他 | |
| ANYCONDITION | 常に割り込み可能 |
| AREA | 常に割り込み可能 |
| ATTENTION | 常に割り込み可能 |
| CONDITION | 常に割り込み可能 |
| ERROR | 常に割り込み可能 |
| FINISH | 常に割り込み可能 |
| STORAGE | 常に割り込み可能 |
条件を割り込み可能にしたり、 割り込み禁止にしたりすることがパフォーマンスに与える影響については、 「プログラミング・ガイド」を参照してください。