IDENTIFICATION DIVISION.
       PROGRAM-ID. EDITCHK.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
	   SELECT EDITED-TRAN-FILE
                ASSIGN TO "C:\PCOBWIN\EDITUPDT\EDITED.DAT"
		ORGANIZATION IS LINE SEQUENTIAL
		ACCESS IS SEQUENTIAL.
	   SELECT PRINT-FILE ASSIGN TO PRINTER.
       DATA DIVISION.
       FILE SECTION.
       FD  EDITED-TRAN-FILE
	   DATA RECORD IS EDITED-TRAN-REC.
       01  EDITED-TRAN-REC	     PIC X(31).
       FD  PRINT-FILE
	   DATA RECORD IS PRINTZ.
       01  PRINTZ		     PIC X(80).
       WORKING-STORAGE SECTION.
       01  RESPONSES.
	   05  TERMINATE-ANS	 PIC X	      VALUE SPACES.
       01  EDIT-AREA.
	   05  EIDNO.
	       10  DGT		 PIC 9	      OCCURS 6 TIMES.
	       10  CHK-DGT	 PIC X.
	       10  RDF-CHK-DGT REDEFINES CHK-DGT PIC 9.
	   05  ENAME		 PIC X(20).
	   05  ECODEZ		 PIC X.
	   05  EAMT		 PIC 999.
       01  SUBSCRIPTS.
	   05  SUBZ		 PIC 9	      VALUE 0.
       01  WORK-AREAS.
	   05  WT		 PIC 9	      VALUE 0.
	   05  ANS		 PIC 99       VALUE 0.
	   05  RSLT		 PIC 99       VALUE 0.
	   05  REMNDR		 PIC 99       VALUE 0.
	   05  TEMP-CHK-DGT	 PIC 99       VALUE 0.
       01  ACCUMULATORS.
	   05  DGT-SUM		 PIC 999      VALUE 0.
       01  INDICATORS.
	   05  VALID-REC-IND	 PIC X	      VALUE SPACES.
       01  ERROR-LINE.
	   05  FILLER		 PIC X(5)     VALUE SPACES.
	   05  IDNO-PR		 PIC X(7).
	   05  FILLER		 PIC X(5)     VALUE SPACES.
	   05  DATA-PR		 PIC X(20).
	   05  FILLER		 PIC X(5)     VALUE SPACES.
	   05  MSG-PR		 PIC X(30).
	   05  FILLER		 PIC X(8)     VALUE SPACES.
       SCREEN SECTION.
       01  DATA-ENTRY-SCREEN.
	   05  VALUE "DATA ENTRY SCREEN"      BLANK SCREEN
					      LINE 01 COL 30.
	   05  VALUE "IDENTIFICATION NUMBER:" LINE 05 COL 05.
	   05  ID-SCR			      LINE 05 COL 30
		   PIC X(7)	TO EIDNO.
	   05  VALUE "CUSTOMER NAME:"	      LINE 07 COL 05.
	   05  NAME-SCR 		      LINE 07 COL 30
		   PIC X(20)   TO ENAME.
	   05  VALUE "TRANSACTION CODE:"      LINE 09 COL 05.
	   05  CODE-SCR			      LINE 09 COL 30
		   PIC X       TO ECODEZ.
	   05  VALUE "AMOUNT:"		      LINE 11 COL 05.
	   05  AMT-SCR			      LINE 11 COL 30
		   PIC 999     TO EAMT.
	   05  VALUE "C - TO CONTINUE"	      LINE 16 COL 30.
	   05  VALUE "Q - TO QUIT"	      LINE 17 COL 30.
	   05  VALUE "ENTER CHOICE:"	      LINE 19 COL 30.
	   05  RESPONSE-SCR		      LINE 19 COL 45
		   PIC X     TO TERMINATE-ANS.
       PROCEDURE DIVISION.
       MAINLINE.
            PERFORM A-100-INITIALIZE.
            PERFORM B-100-PROCESS.
            PERFORM C-100-TERMINATE.
            STOP RUN.
       A-100-INITIALIZE.
	    OPEN OUTPUT EDITED-TRAN-FILE
			PRINT-FILE.
	    MOVE SPACES TO EDIT-AREA.
       B-100-PROCESS.
	    DISPLAY DATA-ENTRY-SCREEN.
	    ACCEPT DATA-ENTRY-SCREEN.
            PERFORM B-200-LOOP
	       UNTIL TERMINATE-ANS = "Q".
       B-200-LOOP.
            PERFORM B-300-EDIT.
	    DISPLAY DATA-ENTRY-SCREEN.
	    ACCEPT DATA-ENTRY-SCREEN.
       B-300-EDIT.
	   MOVE "Y" TO VALID-REC-IND.
           PERFORM B-400-CHK-DIGIT-VALIDATE.
           PERFORM B-410-NAME-VALIDATE.
           PERFORM B-420-CODE-AMT-VALIDATE.
	   IF VALID-REC-IND = "Y"
	       WRITE EDITED-TRAN-REC FROM EDIT-AREA.
	   MOVE SPACES TO EDIT-AREA.
       B-400-CHK-DIGIT-VALIDATE.
	   MOVE 0 TO DGT-SUM.
	   MOVE 1 TO SUBZ.
	   MOVE 7 TO WT.
           PERFORM B-500-DGT-ROUT
	       6 TIMES.
	   IF CHK-DGT = "X"
	       ADD 10 TO DGT-SUM
	   ELSE
	       ADD RDF-CHK-DGT TO DGT-SUM.
	   DIVIDE DGT-SUM BY 11
	       GIVING RSLT
	       REMAINDER REMNDR.
	   IF REMNDR NOT = 0
	       MOVE "N" TO VALID-REC-IND
	       MOVE EIDNO TO DATA-PR
	       MOVE "INVALID CHECK DIGIT" TO MSG-PR
               PERFORM U-000-ERROR-REPORT.
       B-410-NAME-VALIDATE.
	   IF ENAME = SPACES
	       MOVE "N" TO VALID-REC-IND
	       MOVE ENAME TO DATA-PR
	       MOVE "BLANK NAME" TO MSG-PR
               PERFORM U-000-ERROR-REPORT.
       B-420-CODE-AMT-VALIDATE.
	   IF EAMT IS NUMERIC
	       IF ECODEZ = "A"
		   IF EAMT < 500
		       NEXT SENTENCE
		   ELSE
		       MOVE "N" TO VALID-REC-IND
		       MOVE EAMT TO DATA-PR
		       MOVE "AMOUNT => 500 FOR CODE A" TO MSG-PR
                       PERFORM U-000-ERROR-REPORT
	       ELSE
		   IF ECODEZ = "B"
		       IF EAMT > 200 AND EAMT < 600
			   NEXT SENTENCE
		       ELSE
			   MOVE "N" TO VALID-REC-IND
			   MOVE EAMT TO DATA-PR
			   MOVE "AMOUNT OUTSIDE 200-600 FOR CODE B"
				TO MSG-PR
                           PERFORM U-000-ERROR-REPORT
		   ELSE
		       MOVE "N" TO VALID-REC-IND
		       MOVE ECODEZ TO DATA-PR
		       MOVE "INVALID CODE" TO MSG-PR
                       PERFORM U-000-ERROR-REPORT
	   ELSE
	       MOVE "N" TO VALID-REC-IND
	       MOVE EAMT TO DATA-PR
	       MOVE "AMOUNT IS NOT NUMERIC" TO MSG-PR
               PERFORM U-000-ERROR-REPORT.
       B-500-DGT-ROUT.
	   MULTIPLY DGT(SUBZ) BY WT
	       GIVING ANS.
	   ADD ANS TO DGT-SUM.
	   ADD 1 TO SUBZ.
	   SUBTRACT 1 FROM WT.
       U-000-ERROR-REPORT.
	   MOVE EIDNO TO IDNO-PR.
	   WRITE PRINTZ FROM ERROR-LINE
	       AFTER ADVANCING 1 LINES.
       C-100-TERMINATE.
            CLOSE EDITED-TRAN-FILE
                  PRINT-FILE.