IDENTIFICATION DIVISION.
       PROGRAM-ID.  PROGRAM7.
       AUTHOR.  GROCER.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       SELECT VSAM-FILE
           ASSIGN TO "C:\PCOBWIN\VSAMPROJ\VSAMPROJ.DAT"
           ORGANIZATION IS INDEXED
           ACCESS IS DYNAMIC
           RECORD KEY IS VSAM-STUDENT-ID
           ALTERNATE RECORD KEY IS
               VSAM-STUDENT-NAME WITH DUPLICATES.
       SELECT PRINT-FILE ASSIGN TO PRINTER.
      *This program is a random update using screen input.  The logic
      *works a little differently because the user is providing the
      *input as opposed to reading a transaction file.
      *The first screen will ask the user if they want to add, change,
      *or delete a record or whether they want to check things out by
      *either attempting to randomly retrieve a record or by displaying
      *the records on the screen one record at a time (the last two
      *possibilities are not part of the basic assignment, they are
      *part of the FINAL).
      *The user will also be able to choose to retrieve a record for
      *viewing or updating by either randomly retrieving by id or by
      *name.
      *Looking at the update part of the program only (add, change or
      *delete a record), if the retrieval is unsuccessful then the add
      *routine can be executed.  If the retrieval is successful then
      *the change or delete can be executed.
      *Your assignment to meet the specifications in program7 is to get
      *the add, change and delete part of the program working with
      *retrieval by id and retrieval by name (user choice).  You also
      *need to code (as part of the FINAL)
      *the ability to execute the menu options to retrieve
      *a record to look at and to look at/list the file sequentially.
      *Finally as part of the FINAL, you need to include some 
      *edit checking to make sure that the data being entered is
      *valid.  The checks are: the name must exist, the major must be
      *ANT, BUS, CIS or POL, the semester must be F or S and the year
      *must be greater than 1969 and less than 1998. 
      *As part of the FINAL, you should give the user the opportunity to
      *fix any data on the transaction that is in error.

       DATA DIVISION.
       FILE SECTION.
       FD  VSAM-FILE
           DATA RECORD IS VSAM-REC.
       01  VSAM-REC.
           05  VSAM-STUDENT-ID          PIC XXXX.
           05  VSAM-STUDENT-NAME        PIC X(20).
           05  VSAM-STUDENT-MAJOR       PIC XXX.
           05  VSAM-STUDENT-SEM-ENTER   PIC X.
           05  VSAM-STUDENT-YR-ENTER    PIC 9999.
       FD  PRINT-FILE
           DATA RECORD IS PRINTZ.
       01  PRINTZ.
           05  FILLER                      PIC X.
           05  VSAM-STUDENT-ID-PR          PIC X(4).
           05  FILLER                      PIC X(2).
           05  VSAM-STUDENT-NAME-PR        PIC X(20).
           05  FILLER                      PIC X(2).
           05  VSAM-STUDENT-MAJOR-PR       PIC XXX.
           05  FILLER                      PIC X(2).
           05  VSAM-STUDENT-SEM-ENTER-PR   PIC X.
           05  FILLER                      PIC X(2).
           05  VSAM-STUDENT-YR-ENTER-PR    PIC 9999.
           05  FILLER                      PIC X(2).
           05  PROCESSING-MSG-PR           PIC X(20).
           05  FILLER                      PIC X(18).
       WORKING-STORAGE SECTION.
       01  INDICATORS.
           05  EOF-IND          PIC XXX          VALUE "NO ".
       01  HOLD-AREAS.
           05  MENU-ANS           PIC X            VALUE SPACES.
           05  RETRIEVE-ANS       PIC X            VALUE SPACES.
           05  ID-ANS             PIC XXXX         VALUE SPACES.
           05  NAME-ANS           PIC X(20)        VALUE SPACES.
           05  RESPONSE-ID-ANS    PIC X            VALUE SPACES.
           05  RESPONSE-NAME-ANS  PIC X            VALUE SPACES.
           05  CHANGE-KEY-ANS     PIC X            VALUE SPACES.
           05  DELETE-KEY-ANS     PIC X            VALUE SPACES.
           05  ADD-KEY-ANS        PIC X            VALUE SPACES.
           05  ANY-KEY-ERR-ANS    PIC X            VALUE SPACES.
           05  JUNK-ANS           PIC X            VALUE SPACES.
       SCREEN SECTION.
       01  MENU-SCREEN.
           05  VALUE "MENU SCREEN"               BLANK SCREEN
                                                 LINE 02 COL 20.
           05  VALUE "A - ADD A NEW RECORD"      LINE 04 COL 05.
           05  VALUE "C - CHANGE AN EXISTING RECORD"
                                                 LINE 06 COL 05.
           05  VALUE "D - DELETE AN EXISTING RECORD"
                                                 LINE 08 COL 05.
           05  VALUE "R - RANDOMLY RETRIEVE A RECORD"
                                                 LINE 10 COL 05.
           05  VALUE "S - SEQUENTIALLY LIST THE FILE"
           05  VALUE "ENTER CHOICE:"             LINE 17 COL 10.
           05  MENU-ANS-SCR                      LINE 17 COL 25
                      PIC X        TO MENU-ANS.
                                                 LINE 12 COL 05.
       01  RETRIEVAL-SCREEN.
           05  VALUE "RETRIEVAL SCREEN"          BLANK SCREEN
                                                 LINE 02 COL 20.
           05  VALUE "I - RANDOMLY RETRIEVE A RECORD BY ID NUMBER"
                                                 LINE 06 COL 05.
           05  VALUE "N - RANDOMLY RETRIEVE A RECORD BY NAME"
                                                 LINE 08 COL 05.
           05  VALUE "X - TO TERMINATE PROCESSING AND EXIT"
           05  VALUE "ENTER CHOICE:"             LINE 17 COL 10.
           05  RETRIEVAL-ANS-SCR                      LINE 17 COL 25
                      PIC X        TO RETRIEVE-ANS.
                                                 LINE 14 COL 05.

       01  ENTER-ID-RANDOMLY-SCREEN.
           05  VALUE "RETRIEVE A RECORD BY IDENTIFICATION NUMBER"
                                                 BLANK SCREEN
                                                 LINE 02 COL 15.
           05  VALUE "ENTER THE ID TO RETRIEVE:" LINE 05 COL 05.
           05  ENTRY-PT-SCR                      LINE 05 COL 35
                   PIC XXXX   TO ID-ANS.
           05  VALUE "P - TO PROCESS"            LINE 10 COL 20.
           05  VALUE "C - TO CANCEL"             LINE 11 COL 20.
           05  VALUE "Q - TO QUIT"               LINE 12 COL 20.
           05  VALUE "ENTER CHOICE:"             LINE 14 COL 20.
           05  RESPONSE-ANS-SCR                  LINE 14 COL 35
                   PIC X      TO RESPONSE-ID-ANS.
       01  ENTER-NAME-RANDOMLY-SCREEN.
           05  VALUE "RETRIEVE A RECORD BY NAME" BLANK SCREEN
                                                 LINE 02 COL 15.
           05  VALUE "ENTER THE NAME TO RETRIEVE:"
                                                 LINE 05 COL 05.
           05  ENTRY-PT-SCR                      LINE 05 COL 35
                   PIC X(20)   TO NAME-ANS.
           05  VALUE "P - TO PROCESS"            LINE 10 COL 20.
           05  VALUE "C - TO CANCEL"             LINE 11 COL 20.
           05  VALUE "Q - TO QUIT"               LINE 12 COL 20.
           05  VALUE "ENTER CHOICE:"             LINE 14 COL 20.
           05  RESPONSE-ANS-SCR                  LINE 14 COL 35
                   PIC X      TO RESPONSE-NAME-ANS.

       01  CHANGE-SCREEN.
           05  VALUE "UPDATE RECORD SCREEN"      BLANK SCREEN
                                                 LINE 02 COL 20.
           05  VALUE "ID #:"                     LINE 04 COL 05.
           05  ID-SCR                            LINE 04 COL 15
                      PIC XXXX  FROM VSAM-STUDENT-ID.
           05  VALUE "NAME:"                     LINE 06 COL 05.
           05  NAME-SCR                          LINE 06 COL 15
                      PIC X(20) USING VSAM-STUDENT-NAME.
           05  VALUE "MAJOR:"                    LINE 08 COL 05.
           05  MAJOR-SCR                         LINE 08 COL 15
                      PIC XXX   USING VSAM-STUDENT-MAJOR.
           05  VALUE "ENTRANCE:"                 LINE 10 COL 05.
           05  VALUE "SEMESTER:"                 LINE 11 COL 10.
           05  SEM-SCR                           LINE 11 COL 20
                      PIC X     USING VSAM-STUDENT-SEM-ENTER.
           05  VALUE "YEAR:"                     LINE 11 COL 23.
           05  YEAR-SCR                          LINE 11 COL 30
                      PIC 9999  USING VSAM-STUDENT-YR-ENTER.
           05  VALUE "P - PROCESS CHANGES"       LINE 13 COL 05.
           05  VALUE "C - CANCEL - CHANGES WILL NOT BE MADE"
                                                 LINE 14 COL 05.
           05  VALUE "RESPONSE:"                 LINE 15 COL 30.
           05  CHANGE-KEY-SCR                    LINE 15 COL 40
                      PIC X     TO CHANGE-KEY-ANS.
       01  ADD-SCREEN.
           05  VALUE "ADD RECORD SCREEN"         BLANK SCREEN
                                                 LINE 02 COL 20.
           05  VALUE "ID #:"                     LINE 04 COL 05.
           05  ID-SCR                            LINE 04 COL 15
                      PIC XXXX  FROM VSAM-STUDENT-ID.
           05  VALUE "NAME:"                     LINE 06 COL 05.
           05  NAME-SCR                          LINE 06 COL 15
                      PIC X(20) TO VSAM-STUDENT-NAME.
           05  VALUE "MAJOR:"                    LINE 08 COL 05.
           05  MAJOR-SCR                         LINE 08 COL 15
                      PIC XXX   TO VSAM-STUDENT-MAJOR.
           05  VALUE "ENTRANCE:"                 LINE 10 COL 05.
           05  VALUE "SEMESTER:"                 LINE 11 COL 10.
           05  SEM-SCR                           LINE 11 COL 20
                      PIC X     TO VSAM-STUDENT-SEM-ENTER.
           05  VALUE "YEAR:"                     LINE 11 COL 23.
           05  YEAR-SCR                          LINE 11 COL 30
                      PIC 9999  TO VSAM-STUDENT-YR-ENTER.
           05  VALUE "P - PROCESS ADD"           LINE 13 COL 05.
           05  VALUE "C - CANCEL - ADD WILL NOT BE MADE"
                                                 LINE 14 COL 05.
           05  VALUE "RESPONSE:"                 LINE 15 COL 30.
           05  ADD-KEY-SCR                       LINE 15 COL 40
                      PIC X     TO ADD-KEY-ANS.

       01  DELETE-SCREEN.
           05  VALUE "DELETE RECORD SCREEN"      BLANK SCREEN
                                                 LINE 02 COL 20.
           05  VALUE "ID #:"                     LINE 05 COL 05.
           05  ID-SCR                            LINE 05 COL 15
                      PIC XXXX  FROM VSAM-STUDENT-ID.
           05  VALUE "NAME:"                     LINE 07 COL 05.
           05  NAME-SCR                          LINE 07 COL 15
                      PIC X(20) FROM VSAM-STUDENT-NAME.
           05  VALUE "MAJOR:"                    LINE 09 COL 05.
           05  MAJOR-SCR                         LINE 09 COL 15
                      PIC XXX   FROM VSAM-STUDENT-MAJOR.
           05  VALUE "ENTRANCE:"                 LINE 11 COL 05.
           05  VALUE "SEMESTER:"                 LINE 12 COL 10.
           05  SEM-SCR                           LINE 12 COL 20
                      PIC X     FROM VSAM-STUDENT-SEM-ENTER.
           05  VALUE "YEAR:"                     LINE 12 COL 23.
           05  YEAR-SCR                          LINE 12 COL 30
                      PIC 9999  FROM VSAM-STUDENT-YR-ENTER.
           05  VALUE "P - PROCESS - RECORD WILL BE DELETED"
                                                 LINE 13 COL 05.
           05  VALUE "C - CANCEL - RECORD WILL NOT BE DELETED"
                                                 LINE 14 COL 05.
           05  VALUE "RESPONSE:"                 LINE 15 COL 30.
           05  DELETE-KEY-SCR                    LINE 15 COL 40
                      PIC X     TO DELETE-KEY-ANS.
       01  ERROR-MESSAGE-SCREEN.
           05  VALUE "RECORD NOT FOUND"          BLANK SCREEN
                                                 LINE 02 COL 20.
           05  VALUE "ID #:"                     LINE 05 COL 05.
           05  ID-ERR-SCR                        LINE 05 COL 15
                      PIC XXXX  FROM ID-ANS.
           05  VALUE "PRESS ANY KEY TO CONTINUE" LINE 10 COL 05.
           05  ANY-KEY-ERR-SCR                   LINE 10 COL 40
                      PIC X     TO ANY-KEY-ERR-ANS.
       PROCEDURE DIVISION.
       MAINLINE.
           PERFORM A-100-INITIALIZE.
           PERFORM B-100-PROCESS.
           PERFORM C-100-TERMINATE.
           STOP RUN.
       A-100-INITIALIZE.
           OPEN INPUT VSAM-FILE
                OUTPUT PRINT-FILE.
       B-100-PROCESS.
           DISPLAY MENU-SCREEN.
           ACCEPT MENU-SCREEN.
           PERFORM B-200-LOOP
               UNTIL MENU-ANS = "X".
       B-200-LOOP.
           DISPLAY "NOT CODED YET".
           DISPLAY JUNK-ANS.
           DISPLAY MENU-SCREEN.
           ACCEPT MENU-SCREEN.
       B-300-RANDOM-ID.
           DISPLAY ENTER-ID-RANDOMLY-SCREEN.
           ACCEPT ENTER-ID-RANDOMLY-SCREEN.
           PERFORM B-400-RANDOM-ID-LOOP
               UNTIL RESPONSE-ID-ANS = "Q".
       B-310-RANDOM-NAME.
           DISPLAY "NOT CODED YET".
           ACCEPT JUNK-ANS.
       B-400-RANDOM-ID-LOOP.
           IF RESPONSE-ID-ANS = "P"
               MOVE ID-ANS TO VSAM-STUDENT-ID
               READ VSAM-FILE
                   INVALID KEY
                      DISPLAY ERROR-MESSAGE-SCREEN
                      ACCEPT ERROR-MESSAGE-SCREEN
                   NOT INVALID KEY
                      DISPLAY "NOT CODED YET"
                      ACCEPT JUNK-ANS
               END-READ
           END-IF
           DISPLAY ENTER-ID-RANDOMLY-SCREEN
           ACCEPT ENTER-ID-RANDOMLY-SCREEN.
       C-100-TERMINATE.
           CLOSE VSAM-FILE
                 PRINT-FILE.
       U-000-DETAIL.
           MOVE SPACES TO PRINTZ.
           MOVE VSAM-STUDENT-ID TO VSAM-STUDENT-ID-PR.
           MOVE VSAM-STUDENT-NAME TO VSAM-STUDENT-NAME-PR.
           MOVE VSAM-STUDENT-MAJOR TO VSAM-STUDENT-MAJOR-PR.
           MOVE VSAM-STUDENT-SEM-ENTER TO VSAM-STUDENT-SEM-ENTER-PR.
           MOVE VSAM-STUDENT-YR-ENTER TO VSAM-STUDENT-YR-ENTER-PR.
           WRITE PRINTZ
               AFTER ADVANCING 1 LINES.