  0010 IDENTIFICATION DIVISION.
  0015 PROGRAM-ID.  PAYROLL-FILE.
  0020 ENVIRONMENT DIVISION.
  0025 CONFIGURATION SECTION.
  0030 SOURCE-COMPUTER.  IBM-360.
  0035 OBJECT-COMPUTER.  IBM-360.
  0040 INPUT-OUTPUT SECTION.
  0045 FILE-CONTROL.
  0050     SELECT PAYROLL-IN ASSIGN TO UT-S-SYSIN.
  0055     SELECT PAY-OUT ASSIGN TO UT-S-SYSPRINT.
  0060 DATA DIVISION.
  0065 FILE SECTION.
  0070 FD  PAYROLL-IN LABEL RECORDS ARE STANDARD.
  0075 01  EMPLOYEE-RECORD.
  0076     05 NAME        PIC X(16).
  0080     05 PLAN        PIC X.
  0085     05 HOURS       PIC 99V99.
  0090     05 RATE        PIC 99V99.
  0100 FD  PAY-OUT LABEL RECORDS ARE OMITTED.
  0105 01  PRINT-LINE            PIC X(132). 
  0110 WORKING-STORAGE SECTION.
  0115 01  ARE-THERE-MORE-RECORDS  PICTURE XXX VALUE 'YES'.
  0120 01  CALCULOS.
  0125     05 GROSS              PIC 999999V99   VALUE 0.
  0130     05 FEDERALWITH        PIC 999999V99   VALUE 0.
  0135     05 FICA               PIC 9999V99     VALUE 0.
  0140     05 INSURANCE          PIC 9999V99     VALUE 0.
  0145     05 NETPAY             PIC 999999V99   VALUE 0.
  0150     05 TOTALGROSS         PIC 9999999V99  VALUE 0.
  0155     05 TOTALFICA          PIC 99999V99    VALUE 0.
  0160     05 TOTALINSUR         PIC 99999V99    VALUE 0.
  0165     05 TOTALNET           PIC 9999999V99  VALUE 0.
  0170 01  HEAD-1.
  0175     05 FILLER     PIC X(50) VALUE SPACES.
  0180     05 FILLER     PIC X(38) VALUE 'HARDWORKERS OF AMERICA AS OF MM/DD/YY'.
  0185     05 FILLER     PIC X(35) VALUE SPACES.
  0190     05 FILLER     PIC X(7) VALUE 'PAGE Z9'.
  0195     05 FILLER     PIC X(2) VALUE SPACES.
  0200 01  HEAD-2.
  0205     05 FILLER     PIC X(13) VALUE SPACES.
  0210     05 FILLER     PIX X(4) VALUE 'NAME'.
  0215     05 FILLER     PIC X(25) VALUE SPACES.
  0220     05 FILLER     PIC X(9) VALUE 'GROSS PAY'.
  0225     05 FILLER     PIC X(15) VALUE SPACES.
  0230     05 FILLER     PIC X(5) VALUE 'TAXES'.
  0235     05 FILLER     PIC X(13) VALUE SPACES.
  0240     05 FILLER     PIC X(9) VALUE 'INSURANCE'.
  0245     05 FILLER     PIC X(14) VALUE SPACES.
  0250     05 FILLER     PIC X(7) VALUE 'NET PAY'.
  0255     05 FILLER     PIC X(18) VALUE SPACES.
  0260 01  DETAIL-LINE.
  0265     05 FILLER     PIC X(13) VALUE SPACES.
  0270     05 NAME-O     PIC X(16).
  0275     05 FILLER     PIC X(13) VALUE SPACES.
  0290     05 GROSS-O    PIC $$$,$$9.99.
  0295     05 FILLER     PIC X(13) VALUE SPACES.
  0300     05 FICA-O     PIC $$$9.99.
  0305     05 FILLER     PIC X(13) VALUE SPACES.
  0310     05 INSUR-O    PIC $$$9.99.
  0315     05 FILLER     PIC X(13) VALUE SPACES.
  0320     05 NET-O      PIC $$$,$$9.99.
  0325     05 FILLER     PIC X(17) VALUE SPACES.
  0330 01  TOTALS.
  0335     05 FILLER     PIC X(41) VALUE SPACES.
  0340     05 TOTAL-GRO  PIC $$$$,$$9.99.
  0345     05 FILLER     PIC X(11) VALUE SPACES.
  0350     05 TOTAL-TAX  PIC $$,$$9.99.
  0355     05 FILLER     PIC X(11) VALUE SPACES.
  0360     05 TOTAL-INS  PIC $$,$$9.99.
  0365     05 FILLER     PIC X(12) VALUE SPACES.
  0370     05 TOTAL-NET  PIC $$$$,$$9.99.
  0375     05 FILLER     PIC X(17).
  0380 PROCEDURE DIVISION.
  0385 MAIN-MODULE.
  0390     OPEN INPUT PAYROLL-IN OUTPUT PAY-OUT.
  0395     PERFORM WRITE-HEADS.
  0400     READ PAYROLL-IN AT END MOVE 'NO ' TO ARE-THERE-MORE-RECORDS.
  0405     PERFORM WRITE-DETAIL UNTIL ARE-THERE-MORE-RECORDS = NO.
  0410     PERFORM WRITE-TOTALS.
  0415     CLOSE PAYROLL-IN PAY-OUT.
  0420     STOP RUN.
  0425 WRITE-HEADS.
           WRITE PRINT-LINE AFTER 1.
           MOVE HEAD-1 TO PRINT-LINE.
           WRITE PRINT-LINE AFTER 1.
           MOVE HEAD-2 TO PRINT-LINE.
           WRITE PRINT-LINE AFTER 1.
           MOVE SPACES TO PRINT-LINE.
           WRITE PRINT-LINE.
  0430 WRITE-DETAIL.
           IF HOURS > 40 THEN
                   COMPUTE GROSS = (HOURS * (RATE * 1.5)).
           ELSE
                   COMPUTE GROSS = RATE * HOURS.
           END-IF.
           IF GROSS > 600 THEN
                   COMPUTE FEDERALWITH = GROSS * .25.
           ELSE
           IF GROSS > 450 THEN
                   COMPUTE FEDERALWITH = GROSS * .23.
           ELSE
                   COMPUTE FEDERALWITH = GROSS * .18.
           END-IF.
                   COMPUTE FICA = GROSS * .062.
           IF PLAN = 'A' THEN
                   COMPUTE INSURANCE = GROSS - 5.00.
           END-IF.
           IF PLAN = 'B' THEN
                   COMPUTE INSURANCE = GROSS - 8.00.
           END-IF.
           IF PLAN = 'C' THEN
                   COMPUTE INSURANCE = GROSS - 10.00.
           ELSE
                   INSURANCE = 0.
           END-IF.
           COMPUTE NETPAY = GROSS - FEDERALWITH - INSURANCE - FICA
           MOVE NAME TO NAME-O.
           MOVE GROSS TO GROSS-O.
           MOVE FICA TO FICA-O.
           MOVE INSURANCE TO INSUR-O.
           MOVE NETPAY TO NET-O.
           MOVE DETAIL-LINE TO PRINT-LINE.
           WRITE PRINT-LINE AFTER 1.
           READ PAYROLL-IN AT END MOVE 'NO ' TO ARE-THERE-MORE-RECORDS.
  0435 WRITE-TOTALS.
           MOVE TOTALGROSS TO TOTAL-GRO.
           MOVE TOTALFICA TO TOTAL-TAX.
           MOVE TOTALINSUR TO TOTAL-INS.
           MOVE TOTALNET TO TOTAL-NET.
           MOVE TOTALS TO PRINT-LINE.
           WRITE PRINT-LINE AFTER 2.