ACCOUNT BALANCE REPORT


       IDENTIFICATION DIVISION.
       PROGRAM-ID. ACCOUNTBAL.
       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 "ACCIN.TXT".
       01 INREC.
           02 ACCNO PIC X(3).
           02 ACCDESC PIC X(10).
           02 ACCBAL PIC S9(8)V9(2). 
       FD OUTFILE
           LABEL RECORDS ARE STANDARD
           VALUE OF FILE-ID IS "ACCOUT.TXT".
       01 OUTREC PIC X(80).
       WORKING-STORAGE SECTION.
       01 DETAIL-LINE.
           02 F PIC X(3) VALUE SPACES.
           02 OACCNO PIC X(3).
           02 F PIC X(3) VALUE SPACES.
           02 OACCDESC PIC X(10).
           02 F PIC X(3) VALUE SPACES.
          02 OACCBAL PIC Z(7)9.99CR.
       01 CURRENT-ACCNO PIC X(3).
       01 ACC-BALANCE PIC S9(8)V9(2) VALUE ZERO.
       01 END-OF-FILE-SWITCH PIC X VALUE 'N'.
          88 END-OF-FILE VALUE 'Y'.
       01 SUB-TOTAL-LINE.
           02 F PIC X(5) VALUE SPACES.
          02 F PIC X(10) VALUE "TOTAL FOR".
          02 SUB-TOTAL PIC X(3).
          02 F PIC X(23) VALUE ":".
          02 SUB-TOTAL-BALANCE PIC $$,$$$,$$9.99CR.
       77 CH PIC X(1).


     PROCEDURE DIVISION.
     MAIN-PARA.
         OPEN OUTPUT INFILE.
         PERFORM INPUT-PARA UNTIL CH = 'N'.
          CLOSE INFILE.
         PERFORM INITIALIZATION-ROUTINE.
         PERFORM THE-LOOP UNTIL END-OF-FILE.
         PERFORM EOJ-ROUTINE.
         STOP RUN.
     INPUT-PARA.
         DISPLAY "ENTER THE ACC NUMBER".
          ACCEPT ACCNO.
         DISPLAY "ENTER ACC DESCRIPTION".
         ACCEPT ACCDESC.
         DISPLAY "ENTER ACC BALANCE".
         ACCEPT ACCBAL.
          WRITE INREC.
          DISPLAY "DO YOU WANT TO CONTINUE (Y/N)".
          ACCEPT CH.
     INITIALIZATION-ROUTINE.
         OPEN INPUT INFILE OUTPUT OUTFILE.
         READ INFILE AT END MOVE 'Y' TO END-OF-FILE-SWITCH.
         MOVE ACCNO TO CURRENT-ACCNO.
     THE-LOOP.
         IF ACCNO NOT = CURRENT-ACCNO PERFORM CONTROL-BREAK.
         MOVE ACCNO TO OACCNO.
         MOVE ACCDESC TO OACCDESC.
         MOVE ACCBAL TO OACCBAL.
         WRITE OUTREC FROM DETAIL-LINE.
         ADD ACCBAL TO ACC-BALANCE.
         MOVE ACCNO TO CURRENT-ACCNO.
         READ INFILE AT END MOVE 'Y' TO END-OF-FILE-SWITCH.
     EOJ-ROUTINE.
        PERFORM CONTROL-BREAK.
        CLOSE INFILE, OUTFILE.
     CONTROL-BREAK.
         MOVE ACC-BALANCE TO SUB-TOTAL-BALANCE.
         MOVE CURRENT-ACCNO TO SUB-TOTAL.
         WRITE OUTREC FROM SUB-TOTAL-LINE.
         MOVE ZERO TO ACC-BALANCE.

No comments:

Related Posts with Thumbnails