Cobol Indexed File

What are Indexed Files?

  • The indexed files are those files in which the organization is always indexed, and the access is done using key values.
  • These files use alphanumeric characters as the key, and the key must be uniquely defined.
  • The records in indexed files can be accessed much faster, and in any order irrespective of position using the key.
  • The access mode to access any record can be sequential as well as random.

Understanding Index file handling in COBOL

SYNTAX =>

FORMAT 1)

 SELECT Logical - fl ASSIGNED TO physical - fl
 ORGANIZATION IS INDEXED
 ACCESS MODE IS SEQUENTIAL
 RECORD KEY IS I - KEY
 ALTERNATIVE KEY IS IA – KEY 

FORMAT 2)

 SELECT Logical - fl ASSIGNED TO physical - fl
 ORGANIZATION IS INDEXED
 ACCESS MODE IS DYNAMIC
 RECORD KEY IS I - KEY
 ALTERNATIVE KEY IS IA – KEY 

FORMAT 3)

 SELECT Logical - fl ASSIGNED TO physical - fl
 ORGANIZATION IS INDEXED
 ACCESS MODE IS RANDOM
 RECORD KEY IS R - KEY
 R – KEY must be defined in FD clause in the FILE SECTION. 

Sample program -1

This is a demo program to learn and understand the concept of indexed file handling and how to assign values from a different subprogram.

 IDENTIFICATION DIVISION.
 PROGRAM-ID. INDEXEDFILE.
 ENVIRONMENT DIVISION.
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
      SELECT INFL ASSIGN TO INFLDD
      ORGANIZATION IS INDEXED
      ACCESS MODE IS RANDOM
      RECORD KEY IS EMP-ID
      FILE STATUS FS-INFL.
 DATA DIVISION.
 FILE SECTION.
 FD INFL.
 01 INFL-REC.
    05 EMP-ID PIC X(05).
    05 FILLER PIC X(01).
    05 EMP-NAME PIC X(19).
    05 REM-BYTE PIC X(55).
 WORKING-STORAGE SECTION.
 01 FS-INFL PIC X(02) VALUE SPACES.
    88 FS-INFL-OK VALUE '00'.
    88 FS-INFL-DUP-KEY VALUE '02'.
    88 FS-INFL-EOF VALUE '10'.
 PROCEDURE DIVISION.
 MAIN-PARA.
      PERFORM OPEN-PARA THRU OPEN-EXIT-PARA.
      PERFORM PROCESS-PARA THRU PROCESS-EXIT-PARA.
      PERFORM CLOSE-PARA THRU CLOSE-EXIT-PARA.
      STOP RUN.
 OPEN-PARA.
      INITIALIZE FS-INFL INFL-REC.
      OPEN INPUT INFL
      IF FS-INFL-OK
         CONTINUE
      ELSE
         DISPLAY "FILE OPEN FAILED: " FS-INFL
         GO TO EXIT-PARA
      END-IF.
 OPEN-EXIT-PARA.
      EXIT.
 PROCESS-PARA.
 MOVE '08792' TO EMP-ID
     READ INFL
     KEY IS EMP-ID
     INVALID KEY
           DISPLAY 'INVALID KEY'
     NOT INVALID KEY
           DISPLAY 'EMP-NAME:' EMP-NAME
     END-READ
 PROCESS-EXIT-PARA.
     EXIT.
 CLOSE-PARA.
     CLOSE INFL.
 CLOSE-EXIT-PARA.
     EXIT.
 EXIT-PARA.
     EXIT PROGRAM. 

THE OUTPUT WILL BE

 ***RECORDS STORED IN FILE***
 08781 JOHN MICHAEL
 08792 RICKEY PONTING
 08803 M S DHONI
 ***RESULT***
 EMP-NAME: RICKEY PONTING 

Here in this program, we have assigned a few variables with different values and later manipulated the output using different data file handling properties to clarify the different concepts related to indexed files.

SAMPLE PROGRAM -2

