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.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185IDENTIFICATION 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.