Monday, June 6, 2011

P5:Write a program using Control Break.


IDENTIFICATION DIVISION.
        PROGRAM-ID. CON-BREAK.
        ENVIRONMENT DIVISION.
        CONFIGURATION SECTION.
        INPUT-OUTPUT SECTION.
        FILE-CONTROL.
             SELECT EMP-FILE ASSIGN TO DISK
             ORGANIZATION IS LINE SEQUENTIAL.
             SELECT REP-FILE ASSIGN TO DISK
             ORGANIZATION IS LINE SEQUENTIAL.
        DATA DIVISION.
        FILE SECTION.
        FD   EMP-FILE
             LABEL RECORDS ARE STANDARD
             VALUE OF FILE-ID IS "EMP.INP".
        01   EMP-REC.
             02 SALESMAN-NO       PIC     9999.
             02 AMOUNT-OF-SALES    PIC     99999.
        FD   REP-FILE
             LABEL RECORDS ARE STANDARD
             VALUE OF FILE-ID IS "EMP.OUT".
        01   REP-REC    PIC  X(80).
        WORKING-STORAGE SECTION.
        77   TOT-SALE   PIC     9(6).
        77   TOT-COMM   PIC     9(6)V9(2).
        77   COM        PIC     9(6)V9(2).
        77   TSNO       PIC     9(4).
        01   HEADING-1.
             02 FILLER PIC X(11) VALUE "SALESMAN-NO".
             02 FILLER PIC X(13) VALUE SPACES.
             02 FILLER PIC X(16) VALUE "AMOUNT OF-SALES".
             02 FILLER PIC X(18) VALUE SPACES.
             02 FILLER PIC X(10) VALUE "COMMISSION".
        01   DETAIL-LINE.
             02 SALESMAN      PIC  B(3)ZZZZ.
             02 AMT-OF-SALE   PIC  B(20)ZZZZ9.
             02 COMMISSION    PIC  B(24)ZZZZ9.99.
        01   TOTAL-LINE.
             02 FILLER PIC X(13) VALUE SPACES.
             02 FILLER PIC X(12) VALUE "TOTAL-SALE".
             02 A      PIC Z(5)9.99.
             02 FILLER PIC X(2) VALUE SPACES.
             02 FILLER PIC X(18) VALUE "TOTAL-COMMISSION".
             02 B      PIC Z(5)9.99.
        01  ASTERISK-LINE       PIC X(70) VALUE ALL "-".
        PROCEDURE DIVISION.
        PARA-START.
             OPEN INPUT EMP-FILE OUTPUT REP-FILE.
             WRITE REP-REC FROM ASTERISK-LINE.
             WRITE REP-REC FROM HEADING-1.
             WRITE REP-REC FROM ASTERISK-LINE.
             READ EMP-FILE AT END GO TO LAST-PARA.
        PARA-READ-FIRST.
             MOVE SALESMAN-NO TO SALESMAN TSNO.
             MOVE AMOUNT-OF-SALES TO AMT-OF-SALE TOT-SALE.
             COMPUTE COM = (1 / 10) * AMOUNT-OF-SALES.
             MOVE COM TO TOT-COMM.
             MOVE COM TO COMMISSION.
             GO TO PARA-PRINT.
        PARA-READ.
             READ EMP-FILE AT END GO TO LAST-PARA.
             IF SALESMAN-NO NOT EQUAL TO TSNO GO TO PARA-TOTAL.
             MOVE AMOUNT-OF-SALES TO AMT-OF-SALE.
             COMPUTE COM = (1 / 10) * AMOUNT-OF-SALES.
             MOVE COM TO COMMISSION.
             ADD AMOUNT-OF-SALES TO TOT-SALE.
             ADD COM TO TOT-COMM.
             MOVE 0 TO SALESMAN.
        PARA-PRINT.
             WRITE REP-REC FROM DETAIL-LINE.
             GO TO PARA-READ.
        PARA-TOTAL.
             MOVE TOT-SALE TO A.
             MOVE TOT-COMM TO B.
             WRITE REP-REC FROM TOTAL-LINE.
             GO TO PARA-READ-FIRST.
        LAST-PARA.
             MOVE TOT-SALE TO A.
             MOVE TOT-COMM TO B.
             WRITE REP-REC FROM TOTAL-LINE.
             WRITE REP-REC FROM ASTERISK-LINE.
             CLOSE EMP-FILE REP-FILE.
             STOP RUN.

No comments:

Post a Comment