MainframeMaster

COBOL Tutorial

COBOL INPUT-OUTPUT Section

The INPUT-OUTPUT Section represents the fundamental file management specification component within COBOL Environment Division structures, providing comprehensive file control capabilities that define system interfaces, device assignments, and I/O optimization parameters. This section embodies the principles of structured file management by supporting flexible file organization, efficient access methods, and system-level performance optimization while maintaining portability, ensuring reliable data access, and facilitating robust application development across enterprise systems requiring sophisticated file handling, optimized I/O operations, and comprehensive data management with scalable performance characteristics and efficient resource utilization patterns.

INPUT-OUTPUT Section Structure

Complete Section Definition
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
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. *> FILE-CONTROL paragraph - Required FILE-CONTROL. SELECT file-name-1 ASSIGN TO external-name-1 [ORGANIZATION IS organization-type] [ACCESS MODE IS access-mode] [RECORD KEY IS data-name-1] [ALTERNATE RECORD KEY IS data-name-2] [FILE STATUS IS data-name-3]. SELECT file-name-2 ASSIGN TO external-name-2 [additional-clauses]. *> I-O-CONTROL paragraph - Optional I-O-CONTROL. [RERUN ON external-name-3 EVERY integer-1 RECORDS OF file-name-1] [SAME RECORD AREA FOR file-name-1, file-name-2] [SAME SORT AREA FOR file-name-3, file-name-4] [MULTIPLE FILE TAPE CONTAINS file-name-5, file-name-6]. *> Complete example ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPLOYEE-FILE ASSIGN TO "EMPLOYEE.DAT" ORGANIZATION IS LINE SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-EMP-STATUS. SELECT PAYROLL-FILE ASSIGN TO "PAYROLL.DAT" ORGANIZATION IS LINE SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-PAY-STATUS. SELECT INDEXED-FILE ASSIGN TO "EMPIDX.DAT" ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS EMP-ID ALTERNATE RECORD KEY IS EMP-SSN WITH DUPLICATES FILE STATUS IS WS-IDX-STATUS. I-O-CONTROL. RERUN ON "CHECKPOINT.DAT" EVERY 1000 RECORDS OF EMPLOYEE-FILE SAME RECORD AREA FOR EMPLOYEE-FILE, PAYROLL-FILE.
File Control
I/O Management
System Interface

