MainframeMaster

COBOL Tutorial

COBOL FILLER Clause

The FILLER clause represents a fundamental mechanism in COBOL data structure design, serving as an unnamed data area specification that enables precise record layout control, memory alignment optimization, and compatibility maintenance with external data formats. This clause embodies the principles of structured data organization by providing flexible padding capabilities, supporting efficient memory utilization, and facilitating record standardization across diverse computing platforms while maintaining data integrity and ensuring optimal performance through strategic field positioning and alignment considerations in enterprise data processing environments.

Comprehensive FILLER Implementation

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
IDENTIFICATION DIVISION. PROGRAM-ID. FILLER-COMPREHENSIVE-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. *> Basic FILLER usage for record padding 01 CUSTOMER-RECORD-BASIC. 05 CUST-ID PIC 9(8). 05 CUST-NAME PIC X(30). 05 FILLER PIC X(2) VALUE SPACES. 05 CUST-ADDRESS PIC X(50). 05 FILLER PIC X(10) VALUE SPACES. *> FILLER with specific values for formatting 01 REPORT-HEADER-RECORD. 05 FILLER PIC X(10) VALUE 'REPORT: '. 05 REPORT-TITLE PIC X(40). 05 FILLER PIC X(5) VALUE SPACES. 05 FILLER PIC X(6) VALUE 'PAGE: '. 05 PAGE-NUMBER PIC ZZ9. 05 FILLER PIC X(68) VALUE SPACES. *> Complex record with multiple FILLER areas 01 TRANSACTION-RECORD-COMPLEX. 05 TRANS-HEADER. 10 TRANS-TYPE PIC X(2). 10 FILLER PIC X(1) VALUE SPACE. 10 TRANS-ID PIC 9(10). 10 FILLER PIC X(2) VALUE SPACES. 10 TRANS-DATE PIC 9(8). 10 FILLER PIC X(1) VALUE '-'. 10 TRANS-TIME PIC 9(6). 10 FILLER PIC X(6) VALUE SPACES. 05 TRANS-BODY. 10 ACCOUNT-NUMBER PIC 9(12). 10 FILLER PIC X(3) VALUE SPACES. 10 AMOUNT PIC 9(9)V99. 10 FILLER PIC X(2) VALUE SPACES. 10 DESCRIPTION PIC X(50). 10 FILLER PIC X(5) VALUE SPACES. 05 TRANS-TRAILER. 10 AUTHORIZATION-CODE PIC X(8). 10 FILLER PIC X(2) VALUE SPACES. 10 BRANCH-CODE PIC X(6). 10 FILLER PIC X(4) VALUE SPACES. 10 TELLER-ID PIC X(8). 10 FILLER PIC X(52) VALUE SPACES. *> FILLER for data alignment and performance 01 ALIGNED-DATA-RECORD. 05 RECORD-KEY PIC 9(8) COMP. 05 FILLER PIC X(4). *> Alignment padding 05 DECIMAL-AMOUNT PIC 9(9)V99 COMP-3. 05 FILLER PIC X(1). *> Padding for alignment 05 BINARY-COUNTER PIC 9(8) COMP. 05 FILLER PIC X(4). *> Alignment padding 05 CHARACTER-DATA PIC X(50). 05 FILLER PIC X(26) VALUE SPACES. *> FILLER with tables and occurs 01 TABLE-WITH-FILLER. 05 TABLE-HEADER. 10 TABLE-ID PIC X(8). 10 FILLER PIC X(2) VALUE SPACES. 10 TABLE-COUNT PIC 9(3). 10 FILLER PIC X(7) VALUE SPACES. 05 TABLE-ENTRIES OCCURS 100 TIMES. 10 ENTRY-ID PIC 9(5). 10 FILLER PIC X(1) VALUE SPACE. 10 ENTRY-DATA PIC X(30). 10 FILLER PIC X(4) VALUE SPACES. 05 TABLE-TRAILER. 10 FILLER PIC X(10) VALUE 'END-TABLE'. 10 FILLER PIC X(70) VALUE SPACES. *> FILLER for future expansion 01 EXPANDABLE-RECORD. 05 CURRENT-DATA. 10 RECORD-ID PIC 9(8). 10 RECORD-TYPE PIC X(4). 10 CREATION-DATE PIC 9(8). 10 STATUS-CODE PIC X(2). 10 ACTIVE-FLAG PIC X(1). 10 PRIORITY-LEVEL PIC 9(1). 05 RESERVED-AREA. 10 FILLER PIC X(20) VALUE SPACES. *> Future use 10 FILLER PIC X(30) VALUE SPACES. *> Future use 10 FILLER PIC X(25) VALUE SPACES. *> Future use 05 RECORD-TRAILER. 10 CHECKSUM PIC 9(8). 10 FILLER PIC X(12) VALUE SPACES. *> FILLER for external file compatibility 01 LEGACY-FILE-RECORD. 05 LEGACY-HEADER. 10 RECORD-TYPE PIC X(1). 10 FILLER PIC X(3) VALUE SPACES. *> Legacy padding 10 SEQUENCE-NUMBER PIC 9(6). 10 FILLER PIC X(2) VALUE SPACES. *> Legacy format 05 LEGACY-DATA. 10 CUSTOMER-CODE PIC X(10). 10 FILLER PIC X(5) VALUE SPACES. *> Legacy spacing 10 PRODUCT-CODE PIC X(8). 10 FILLER PIC X(2) VALUE SPACES. *> Legacy format 10 QUANTITY PIC 9(5). 10 FILLER PIC X(3) VALUE SPACES. *> Legacy padding 10 UNIT-PRICE PIC 9(5)V99. 10 FILLER PIC X(1) VALUE SPACE. *> Legacy format 05 LEGACY-TRAILER. 10 FILLER PIC X(40) VALUE SPACES. *> Legacy padding 10 END-MARKER PIC X(3) VALUE 'END'. 10 FILLER PIC X(7) VALUE SPACES. *> Legacy format *> FILLER for fixed-format reports 01 DETAIL-REPORT-LINE. 05 FILLER PIC X(5) VALUE SPACES. 05 DETAIL-CUSTOMER-ID PIC 9(8). 05 FILLER PIC X(3) VALUE SPACES. 05 DETAIL-CUSTOMER-NAME PIC X(25). 05 FILLER PIC X(2) VALUE SPACES. 05 DETAIL-BALANCE PIC ZZZ,ZZZ,ZZ9.99. 05 FILLER PIC X(3) VALUE SPACES. 05 DETAIL-STATUS PIC X(8). 05 FILLER PIC X(3) VALUE SPACES. 05 DETAIL-LAST-PAYMENT PIC X(10). 05 FILLER PIC X(55) VALUE SPACES. *> FILLER with redefines for multiple layouts 01 MULTI-FORMAT-RECORD. 05 RECORD-DATA PIC X(200). 01 RECORD-FORMAT-A REDEFINES MULTI-FORMAT-RECORD. 05 FORMAT-A-TYPE PIC X(1). 05 FILLER PIC X(1) VALUE SPACE. 05 FORMAT-A-ID PIC 9(8). 05 FILLER PIC X(2) VALUE SPACES. 05 FORMAT-A-DATA PIC X(100). 05 FILLER PIC X(88) VALUE SPACES. 01 RECORD-FORMAT-B REDEFINES MULTI-FORMAT-RECORD. 05 FORMAT-B-TYPE PIC X(1). 05 FILLER PIC X(1) VALUE SPACE. 05 FORMAT-B-CODE PIC X(6). 05 FILLER PIC X(2) VALUE SPACES. 05 FORMAT-B-AMOUNT PIC 9(9)V99. 05 FILLER PIC X(1) VALUE SPACE. 05 FORMAT-B-DESCRIPTION PIC X(75). 05 FILLER PIC X(104) VALUE SPACES. *> Working variables for demonstration 01 PROCESSING-VARIABLES. 05 RECORD-COUNT PIC 9(5) VALUE 0. 05 CURRENT-OPERATION PIC X(20). 05 FILLER-DEMO-FLAG PIC X(1) VALUE 'Y'. 88 DEMO-ACTIVE VALUE 'Y'. 88 DEMO-INACTIVE VALUE 'N'. PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM DEMONSTRATE-BASIC-FILLER PERFORM DEMONSTRATE-REPORT-FILLER PERFORM DEMONSTRATE-ALIGNMENT-FILLER PERFORM DEMONSTRATE-TABLE-FILLER PERFORM DEMONSTRATE-EXPANDABLE-FILLER PERFORM DEMONSTRATE-LEGACY-FILLER PERFORM DEMONSTRATE-MULTI-FORMAT-FILLER PERFORM DISPLAY-FILLER-STATISTICS STOP RUN. DEMONSTRATE-BASIC-FILLER. DISPLAY 'Demonstrating Basic FILLER Usage...' MOVE 'BASIC-FILLER' TO CURRENT-OPERATION *> Initialize customer record with FILLER areas MOVE 12345678 TO CUST-ID MOVE 'JOHN DOE ENTERPRISES' TO CUST-NAME MOVE '123 MAIN STREET, ANYTOWN, USA' TO CUST-ADDRESS ADD 1 TO RECORD-COUNT DISPLAY 'Customer Record Layout:' DISPLAY 'Customer ID: ' CUST-ID DISPLAY 'Customer Name: ' CUST-NAME DISPLAY 'Address: ' CUST-ADDRESS DISPLAY 'Record padded with FILLER areas for fixed length' DISPLAY 'Total record length: ' LENGTH OF CUSTOMER-RECORD-BASIC. DEMONSTRATE-REPORT-FILLER. DISPLAY 'Demonstrating Report FILLER Usage...' MOVE 'REPORT-FILLER' TO CURRENT-OPERATION *> Initialize report header with FILLER formatting MOVE 'CUSTOMER BALANCE REPORT' TO REPORT-TITLE MOVE 1 TO PAGE-NUMBER ADD 1 TO RECORD-COUNT DISPLAY 'Report Header Layout:' DISPLAY REPORT-HEADER-RECORD DISPLAY 'FILLER provides consistent formatting and spacing'. DEMONSTRATE-ALIGNMENT-FILLER. DISPLAY 'Demonstrating Alignment FILLER Usage...' MOVE 'ALIGNMENT-FILLER' TO CURRENT-OPERATION *> Initialize aligned record with performance considerations MOVE 87654321 TO RECORD-KEY MOVE 1234567.89 TO DECIMAL-AMOUNT MOVE 999 TO BINARY-COUNTER MOVE 'ALIGNED DATA FOR OPTIMAL PERFORMANCE' TO CHARACTER-DATA ADD 1 TO RECORD-COUNT DISPLAY 'Aligned Record Layout:' DISPLAY 'Record Key: ' RECORD-KEY DISPLAY 'Decimal Amount: ' DECIMAL-AMOUNT DISPLAY 'Binary Counter: ' BINARY-COUNTER DISPLAY 'Character Data: ' CHARACTER-DATA DISPLAY 'FILLER ensures proper data alignment for performance'. DEMONSTRATE-TABLE-FILLER. DISPLAY 'Demonstrating Table FILLER Usage...' MOVE 'TABLE-FILLER' TO CURRENT-OPERATION *> Initialize table with FILLER formatting MOVE 'TBL12345' TO TABLE-ID MOVE 3 TO TABLE-COUNT *> Initialize sample table entries MOVE 10001 TO ENTRY-ID(1) MOVE 'FIRST TABLE ENTRY DATA' TO ENTRY-DATA(1) MOVE 10002 TO ENTRY-ID(2) MOVE 'SECOND TABLE ENTRY DATA' TO ENTRY-DATA(2) MOVE 10003 TO ENTRY-ID(3) MOVE 'THIRD TABLE ENTRY DATA' TO ENTRY-DATA(3) ADD 1 TO RECORD-COUNT DISPLAY 'Table Layout with FILLER:' DISPLAY 'Table ID: ' TABLE-ID DISPLAY 'Entry Count: ' TABLE-COUNT DISPLAY 'Entry 1: ' ENTRY-ID(1) ' - ' ENTRY-DATA(1) DISPLAY 'Entry 2: ' ENTRY-ID(2) ' - ' ENTRY-DATA(2) DISPLAY 'Entry 3: ' ENTRY-ID(3) ' - ' ENTRY-DATA(3) DISPLAY 'FILLER provides consistent entry formatting'. DEMONSTRATE-EXPANDABLE-FILLER. DISPLAY 'Demonstrating Expandable FILLER Usage...' MOVE 'EXPANDABLE-FILLER' TO CURRENT-OPERATION *> Initialize expandable record with reserved areas MOVE 11111111 TO RECORD-ID MOVE 'CUST' TO RECORD-TYPE MOVE 20240115 TO CREATION-DATE MOVE 'AC' TO STATUS-CODE MOVE 'Y' TO ACTIVE-FLAG MOVE 1 TO PRIORITY-LEVEL MOVE 12345678 TO CHECKSUM ADD 1 TO RECORD-COUNT DISPLAY 'Expandable Record Layout:' DISPLAY 'Record ID: ' RECORD-ID DISPLAY 'Record Type: ' RECORD-TYPE DISPLAY 'Creation Date: ' CREATION-DATE DISPLAY 'Status: ' STATUS-CODE DISPLAY 'Active: ' ACTIVE-FLAG DISPLAY 'Priority: ' PRIORITY-LEVEL DISPLAY 'Checksum: ' CHECKSUM DISPLAY 'FILLER reserves space for future expansion'. DEMONSTRATE-LEGACY-FILLER. DISPLAY 'Demonstrating Legacy FILLER Usage...' MOVE 'LEGACY-FILLER' TO CURRENT-OPERATION *> Initialize legacy format record MOVE 'A' TO RECORD-TYPE OF LEGACY-FILE-RECORD MOVE 123456 TO SEQUENCE-NUMBER MOVE 'CUST001234' TO CUSTOMER-CODE MOVE 'PROD5678' TO PRODUCT-CODE MOVE 100 TO QUANTITY MOVE 25.99 TO UNIT-PRICE ADD 1 TO RECORD-COUNT DISPLAY 'Legacy Format Record:' DISPLAY 'Type: ' RECORD-TYPE OF LEGACY-FILE-RECORD DISPLAY 'Sequence: ' SEQUENCE-NUMBER DISPLAY 'Customer: ' CUSTOMER-CODE DISPLAY 'Product: ' PRODUCT-CODE DISPLAY 'Quantity: ' QUANTITY DISPLAY 'Unit Price: ' UNIT-PRICE DISPLAY 'FILLER maintains legacy format compatibility'. DEMONSTRATE-MULTI-FORMAT-FILLER. DISPLAY 'Demonstrating Multi-Format FILLER Usage...' MOVE 'MULTI-FORMAT-FILLER' TO CURRENT-OPERATION *> Initialize Format A record MOVE 'A' TO FORMAT-A-TYPE MOVE 87654321 TO FORMAT-A-ID MOVE 'FORMAT A DATA CONTENT' TO FORMAT-A-DATA ADD 1 TO RECORD-COUNT DISPLAY 'Format A Record:' DISPLAY 'Type: ' FORMAT-A-TYPE DISPLAY 'ID: ' FORMAT-A-ID DISPLAY 'Data: ' FORMAT-A-DATA *> Reinitialize as Format B record INITIALIZE MULTI-FORMAT-RECORD MOVE 'B' TO FORMAT-B-TYPE MOVE 'CODE99' TO FORMAT-B-CODE MOVE 1500.75 TO FORMAT-B-AMOUNT MOVE 'FORMAT B TRANSACTION DESCRIPTION' TO FORMAT-B-DESCRIPTION ADD 1 TO RECORD-COUNT DISPLAY 'Format B Record:' DISPLAY 'Type: ' FORMAT-B-TYPE DISPLAY 'Code: ' FORMAT-B-CODE DISPLAY 'Amount: ' FORMAT-B-AMOUNT DISPLAY 'Description: ' FORMAT-B-DESCRIPTION DISPLAY 'FILLER enables multiple record formats'. DISPLAY-FILLER-STATISTICS. DISPLAY 'FILLER Demonstration Statistics:' DISPLAY '===============================' DISPLAY 'Records processed: ' RECORD-COUNT DISPLAY 'Last operation: ' CURRENT-OPERATION DISPLAY 'Record Sizes:' DISPLAY 'Basic Customer Record: ' LENGTH OF CUSTOMER-RECORD-BASIC DISPLAY 'Report Header Record: ' LENGTH OF REPORT-HEADER-RECORD DISPLAY 'Transaction Record: ' LENGTH OF TRANSACTION-RECORD-COMPLEX DISPLAY 'Aligned Data Record: ' LENGTH OF ALIGNED-DATA-RECORD DISPLAY 'Table Record: ' LENGTH OF TABLE-WITH-FILLER DISPLAY 'Expandable Record: ' LENGTH OF EXPANDABLE-RECORD DISPLAY 'Legacy File Record: ' LENGTH OF LEGACY-FILE-RECORD DISPLAY 'Multi-Format Record: ' LENGTH OF MULTI-FORMAT-RECORD IF DEMO-ACTIVE DISPLAY 'FILLER demonstration completed successfully' ELSE DISPLAY 'FILLER demonstration was inactive' END-IF.

Best Practices and FAQ

FILLER Best Practices
  • • Use FILLER for record padding and alignment
  • • Initialize FILLER with appropriate values
  • • Document FILLER purposes clearly
  • • Reserve space for future expansion
  • • Maintain consistent formatting patterns
Design Guidelines
  • • Plan record layouts carefully
  • • Consider data alignment requirements
  • • Use meaningful VALUE clauses
  • • Account for platform differences
  • • Test record compatibility thoroughly