FILLER Items
- The total number of characters occupied by all elementary data items preceding the aligned item are added together, including any implicit FILLER items previously added.
- This sum is divided by the factor m used as a multiplier in the above calculation of alignment (2, 4, 8, or 16).
- If the remainder r of this division is equal to zero, no implicit FILLER item is required. If the remainder is not equal to zero, the size of the implicit FILLER item is equal to m - r.
The size of the implicit FILLER item is not included in the size of any group item that contains it.
Group items are naturally defined as alphanumeric. Any FILLER items are initialized with spaces. Implicit FILLER items generated through the SYNCHRONIZED clause, then, are also initialized with spaces under the (default) *STDINZ compiler option. Under the *NOSTDINZ or *STDINZHEX00 options, these implicit FILLER items will contain hexadecimal zeroes.
- The compiler calculates the size of the group item, including all necessary implicit FILLER items.
- This sum is divided by the largest m required by any elementary item within the group.
- If r is equal to zero, no implicit FILLER item is required. If r is not equal to zero, an implicit FILLER item of size m - r must be added.
An implicit FILLER item may be inserted at the end of each occurrence of the group item containing the OCCURS clause. This is done to synchronize subsequent occurrences.
Items at level 01 or 77 are aligned according to the following rules:
| Area | Level Number | Boundary Alignment |
|---|---|---|
| Working-Storage Section | 01 |
16 bytes |
| Local-Storage Section | 01 |
16 bytes |
| File Section | 01 | Compiler assumes a 16-byte boundary for synchronizing items. |
| Linkage Section | 01 |
Compiler assumes a 16-byte boundary for synchronizing items. Pointer data and procedure-pointer data items are not synchronized. |