Comprehensive INPUT-OUTPUT Examples

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
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
IDENTIFICATION DIVISION. PROGRAM-ID. INPUT-OUTPUT-DEMO. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-PC. OBJECT-COMPUTER. IBM-PC. INPUT-OUTPUT SECTION. FILE-CONTROL. *> Sequential file for employee master data SELECT EMPLOYEE-MASTER-FILE ASSIGN TO "EMPMAS.DAT" ORGANIZATION IS LINE SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-EMP-MASTER-STATUS. *> Sequential file for transaction input SELECT TRANSACTION-FILE ASSIGN TO "TRANS.DAT" ORGANIZATION IS LINE SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-TRANS-STATUS. *> Indexed file for fast employee lookup SELECT EMPLOYEE-INDEX-FILE ASSIGN TO "EMPIDX.DAT" ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS EMP-ID-KEY ALTERNATE RECORD KEY IS EMP-SSN-KEY WITH DUPLICATES ALTERNATE RECORD KEY IS EMP-DEPT-KEY WITH DUPLICATES FILE STATUS IS WS-IDX-STATUS. *> Relative file for department data SELECT DEPARTMENT-FILE ASSIGN TO "DEPT.DAT" ORGANIZATION IS RELATIVE ACCESS MODE IS DYNAMIC RELATIVE KEY IS WS-DEPT-KEY FILE STATUS IS WS-DEPT-STATUS. *> Print file for reports SELECT REPORT-FILE ASSIGN TO "REPORT.TXT" ORGANIZATION IS LINE SEQUENTIAL FILE STATUS IS WS-REPORT-STATUS. *> Backup file for archiving SELECT BACKUP-FILE ASSIGN TO "BACKUP.DAT" ORGANIZATION IS LINE SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-BACKUP-STATUS. *> Sort work file SELECT SORT-WORK-FILE ASSIGN TO "SORTWORK.TMP" ORGANIZATION IS LINE SEQUENTIAL. *> Error log file SELECT ERROR-LOG-FILE ASSIGN TO "ERRORS.LOG" ORGANIZATION IS LINE SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-ERROR-STATUS. I-O-CONTROL. *> Checkpoint every 5000 records for recovery RERUN ON "CHECKPOINT.DAT" EVERY 5000 RECORDS OF EMPLOYEE-MASTER-FILE *> Share memory area between sequential files SAME RECORD AREA FOR EMPLOYEE-MASTER-FILE, TRANSACTION-FILE, BACKUP-FILE *> Optimize sort operations SAME SORT AREA FOR SORT-WORK-FILE, EMPLOYEE-MASTER-FILE *> Multiple file handling for tape operations MULTIPLE FILE TAPE CONTAINS BACKUP-FILE, ERROR-LOG-FILE. DATA DIVISION. FILE SECTION. FD EMPLOYEE-MASTER-FILE. 01 EMPLOYEE-MASTER-RECORD. 05 EMP-ID-KEY PIC 9(8). 05 EMP-SSN-KEY PIC 9(9). 05 EMP-NAME PIC X(30). 05 EMP-DEPT-KEY PIC X(10). 05 EMP-SALARY PIC 9(7)V99. 05 EMP-HIRE-DATE PIC 9(8). 05 EMP-STATUS PIC X. 05 EMP-ADDRESS PIC X(50). 05 EMP-PHONE PIC X(12). FD TRANSACTION-FILE. 01 TRANSACTION-RECORD. 05 TRANS-TYPE PIC X(2). 05 TRANS-EMP-ID PIC 9(8). 05 TRANS-DATE PIC 9(8). 05 TRANS-AMOUNT PIC S9(8)V99. 05 TRANS-DESCRIPTION PIC X(40). 05 TRANS-REFERENCE PIC X(15). FD EMPLOYEE-INDEX-FILE. 01 EMPLOYEE-INDEX-RECORD. 05 EMP-ID-KEY PIC 9(8). 05 EMP-SSN-KEY PIC 9(9). 05 EMP-NAME PIC X(30). 05 EMP-DEPT-KEY PIC X(10). 05 EMP-SALARY PIC 9(7)V99. 05 EMP-HIRE-DATE PIC 9(8). 05 EMP-STATUS PIC X. 05 EMP-ADDRESS PIC X(50). 05 EMP-PHONE PIC X(12). FD DEPARTMENT-FILE. 01 DEPARTMENT-RECORD. 05 DEPT-CODE PIC X(10). 05 DEPT-NAME PIC X(25). 05 DEPT-MANAGER PIC 9(8). 05 DEPT-BUDGET PIC 9(10)V99. 05 DEPT-LOCATION PIC X(20). FD REPORT-FILE. 01 REPORT-LINE PIC X(132). FD BACKUP-FILE. 01 BACKUP-RECORD PIC X(200). FD ERROR-LOG-FILE. 01 ERROR-LOG-RECORD PIC X(100). WORKING-STORAGE SECTION. 01 WS-FILE-STATUS-FIELDS. 05 WS-EMP-MASTER-STATUS PIC XX. 88 EMP-MASTER-OK VALUE "00". 88 EMP-MASTER-EOF VALUE "10". 05 WS-TRANS-STATUS PIC XX. 88 TRANS-OK VALUE "00". 88 TRANS-EOF VALUE "10". 05 WS-IDX-STATUS PIC XX. 88 IDX-OK VALUE "00". 88 IDX-NOT-FOUND VALUE "23". 05 WS-DEPT-STATUS PIC XX. 88 DEPT-OK VALUE "00". 05 WS-REPORT-STATUS PIC XX. 88 REPORT-OK VALUE "00". 05 WS-BACKUP-STATUS PIC XX. 88 BACKUP-OK VALUE "00". 05 WS-ERROR-STATUS PIC XX. 88 ERROR-LOG-OK VALUE "00". 01 WS-KEYS-AND-COUNTERS. 05 WS-DEPT-KEY PIC 9(3). 05 WS-RECORD-COUNTER PIC 9(8) VALUE 0. 05 WS-ERROR-COUNTER PIC 9(6) VALUE 0. 05 WS-CHECKPOINT-COUNTER PIC 9(8) VALUE 0. 01 WS-PROCESSING-FLAGS. 05 WS-PROCESSING-MODE PIC X VALUE 'B'. 88 BATCH-MODE VALUE 'B'. 88 INTERACTIVE-MODE VALUE 'I'. 88 RECOVERY-MODE VALUE 'R'. 01 WS-DATE-TIME-FIELDS. 05 WS-CURRENT-DATE PIC 9(8). 05 WS-CURRENT-TIME PIC 9(8). 05 WS-TIMESTAMP PIC X(20). PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM INITIALIZE-PROGRAM PERFORM DEMONSTRATE-FILE-OPERATIONS PERFORM DEMONSTRATE-IO-CONTROL PERFORM CLEANUP-AND-EXIT STOP RUN. INITIALIZE-PROGRAM. DISPLAY "=== INPUT-OUTPUT SECTION DEMONSTRATION ===" ACCEPT WS-CURRENT-DATE FROM DATE YYYYMMDD ACCEPT WS-CURRENT-TIME FROM TIME STRING WS-CURRENT-DATE " " WS-CURRENT-TIME DELIMITED BY SIZE INTO WS-TIMESTAMP DISPLAY "Program started at: " WS-TIMESTAMP DISPLAY "Initializing file operations..." DISPLAY SPACES. DEMONSTRATE-FILE-OPERATIONS. DISPLAY "=== FILE OPERATIONS DEMONSTRATION ===" PERFORM OPEN-ALL-FILES PERFORM SEQUENTIAL-FILE-OPERATIONS PERFORM INDEXED-FILE-OPERATIONS PERFORM RELATIVE-FILE-OPERATIONS PERFORM CLOSE-ALL-FILES DISPLAY "File operations completed successfully" DISPLAY SPACES. OPEN-ALL-FILES. DISPLAY "Opening files defined in INPUT-OUTPUT Section..." *> Open sequential files OPEN INPUT EMPLOYEE-MASTER-FILE IF NOT EMP-MASTER-OK DISPLAY "Warning: Employee Master file status: " WS-EMP-MASTER-STATUS END-IF OPEN INPUT TRANSACTION-FILE IF NOT TRANS-OK DISPLAY "Warning: Transaction file status: " WS-TRANS-STATUS END-IF *> Open indexed file for I-O operations OPEN I-O EMPLOYEE-INDEX-FILE IF NOT IDX-OK DISPLAY "Creating new indexed file..." OPEN OUTPUT EMPLOYEE-INDEX-FILE CLOSE EMPLOYEE-INDEX-FILE OPEN I-O EMPLOYEE-INDEX-FILE END-IF *> Open relative file OPEN I-O DEPARTMENT-FILE IF NOT DEPT-OK DISPLAY "Creating new department file..." OPEN OUTPUT DEPARTMENT-FILE CLOSE DEPARTMENT-FILE OPEN I-O DEPARTMENT-FILE END-IF *> Open output files OPEN OUTPUT REPORT-FILE OPEN OUTPUT BACKUP-FILE OPEN OUTPUT ERROR-LOG-FILE DISPLAY "All files opened successfully". SEQUENTIAL-FILE-OPERATIONS. DISPLAY "Demonstrating sequential file operations..." *> Read employee master file PERFORM READ-EMPLOYEE-MASTER PERFORM UNTIL EMP-MASTER-EOF ADD 1 TO WS-RECORD-COUNTER *> Process employee record PERFORM PROCESS-EMPLOYEE-RECORD *> Create backup copy MOVE EMPLOYEE-MASTER-RECORD TO BACKUP-RECORD WRITE BACKUP-RECORD PERFORM READ-EMPLOYEE-MASTER END-PERFORM DISPLAY "Sequential processing completed" DISPLAY "Records processed: " WS-RECORD-COUNTER. READ-EMPLOYEE-MASTER. READ EMPLOYEE-MASTER-FILE AT END SET EMP-MASTER-EOF TO TRUE NOT AT END CONTINUE END-READ. PROCESS-EMPLOYEE-RECORD. *> Write to indexed file for fast access MOVE EMPLOYEE-MASTER-RECORD TO EMPLOYEE-INDEX-RECORD WRITE EMPLOYEE-INDEX-RECORD INVALID KEY DISPLAY "Duplicate employee ID: " EMP-ID-KEY PERFORM LOG-ERROR END-WRITE *> Generate report line STRING "EMP: " EMP-ID-KEY " | " EMP-NAME " | " EMP-DEPT-KEY " | $" EMP-SALARY DELIMITED BY SIZE INTO REPORT-LINE WRITE REPORT-LINE. INDEXED-FILE-OPERATIONS. DISPLAY "Demonstrating indexed file operations..." *> Random access by primary key MOVE 12345678 TO EMP-ID-KEY READ EMPLOYEE-INDEX-FILE KEY IS EMP-ID-KEY INVALID KEY DISPLAY "Employee not found: " EMP-ID-KEY NOT INVALID KEY DISPLAY "Found employee: " EMP-NAME *> Update salary ADD 1000 TO EMP-SALARY REWRITE EMPLOYEE-INDEX-RECORD INVALID KEY DISPLAY "Error updating employee: " EMP-ID-KEY NOT INVALID KEY DISPLAY "Updated salary for: " EMP-NAME END-REWRITE END-READ *> Access by alternate key (SSN) MOVE 123456789 TO EMP-SSN-KEY READ EMPLOYEE-INDEX-FILE KEY IS EMP-SSN-KEY INVALID KEY DISPLAY "Employee not found by SSN: " EMP-SSN-KEY NOT INVALID KEY DISPLAY "Found by SSN: " EMP-NAME END-READ. RELATIVE-FILE-OPERATIONS. DISPLAY "Demonstrating relative file operations..." *> Add department records PERFORM VARYING WS-DEPT-KEY FROM 1 BY 1 UNTIL WS-DEPT-KEY > 5 MOVE WS-DEPT-KEY TO DEPT-CODE STRING "DEPARTMENT-" WS-DEPT-KEY DELIMITED BY SIZE INTO DEPT-NAME MOVE 100000 TO DEPT-BUDGET MOVE "MAIN BUILDING" TO DEPT-LOCATION WRITE DEPARTMENT-RECORD INVALID KEY DISPLAY "Error writing department: " WS-DEPT-KEY NOT INVALID KEY DISPLAY "Added department: " DEPT-NAME END-WRITE END-PERFORM *> Random access to department record MOVE 3 TO WS-DEPT-KEY READ DEPARTMENT-FILE INVALID KEY DISPLAY "Department not found: " WS-DEPT-KEY NOT INVALID KEY DISPLAY "Department found: " DEPT-NAME ADD 50000 TO DEPT-BUDGET REWRITE DEPARTMENT-RECORD END-READ. DEMONSTRATE-IO-CONTROL. DISPLAY "=== I-O-CONTROL FEATURES DEMONSTRATION ===" PERFORM CHECKPOINT-PROCESSING PERFORM MEMORY-OPTIMIZATION-DEMO PERFORM ERROR-RECOVERY-DEMO DISPLAY "I-O-CONTROL demonstration completed" DISPLAY SPACES. CHECKPOINT-PROCESSING. DISPLAY "Demonstrating checkpoint processing..." *> Simulate processing with checkpoints every 1000 records PERFORM VARYING WS-CHECKPOINT-COUNTER FROM 1 BY 1 UNTIL WS-CHECKPOINT-COUNTER > 3000 *> Simulate record processing IF FUNCTION MOD(WS-CHECKPOINT-COUNTER, 1000) = 0 DISPLAY "Checkpoint reached at record: " WS-CHECKPOINT-COUNTER PERFORM WRITE-CHECKPOINT-INFO END-IF END-PERFORM. WRITE-CHECKPOINT-INFO. STRING "CHECKPOINT: " WS-CHECKPOINT-COUNTER " records processed at " WS-TIMESTAMP DELIMITED BY SIZE INTO ERROR-LOG-RECORD WRITE ERROR-LOG-RECORD. MEMORY-OPTIMIZATION-DEMO. DISPLAY "Demonstrating SAME RECORD AREA optimization..." *> Files sharing SAME RECORD AREA can reuse memory buffers DISPLAY "Files using shared memory areas:" DISPLAY " - EMPLOYEE-MASTER-FILE" DISPLAY " - TRANSACTION-FILE" DISPLAY " - BACKUP-FILE" DISPLAY "Memory usage optimized through I-O-CONTROL". ERROR-RECOVERY-DEMO. DISPLAY "Demonstrating error recovery mechanisms..." *> Simulate error conditions MOVE "ER" TO TRANS-TYPE MOVE 99999999 TO TRANS-EMP-ID MOVE "ERROR TEST TRANSACTION" TO TRANS-DESCRIPTION *> Try to process invalid transaction READ EMPLOYEE-INDEX-FILE KEY IS TRANS-EMP-ID INVALID KEY ADD 1 TO WS-ERROR-COUNTER STRING "ERROR: Invalid employee ID " TRANS-EMP-ID " in transaction" DELIMITED BY SIZE INTO ERROR-LOG-RECORD WRITE ERROR-LOG-RECORD DISPLAY "Error logged and processing continued" END-READ. LOG-ERROR. ADD 1 TO WS-ERROR-COUNTER STRING "ERROR " WS-ERROR-COUNTER ": Duplicate key processing" DELIMITED BY SIZE INTO ERROR-LOG-RECORD WRITE ERROR-LOG-RECORD. CLOSE-ALL-FILES. DISPLAY "Closing all files..." CLOSE EMPLOYEE-MASTER-FILE CLOSE TRANSACTION-FILE CLOSE EMPLOYEE-INDEX-FILE CLOSE DEPARTMENT-FILE CLOSE REPORT-FILE CLOSE BACKUP-FILE CLOSE ERROR-LOG-FILE DISPLAY "All files closed successfully". CLEANUP-AND-EXIT. DISPLAY "=== PROCESSING SUMMARY ===" DISPLAY "Records processed: " WS-RECORD-COUNTER DISPLAY "Errors encountered: " WS-ERROR-COUNTER DISPLAY "Checkpoints created: " FUNCTION INTEGER(WS-CHECKPOINT-COUNTER / 1000) DISPLAY "Program completed at: " WS-TIMESTAMP DISPLAY "INPUT-OUTPUT Section demonstration finished". *> Advanced I-O-CONTROL usage patterns ADVANCED-IO-CONTROL-PATTERNS. DISPLAY "=== ADVANCED I-O-CONTROL PATTERNS ===" *> Multiple file tape handling PERFORM TAPE-OPERATIONS *> Sort area optimization PERFORM SORT-OPTIMIZATION *> Recovery point management PERFORM RECOVERY-MANAGEMENT. TAPE-OPERATIONS. DISPLAY "Demonstrating multiple file tape operations..." *> When using MULTIPLE FILE TAPE, files can be processed *> more efficiently on tape devices DISPLAY "Files configured for multiple file tape:" DISPLAY " - BACKUP-FILE" DISPLAY " - ERROR-LOG-FILE" DISPLAY "Tape positioning optimized by system". SORT-OPTIMIZATION. DISPLAY "Demonstrating sort area optimization..." *> SAME SORT AREA allows sharing of sort work areas DISPLAY "Sort operations optimized for:" DISPLAY " - SORT-WORK-FILE" DISPLAY " - EMPLOYEE-MASTER-FILE" DISPLAY "Memory usage reduced through shared sort areas". RECOVERY-MANAGEMENT. DISPLAY "Demonstrating recovery point management..." *> RERUN clause provides automatic checkpoint creation DISPLAY "Recovery points automatically created:" DISPLAY " - Every 5000 records of EMPLOYEE-MASTER-FILE" DISPLAY " - Checkpoint data written to CHECKPOINT.DAT" DISPLAY "System recovery enabled through I-O-CONTROL". PERFORMANCE-MONITORING. DISPLAY "=== PERFORMANCE MONITORING ===" *> Monitor I/O performance with shared areas DISPLAY "I/O Performance optimizations active:" IF EMP-MASTER-OK AND TRANS-OK AND BACKUP-OK DISPLAY " - SAME RECORD AREA: Memory sharing active" END-IF IF WS-CHECKPOINT-COUNTER > 0 DISPLAY " - RERUN checkpoints: " FUNCTION INTEGER(WS-CHECKPOINT-COUNTER / 5000) " created" END-IF DISPLAY " - Multiple file tape: Enabled for backup operations" DISPLAY " - Sort area sharing: Optimized for large data sets". BATCH-PROCESSING-OPTIMIZATION. DISPLAY "=== BATCH PROCESSING OPTIMIZATION ===" *> Optimize for batch operations SET BATCH-MODE TO TRUE DISPLAY "Batch processing optimizations:" DISPLAY " - Sequential file access optimized" DISPLAY " - Memory areas shared between related files" DISPLAY " - Checkpoint recovery enabled" DISPLAY " - Error logging active" *> Process large volumes efficiently PERFORM PROCESS-LARGE-VOLUME-DATA. PROCESS-LARGE-VOLUME-DATA. *> Efficient processing using I-O-CONTROL optimizations DISPLAY "Processing large volume with I-O optimizations..." *> Benefit from SAME RECORD AREA PERFORM READ-EMPLOYEE-MASTER PERFORM UNTIL EMP-MASTER-EOF *> Fast processing due to shared memory areas PERFORM QUICK-RECORD-PROCESSING PERFORM READ-EMPLOYEE-MASTER END-PERFORM. QUICK-RECORD-PROCESSING. *> Optimized processing leveraging I-O-CONTROL features ADD 1 TO WS-RECORD-COUNTER *> Automatic checkpoint handling IF FUNCTION MOD(WS-RECORD-COUNTER, 5000) = 0 DISPLAY "Automatic checkpoint at: " WS-RECORD-COUNTER END-IF.

