ALIGNED を指定すると、データ・エレメントがそのデータ・タイプ要件に合うストレージ境界で位置合わせされます。 UNALIGNED は、各データ・エレメントが次のバイト境界でマップされることを指定します。ただし、固定長のビット・ストリングは例外であり、次のビットでマップされます。
|
デフォルトはエレメント・レベルで適用されます。 UNALIGNED はビット・データ、文字データ、グラフィック・データ、 ワイド文字データ、および数字データのデフォルトです。 ALIGNED は、その他のすべてのデータ・タイプのデフォルトです。
ALIGNED 属性の要件は、表 26 に記載されています。
| 変数タイプ | 内部での格納 | ストレージ所要量 (バイト) | 位置合わせ要件 | |
|---|---|---|---|---|
| ALIGNED データ | UNALIGNEDData | |||
|
注:
プログラム制御データの位置合わせおよびストレージ所要量で、 サポートされるシステムを通して変更することができます。 複素数データは実数データの 2 倍のストレージを必要としますが、 位置合わせ要件は同じです。 |
||||
| BIT(n) | ALIGNED: 8 ビットのグループ (またはその一部) ごとに 1 バイト
UNALIGNED: バイト境界に関係なく、必要なだけのビット数 |
ALIGNED: CEIL(n/8)
UNALIGNED: n ビット |
バイト (データは、0 から 7 までの 任意のバイトで開始できます) | ビット (データは、バイト内の 0 から 7 まで の任意のビットで開始できます) |
| CHARACTER(n) | 1 文字につき 1 バイト | n | バイト (データは、0 から 7 までの 任意のバイトで開始できます) | バイト (データは、0 から 7 までの 任意のバイトで開始できます) |
| CHARACTER (n)VARYINGZ | 1 文字につき 1 バイト、および、 ヌル終了文字の 1 バイト | n+1 | ||
| GRAPHIC(n) | 1 グラフィックにつき 2 バイト | 2n | ||
| GRAPHIC (n)VARYINGZ | 1 グラフィックにつき 2 バイト、 および、ヌル終了文字の 2 バイト | 2n+2 | ||
| WIDECHAR (n) | 1 ワイド文字につき 2 バイト | 2n | ||
| WIDECHAR (n)VARYINGZ | 1 ワイド文字につき 2 バイト、 およびヌル終了文字の 2 バイト | 2n+2 | ||
| PICTURE | PICTURE 文字 (V、K、および F スケール因数を除く) につき 1 バイト | V、K、および F 指定以外の PICTURE 文字の数 | ||
| DECIMAL FIXED (p,q) | パック 10 進フォーマット (1 桁につき 1/2 バイト、および、符号の 1/2 バイ ト) | CEIL((p+1)/2 | ||
| BINARY FIXED(p,q)
SIGNED 1 <= p <= 7 UNSIGNED 1 <= p <= 8 |
1 バイト | 1 | ||
| ORDINAL
SIGNED 1 <= p <= 7 UNSIGNED 1 <= p <= 8 |
||||
| BIT(n) VARYING | 2 バイトの接頭部、および、宣言される最大長の各 8 ビット・グループ (またはその一部) のための 1 バイト | ALIGNED:2+CEIL(n/8)
UNALIGNED: 2 バイト +n ビット |
ハーフワード (データは 0、2、4、または 6 バイトから開始できます) | バイト (データは、0 から 7 までの 任意のバイトで開始できます) |
| CHARACTER(n)VARYING | 2 バイトの接頭部、および、宣言される最大長の各文字につき 1 バイト | n+2 | ||
| GRAPHIC(n)VARYING | 2 バイトの接頭部、および、宣言される最大長の各グラフィックにつき 2 バイト | 2n+2 | ||
| WIDECHAR(n)VARYING | 2 バイトの接頭部、および、宣言される最大長の各ワイド文字につき 2 バイト | 2n+2 | ||
| BINARY FIXED(p,q)
SIGNED 8 <= p <= 15 UNSIGNED 9 <= p <= 16 |
ハーフワード | 2 | ||
| ORDINAL
SIGNED 8 <= p <= 15 UNSIGNED 9 <= p <= 16 |
||||
| BINARY FIXED(p,q)
SIGNED 16 <= p <= 31 UNSIGNED 17 <= p <= 32 |
フルワード | 4 | フルワード (データは 0 または 4 バイトから開始できます) | バイト (データは、0 から 7 までの 任意のバイトで開始できます) |
| ORDINAL
SIGNED 16 <= p <= 31 UNSIGNED 17 <= p <= 32 |
||||
| BINARY FLOAT(p)1<=p<=21 | 短浮動小数点 | |||
| DECIMAL FLOAT(p) 1<=p<=6 if not DFP | ||||
| DECIMAL FLOAT(p) 1<=p<=7 if DFP | ||||
| POINTER | - | 4 | フルワード (データは 0 または 4 バイトから開始できます) | バイト (データは、0 から 7 までの 任意のバイトで開始できます) |
| HANDLE | - | |||
| OFFSET | - | |||
| FILE | - | |||
| ENTRY LIMITED | - | |||
| ENTRY | - | 8 | ||
| LABEL または FORMAT | - | |||
| TASK | - | 16 | ||
| AREA | - | 16+size | ダブルワード (データは 0 バイトから開始できます) | AREA データは、位置合わせなしにすることはできません。 |
| BINARY FIXED(p,q)
SIGNED 32 <= p <= 63 UNSIGNED 33 <= p <= 64 |
- | 8 | バイト (データは、0 から 7 までの 任意のバイトで開始できます) | |
|
BINARY FLOAT(p) 22 <= p <= 53 |
長浮動小数点 | |||
| DECIMAL FLOAT(p) 8<=p<=16 if not DFP | ||||
| DECIMAL FLOAT(p) 7<=p<=16 if DFP | ||||
|
BINARY FLOAT(p) 54 <= p |
拡張精度の浮動小数点 | 16 | ||
| DECIMAL FLOAT(p) 17<=p | ||||
ALIGNED または UNALIGNED は、エレメント、配列、構造体、 または共用体変数について指定できます。 構造体または共用体にいずれかの属性を適用すれば、 明示的には ALIGNED とも UNALIGNED とも宣言されていない すべての被包含エレメントに対してその属性を適用することになります。
以下に、構造体とそのエレメントについての、 ALIGNED と UNALIGNED 宣言の効果を図示した例を示します。
declare 1 S,
2 X bit(2), /* unaligned by default */
2 A aligned, /* aligned explicitly */
3 B, /* aligned from A */
3 C unaligned, /* unaligned explicitly */
4 D, /* unaligned from C */
4 E aligned, /* aligned explicitly */
4 F, /* unaligned from C */
3 G, /* aligned from A */
2 H; /* aligned by default */
構造体と共用体の詳細については、構造体および 共用体を 参照してください。