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.