Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, コンパイラーおよびランタイム 移行ガイド

使用不可の場合に発生する条件

旧コンパイラーでは、CONVERSION または SUBSCRIPTRANGE などの条件が使用不可になっている場合は、その条件はほとんど発生しませんでした。

新しいコンパイラーでは、条件を使用不可にすると、その条件が発生しないことが表明されますが、条件はなお発生することがあります。

一部のコード・シーケンスでは、これによって、コンパイラーはより高速なコードを生成できます。 例えば、CHAR(1) の FIXED BIN への代入では、CONVERSION が使用可能になっている場合は、変換はライブラリーの呼び出しによって実行されます。 それが、CONVERSION が使用不可になっている場合は、変換は、CHAR(1) 値の左のニブルを「AND 演算でゼロにする」非常に単純なインライン・コードで実行されます。 このコードは、NOCONVERSION によって、変換条件がこのステートメントで発生することがないと表明することではじめて可能になります。 この表明が真ではない場合は、プログラムは無効になります。

ただし、CHAR(2) の FIXED BIN への代入では、変換は、 (それらの 2 文字で保持できる候補が多すぎるため) 常にライブラリーの呼び出しによって実行され、 NOCONVERSION が有効になっている場合でも、ソースに有効な数値が含まれていなければ CONVERSION 条件が発生します。 (なお、CHAR(2) ソースに数字のみが含まれていることが分かっている場合は、EDIT 組み込み関数、またはソースに基づくか和集合演算されたものとして宣言された変数の適切なピクチャー・ストリングを使用して、 このライブラリーの呼び出しを回避することもできます。)

同様に、SUBSCRIPTRANGE が使用不可の場合は、すべての添え字が有効であることが表明されます。 ほとんどのステートメントでは、添え字の妥当性を検査するコードがコンパイラーによって生成されず、無効な添え字が存在した場合にはプログラムでエラーが発生することになります。 ただし、PUT DATA ステートメントで添え字参照が使用された場合は、ライブラリー・ルーチンによってその参照が評価され、 無効な添え字が存在した場合は、(使用不可になっていても) SUBSCRIPTRANGE 条件が発生します。


Terms of use | Feedback

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