Example: Using the Alternate Record Key
IDENTIFICATION DIVISION.
PROGRAM-ID. LOOK-UP-ALT.
AUTHOR. BILL ROGERS.
* This program looks up a record by alternate key.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PERSON-FILE
ASSIGN TO 'C:\PCOBWIN\ROGERS\I\PERSON.DAT'
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS PERSON-KEY
ALTERNATE RECORD KEY IS PERSON-ALTERNATE-KEY
WITH DUPLICATES
FILE STATUS IS IO-FILE-STATUS.
DATA DIVISION.
FILE SECTION.
FD PERSON-FILE
DATA RECORD IS PERSON-ITEM.
01 PERSON-ITEM.
02 PERSON-KEY.
03 PERSON-ID PICTURE X(4).
02 PERSON-ALTERNATE-KEY.
03 PERSON-NAME PICTURE X(20).
02 PERSON-ADDRESS PICTURE X(20).
02 PERSON-CITY PICTURE X(18).
02 PERSON-STATE PICTURE X(2).
02 PERSON-ZIP PICTURE X(5).
02 PERSON-PHONE.
03 PERSON-AREA-CODE PICTURE X(3).
03 PERSON-PHONE-NUMBER PICTURE X(7).
02 PERSON-STATUS PICTURE X.
WORKING-STORAGE SECTION.
01 KBD-LETTER PIC X.
01 INVALID-PERSON-KEY-FLAG PICTURE X.
88 INVALID-PERSON-KEY VALUE 'Y'.
88 VALID-PERSON-KEY VALUE 'N'.
01 IO-FILE-STATUS PICTURE X(2).
PROCEDURE DIVISION.
MAIN-LINE.
PERFORM INITIALIZATION-ROUTINE.
PERFORM LOOKUP-A-NAME.
PERFORM EOJ-ROUTINE.
STOP RUN.
INITIALIZATION-ROUTINE.
OPEN I-O PERSON-FILE.
LOOKUP-A-NAME.
DISPLAY 'Enter the first letter of the last name: '.
ACCEPT KBD-LETTER.
MOVE KBD-LETTER TO PERSON-ALTERNATE-KEY.
PERFORM START-PERSON-FILE.
IF VALID-PERSON-KEY
PERFORM GET-NEXT-PERSON-ITEM
PERFORM DISPLAY-LOOP
UNTIL PERSON-NAME (1:1) NOT = KBD-LETTER
OR INVALID-PERSON-KEY.
DISPLAY-LOOP.
DISPLAY PERSON-NAME.
DISPLAY PERSON-ADDRESS.
DISPLAY PERSON-CITY ' ' PERSON-STATE ' ' PERSON-ZIP
DISPLAY '(' PERSON-AREA-CODE ') '
PERSON-PHONE-NUMBER (1:3) '-'
PERSON-PHONE-NUMBER (4:4).
DISPLAY '------------------------------'.
PERFORM GET-NEXT-PERSON-ITEM.
EOJ-ROUTINE.
CLOSE PERSON-FILE.
START-PERSON-FILE.
MOVE 'N' TO INVALID-PERSON-KEY-FLAG.
START PERSON-FILE
KEY IS NOT LESS THAN PERSON-ALTERNATE-KEY
INVALID KEY
MOVE 'Y' TO INVALID-PERSON-KEY-FLAG.
GET-NEXT-PERSON-ITEM.
MOVE 'N' TO INVALID-PERSON-KEY-FLAG.
READ PERSON-FILE NEXT
AT END
MOVE 'Y' TO INVALID-PERSON-KEY-FLAG.
Cobol Home