Ledger Report Validation.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. LEDGER.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DISK
           ORGANIZATION IS LINE SEQUENTIAL.
           SELECT OUTFILE ASSIGN TO DISK
           ORGANIZATION IS LINE SEQUENTIAL.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE
           LABEL RECORDS ARE STANDARD
           VALUE OF FILE-ID IS "LEDIN.TXT".
       01 ACC-REC.
           02 RC PIC X(2).
               88 VALID-RC  VALUE "LM".
           02 ACC-NO.
               03 FNO PIC X(5).
               03 LNO PIC X(3).
           02 ACC-DESC.
               03 FNAME PIC X.
               03 REST-NAME PIC X(19).
           02 ACC-TYPE PIC X.
               88 VALID-ACC-TYPE VALUES ARE
                   'X' '1' '2' '3' '4' '5' '6'.
           02 ACC-BALANCE PIC X(8).
       FD OUTFILE
           LABEL RECORDS ARE STANDARD
           VALUE OF FILE-ID IS "LEDOUT.TXT".
       01 OUTREC PIC X(80).
       WORKING-STORAGE SECTION.
       01 H1.
           05 F PIC X(28) VALUE SPACES.
           05 F PIC X(28) VALUE "LEDGER RECORDS VALIDATION".
       01 H11.
           05 F PIC X(28) VALUE SPACES.
           05 F PIC X(28) VALUE "AUDIT/ERROR LIST".
       01 H2.
           05 F PIC X(2) VALUE "RC".
           05 F PIC X(5) VALUE SPACES.
           05 F PIC X(6) VALUE "NUMBER".
           05 F PIC X(5) VALUE SPACES.
           05 F PIC X(11) VALUE "DESCRIPTION".
           05 F PIC X(5) VALUE SPACES.
           05 F PIC X(5) VALUE "TYPE".
           05 F PIC X(5) VALUE SPACES.
           05 F PIC X(10) VALUE "BALANCE".
           05 F PIC X(5) VALUE SPACES.
           05 F PIC X(15) VALUE "ERROR CODES".
       01 D-REC.
           02 RC PIC X(2).
           02 F PIC X(5) VALUE SPACES.
           02 ACC-NO-O.
               03 FNO-O PIC X(5).
               03 LNO-O PIC X(3).
           02 F PIC X(5) VALUE SPACES.
           02 ACC-DESC-O.
               03 FNAME PIC X.
               03 REST-NAME PIC X(19).
           02 F PIC X(5) VALUE SPACES.
           02 ACC-TYPE PIC X.
           02 F PIC X(5) VALUE SPACES.
           02 ACC-BALANCE-O PIC X(8) VALUE SPACES.
           02 F PIC X(5) VALUE SPACES.
           02 ERR.
               10 ERR-CODE1 PIC X VALUE SPACES.
               10 ERR-CODE2 PIC X VALUE SPACES.
               10 ERR-CODE3 PIC X VALUE SPACES.
               10 ERR-CODE4 PIC X VALUE SPACES.
               10 ERR-CODE5 PIC X VALUE SPACES.
               10 ERR-CODE6 PIC X VALUE SPACES.
       01 BLANK-SPACE PIC X(80) VALUE SPACES.
       77 CHI PIC X VALUE 'Y'.
       77 EOF PIC X VALUE 'N'.
       77 LINEUSED PIC 99 VALUE 0.
       PROCEDURE DIVISION.
       MAIN-PARA.
           OPEN OUTPUT INFILE.
           PERFORM ACCEPT-PARA UNTIL CHI = 'N'.
           CLOSE INFILE.
           OPEN INPUT INFILE OUTPUT OUTFILE.
           PERFORM HEAD-PARA.
           READ INFILE AT END MOVE 'Y' TO EOF.
           PERFORM VALIDATION-PARA UNTIL EOF = 'Y'.
           CLOSE INFILE, OUTFILE.
           STOP RUN.
       ACCEPT-PARA.
           DISPLAY "ENTER THE RECORD CODE".
           ACCEPT RC OF ACC-REC.
           DISPLAY "ENTER THE ACCOUNT NUMBER".
           ACCEPT ACC-NO OF ACC-REC.
           DISPLAY "ENTER THE ACCOUNT DESCRIPTION".
           ACCEPT ACC-DESC OF ACC-REC.
           DISPLAY "ENTER THE ACCOUNT TYPE".
           ACCEPT ACC-TYPE OF ACC-REC.
           DISPLAY "ENTER THE ACCOUNT BALANCE".
           ACCEPT ACC-BALANCE OF ACC-REC.
           WRITE ACC-REC.

           DISPLAY "DO YPU WANT TO CON Y/N".
           ACCEPT CHI.
       HEAD-PARA.
           WRITE OUTREC FROM H1.
           WRITE OUTREC FROM BLANK-SPACE.
           WRITE OUTREC FROM H2.
           ADD 3 TO LINEUSED.
       VALIDATION-PARA.
           IF NOT VALID-RC MOVE 'A' TO ERR-CODE1.
           IF ACC-NO IS EQUAL TO SPACES
           MOVE 'B' TO ERR-CODE2.
           IF ACC-NO OF ACC-REC IS NUMERIC
           MOVE 'C' TO ERR-CODE3.
           IF ACC-DESC OF ACC-REC IS EQUAL TO SPACES
           MOVE 'D' TO ERR-CODE4.
           IF NOT VALID-ACC-TYPE MOVE 'E' TO ERR-CODE5.
           INSPECT ACC-BALANCE
           REPLACING LEADING SPACES BY ZEROS.
           IF ACC-BALANCE IS NOT NUMERIC
           MOVE 'F' TO ERR-CODE6.
           MOVE RC OF ACC-REC TO RC OF D-REC.
           MOVE ACC-NO OF ACC-REC TO ACC-NO-O OF D-REC.
           MOVE ACC-DESC OF ACC-REC TO ACC-DESC-O OF D-REC.
           MOVE ACC-TYPE OF ACC-REC TO ACC-TYPE OF D-REC.
           MOVE ACC-BALANCE OF ACC-REC TO ACC-BALANCE-O OF D-REC.
           WRITE OUTREC FROM D-REC.
           IF LINEUSED > 50
           MOVE 0 TO LINEUSED
           PERFORM HEAD-PARA.
           MOVE SPACES TO ERR-CODE1, ERR-CODE2, ERR-CODE3, ERR-CODE4,
           ERR-CODE5, ERR-CODE6.
           READ INFILE AT END MOVE "Y" TO EOF.


          
          
          

No comments:

Related Posts with Thumbnails