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

基底付き変数のための 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 オプションでオフセット変数を指定した ときは、区域内でストレージが割り振られます。 これらのオプションの指定順序は任意です。 区域内での割り振りの場合は、次のことに注意してください。

区域を使用しない場合は、ロケーター変数はポインター変数でなければなりません。 基底付き変数のためのストレージが使用可能でない場合、STORAGE 条件が起こります。

基底付き変数が REFER を使用している場合、そのサイズは実行時に計算されます。 計算の結果、値が大きすぎて FIXED BIN(31) 変数に適合しない場合、プログラムはエラーとなり、訂正する必要があります。 この状態では、STORAGE 条件は起こりません。その代わり、 ONCODE=3809 が設定された ERROR 条件が以下のいずれかの場合に起こります。

これらの条件のどちらも該当しない場合、予測不能な結果が生じます。

基底付き変数に割り振られるストレージの大きさは、その変数の属性に左右されるほか、その変数の次元、長さ、またはサイズが割り振り時に指定されるときは、それらにも左右されます。 これらの属性は、基底付き変数の宣言から判別されます。

基底付きの構造体や共用体には、調整可能な配列境界、ストリングの長さ、 または区域のサイズを含むことができます (REFER オプション (自己定義データ)を参照)。 基底付き変数の場合、エクステントとしてアスタリスクを表記することはできません。


Terms of use | Feedback

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