Code for Program to print bill report in Cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. Table1.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-PC.
OBJECT-COMPUTER. IBM-PC.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT TABLE-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT CUST-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT BILL-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD TABLE-FILE
VALUE OF FILE-ID IS "TABLE.IND".
01 TABLE-REC.
05 ZIPCODE PIC 9(6).
05 FILLER PIC XX.
05 TAX-RATE PIC 99.
FD CUST-FILE
VALUE OF FILE-ID IS "CUST.DAT".
01 SAL-REC.
05 C-ID PIC 9(4).
05 FILLER PIC XX.
05 C-ZIPCODE PIC 9(6).
05 FILLER PIC XX.
05 C-SALE PIC 9(6).
FD BILL-FILE
VALUE OF FILE-ID IS "BILL.RPT".
01 BILL-REC PIC X(80).
WORKING-STORAGE SECTION.
01 TAB.
05 TABLE-ENTRIES OCCURS 5 TIMES.
07 TEMP-ZIPCODE PIC 9(6).
07 FILLER PIC XX.
07 TEMP-TAX-RATE PIC 99.
01 OUT-REC.
05 OUT-C-ID PIC 9(4).
05 PIC XX VALUE SPACES.
05 OUT-C-ZIPCODE PIC 9(6).
05 PIC XX VALUE SPACES.
05 OUT-C-SALE PIC 9(6).
05 PIC XX VALUE SPACES.
05 OUT-C-TAX-RATE PIC 9(2).
05 PIC XX VALUE SPACES.
05 OUT-C-TAX PIC 9(6).
77 EOF PIC X VALUE 'N'.
77 IND PIC 9 VALUE 1.
PROCEDURE DIVISION.
BEGIN.
OPEN INPUT TABLE-FILE
CUST-FILE
OUTPUT BILL-FILE.
PERFORM GET-TABLE-ENTRIES.
PERFORM GET-SAL-ENTRIES.
CLOSE TABLE-FILE
CUST-FILE
BILL-FILE.
STOP RUN.
GET-TABLE-ENTRIES.
MOVE 1 TO IND
PERFORM VARYING IND FROM 1 BY 1
UNTIL IND > 5
READ TABLE-FILE
AT END CONTINUE
NOT AT END PERFORM MOVE-TABLE-ENTRIES
END-READ
END-PERFORM.
MOVE-TABLE-ENTRIES.
MOVE ZIPCODE TO TEMP-ZIPCODE (IND)
MOVE TAX-RATE TO TEMP-TAX-RATE (IND).
GET-SAL-ENTRIES.
PERFORM UNTIL EOF = 'Y'
READ CUST-FILE
AT END MOVE 'Y' TO EOF
NOT AT END PERFORM MOVE-CUST-ENTRIES
END-READ
END-PERFORM.
MOVE-CUST-ENTRIES.
MOVE C-ID TO OUT-C-ID
MOVE C-ZIPCODE TO OUT-C-ZIPCODE
MOVE C-SALE TO OUT-C-SALE
MOVE 1 TO IND
PERFORM VARYING IND FROM 1 BY 1
UNTIL IND > 6 OR C-ZIPCODE = TEMP-ZIPCODE (IND)
END-PERFORM
IF IND < 6
MOVE TEMP-TAX-RATE (IND) TO OUT-C-TAX-RATE
COMPUTE OUT-C-TAX = (OUT-C-SALE * OUT-C-TAX-RATE) /100
ELSE
MOVE 0 TO OUT-C-TAX-RATE OUT-C-TAX
END-IF
WRITE BILL-REC FROM OUT-REC.
***********************
INPUT FILE 1 - CUST.DAT
***********************
0001 380001 100000
0002 380002 100000
0003 380003 100000
0004 380004 100000
0005 380005 100000
************************
INPUT FILE 2 - TABLE.IND
************************
380001 05
380002 10
380003 15
380004 20
380005 25
************************
OUTPUT FILE - BILL.RPT
************************
0001 380001 100000 05 005000
0002 380002 100000 10 010000
0003 380003 100000 15 015000
0004 380004 100000 20 020000
0005 380005 100000 25 025000