INPUT
DATA FILE (PAY1.DAT):
Actually COBOL stores it as one long string of data, I went in and hit enter after each record to make it look more like a readable list for you to look at.
1111Susan Costa F0234540
2222David Trask P0345650
3333Richard
Wilson C1000010
4444Ann Smith C1000012
5555June Bradford P0450560
6666James Mason F0300035
7777Jessica
Bradley B0277545
8888Kevin
Johnson F0397537
9999Lucy
Anderson P0250050
PROGRAM:
IDENTIFICATION DIVISION.
PROGRAM-ID. PAYRPT.
AUTHOR. GROCER
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PAY-FILE
ASSIGN TO
"E:\COBOLPROGS\PAY1.DAT".
SELECT PAY-REPORT
ASSIGN TO PRINTER.
DATA DIVISION.
FILE SECTION.
FD
PAY-FILE
DATA RECORD IS PAY-REC.
01
PAY-REC.
05
PAY-ID PIC 9999.
05
PAY-NAME PIC X(20).
05
PAY-TYPE PIC X.
05
PAYHR PIC 999V99.
05
HOURS PIC 99.
FD
PAY-REPORT
DATA RECORD IS PAY-LINE.
01
PAY-LINE.
05
FILLER PIC X.
05
PAY-ID-PR PIC 9999.
05
FILLER PIC X(5).
05
PAY-NAME-PR PIC X(20).
05
FILLER PIC X(5).
05
PAY-TYPE-PR PIC X.
05
FILLER PIC X(10).
05
PAY-PR PIC
$ZZ,ZZZ.99.
05
FILLER PIC X(24).
WORKING-STORAGE SECTION.
01
WORK-AREA.
05
BASEPAY PIC 9(5)V99 VALUE 0.
05
OVTPAY PIC
9(5)V99 VALUE 0.
05
PAY-WS PIC
9(5)V99 VALUE 0.
01
INDICATORS.
05
EOF-IND PIC XXX VALUE "NO ".
01
PAGE-HDR.
05 FILLER PIC X(33) VALUE SPACES.
05
FILLER PIC X(14)
VALUE
"PAYROLL REPORT".
05
FILLER PIC
X(33) VALUE SPACES.
01
COLUMN-HDR.
05 FILLER PIC X(5) VALUE " ID #".
05
FILLER PIC
X(5) VALUE SPACES.
05
FILLER PIC
X(4) VALUE "NAME".
05
FILLER PIC
X(21) VALUE SPACES.
05 FILLER PIC X(4) VALUE "TYPE".
05
FILLER PIC
X(14) VALUE SPACES.
05
FILLER PIC XXX VALUE "PAY".
05
FILLER PIC
X(24) VALUE SPACES.
PROCEDURE DIVISION.
MAINLINE.
PERFORM A-100-HOUSEKEEPING.
PERFORM B-100-PROCESS.
PERFORM C-100-WRAPUP.
STOP RUN.
A-100-HOUSEKEEPING.
OPEN INPUT PAY-FILE
OUTPUT PAY-REPORT.
WRITE PAY-LINE FROM PAGE-HDR
AFTER ADVANCING PAGE.
WRITE PAY-LINE FROM COLUMN-HDR
AFTER ADVANCING 2 LINES.
MOVE SPACES TO PAY-LINE.
WRITE PAY-LINE
AFTER ADVANCING 1 LINES.
B-100-PROCESS.
READ PAY-FILE
AT END
MOVE "YES" TO
EOF-IND.
PERFORM B-200-LOOP
UNTIL EOF-IND = "YES".
B-200-LOOP.
IF HOURS > 40
COMPUTE BASEPAY = 40 * PAYHR
COMPUTE OVTPAY = (HOURS - 40) *
1.5 * PAYHR
COMPUTE PAY-WS = BASEPAY +
OVTPAY
ELSE
COMPUTE PAY-WS = HOURS * PAYHR
END-IF
MOVE PAY-ID TO PAY-ID-PR.
MOVE PAY-NAME TO PAY-NAME-PR.
MOVE PAY-TYPE TO PAY-TYPE-PR.
MOVE PAY-WS TO PAY-PR.
WRITE PAY-LINE
AFTER ADVANCING 1 LINES.
READ PAY-FILE
AT END
MOVE "YES" TO
EOF-IND.
C-100-WRAPUP.
CLOSE PAY-FILE
PAY-REPORT.
REPORT
THAT WAS PRODUCED:
PAYROLL
REPORT
ID #
NAME
TYPE PAY
1111
Susan Costa F $
938.00
2222
David Trask P $ 1,900.80
3333
Richard Wilson C $ 1,000.00
4444
Ann Smith C $ 1,200.00
5555
June Bradford P $ 3,153.50
6666
James Mason F $ 1,050.00
7777
Jessica Bradley B $ 1,318.12
8888
Kevin Johnson F $ 1,470.75
9999
Lucy Anderson P $ 1,375.00