IDENTIFICATION DIVISION.
       PROGRAM-ID. MOD11CHK.
       AUTHOR. GROCER.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  ID-NUM.
           05  DGT        PIC 9   OCCURS 6 TIMES.
           05  CHK-DGT    PIC 9.
           05  RDF-CHK-DGT REDEFINES CHK-DGT PIC X.
       01  RDF-ID-NUM REDEFINES ID-NUM PIC X(7).
       01  SUBSCRIPTZ.
           05  SUB-DGT    PIC 9   VALUE 1.
       01  RESPONSEZ.
           05  MENU-ANS   PIC X     VALUE SPACES.
           05  RESPNSE    PIC X     VALUE SPACES.
           05  MSG        PIC X(29) VALUE SPACES.
       01  WORK-ANS.
           05  WT         PIC 9   VALUE 7.
           05  MULT-ANS   PIC 99  VALUE 0.
           05  SUM-DGTS   PIC 999 VALUE 0.
           05  DIVIDE-ANS PIC 99  VALUE 0.
           05  REM-ANS    PIC 99  VALUE 0.
           05  SUBT-ANS   PIC 99  VALUE 0.
       SCREEN SECTION.
       01  MENU-SCR.
           05  VALUE "MENU"                        BLANK SCREEN
                                                   LINE 5 COL 30.
           05  VALUE "1 - CALCULATE CHECK DIGIT"   LINE 8 COL 10.
           05  VALUE "2 - VALIDATE CHECK DIGIT"    LINE 9 COL 10.
           05  VALUE "3 - END PROCESSING"          LINE 11 COL 10.
           05  VALUE "ENTER SELECTION"             LINE 13 COL 20.
           05  TAKE-IN-MENU-ANS                    LINE 13 COL 36
                      PIC X    TO MENU-ANS.

       01  TAKE-IN-ID-SCR.
           05  VALUE "PLEASE ENTER NEW ID"          BLANK SCREEN
                                                    LINE 5 COL 10.
           05  ID-INPUT                             LINE 5 COL 30
                      PIC 9(6)    TO ID-NUM.
           05  "PRESS ANY KEY TO CONTINUE..."       LINE 10 COL 10.
           05  TAKE-IN-FIRST-ANS                    LINE 10 COL 40
                      PIC X       TO RESPNSE.
       01  TAKE-IN-WHOLE-SCR.
           05  VALUE "PLEASE ENTER ID TO VALIDATE"  BLANK SCREEN
                                                    LINE 5 COL 10.
           05  WHOLE-INPUT                          LINE 5 COL 40
                      PIC X(7)    TO RDF-ID-NUM.
           05  "PRESS ANY KEY TO CONTINUE..."       LINE 10 COL 10.
           05  TAKE-IN-SECOND-ANS                   LINE 10 COL 40
                      PIC X       TO RESPNSE.
       01  SHOW-RESULT-SCR.
           05  VALUE "THE ID WITH CHECK DIGIT IS"   BLANK SCREEN
                                                    LINE 5 COL 10.
           05  COMPLETED-ID                         LINE 5 COL 40
                      PIC X(7)    FROM ID-NUM.
           05  MSG-AREA                             LINE 7 COL 20
                      PIC X(30)   FROM MSG.
           05  VALUE "PRESS ANY KEY TO CONTINUE..." LINE 10 COL 10.
           05  TAKE-IN-THIRD-ANS                    LINE 10 COL 40
                      PIC X       TO RESPNSE.
       PROCEDURE DIVISION.
       MAINLINE.
           PERFORM B-100-PROCESS.
           STOP RUN.
       B-100-PROCESS.
           DISPLAY MENU-SCR.
           ACCEPT MENU-SCR.
           PERFORM B-200-LOOP
              UNTIL MENU-ANS = "3".
       B-200-LOOP.
           IF MENU-ANS = "1"
              PERFORM B-300-CALC
           ELSE
              IF MENU-ANS = "2"
                 PERFORM B-310-VALIDATE.
           DISPLAY MENU-SCR.
           ACCEPT MENU-SCR.
       B-300-CALC.
           MOVE SPACES TO RDF-ID-NUM.
           MOVE SPACES TO MSG.
           DISPLAY TAKE-IN-ID-SCR.
           ACCEPT TAKE-IN-ID-SCR.
           MOVE 7 TO WT.
           MOVE 1 TO SUB-DGT.
           MOVE 0 TO SUM-DGTS.
           PERFORM B-400-MULT-ROUT
               6 TIMES.
           DIVIDE SUM-DGTS BY 11
               GIVING DIVIDE-ANS
               REMAINDER REM-ANS.
           SUBTRACT REM-ANS FROM 11
               GIVING SUBT-ANS.
           IF SUBT-ANS = 10
               MOVE "X" TO RDF-CHK-DGT
           ELSE
               IF SUBT-ANS = 11
                   MOVE 0 TO CHK-DGT
               ELSE
                   MOVE SUBT-ANS TO CHK-DGT.
           DISPLAY SHOW-RESULT-SCR.
           ACCEPT SHOW-RESULT-SCR.
       B-310-VALIDATE.
           MOVE SPACES TO RDF-ID-NUM.
           MOVE SPACES TO MSG.
           DISPLAY TAKE-IN-WHOLE-SCR.
           ACCEPT TAKE-IN-WHOLE-SCR.
           MOVE 7 TO WT.
           MOVE 1 TO SUB-DGT.
           MOVE 0 TO SUM-DGTS.
           PERFORM B-400-MULT-ROUT
               6 TIMES.
           IF RDF-CHK-DGT = "X"
               ADD 10 TO SUM-DGTS
           ELSE
               ADD CHK-DGT TO SUM-DGTS.
           DIVIDE SUM-DGTS BY 11
               GIVING DIVIDE-ANS
               REMAINDER REM-ANS.
           IF REM-ANS > 0
               MOVE "****** ERROR IN ID ******" TO MSG
           ELSE
               MOVE "****** VALID ID ******" TO MSG.
           DISPLAY SHOW-RESULT-SCR.
           ACCEPT SHOW-RESULT-SCR.
       B-400-MULT-ROUT.
           MULTIPLY DGT (SUB-DGT) BY WT
               GIVING MULT-ANS.
           ADD MULT-ANS TO SUM-DGTS.
           SUBTRACT 1 FROM WT.
           ADD 1 TO SUB-DGT.