MainframeMaster

COBOL Tutorial

COBOL I-O Operations

I-O operations in COBOL represent the fundamental Input/Output processing mechanisms that enable comprehensive file handling, record manipulation, and data transfer capabilities within enterprise applications. These operations provide sophisticated file access patterns including sequential processing, random access, and update operations that support complex business data management requirements while maintaining data integrity, ensuring reliable transaction processing, and delivering high-performance file operations across diverse mainframe and distributed computing environments with robust error handling and comprehensive status reporting.

File Opening Modes

I-O Mode Syntax
cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
*> Basic I-O file operations OPEN I-O file-name READ file-name REWRITE record-name CLOSE file-name *> File control and access SELECT file-name ASSIGN TO external-name ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS primary-key FILE STATUS IS file-status. *> Example I-O operations OPEN I-O CUSTOMER-FILE READ CUSTOMER-FILE KEY IS CUSTOMER-ID INVALID KEY DISPLAY "Customer not found" NOT INVALID KEY PERFORM UPDATE-CUSTOMER END-READ CLOSE CUSTOMER-FILE.
File Processing
Record Update
Data Access

Comprehensive I-O 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
IDENTIFICATION DIVISION. PROGRAM-ID. IO-OPERATIONS-DEMO. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPLOYEE-FILE ASSIGN TO "EMPLOYEE.DAT" ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS EMP-ID ALTERNATE RECORD KEY IS EMP-NAME WITH DUPLICATES FILE STATUS IS EMP-FILE-STATUS. SELECT TRANSACTION-FILE ASSIGN TO "TRANS.DAT" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS TRANS-FILE-STATUS. DATA DIVISION. FILE SECTION. FD EMPLOYEE-FILE. 01 EMPLOYEE-RECORD. 05 EMP-ID PIC 9(6). 05 EMP-NAME PIC X(30). 05 EMP-DEPT PIC X(10). 05 EMP-SALARY PIC 9(7)V99. 05 EMP-STATUS PIC X. FD TRANSACTION-FILE. 01 TRANSACTION-RECORD. 05 TRANS-TYPE PIC X. 05 TRANS-EMP-ID PIC 9(6). 05 TRANS-DATA PIC X(50). WORKING-STORAGE SECTION. 01 WS-FILE-STATUS. 05 EMP-FILE-STATUS PIC XX. 05 TRANS-FILE-STATUS PIC XX. 01 WS-COUNTERS. 05 WS-RECORDS-READ PIC 9(5) VALUE 0. 05 WS-RECORDS-UPDATED PIC 9(5) VALUE 0. 05 WS-RECORDS-ADDED PIC 9(5) VALUE 0. 88 EOF-TRANSACTIONS VALUE "10". PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM OPEN-FILES PERFORM PROCESS-TRANSACTIONS PERFORM CLOSE-FILES PERFORM DISPLAY-STATISTICS STOP RUN. OPEN-FILES. OPEN I-O EMPLOYEE-FILE IF EMP-FILE-STATUS NOT = "00" DISPLAY "Error opening employee file: " EMP-FILE-STATUS STOP RUN END-IF OPEN INPUT TRANSACTION-FILE IF TRANS-FILE-STATUS NOT = "00" DISPLAY "Error opening transaction file: " TRANS-FILE-STATUS STOP RUN END-IF. PROCESS-TRANSACTIONS. PERFORM UNTIL EOF-TRANSACTIONS READ TRANSACTION-FILE AT END SET EOF-TRANSACTIONS TO TRUE NOT AT END PERFORM PROCESS-TRANSACTION END-READ END-PERFORM. PROCESS-TRANSACTION. ADD 1 TO WS-RECORDS-READ EVALUATE TRANS-TYPE WHEN "A" PERFORM ADD-EMPLOYEE WHEN "U" PERFORM UPDATE-EMPLOYEE WHEN "D" PERFORM DELETE-EMPLOYEE WHEN OTHER DISPLAY "Invalid transaction type: " TRANS-TYPE END-EVALUATE. ADD-EMPLOYEE. MOVE TRANS-EMP-ID TO EMP-ID MOVE TRANS-DATA(1:30) TO EMP-NAME MOVE TRANS-DATA(31:10) TO EMP-DEPT MOVE TRANS-DATA(41:10) TO EMP-SALARY MOVE "A" TO EMP-STATUS WRITE EMPLOYEE-RECORD INVALID KEY DISPLAY "Employee " EMP-ID " already exists" NOT INVALID KEY ADD 1 TO WS-RECORDS-ADDED DISPLAY "Added employee: " EMP-ID END-WRITE. UPDATE-EMPLOYEE. MOVE TRANS-EMP-ID TO EMP-ID READ EMPLOYEE-FILE KEY IS EMP-ID INVALID KEY DISPLAY "Employee " EMP-ID " not found for update" NOT INVALID KEY PERFORM APPLY-UPDATE END-READ. APPLY-UPDATE. *> Update fields based on transaction data IF TRANS-DATA(1:1) NOT = SPACE MOVE TRANS-DATA(1:30) TO EMP-NAME END-IF IF TRANS-DATA(31:1) NOT = SPACE MOVE TRANS-DATA(31:10) TO EMP-DEPT END-IF IF TRANS-DATA(41:1) NOT = SPACE MOVE TRANS-DATA(41:10) TO EMP-SALARY END-IF REWRITE EMPLOYEE-RECORD INVALID KEY DISPLAY "Error updating employee " EMP-ID NOT INVALID KEY ADD 1 TO WS-RECORDS-UPDATED DISPLAY "Updated employee: " EMP-ID END-REWRITE. DELETE-EMPLOYEE. MOVE TRANS-EMP-ID TO EMP-ID READ EMPLOYEE-FILE KEY IS EMP-ID INVALID KEY DISPLAY "Employee " EMP-ID " not found for deletion" NOT INVALID KEY DELETE EMPLOYEE-FILE INVALID KEY DISPLAY "Error deleting employee " EMP-ID NOT INVALID KEY DISPLAY "Deleted employee: " EMP-ID END-DELETE END-READ. CLOSE-FILES. CLOSE EMPLOYEE-FILE CLOSE TRANSACTION-FILE. DISPLAY-STATISTICS. DISPLAY "Processing Statistics:" DISPLAY " Transactions read: " WS-RECORDS-READ DISPLAY " Records added: " WS-RECORDS-ADDED DISPLAY " Records updated: " WS-RECORDS-UPDATED.

I-O Mode Capabilities

Read Operations
  • • Sequential record reading
  • • Random access by key
  • • Dynamic access modes
  • • Record validation
Update Operations
  • • Record rewriting
  • • Field modifications
  • • Conditional updates
  • • Status checking

Best Practices

Knowledge Check

Test Your Understanding

Question 1: I-O Mode Purpose

What is the primary purpose of I-O mode in COBOL?

Answer: I-O mode allows both reading from and writing to the same file, enabling record updates and modifications while maintaining data integrity.

Question 2: File Requirements

What are the requirements for opening a file in I-O mode?

Answer: The file must already exist, be properly defined in FILE-CONTROL, and support the organization type (typically indexed or relative files).

Related Pages