ALIGNED および UNALIGNED は、データの記憶域境界を制御するオプションのデータ型属性です。
ALIGNED を指定すると、実装定義の記憶域境界にデータを整列できます。この場合、副作用として、使用される記憶域のビットが宣言された長さで指定されるビットよりも多くなる可能性があります(詳細については、『Open PL/I ユーザー ガイド』を参照してください)。
UNALIGNED を指定すると、実装定義の記憶域境界ではなく、次のバイト境界 (固定長ビット文字列の場合は次のビット) にデータを整列できます。これにより、必要な記憶域が削減されます。
ALIGNED または UNALIGNED は、スカラー、配列、または構造体の変数に対して指定できます。構造体にいずれかの属性を適用すると、その構造体に含まれる要素で明示的に整列が宣言されていないすべての要素にその属性が適用されます。データの操作は、一般には ALIGNED の方が効率的で、通常は UNALIGNED の方が低速になります。これらは、引数とパラメーターのマッチングや記憶域の共有においてデータ型の一部と見なされます。
デフォルトの属性は、可変でない文字データ型およびビット データ型については UNALIGNED で、それ以外のデータ型については ALIGNED になります。
UNALIGNED 属性は AREA 変数には適用されません。AREA 変数の場合は、常に 8 バイト境界で整列されます。
可変長文字列の整列については、『Open PL/I ユーザー ガイド』を参照してください。