Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, 言語解説書

条件接頭語

条件によっては、その条件を割り込み可能にするのか、割り込み禁止にするのかを指定することができます。 条件が割り込み可能な場合、コンパイラーは、条件の検出に必要な追加のコードを生成します。条件が割り込み禁止の場合は、追加のコードは生成されません。

条件を割り込み禁止にするということは、つまり条件が起こらないようにするということです。条件が起こった場合は、プログラムにエラーがあるということを意味します。

たとえば、SUBSCRIPTRANGE 条件が割り込み可能な場合、コンパイラーは追加のコードを生成して、あらゆる配列指標が必ずその配列の境界内に収まるようにします。 SUBSCRIPTRANGE 条件が割り込み禁止だと、追加コードは生成されないため、無効な配列指標が使用されて予期不能な結果となります。

条件がハードウェアによって検出されると、条件の割り込み禁止は無効になります。

条件接頭語を使用すれば、上記のような条件について、割り込み可能にするか、割り込み禁止にするかを指定できます。

構文図を読む構文図をスキップする   .------------------------.
   |    .-,---------.       |
   V    V           |       |
>>---(----condition-+--)--:-+--+-statement-+-------------------><
                               '-;---------'
 
condition
条件の中には、常に割り込み可能になっており、 割り込み禁止にすることができないものもあります。 さらに、割り込み禁止にするのでない限り、割り込み可能になっているものもあり ます。逆に、割り込み可能にするのでない限り、割り込み禁止になっているものもあります。 条件は、条件にリストされています。
statement
条件接頭語は、ステートメント DECLARE、DEFAULT、FORMAT、 OTHERWISE、END、ELSE、ENTRY、 および % ステートメントでは使用することができません。 条件接頭語の有効範囲については、条件接頭語の有効範囲を参照してください。

次の例では、(size) : が条件接頭語です。 条件付き接頭部は、対応する条件が接頭部の有効範囲内で割り込み可能であることを表します。

  (size):  L1:  X=(I**N) / (M+L);

条件は、条件名を指定する条件接頭語を使用して、割り込み可能にすることができます。 また、条件名を指定する条件接頭語の前にブランクを入れずに NO を付ければ、 条件を割り込み禁止にすることができます。 条件のタイプと状況を表 44 に示します。

表 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 常に割り込み可能

条件を割り込み可能にしたり、 割り込み禁止にしたりすることがパフォーマンスに与える影響については、 「プログラミング・ガイド」を参照してください。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)