FILE-CONTROL vs I-O-CONTROL

FILE-CONTROL Paragraph
  • • Defines individual file characteristics
  • • Specifies file organization (Sequential, Indexed, Relative)
  • • Sets access mode (Sequential, Random, Dynamic)
  • • Assigns external file names
  • • Defines record keys for indexed files
  • • Required for all file operations
I-O-CONTROL Paragraph
  • • System-level I/O optimizations
  • • Memory sharing with SAME AREA clauses
  • • Checkpoint control with RERUN
  • • Multiple file tape handling
  • • Sort area optimization
  • • Optional but improves performance

Interactive Tutorial

Hands-On Exercise: File Configuration
Practice setting up INPUT-OUTPUT Section for different file types

Exercise 1: Basic File Setup

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTOMER-FILE ASSIGN TO "CUSTOMERS.DAT" ORGANIZATION IS LINE SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-CUST-STATUS. SELECT ORDERS-FILE ASSIGN TO "ORDERS.DAT" ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS ORDER-NUMBER ALTERNATE RECORD KEY IS CUSTOMER-ID WITH DUPLICATES FILE STATUS IS WS-ORDER-STATUS. I-O-CONTROL. RERUN ON "BACKUP.DAT" EVERY 1000 RECORDS OF CUSTOMER-FILE SAME RECORD AREA FOR CUSTOMER-FILE, ORDERS-FILE.

