FILLER Items

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.