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

被制御変数のための ALLOCATE ステートメント

ALLOCATE ステートメントは、プロシージャー・ブロックの境界とは 関係なく、被制御変数にストレージを割り振ります。 同時に、被制御パラメーターも割り振ることができます。 制御されている配列の境界、制御ストリングの長さ、 制御域のサイズは、その初期値と同様に ALLOCATE ステートメントで 指定することができます。

構文図を読む構文図をスキップする>>-ALLOCATE----------------------------------------------------->
 
   .-,-------------------------------------------------.
   V                                                   |
>----+-------+--controlled-variable--+---------------+-+--;----->
     '-level-'                       '-| attribute |-'
 
>--| attribute: |----------------------------------------------->
 
>--+-dimension-------------------------------------------+-----><
   +-CHARACTER(length)-----------------------------------+
   +-BIT(length)-----------------------------------------+
   +-GRAPHIC(length)-------------------------------------+
   +-WIDECHAR(length)------------------------------------+
   +-AREA(size)------------------------------------------+
   |          .-,----.                                   |
   |          V      |                                   |
   +-INITIAL(---item-+-)---------------------------------+
   '-INITIAL CALL--entry-reference--+------------------+-'
                                    |   .-,--------.   |
                                    |   V          |   |
                                    '-(---argument-+-)-'
 

省略形: ALLOC

level
レベル番号を示します。 レベル番号を指定しない場合、指定される被制御変数はレベル 1 変数で なければなりません。
controlled-variable
被制御変数または制御された小構造体のエレメントを指定します。 大構造体以外の構造体エレメントは、 エレメントを含む大構造体全体の相対構造化が、 その構造のための DECLARE ステートメント内にあるかのように示される 場合にのみ示すことができます。 この場合は、次元属性は、その次元属性で宣言されているすべての名前に指定されていなければなりません。

被制御変数と基底付き変数の両方を、同一の ALLOCATE ステートメントで 割り振ることができます。 基底付き変数の構文については、基底付き変数のための ALLOCATE ステートメントを参照してください。

配列の境界、ストリングの長さ、 および区域のサイズ (エクステント) は、 ALLOCATE ステートメントの実行時に計算されます。

次元属性は、宣言したものと同じ次元数を指定しなければなりません。 次元属性は他の任意の属性とともに指定することができ、指定する属性の最初のものでなければなりません。 以下に例を示します。

  declare X(M) char(N) controlled;
  M = 20;
  N = 5;
  allocate X(25) char(6);

BIT、CHARACTER、GRAPHIC、WIDECHAR、および AREA 属性は、 同じ属性を持つ変数についてのみ、それぞれ指定することができます。

変数が DECLARE または ALLOCATE ステートメントのいずれかに INITIAL 属性を持つ場合は、 初期値は割り振り時に変数に割り当てられます。 INITIAL 属性の式または CALL オプションは、 ALLOCATE ステートメントで使用可能な条件を使用して、 割り振り時に計算されます。 ただし、名前は宣言の環境で解釈されます。 INITIAL 属性が DECLARE と ALLOCATE ステートメントの両方に指定される場合は、ALLOCATE ステートメントの INITIAL 属性が使用されます。 初期設定時に、割り振られる変数が参照されている場合、その変数の 新しい世代を参照することになります。 初期設定の詳細については、INITIAL 属性を参照してください。

ALLOCATE ステートメントの実行時に行われる計算 (例えば、INITIAL 属性内の式の計算) は、相互に依存し合ってはなりません。

被制御変数のためのストレージが使用可能ではない場合、STORAGE 条件が発生します。


Terms of use | Feedback

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