The FILLER item is treated as if it were an item with a level number equal
to that of the preceding item. The size of this implicit FILLER item is calculated
as follows:
- 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.
An implicit FILLER item may also be added by the compiler when a group
item is defined with an OCCURS clause and contains data items that are subject
to alignment. To determine whether an implicit FILLER is to be added, the
following action is taken:
- 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
77
|
16 bytes
16 bytes
|
| Local-Storage Section |
01
77
|
16 bytes
16 bytes
|
| File Section |
01 |
Compiler assumes a 16-byte boundary for synchronizing
items. |
| Linkage Section |
01
77
|
Compiler assumes a 16-byte boundary for synchronizing
items. Pointer data and procedure-pointer data items are not synchronized. |