The table below lists the Open PL/I data types, along with the alignment and size of their machine representations.
Alignment is the same for Intel, AIX/Power, and Sun SPARC, unless otherwise specified.
Data Type | Size | Alignment: aligned data | Alignment: unaligned data |
---|---|---|---|
Fixed Binary Signed (p <= 7) 1 | 1 byte | 1 byte | byte |
Fixed Binary Signed (8 <= p <= 15) | 2 bytes | 2 bytes | byte |
Fixed Binary Signed (16 <= p <= 31) | 4 bytes | 4 bytes | byte |
Fixed Binary Signed (32 <= p <= 63) | 8 bytes |
4 bytes (32-bit system) 8 bytes (64-bit system) |
byte |
Fixed Binary Unsigned (p <= 8) 2 | 1 byte | 1 byte | byte |
Fixed Binary Unsigned (9 <= p <= 16) | 2 bytes | 2 bytes | byte |
Fixed Binary Unsigned (17 <= p <= 32) | 4 bytes | 4 bytes | byte |
Fixed Binary Unsigned (33 <= p <= 64) | 8 bytes |
4 bytes (32-bit system) 8 bytes (64-bit system) |
byte |
Fixed Decimal (p,q) | [(p+2)/2] bytes | byte | byte |
Float Binary (p <= 23) | 4 bytes | 4 bytes | byte |
Float Binary (p > 23) | 8 bytes | 4 bytes (Intel 32-bit), | byte |
Float Decimal (p) | 12 bytes | 4 bytes | byte |
Character (n) | n bytes | byte | byte |
Character (n) Varying | n+2 bytes | 2 bytes | byte |
Character (n) Varyingz | n+1 bytes | byte | byte |
Graphic(n) | n*2 bytes | byte | byte |
Graphic(n) Varying | n*2+2 bytes | 2 bytes | byte |
Graphic(n) Varyingz | n*2+2 bytes | byte | byte |
Widechar (n) | n*2 bytes | byte | byte |
Widechar (n) Varying | n*2+2 bytes | Half-word | byte |
Widechar(n) Varyingz | n*2+1 bytes | byte | byte |
Bit (n) | n bits | bit | bit |
Bit (n) Aligned | [(n+7)/8] bytes | byte | – |
Pointer (32-bit) | 4 bytes | 4 bytes | byte |
Pointer (64-bit) | 8 bytes | 8 bytes | byte |
Picture | n bytes | byte | byte |
Label | 8 bytes | 4 bytes | byte |
Entry Variable | 8 bytes | 4 bytes | byte |
File Variable | 4 bytes | 4 bytes | byte |
Structure3 | sum of members + gaps for alignment | max of members | byte |
Area (n) | (((n+7)/8)*8)+8 bytes | 8 bytes | – |
Offset | 4 bytes | 4 bytes | byte |
Subsequent sections provide additional information about the size, alignment, internal representation including byte ordering, and range, where applicable.
The byte ordering on the IBM RS/6000 and Sun SPARC platforms is Big Endian, while the Intel-based platforms have Little Endian byte ordering.