基底付き変数のための ALLOCATE ステートメント
ALLOCATE ステートメントは、プロシージャー・ブロックの境界とは関係なく、
基底付き変数にストレージを割り振り、その記憶位置を示すために使用される
ロケーター変数をセットします。
 .-,------------------------------------------.
V |
>>-ALLOCATE----based-variable--+------------------------+-+----->
'-| location-reference |-'
>--;-----------------------------------------------------------><
location-reference:
|--+-------------------+--+-----------------------+-------------|
'-IN(area-variable)-' '-SET(locator-variable)-'
|
省略形: ALLOC
- based
variable
- レベル 1 の添え字なし変数
- IN
-
ストレージを割り振る区域変数を指定します。
区域の詳細については、区域データとその属性を参照してください。
- SET
-
割り振られたストレージの位置を示す値にセットされるロケーター変数を
指定します。
SET オプションを省略する場合は、基底付き変数の宣言で指定されたロケータ
ーを使用しなければなりません。
基底付き変数を宣言する場合の構文の詳細については、基底付きストレージとその属性および
ロケーター・データを参照してください。
基底付き変数と被制御変数の両方を、同一の ALLOCATE ステートメントで
割り振ることができます。
被制御変数の構文については、被制御変数のための ALLOCATE ステートメントを参照してください。
IN オプションを指定したときや、SET オプションでオフセット変数を指定した
ときは、区域内でストレージが割り振られます。
これらのオプションの指定順序は任意です。
区域内での割り振りの場合は、次のことに注意してください。
- 基底付き変数に必要なストレージがその区域内にないときは、AREA 条件が
起こります。
- オフセット変数使用時に IN オプションを指定しない場合、オフセット変数を宣
言するときに区域参照を指定しておく必要があります。
区域を使用しない場合は、ロケーター変数はポインター変数でなければなりません。
基底付き変数のためのストレージが使用可能でない場合、STORAGE 条件が起こります。
基底付き変数が REFER を使用している場合、そのサイズは実行時に計算されます。
計算の結果、値が大きすぎて FIXED BIN(31) 変数に適合しない場合、プログラムはエラーとなり、訂正する必要があります。
この状態では、STORAGE 条件は起こりません。その代わり、
ONCODE=3809 が設定された ERROR 条件が以下のいずれかの場合に起こります。
- SIZE 条件が使用可能になっている
- BASED 構造体がライブラリー呼び出しを介してマップされている
これらの条件のどちらも該当しない場合、予測不能な結果が生じます。
基底付き変数に割り振られるストレージの大きさは、その変数の属性に左右されるほか、その変数の次元、長さ、またはサイズが割り振り時に指定されるときは、それらにも左右されます。
これらの属性は、基底付き変数の宣言から判別されます。
基底付きの構造体や共用体には、調整可能な配列境界、ストリングの長さ、
または区域のサイズを含むことができます (REFER オプション (自己定義データ)を参照)。
基底付き変数の場合、エクステントとしてアスタリスクを表記することはできません。
|
This information center is powered by Eclipse technology. (http://www.eclipse.org)