MainframeMaster

COBOL Tutorial

COBOL FILE Concept

The FILE concept represents the cornerstone of COBOL data management architecture, embodying the fundamental principles of persistent data storage, retrieval, and manipulation within enterprise computing environments. This concept encompasses comprehensive file processing methodologies, supporting diverse file organizations including sequential, indexed, and relative access methods, while providing sophisticated data integrity mechanisms, efficient record management capabilities, and robust error handling procedures that ensure reliable data processing in mission-critical business applications and large-scale transaction processing systems.

Comprehensive FILE Processing 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
IDENTIFICATION DIVISION. PROGRAM-ID. FILE-COMPREHENSIVE-PROCESSING. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT MASTER-FILE ASSIGN TO 'MASTER.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS MASTER-STATUS. SELECT INDEXED-FILE ASSIGN TO 'INDEXED.DAT' ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS IDX-KEY FILE STATUS IS INDEXED-STATUS. SELECT RELATIVE-FILE ASSIGN TO 'RELATIVE.DAT' ORGANIZATION IS RELATIVE ACCESS MODE IS DYNAMIC RELATIVE KEY IS REL-KEY FILE STATUS IS RELATIVE-STATUS. DATA DIVISION. FILE SECTION. FD MASTER-FILE BLOCK CONTAINS 0 RECORDS RECORD CONTAINS 100 CHARACTERS. 01 MASTER-RECORD. 05 MASTER-ID PIC 9(8). 05 MASTER-NAME PIC X(30). 05 MASTER-DATA PIC X(50). 05 MASTER-STATUS-FLAG PIC X(1). 05 FILLER PIC X(11). FD INDEXED-FILE BLOCK CONTAINS 0 RECORDS RECORD CONTAINS 150 CHARACTERS. 01 INDEXED-RECORD. 05 IDX-KEY PIC 9(10). 05 IDX-DATA PIC X(100). 05 IDX-TIMESTAMP PIC X(14). 05 IDX-FLAGS PIC X(10). 05 FILLER PIC X(16). FD RELATIVE-FILE BLOCK CONTAINS 0 RECORDS RECORD CONTAINS 80 CHARACTERS. 01 RELATIVE-RECORD. 05 REL-DATA PIC X(70). 05 REL-SEQUENCE PIC 9(5). 05 REL-FLAG PIC X(1). 05 FILLER PIC X(4). WORKING-STORAGE SECTION. 01 FILE-STATUS-CODES. 05 MASTER-STATUS PIC XX. 88 MASTER-OK VALUE '00'. 88 MASTER-EOF VALUE '10'. 05 INDEXED-STATUS PIC XX. 88 INDEXED-OK VALUE '00'. 88 INDEXED-EOF VALUE '10'. 88 INDEXED-NOT-FOUND VALUE '23'. 05 RELATIVE-STATUS PIC XX. 88 RELATIVE-OK VALUE '00'. 88 RELATIVE-EOF VALUE '10'. 01 FILE-PROCESSING-CONTROL. 05 REL-KEY PIC 9(5). 05 RECORDS-PROCESSED PIC 9(7) VALUE 0. 05 CURRENT-OPERATION PIC X(20). PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM DEMONSTRATE-SEQUENTIAL-FILE PERFORM DEMONSTRATE-INDEXED-FILE PERFORM DEMONSTRATE-RELATIVE-FILE PERFORM DISPLAY-FILE-STATISTICS STOP RUN. DEMONSTRATE-SEQUENTIAL-FILE. DISPLAY 'Processing Sequential File...' MOVE 'SEQUENTIAL' TO CURRENT-OPERATION OPEN OUTPUT MASTER-FILE IF MASTER-OK PERFORM WRITE-MASTER-RECORDS CLOSE MASTER-FILE OPEN INPUT MASTER-FILE IF MASTER-OK PERFORM READ-MASTER-RECORDS CLOSE MASTER-FILE END-IF END-IF. WRITE-MASTER-RECORDS. MOVE 12345678 TO MASTER-ID MOVE 'SEQUENTIAL RECORD 1' TO MASTER-NAME MOVE 'DATA FOR RECORD 1' TO MASTER-DATA MOVE 'A' TO MASTER-STATUS-FLAG WRITE MASTER-RECORD IF MASTER-OK ADD 1 TO RECORDS-PROCESSED DISPLAY 'Master record written' END-IF. READ-MASTER-RECORDS. PERFORM UNTIL MASTER-EOF READ MASTER-FILE AT END DISPLAY 'End of master file' NOT AT END DISPLAY 'Read: ' MASTER-ID ' - ' MASTER-NAME ADD 1 TO RECORDS-PROCESSED END-READ END-PERFORM. DEMONSTRATE-INDEXED-FILE. DISPLAY 'Processing Indexed File...' MOVE 'INDEXED' TO CURRENT-OPERATION OPEN I-O INDEXED-FILE IF INDEXED-OK PERFORM INDEXED-FILE-OPERATIONS CLOSE INDEXED-FILE END-IF. INDEXED-FILE-OPERATIONS. *> Write indexed record MOVE 1234567890 TO IDX-KEY MOVE 'INDEXED FILE DATA' TO IDX-DATA MOVE FUNCTION CURRENT-DATE TO IDX-TIMESTAMP MOVE 'ACTIVE' TO IDX-FLAGS WRITE INDEXED-RECORD IF INDEXED-OK ADD 1 TO RECORDS-PROCESSED DISPLAY 'Indexed record written' END-IF *> Read indexed record MOVE 1234567890 TO IDX-KEY READ INDEXED-FILE KEY IS IDX-KEY IF INDEXED-OK DISPLAY 'Read indexed: ' IDX-KEY ' - ' IDX-DATA ADD 1 TO RECORDS-PROCESSED END-IF. DEMONSTRATE-RELATIVE-FILE. DISPLAY 'Processing Relative File...' MOVE 'RELATIVE' TO CURRENT-OPERATION OPEN I-O RELATIVE-FILE IF RELATIVE-OK PERFORM RELATIVE-FILE-OPERATIONS CLOSE RELATIVE-FILE END-IF. RELATIVE-FILE-OPERATIONS. *> Write relative record MOVE 1 TO REL-KEY MOVE 'RELATIVE FILE DATA RECORD' TO REL-DATA MOVE 12345 TO REL-SEQUENCE MOVE 'Y' TO REL-FLAG WRITE RELATIVE-RECORD IF RELATIVE-OK ADD 1 TO RECORDS-PROCESSED DISPLAY 'Relative record written' END-IF *> Read relative record MOVE 1 TO REL-KEY READ RELATIVE-FILE IF RELATIVE-OK DISPLAY 'Read relative: ' REL-SEQUENCE ' - ' REL-DATA ADD 1 TO RECORDS-PROCESSED END-IF. DISPLAY-FILE-STATISTICS. DISPLAY 'File Processing Complete' DISPLAY 'Records processed: ' RECORDS-PROCESSED DISPLAY 'Last operation: ' CURRENT-OPERATION.

Best Practices and FAQ

FILE Best Practices
  • • Always check file status after operations
  • • Close files properly to prevent data loss
  • • Use appropriate file organization for access patterns
  • • Implement proper error handling
  • • Design efficient record structures
File Management Guidelines
  • • Plan file sizes and growth patterns
  • • Use meaningful file and record names
  • • Implement backup and recovery procedures
  • • Consider concurrent access requirements
  • • Document file structures and usage