Does a direct read on the Indexed file. Allows the user to choose which of the keys to use for the direct read.

Sample data: SEQVIDEO.dat (first 5 of 29 records)
00121FLIGHT OF THE CONDOR, THE               03
00333PREDATOR                                02
00444LIVING EARTH, THE                       03
01001COMMANDO                                02
01100ROBOCOP                                 01
       >>SOURCE FORMAT IS FREE
IDENTIFICATION DIVISION.
PROGRAM-ID.  DirectReadIdx.
AUTHOR.  Michael Coughlan.
*> Demonstrates how to read an Indexed file directly on 
*> any of its keys.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
   SELECT VideoFile ASSIGN TO "IDXVIDEO.dat"
      ORGANIZATION IS INDEXED
      ACCESS MODE IS DYNAMIC
      RECORD KEY IS VideoCode
      ALTERNATE RECORD KEY IS VideoTitle
               WITH DUPLICATES
      FILE STATUS IS VideoStatus.
      

DATA DIVISION.
FILE SECTION.
   
FD VideoFile.
01 VideoRecord.
   02 VideoCode          PIC 9(5).
   02 VideoTitle         PIC X(40).
   02 SupplierCode       PIC 99.


WORKING-STORAGE SECTION.
01 VideoStatus           PIC X(2).
   88  RecordFound       VALUE "00".

01 RequiredKey           PIC 9.
   88 VideoCodeKey      VALUE 1.
   88 VideoTitleKey     VALUE 2.
           
01 PrnVideoRecord.
   02 PrnVideoCode       PIC 9(5).
   02 PrnVideoTitle      PIC BBBBX(40).
   02 PrnSupplierCode    PIC BBBB99.
   
PROCEDURE DIVISION.
Begin.
   OPEN INPUT VideoFile.

   DISPLAY "Chose key VideoCode = 1,  VideoTitle = 2 ->  "
                     WITH NO ADVANCING.
   ACCEPT RequiredKey.

   IF VideoCodeKey
      DISPLAY "Enter Video Code (5 digits) -> " WITH NO ADVANCING
      ACCEPT VideoCode
      READ VideoFile
         KEY IS VideoCode
         INVALID KEY  DISPLAY "VIDEO STATUS :- ", VideoStatus
      END-READ
   END-IF

   IF VideoTitleKey
      DISPLAY "Enter Video Title (40 chars) -> " WITH NO ADVANCING
      ACCEPT VideoTitle
      READ VideoFile
         KEY IS VideoTitle
         INVALID KEY  DISPLAY "VIDEO STATUS :- ", VideoStatus
      END-READ
   END-IF

   IF RecordFound
      MOVE VideoCode TO PrnVideoCode
      MOVE VideoTitle TO PrnVideoTitle
      MOVE SupplierCode TO PrnSupplierCode
      DISPLAY  PrnVideoRecord
   END-IF.

   CLOSE VideoFile.
   STOP RUN.