This is a demo program to learn and understand the concept of rewrite and how to assign values from a different subprogram.

 IDENTIFICATION DIVISION.
 PROGRAM-ID. REWRITEP.
 ENVIRONMENT DIVISION.
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
     SELECT I-O-FL ASSIGN TO IOFLDD
     ORGANIZATION IS INDEXED
     ACCESS MODE IS RANDOM
     RECORD KEY IS EMP-ID
     FILE STATUS FS-I-O-FL.
 DATA DIVISION.
 FILE SECTION.
 FD I-O-FL.
 01 I-O-FL-REC.
    05 EMP-ID PIC X(05).
    05 FILLER PIC X(01).
    05 EMP-NAME PIC X(19).
    05 REM-BYTE PIC X(55).
 WORKING-STORAGE SECTION.
 01 FS-I-O-FFL PIC X(02) VALUE SPACES.
 PROCEDURE DIVISION.
 MAIN-PARA.
     PERFORM OPEN-PARA THRU OPEN-EXIT-PARA.
     PERFORM PROCESS-PARA THRU PROCESS-EXIT-PARA.
     PERFORM CLOSE-PARA THRU CLOSE-EXIT-PARA.
 STOP RUN.
 OPEN-PARA.
      INITIALIZE FS-I-O-FL I-O-FL-REC.
      OPEN I-O I-O-FL
      IF FS-I-O-FL-OK
         CONTINUE
      ELSE
         DISPLAY "FILE OPEN FAILED: " FS-I-O-FL
         GO TO EXIT-PARA
      END-IF.
 OPEN-EXIT-PARA.
      EXIT.
 PROCESS-PARA.
 MOVE '08792' TO EMP-ID
     READ I-O-FL
     KEY IS EMP-ID
     INVALID KEY
           DISPLAY 'INVALID KEY'
     NOT INVALID KEY
           DISPLAY 'EMP-NAME:' EMP-NAME
     END-READ
     MOVE 'ROGER FREDRER' TO EMP-NAME
     REWRITE I-O-FL-REC.
 PROCESS-EXIT-PARA.
     EXIT.
 CLOSE-PARA.
     CLOSE INFL.
 CLOSE-EXIT-PARA.
     EXIT.
 EXIT-PARA.
     EXIT PROGRAM. 

THE OUTPUT WILL BE

 ***RECORDS STORED IN FILE***
 08781 JOHN MICHAEL
 08792 RICKEY PONTING
 08803 M S DHONI
 08814 ROGER FREDRER
 ***RESULT***
 EMP-NAME BEFORE: DUMMY NAME
 EMP-NAME AFTER: ROJER FREDRER 

Here in this program, we have assigned a few variables with different values and later manipulated the output using different data file handling properties to clarify the different concepts related to REWRITE property of files.

----------------------------------------------------------------------------------------------------------------

SAMPLE PROGRAM -3

This is a demo program to learn and understand the concept of delete and how to assign values from different subprograms.

 IDENTIFICATION DIVISION.
 PROGRAM-ID. REWRITEP.
 ENVIRONMENT DIVISION.
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
     SELECT I-O-FL ASSIGN TO IOFLDD
     ORGANIZATION IS INDEXED
     ACCESS MODE IS RANDOM
     RECORD KEY IS EMP-ID
     FILE STATUS FS-I-O-FL.
 DATA DIVISION.
 FILE SECTION.
 FD I-O-FL.
 01 I-O-FL-REC.
    05 EMP-ID PIC X(05).
    05 FILLER PIC X(01).
    05 EMP-NAME PIC X(19).
    05 REM-BYTE PIC X(55).
 WORKING-STORAGE SECTION.
 01 FS-I-O-FFL PIC X(02) VALUE SPACES.
 PROCEDURE DIVISION.
 MAIN-PARA.
     PERFORM OPEN-PARA THRU OPEN-EXIT-PARA.
     PERFORM PROCESS-PARA THRU PROCESS-EXIT-PARA.
     PERFORM CLOSE-PARA THRU CLOSE-EXIT-PARA.
 STOP RUN.
 OPEN-PARA.
      INITIALIZE FS-I-O-FL I-O-FL-REC.
      OPEN I-O I-O-FL
      IF FS-I-O-FL-OK
         CONTINUE
      ELSE
         DISPLAY "FILE OPEN FAILED: " FS-I-O-FL
         GO TO EXIT-PARA
      END-IF.
 OPEN-EXIT-PARA.
      EXIT.
 PROCESS-PARA.
 MOVE '08781' TO EMP-ID
     READ I-O-FL
     KEY IS EMP-ID
     INVALID KEY
           DISPLAY 'INVALID KEY'
     NOT INVALID KEY
           DISPLAY 'EMP-NAME:' EMP-NAME
     END-READ
     MOVE 'ROGER FREDRER' TO EMP-NAME
     DELETE I-O-FL RECORD.
     END-DELETE
     DISPLAY ' EMP-NAME AFTER: ' EMP-NAME.
 PROCESS-EXIT-PARA.
     EXIT.
 CLOSE-PARA.
     CLOSE INFL.
 CLOSE-EXIT-PARA.
     EXIT.
 EXIT-PARA.
     EXIT PROGRAM. 

THE OUTPUT WILL BE

 ***RESULT***
 EMP-NAME BEFORE: JOHN MICHAEL
 RECORDS DELETED: JOHN MICHAEL
 ***RECORDS STORED IN FILE***
 08792 RICKEY PONTING
 08803 M S DHONI
 08814 ROGER FREDRER 

Here in this program, we have assigned a few variables with different values and later manipulated the output using different data file handling properties to clarify the different concepts related to DELETE property of files.

----------------------------------------------------------------------------------------------------------------