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