This is a serial code samples of how COBOL access dataset
Write a Relative Dataset
IDENTIFICATION DIVISION. PROGRAM-ID. WRITERELXF16. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-F16 ASSIGN TO RELFILE ORGANIZATION IS RELATIVE ACCESS IS DYNAMIC RELATIVE KEY IS REL-KEY FILE STATUS IS IO-STATUS. DATA DIVISION. FILE SECTION. FD FILE-F16 LABEL RECORD STANDARD DATA RECORD DATAF16-REC. 01 DATAF16-REC. 03 S-ID PIC X(02). 03 S-NAME PIC X(04). 03 S-VALUE PIC X(10). *COPY DATAF16. WORKING-STORAGE SECTION. 01 IO-STATUS PIC XX. 01 REL-KEY PIC 9(8). PROCEDURE DIVISION. P-START. OPEN OUTPUT FILE-F16 IF IO-STATUS NOT = "00" DISPLAY "FILELD-0202: OUTPUT FAILED" DISPLAY "ASSIGN: SORTIE" DISPLAY "IO-STATUS =" IO-STATUS GO TO FIN-ERREUR END-IF. WRITE-1. MOVE 1 TO REL-KEY. MOVE SPACES TO DATAF16-REC. MOVE "55" TO S-ID. MOVE "EEEE" TO S-NAME. MOVE "eeeeeeeeee" TO S-VALUE. WRITE DATAF16-REC INVALID KEY DISPLAY "ERROR:" Error DISPLAY "FILELD-0203: WRITE FAILED" Error DISPLAY "ASSIGN: SORTIE" DISPLAY "IO-STATUS =" IO-STATUS GO TO FIN-ERREUR END-WRITE. WRITE-2. MOVE 2 TO REL-KEY. MOVE SPACES TO DATAF16-REC. MOVE "44" TO S-ID. MOVE "DDDD" TO S-NAME. MOVE "dddddddddd" TO S-VALUE. WRITE DATAF16-REC INVALID KEY DISPLAY "ERROR:" Error DISPLAY "FILELD-0203: WRITE FAILED" Error DISPLAY "ASSIGN: SORTIE" DISPLAY "IO-STATUS =" IO-STATUS GO TO FIN-ERREUR END-WRITE. WRITE-3. MOVE 3 TO REL-KEY. MOVE SPACES TO DATAF16-REC. MOVE "33" TO S-ID. MOVE "CCCC" TO S-NAME. MOVE "cccccccccc" TO S-VALUE. WRITE DATAF16-REC INVALID KEY DISPLAY "ERROR:" Error DISPLAY "FILELD-0203: WRITE FAILED" Error DISPLAY "ASSIGN: SORTIE" DISPLAY "IO-STATUS =" IO-STATUS GO TO FIN-ERREUR END-WRITE. FIN-REL. DISPLAY "WRITE DONE". PERFORM END-COMMON-DISPLAY. EXIT PROGRAM. STOP RUN. FIN-ERREUR. DISPLAY "WRITE FAILED". PERFORM END-COMMON-DISPLAY. EXIT PROGRAM. STOP RUN RETURNING 1. END-COMMON-DISPLAY. CLOSE FILE-F16.
Read a Relative Dataset
IDENTIFICATION DIVISION. PROGRAM-ID. READRELF16. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT REL-FILE ASSIGN TO RELFILE ORGANIZATION IS RELATIVE * ACCESS MODE IS RANDOM ACCESS MODE IS DYNAMIC RELATIVE KEY REL-KEY FILE STATUS IS IO-STATUS. DATA DIVISION. FILE SECTION. FD REL-FILE LABEL RECORD STANDARD DATA RECORD DATAF16-REC. 01 DATAF16-REC. 03 S-ID PIC X(02). 03 S-NAME PIC X(04). 03 S-VALUE PIC X(10). WORKING-STORAGE SECTION. 01 IO-STATUS PIC XX. 01 REL-KEY PIC 9(8). PROCEDURE DIVISION. OPEN INPUT REL-FILE. IF IO-STATUS NOT = "00" DISPLAY "OPEN INPUT FAILED" DISPLAY "IO-STATUS =" IO-STATUS GO TO FIN-REL END-IF. DISPLAY "------------READ SEQUENTIAL------------". READ-SEQUENTIAL. MOVE SPACES TO DATAF16-REC. READ REL-FILE NEXT AT END GO TO READ-KEY END-READ. PERFORM DISPLAY-RECORD THRU E-DISPLAY-RECORD. GO TO READ-SEQUENTIAL. READ-KEY. MOVE 2 TO REL-KEY. DISPLAY "------------READ RRN(" REL-KEY ")------------". READ REL-FILE IF IO-STATUS NOT = "00" DISPLAY "READ FAILED" DISPLAY "IO-STATUS =" IO-STATUS GO TO FIN-REL END-IF. PERFORM DISPLAY-RECORD THRU E-DISPLAY-RECORD. FIN-REL. * DISPLAY "Done". CLOSE REL-FILE. EXIT PROGRAM. STOP RUN. DISPLAY-RECORD. DISPLAY "RECORD" ": S-ID=" S-ID ", S-NAME=" S-NAME ", S-VALUE=" S-VALUE. E-DISPLAY-RECORD. EXIT.
Execute Result:
$ cobrun READRELF16 ------------READ SEQUENTIAL------------ RECORD: S-ID=55, S-NAME=EEEE, S-VALUE=eeeeeeeeee RECORD: S-ID=44, S-NAME=DDDD, S-VALUE=dddddddddd RECORD: S-ID=33, S-NAME=CCCC, S-VALUE=cccccccccc ------------READ RRN(00000002)------------ RECORD: S-ID=44, S-NAME=DDDD, S-VALUE=dddddddddd