構造体または共用体でないメンバーを持つ構造体の名前を、PL/I ホスト構造体の名前にすることができます。 次に例を示します。
dcl 1 A,
2 B,
3 C1 char(...),
3 C2 char(...);
この例で、B はスカラー C1 と C2 からなるホスト構造体の名前です。
ホスト構造体は 2 レベルに制限されます。 ホスト構造体は、ホスト変数の名前付き集合と考えることができます。
宣言の終わりにセミコロンを入力することによって、ホスト構造体変数を 区切る必要があります。 次に例を示します。
dcl 1 A,
2 B char,
2 (C, D) char;
dcl (E, F) char;
ホスト変数属性は、PL/I で許容できる任意の順序で指定できます。例えば、BIN FIXED(31)、BINARY FIXED(31)、BIN(31) FIXED、および FIXED BIN(31) はすべて許容できます。
次の図は、有効なホスト構造体の構文を示しています。
>>-+-DECLARE-+--level--variable-name----------------------------> '-DCL-----' >--+----------------------+--,----------------------------------> '-Scope and/or storage-' .-,------------------------------------------. V | >----level--+-var-1-----------+--| Attributes |-+--;------------> | .-,-----. | | V | | '-(----var-2-+--)-' >--| Attributes: |----------------------------------------------> >------+-+-BINARY--+--+-FIXED--+-----------------------------+-+-+----->< | +-BIN-----+ | '-(--precision--+--------+--)-' | | | +-DECIMAL-+ | '-,scale-' | | | '-DEC-----' '-FLOAT--+-----------------+-------------' | | '-(--precision--)-' | '-+-CHARACTER-+--+---------------+--+---------+-----------' '-CHAR------' '-(--integer--)-' +-VARYING-+ '-VAR-----'