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

区域の割り当て

代入ステートメントを使用して、区域参照の値を 1 つ以上の区域変数に割り当てることができます。 区域から区域への割り当てを行うと、ターゲット区域内のすべての割り振りが解放され、次に、ソース区域のエクステントがターゲット区域に割り当てられ、ソース区域のすべてのオフセットがターゲット区域で有効になります。

次に例を示します。

  declare X based (O(1)),
          O(2) offset (A),
          (A,B) area;

          alloc X in (A);
          X = 1;
          alloc X in (A) set (O(2));
          O(2) -> X = 2;
          B = A;

POINTER 組み込み関数を使用すると、 POINTER (O(2),B)->XO(2)->X と いう参照は、それぞれ区域 B と区域 A で割り振られた同じ値を表します。

割り振りを含んでいない区域がターゲット区域に割り当てられると、ターゲット区域内のすべての割り振りが解放されるだけです。

区域割り当てを使用すれば、元の区域の境界を超えて基底付き変数のリストを拡張することができます。 ある区域内に基底付き変数を割り振ろうとしても、その変数を収容するのに必 要なフリー・ストレージがその区域内にないか、またはある区域を別の区域に割り当て ようとして、十分な大きさがないと、AREA 条件が起こります。 この条件の ON ユニットを使用すれば、 不適当な区域の参照を修飾しているポインターの値を変更して、 別の区域を指すようにすることができます。ON ユニットからの戻りにおいて、 割り振りが新規の区域内で再度試されます。 あるいは別の方法として、AVAILABLEAREA 組み込み関数を使用して、これから行おうとする割り振りが、AREA 条件を起こさずに対象とする区域内で可能であるかどうかを判別することができます。また、ON ユニットはその区域を書き出して、それを EMPTY にリセットすることもできます。


Terms of use | Feedback

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