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

DEFINED 属性と POSITION 属性

DEFINED 属性は、宣言される変数が、指定された基本変数のストレージの 一部または全体に関連付けられることを指定します。

UNION 属性を指定すると、より明快な方法で同じ目的を達することができ、 また属性や精度の異なる変数にオーバーレイすることもできます。 また、DEFINED 属性では、定義済み変数または基本変数によるアクセスがすべて の定義済み変数で反映されますが、 共用体では、共用体のメンバーは常に 1 つしか有効ではありません。 UNION 属性の構文の詳細については、UNION 属性を参照してください。

構文図を読む構文図をスキップする>>-DEFINED--+-reference---+--+----------------------+----------><
            '-(reference)-'  '-POSITION(expression)-'
 

省略形: DEF (DEFINED の場合)、POS (POSITION の場合)

reference
宣言される変数に関連付けられるストレージを持つ 変数 (基本変数) に対する参照。 宣言される変数は、定義済み変数 です。 基本変数は EXTERNAL でも INTERNAL でもよく、 パラメーターでも構いません (ストリング・オーバーレイ定義の 中で、パラメーターは連結ストレージを参照している必要があります)。 ただし、BASED または DEFINED であってはなりません。 基本変数の値を変更すると、定義済み変数の値がそれに応じて変更されます。 その逆も同様です。

基本変数がデータ集合である場合、定義済み変数はデータ全体で構成するこ とも、データの指定部分だけで構成することもできます。

定義済み変数は、基本変数の属性を継承しません。 定義済み変数は INTERNAL にする必要があり、レベル 1 の ID で なければなりません。 この変数は次元属性を持つことができます。 属性は INITIAL、AUTOMATIC、BASED、CONTROLLED、 STATIC、または パラメーターであってはなりません。

単純、iSUB、およびストリング・オーバーレイの 3 つの定義タイプがあります。

有効になる定義タイプは、次のように決定されます。

  1. POSITION 属性が指定されている場合は、ストリング・オーバーレイ 定義が有効になります。
  2. 基本変数に指定されている添え字に iSUB 変数への参照が 含まれている場合、iSUB 定義が有効になります。
  3. iSUB 変数も POSITION 属性も存在せず、 基本変数と定義済み変数が後述の基準に従って一致している場合は、 単純定義が有効になります。
  4. どれも当てはまらない場合は、ストリング・オーバーレイ定義が有効になります。

POSITION 属性が指定されている場合は、基本変数に iSUB 参照が 含まれていてはなりません。

基本変数と定義済み変数が一致 するのは、 引数として渡されたときの基本変数が、定義済み変数の属性 (DEFINED 属性 を除く) を持つパラメーターと一致している場合です。 このためには、パラメーターの配列の境界、ストリングの長さ、 および区域サイズがすべてアスタリスクによって指定されていることが 前提になります。

単純定義と iSUB 定義の場合、PICTURE 属性は反復因数を除いて 同一の PICTURE 属性にだけ一致します。 ストリング・オーバーレイ定義内で参照が有効な基本変数を指定するためには、 参照が連結ストレージ内にあることが必要です。 マッチング規則は完全にオーバーライドできますが、 オーバーライドによってプログラムに意図しない副次作用が出る可能性があります。

配列の境界、ストリングの長さ、または区域サイズに対して指定される値、または 派生する値は、基本変数の値と必ずしも一致していなくても構いません。 ただし、定義済み変数は、対応する基本配列、ストリング、または 区域に収まるようにする必要があります。

定義済みデータを参照する際には、STRINGRANGE、SUBSCRIPTRANGE、およ び STRINGSIZE の条件が、基本変数ではなく、定義済み変数の配列境界とストリング の長さに生じます。

値の決定と名前の解釈は、次の順序で行われます。

  1. 変数を宣言するブロックに入ったときに、 定義済み変数の配列境界、ストリングの長さ、および区域サイズが計算されます。
  2. 定義済み変数を参照するということは、基本変数の現行世代を参照することです。 仮引数が作成されずに、定義済み変数が引数として渡されると、それに対応する パラメーターは、引数が渡された時点での基本変数の現行世代を参照します。 呼び込まれたプロシージャー内で基本変数が再割り振りされた場合にも、 このことは引き続き当てはまります。
  3. 定義済み変数への参照が行われたときに、 基本変数と定義済み変数の添え字を評価する順序は定義されていません。

定義済み変数が、位置合わせされていない固定長 BIT であるエレメントが入っている構造体または共用体である場合は、 定義済み変数の中のすべての配列境界およびストリング長を、定数として指定する必要があります。

定義済み変数に BIT 属性がある場合、 次の条件下では予期しない結果が生じる可能性があります。


Terms of use | Feedback

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