SIZE 条件

データ項目の値がデータ項目の宣言されたサイズまたはデフォルトのサイズを超えていることを示します。
重要: SIZE を使用するとパフォーマンスに悪影響を及ぼす可能性があるため、SIZE はアプリケーション開発時にのみ使用し、本番環境では削除してください。

有効/無効の状態

常に無効です。

結果

割り当てが不定になります。

発生

データ項目に割り当てられている値のサイズがデータ項目の宣言されたサイズまたはデフォルトのサイズを超えている場合に、記憶域のサイズとデータ項目に使用される記憶域の量が異なる場合でも発生します。たとえば、精度 (20) の固定長バイナリ項目は記憶域で全語を占有しますが、FIXED BINARY(20) を超えるサイズの値が割り当てられると SIZE が発生します。

変数への代入の試行や中間結果または入出力操作において、上位 (つまり左端) の 2 進数または 10 進数の有効桁数が失われた場合に発生します。この状況は、さまざまなデータ型、基数、スケール、または精度の変換が原因で発生することがあります。無効になっている場合は、非インライン変換によって条件が発生する可能性があります。

SIZE 条件はデフォルトでは無効になっています。Open PL/I では、この動作を有効にするための言語メカニズムである条件プレフィックスがサポートされていないため、代わりの方法が用意されています。

最適化されたコードでは、SIZE の代わりに FIXEDOVERFLOW が発生する場合があります。

SIZE 条件は、記憶域スペースとランタイムの両方のサイズをチェックするためのオーバーヘッドが大きくなることがあるため、主にプログラムのテストに使用します。

SIZE 条件と FIXEDOVERFLOW 条件は発生する状況が異なります。FIXEDOVERFLOW は計算された固定小数点値のサイズが実装で許可されている最大値を超えた場合に発生し、SIZE は値の代入時にその値の計算で FIXEDOVERFLOW が発生したかどうかに関係なく発生します。

SIZE 条件が発生した場合、それが無効になっているとプログラムはエラーになります。

次の Open-PLI ランタイム呼び出しが組み込みサブルーチンとして公開されています。

dcl __mFp_set_size_condition entry(fixed bin(31) native) external('__mFp_set_size_condition');
call __mFp_set_size_condition (1);  /*  enables the SIZE condition */
call __mFp_set_size_condition (0);  /*  disables the SIZE condition */

その他の情報

条件コード
340、341
暗黙の処理
メッセージを出力し、ERROR 条件を発生させます。
通常の復帰
条件が発生した直後の時点に制御が戻ります。