CHECK オプションは、コンパイラーがさまざまなプログラミング・エラーを検出するための特殊コードを生成するかどうかを
指定します。

.-+---+-----------------.
| '-,-' |
V .-NOCONFORMANCE-. |
>>-CHECK--(----+-+-CONFORMANCE---+-+-+--)----------------------><
| .-NOSTORAGE-. |
'-+-STORAGE---+-----'
省略形: STG、NSTG
CHECK(CONFORMANCE) を指定すると、コンパイラーは以下の状況下で、プロシージャーに渡された引数の属性が、宣言された
パラメーターの属性に一致するかどうかを実行時に検査するコードを生成します。
- パラメーターが固定長で宣言されたストリング (またはストリングの配列) の場合、
渡された引数の長さが一致しないと、STRINGSIZE 条件が
引き起こされます。
- パラメーターがストリング (またはストリングの配列) の場合、引数の長さタイプ (VARYING、 NONVARYING、または VARYINGZ) が同じでない
と、STRINGSIZE 条件が引き起こされます。
- パラメーターが (スカラーまたは構造体の) 配列の場合、
定数の境界が、渡された引数の境界に一致しないと、SUBSCRIPTRANGE 条件が引き起こされます。
また、すべてのエクステントが一定で、引数内の配列エレメントのサイズおよび余白が
パラメーター内の配列のサイズおよび余白に一致しない場合でも、SUBSCRIPTRANGE 条件が引き起こされます。
構造体の内部にある配列は検査されません。
- パラメーターが、一定のエクステントを持つ構造体または共用体の場合、
最後のエレメントのオフセットが、渡された引数のオフセットに一致しないと、SUBSCRIPTRANGE 条件が引き起こされます。
- プロシージャーに RETURNS BYADDR 属性があり、その属性がストリング型を指定している場合、RETURNS 値に対して
渡されたストリングの長さが一致しないと、STRINGSIZE 条件が引き起こされます。
このエクストラ・コードは、NODESCRIPTOR オプションがプロシージャーに適用される場合、またはブロックに
ENTRY ステートメントが含まれる場合、または CMPAT(LE) オプションが有効になっている場合は生成されません。
CHECK(STORAGE) を指定すると、コンパイラーは ALLOCATE ステートメントと FREE ステートメントについて多少異なる
ライブラリー・ルーチンを呼び出します (これらのステートメントが AREA 内に出現する場合を除く)。
「PL/I 言語解説書」で説明されている次の組み込み関数は、CHECK(STORAGE) を指定した場合だけ使用できます。
- ALLOCSIZE
- CHECKSTG
- UNALLOCATED
|
This information center is powered by Eclipse technology. (http://www.eclipse.org)