DEFINED 属性は、宣言される変数が、指定された基本変数のストレージの 一部または全体に関連付けられることを指定します。
UNION 属性を指定すると、より明快な方法で同じ目的を達することができ、 また属性や精度の異なる変数にオーバーレイすることもできます。 また、DEFINED 属性では、定義済み変数または基本変数によるアクセスがすべて の定義済み変数で反映されますが、 共用体では、共用体のメンバーは常に 1 つしか有効ではありません。 UNION 属性の構文の詳細については、UNION 属性を参照してください。
|
省略形: DEF (DEFINED の場合)、POS (POSITION の場合)
基本変数がデータ集合である場合、定義済み変数はデータ全体で構成するこ とも、データの指定部分だけで構成することもできます。
定義済み変数は、基本変数の属性を継承しません。 定義済み変数は INTERNAL にする必要があり、レベル 1 の ID で なければなりません。 この変数は次元属性を持つことができます。 属性は INITIAL、AUTOMATIC、BASED、CONTROLLED、 STATIC、または パラメーターであってはなりません。
単純、iSUB、およびストリング・オーバーレイの 3 つの定義タイプがあります。
有効になる定義タイプは、次のように決定されます。
POSITION 属性が指定されている場合は、基本変数に iSUB 参照が 含まれていてはなりません。
基本変数と定義済み変数が一致 するのは、 引数として渡されたときの基本変数が、定義済み変数の属性 (DEFINED 属性 を除く) を持つパラメーターと一致している場合です。 このためには、パラメーターの配列の境界、ストリングの長さ、 および区域サイズがすべてアスタリスクによって指定されていることが 前提になります。
単純定義と iSUB 定義の場合、PICTURE 属性は反復因数を除いて 同一の PICTURE 属性にだけ一致します。 ストリング・オーバーレイ定義内で参照が有効な基本変数を指定するためには、 参照が連結ストレージ内にあることが必要です。 マッチング規則は完全にオーバーライドできますが、 オーバーライドによってプログラムに意図しない副次作用が出る可能性があります。
配列の境界、ストリングの長さ、または区域サイズに対して指定される値、または 派生する値は、基本変数の値と必ずしも一致していなくても構いません。 ただし、定義済み変数は、対応する基本配列、ストリング、または 区域に収まるようにする必要があります。
定義済みデータを参照する際には、STRINGRANGE、SUBSCRIPTRANGE、およ び STRINGSIZE の条件が、基本変数ではなく、定義済み変数の配列境界とストリング の長さに生じます。
値の決定と名前の解釈は、次の順序で行われます。
定義済み変数が、位置合わせされていない固定長 BIT であるエレメントが入っている構造体または共用体である場合は、 定義済み変数の中のすべての配列境界およびストリング長を、定数として指定する必要があります。
定義済み変数に BIT 属性がある場合、 次の条件下では予期しない結果が生じる可能性があります。