DEFINE STRUCTURE ステートメントは名前付き構造体または
共用体タイプを指定します。
 >>-DEFINE--STRUCTURE--1--structure-type-name--+-------+--,------>
'-UNION-'
.-,-----------------------------------------.
V |
>----level minor-structure-name--+-----------+-+--;------------><
'-attribute-'
|
- structure-type-name
- この構造体タイプに与えられた名前を指定します
(大構造体についての詳細な情報は、構造体を参照してください)。
この名前は次元を持つことはできませんが、副構造体を持つことはできます。
- UNION
- UNION 属性で説明されています。
- minor-structure-name
- 下のレベルに与えられた名前を指定します。
(小構造体についての詳細な情報は 構造体を参照してください。)
- attributes
- 小構造体名についての属性を指定します。
以下の属性のみが許可されています。
- データ属性
- INITIAL 非データ属性。
INITIAL 属性について詳しくは、INITIAL 属性を参照してください。
- VALUE 非データ属性。
VALUE 属性について詳しくは、名前付き定数を参照してください。
DEFINE STRUCTURE ステートメントに指定された任意のストリングの長さ、領域サイズ、
または配列次元が制限された式でなければなりません。
欠落しているデータ属性は PL/I デフォルトを使用して提供されます。
以下の制約事項に留意してください。
- 定義済み構造体は、その構造体の位置合わせの倍数となるバイト数でなければなりません。
- 定義済み構造体では、最も厳しい位置合わせを持つエレメントの前にあるバイト数が、
そのエレメントの位置合わせの倍数でなければなりません。
例えば、構造体に、最も厳しく位置合わせされた項目である、位置合わせされた fixed bin(31)
フィールドが含まれている場合、その制約事項は以下のようになります。
- 構造体は、4 バイトの倍数でなければならない
- 最初の位置合わせされた fixed bin(31) フィールドの前には、4 バイトの倍数のバイト数
がなければならない
DEFINE STRUCTURE ステートメントは「強い」タイプを定義します。
言いかえると、そのタイプで宣言された変数は
同じタイプを持つ変数 (またはパラメーター) にのみ割り当てることができます。
タイプ付き構造体をデータ・ディレクティブ入出力ステートメントに使用することはできません。
定義する構造体名だけを指定し、メンバーを指定しない DEFINE
STRUCTURE ステートメントは、「指定されていない構造体」を定義します。
- 指定されていない構造体は参照解除できませんが、HANDLE を宣言するために
使用できます (HANDLE はどちらにしても参照解除できません)。
- 指定されていない構造体は、メンバーを指定する後続の DEFINE STRUCTURE ステート
メントの対象にすることもできます。
指定されていない構造体の定義は、構造体の定義に 2 つ目の構造体へのハンドルが
あって、2 つ目の構造体にも 1 つ目の構造体へのハンドルがある場合に役立ちます。
例えば次の例では、親構造体に子構造体へのハンドルがあり、
一方で子構造体にも親構造体へのハンドルがあります。
define structure 1 child;
define structure
1 parent,
2 first_child handle child,
2 parent_data fixed bin(31);
define structure
1 child,
2 parent handle parent,
2 next_child handle child,
2 child_data fixed bin(31);
|
This information center is powered by Eclipse technology. (http://www.eclipse.org)