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

配列、構造体、および共用体の組み合わせ

構造体または共用体に次元属性を指定すると、 それぞれ構造体の配列、 または共用体の配列 になります。 このような配列のエレメントは、同一の名前、レベル、 およびメンバーを持つ構造体または共用体です。 例えば、ある構造体が 20 世紀から 21 世紀までの毎月の気象データを 保管するために使用されている場合、これは次のように宣言されます。

  Declare 1 Year(1901:2100),
            3 Month(12),
              5 Temperature,
                7 High decimal fixed(4,1),
                7 Low decimal fixed(4,1),
              5 Wind_velocity,
                7 High decimal fixed(3),
                7 Low decimal fixed(3),
             5 Precipitation,
               7 Total decimal fixed(3,1),
               7 Average decimal fixed(3,1),
           3 * char(0);

1991 年 7 月の気象データは、Year(1991,7) と 指定すれば参照することができます。 7 月の気象データの各部分は、 Temperature(1991,7)Wind_Velocity(1991,7) を 指定すれば参照することができます。 Precipitation.Total(1991,7) または Total(1991,7) の いずれを指定しても、1991 年 7 月の総雨量を参照することができます。

Temperature.High(1991,3) は 1991 年 3 月の最高気温を参照します。 これは添え字付きの修飾された参照です。

構造体または共用体の配列の中に、配列であるメンバーが含まれていると、 添え字付きの修飾された参照の必要性が明確になります。 次の例では、A および B は共に構造体です。

  declare 1 A (2,2),
            (2 B (2),
               3 C,
               3 D,
             2 E) fixed bin;

データ項目を参照するために、3 つの名前と 3 つの添え字が必要になることがあります。 以下に例を示します。

A(1,1).B        は構造体の配列 B を参照します。
A(1,1)          は構造体を参照します。
A(1,1).B(1)     は構造体を参照します。
A(1,1).B(2).C   はエレメントを参照します。

このような参照における添え字は、添え字の順序さえ変えなければ、 高位レベルの名前に付けても低位レベルの名前に付けてもかまいません。 例えば、上に示した構造体の配列の場合、 A.B.C(1,1,2)A(1,1,2).B.C は、 A(1,1).B(2).C と同じ意味になります。 すべての添え字を最下位レベルに移したのでなければ、 その参照には介在添え字 があるといいます。 そこで、例えば A.B(1,1,2).C には介在添え字があります。

構造体または共用体の配列の中で宣言されている項目は、 親のもとで宣言されている次元を継承します。 例えば、上に示した構造体の配列 A では、 配列 B は、A で宣言されている 2 つの 次元を継承するので、3 次元の構造体になります。 B が固有の名前で、修飾を付ける必要がない場合、 特定の B を参照するには 3 つの添え字が必要です。 このうちの 2 つは特定の A を識別し、 残りの 1 つはその A の中の特定の B を 識別するためのものです。


Terms of use | Feedback

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