Data Definition Language (DDL) Reference Manual

DDL Compiler Commands
Data Definition Language (DDL) Reference Manual529431-004
9-60
FILLER
The DDL compiler removes only filler bytes generated by the DDL compiler; it never
removes user-specified filler bytes.
When the CFIELDALIGN_MATCHED2 command is set, the DDL compiler uses a
modified, extended FILLER 1. In this case, the DDL compiler ignores any FILLER 0
specification.
If FILLER 0 is specified, the DDL compiler generates filler bytes according to this
algorithm:
If a field or group described with a REDEFINES clause does not start on a word
boundary, the DDL compiler inserts 1 byte of filler before the field or group being
redefined, even if the redefined field is the first element in a group.
If a single-item field or a group not described with a REDEFINES clause does not
start on a word boundary, the DDL compiler inserts one byte of filler before the
field or group.
If the first element in a group not described with a REDEFINES clause does not
start on a word boundary, the DDL compiler inserts one byte of filler before the
group.
If a group described with an OCCURS clause has both an odd number of bytes
and an element that does not start on a word boundary, the DDL compiler inserts 1
byte of filler after the last element in the group. The filler bytes have the same level
number as the first element in the group. (The DDL compiler can remove this byte
of filler in a subsequent compilation phase.)
If the first element of a group not described with a REDEFINES clause is a byte of
filler generated by the DDL compiler and the group does not start on a word
boundary, the DDL compiler inserts another filler byte before the group. In a
subsequent compilation phase, the DDL compiler removes the filler byte from
within the group.
FILLER 1 works exactly like FILLER 0 except that FILLER 1 has an additional rule that
keeps user-defined TYPE definitions intact wherever they are used. The rest of the
algorithm for FILLER 1 is this:
For a group defined by a TYPE clause, the DDL compiler determines whether the
group the clause refers to starts on a word boundary.
If the group referenced starts on a word boundary, the DDL compiler does not
insert any filler bytes for the referring group.
If the group referenced does not start on a word boundary and is not described
with a REDEFINES clause, the DDL compiler inserts a filler byte before the
referring group.
If the group referenced does not start on a word boundary but is described with a
REDEFINES clause, the DDL compiler inserts a filler byte before the group being
redefined.