//AIXEXAMP JOB (AIVSAM),'DOUGLAS',NOTIFY=DOUGLAS, // CLASS=A,MSGLEVEL=(1,1),TIME=1,MSGCLASS=A //STEP1 EXEC PROC=IGYWCLG //COBOL.SYSIN DD * ************************************************************* * * * This program was modified from the code in text-- * * The IBM Cobol Environment by Robert T. Grauer, page 120 * * * ************************************************************* IDENTIFICATION DIVISION. PROGRAM-ID. ALTINDEX. AUTHOR. UOAS360. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INDEXED-FILE ASSIGN TO DA-VSAMMAST ORGANIZATION IS INDEXED ACCESS IS DYNAMIC RECORD KEY IS INDEX-SOC-SEC-NUMBER ALTERNATE RECORD KEY IS INDEX-NAME WITH DUPLICATES. DATA DIVISION. FILE SECTION. FD INDEXED-FILE LABEL RECORDS ARE STANDARD RECORD CONTAINS 80 CHARACTERS DATA RECORD IS INDEXED-RECORD. 01 INDEXED-RECORD. 05 INDEX-SOC-SEC-NUMBER PIC X(9). 05 INDEX-NAME PIC X(15). 05 REST-OF-INDEXED-RECORD PIC X(56). WORKING-STORAGE SECTION. 01 FILLER PIC X(14) VALUE 'WS BEGINS HERE'. 01 WS-NDX-MAST-RECORD. 05 NDX-SOC-SEC-NUMBER PIC X(9). 05 NDX-NAME. 10 NDX-LAST-NAME PIC X(15). 10 NDX-INITIALS PIC XX. 05 FILLER PIC X(54). 01 WS-ACTIVE-NAME PIC X(15). 01 WS-BALANCE-LINE-SWITCHES. 05 WS-RECORD-KEY-ALLOCATED-SWITCH PIC X(3). 05 WS-END-INDEX-FILE PIC X(3). PROCEDURE DIVISION. 0010-PROCESS-NAME-FILE. OPEN INPUT INDEXED-FILE ***************************************************************** ** RETRIEVE RECORDS BY SOCIAL SECURITY NUMBER * ***************************************************************** MOVE '955000000' TO INDEX-SOC-SEC-NUMBER PERFORM 0040-READ-INDEX-FILE-BY-NUMBER IF WS-RECORD-KEY-ALLOCATED-SWITCH = 'YES' DISPLAY WS-NDX-MAST-RECORD ELSE DISPLAY ' ' DISPLAY 'NO MATCH FOUND FOR: 955000000' END-IF MOVE '245118095' TO INDEX-SOC-SEC-NUMBER PERFORM 0040-READ-INDEX-FILE-BY-NUMBER IF WS-RECORD-KEY-ALLOCATED-SWITCH = 'YES' DISPLAY WS-NDX-MAST-RECORD ELSE DISPLAY ' ' DISPLAY 'NO MATCH FOUND FOR: 245118095' END-IF **************************************************************** ** RETRIEVE RECORDS BY NAME - THE ALTERNATE RECORD KEY * **************************************************************** MOVE 'GRAUER ' TO INDEX-NAME WS-ACTIVE-NAME PERFORM 0020-READ-INDEX-FILE-BY-NAME IF WS-RECORD-KEY-ALLOCATED-SWITCH = 'NO' DISPLAY ' ' DISPLAY 'NO MATCH FOUND FOR: ' WS-ACTIVE-NAME ELSE PERFORM 0030-READ-DUPLICATES UNTIL WS-ACTIVE-NAME NOT = NDX-LAST-NAME OR WS-END-INDEX-FILE = 'YES' END-IF MOVE 'HUMMER ' TO INDEX-NAME WS-ACTIVE-NAME PERFORM 0020-READ-INDEX-FILE-BY-NAME. IF WS-RECORD-KEY-ALLOCATED-SWITCH = 'YES' DISPLAY WS-NDX-MAST-RECORD ELSE DISPLAY ' ' DISPLAY 'NO MATCH FOUND FOR: ' WS-ACTIVE-NAME END-IF CLOSE INDEXED-FILE STOP RUN. 0020-READ-INDEX-FILE-BY-NAME. MOVE 'YES' TO WS-RECORD-KEY-ALLOCATED-SWITCH READ INDEXED-FILE INTO WS-NDX-MAST-RECORD KEY IS INDEX-NAME INVALID KEY MOVE 'NO' TO WS-RECORD-KEY-ALLOCATED-SWITCH. 0030-READ-DUPLICATES. DISPLAY WS-NDX-MAST-RECORD READ INDEXED-FILE NEXT RECORD INTO WS-NDX-MAST-RECORD AT END MOVE 'YES' TO WS-END-INDEX-FILE. 0040-READ-INDEX-FILE-BY-NUMBER. MOVE 'YES' TO WS-RECORD-KEY-ALLOCATED-SWITCH READ INDEXED-FILE INTO WS-NDX-MAST-RECORD INVALID KEY MOVE 'NO' TO WS-RECORD-KEY-ALLOCATED-SWITCH. //GO.VSAMMAST DD DSN=DOUGLAS.VSAM.MASTER,DISP=SHR //GO.VSAMMAS1 DD DSN=DOUGLAS.VSAM.MASTER.PATH,DISP=SHR /*