The lengths of all the elementary data items in the record, including all slack bytes, are added. The total is then divided by the highest value of m for any one of the elementary items in the record.
If r (the remainder) is equal to zero, no slack bytes are required. If r is not equal to zero, m - r slack bytes are required. These slack bytes can be specified by writing a level-02 FILLER at the end of the record.
Consider the following record description:
01 COMP-RECORD.
05 A-1 PICTURE X(5).
05 A-2 PICTURE X(3).
05 A-3 PICTURE X(3).
05 B-1 PICTURE S9999 USAGE COMP SYNCHRONIZED.
05 B-2 PICTURE S99999 USAGE COMP SYNCHRONIZED.
05 B-3 PICTURE S9999 USAGE COMP SYNCHRONIZED.
The number of bytes in A-1, A-2, and A-3 totals 11. B-1 is a four-digit COMPUTATIONAL item and 1 slack byte must therefore be added before B-1. With this byte added, the number of bytes that precede B-2 totals 14. Because B-2 is a COMPUTATIONAL item of five digits in length, 2 slack bytes must be added before it. No slack bytes are needed before B-3.
The revised record description entry now appears as:
01 COMP-RECORD.
05 A-1 PICTURE X(5).
05 A-2 PICTURE X(3).
05 A-3 PICTURE X(3).
[05 SLACK-BYTE-1 PICTURE X. INSERTED BY COMPILER]
05 B-1 PICTURE S9999 USAGE COMP SYNCHRONIZED.
[05 SLACK-BYTE-2 PICTURE XX. INSERTED BY COMPILER]
05 B-2 PICTURE S99999 USAGE COMP SYNCHRONIZED.
05 B-3 PICTURE S9999 USAGE COMP SYNCHRONIZED.
There is a total of 22 bytes in COMP-RECORD, but from the rules above, it appears that m = 4 and r = 2. Therefore, to attain proper alignment for blocked records, you must add 2 slack bytes at the end of the record.
The final record description entry appears as:
01 COMP-RECORD.
05 A-1 PICTURE X(5).
05 A-2 PICTURE X(3).
05 A-3 PICTURE X(3).
[05 SLACK-BYTE-1 PICTURE X. INSERTED BY COMPILER]
05 B-1 PICTURE S9999 USAGE COMP SYNCHRONIZED.
[05 SLACK-BYTE-2 PICTURE XX. INSERTED BY COMPILER]
05 B-2 PICTURE S99999 USAGE COMP SYNCHRONIZED.
05 B-3 PICTURE S9999 USAGE COMP SYNCHRONIZED.
05 FILLER PICTURE XX. [SLACK BYTES YOU ADD]