Exercise 2: Performance Optimization

cobol
1
2
3
4
5
6
7
8
9
10
11
12
I-O-CONTROL. *> Optimize memory usage SAME RECORD AREA FOR INPUT-FILE1, INPUT-FILE2, INPUT-FILE3 *> Optimize sort operations SAME SORT AREA FOR SORT-WORK1, SORT-WORK2 *> Enable recovery RERUN ON "CHECKPOINT.DAT" EVERY 5000 RECORDS OF MASTER-FILE *> Tape optimization MULTIPLE FILE TAPE CONTAINS BACKUP-FILE1, BACKUP-FILE2.

Best Practices

Knowledge Check

Test Your Understanding

Question 1: Section Components

What are the two main paragraphs in the INPUT-OUTPUT Section?

Answer: The INPUT-OUTPUT Section contains the FILE-CONTROL paragraph (required) for defining file characteristics and assignments, and the I-O-CONTROL paragraph (optional) for system-level optimizations like memory sharing and checkpoints.

Question 2: SAME RECORD AREA

What is the benefit of using SAME RECORD AREA in I-O-CONTROL?

Answer: SAME RECORD AREA allows multiple files to share the same memory buffer, reducing memory usage and improving performance, especially useful for files that are not accessed simultaneously.

Question 3: File Organization

When should you use INDEXED vs SEQUENTIAL organization?

Answer: Use INDEXED organization when you need random access to records by key values or frequent lookups. Use SEQUENTIAL organization for batch processing, reports, or when processing all records in order.