  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). 
  0260 01  DETAIL-LINE.
           05 FILLER     PIC X(13).
           05 NAME-O     PIC X(16).
           05 FILLER     PIC X(13).
           05 GROSS-O    PIC $$$,$$9.99.
           05 FILLER     PIC X(13).
           05 FICA-O     PIC $$$9.99.
           05 FILLER     PIC X(13).
           05 INSUR-O    PIC $$$9.99.
           05 FILLER     PIC X(13).
           05 NET-O      PIC $$$,$$9.99.
           05 FILLER     PIC X(17).
  0330 01  TOTALS.
           05 FILLER     PIC X(41).
           05 TOTAL-GRO  PIC $$$$,$$9.99.
           05 FILLER     PIC X(11).
           05 TOTAL-TAX  PIC $$,$$9.99.
           05 FILLER     PIC X(11).
           05 TOTAL-INS  PIC $$,$$9.99.
           05 FILLER     PIC X(12).
           05 TOTAL-NET  PIC $$$$,$$9.99.
           05 FILLER     PIC X(17).
  0110 WORKING-STORAGE SECTION.
  0115 01  ARE-THERE-MORE-RECORDS  PICTURE XXX VALUE 'YES'.
  0170 01  HEADS-1.
           05 FILLER     PIC X(50).
           05 FILLER     PIC X(38) VALUE 'HARDWORKERS OF AMERICA AS OF MM/DD/YY'.
           05 FILLER     PIC X(35).
           05 FILLER     PIC X(7) VALUE 'PAGE Z9'.
           05 FILLER     PIC X(2).
  0200 01  HEADS-2.
           05 FILLER     PIC X(13).
           05 FILLER     PIX X(4) VALUE 'NAME'.
           05 FILLER     PIC X(25).
           05 FILLER     PIC X(9) VALUE 'GROSS PAY'.
           05 FILLER     PIC X(15).
           05 FILLER     PIC X(5) VALUE 'TAXES'.
           05 FILLER     PIC X(13).
           05 FILLER     PIC X(9) VALUE 'INSURANCE'.
           05 FILLER     PIC X(14).
           05 FILLER     PIC X(7) VALUE 'NET PAY'.
           05 FILLER     PIC X(18).
  0120 01  CALCULOS.
           05 GROSS              PIC 999999V99   VALUE 0.
           05 FEDERALWITH        PIC 999999V99   VALUE 0.
           05 FICA               PIC 9999V99     VALUE 0.
           05 INSURANCE          PIC 9999V99     VALUE 0.
           05 NETPAY             PIC 999999V99   VALUE 0.
           05 TOTALGROSS         PIC 9999999V99  VALUE 0.
           05 TOTALFICA          PIC 99999V99    VALUE 0.
           05 TOTALINSUR         PIC 99999V99    VALUE 0.
           05 TOTALNET           PIC 9999999V99  VALUE 0.
  0380 PROCEDURE DIVISION.
  0385 MAIN-MODULE.
  0390     OPEN INPUT PAYROLL-IN OUTPUT PAY-OUT.
           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 HEADS-1 TO PRINT-LINE.
           WRITE PRINT-LINE AFTER 1.
           MOVE HEADS-2 TO PRINT-LINE.
           WRITE PRINT-LINE AFTER 1.
           MOVE SPACES TO PRINT-LINE.
           WRITE PRINT-LINE.
  0430 WRITE-DETAIL.
  0435     IF HOURS > 40 THEN
                COMPUTE GROSS = {HOURS * (RATE * 1.5)}.
  0440     ELSE
                COMPUTE GROSS = RATE * HOURS.
  0445     END-IF.
  0450     IF GROSS > 600 THEN
                COMPUTE FEDERALWITH = GROSS * .25.
  0455     ELSE
  0460     IF GROSS > 450 THEN
                COMPUTE FEDERALWITH = GROSS * .23.
  0465     ELSE
                COMPUTE FEDERALWITH = GROSS * .18.
  0470     END-IF.
                COMPUTE FICA = GROSS * .062.
  0475     IF PLAN = 'A' THEN
                COMPUTE INSURANCE = GROSS - 5.00.
  0480     END-IF.
  0485     IF PLAN = 'B' THEN
                COMPUTE INSURANCE = GROSS - 8.00.
  0490     END-IF.
  0495     IF PLAN = 'C' THEN
                COMPUTE INSURANCE = GROSS - 10.00.
  0500     ELSE
                   INSURANCE = 0.
  0505     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.
           COMPUTE TOTALGROSS = TOTALGROSS + TOTAL-GRO.
           COMPUTE TOTALFICA = TOTALFICA + TOTAL-TAX.
           COMPUTE TOTALINSUR = TOTALINSUR + TOTAL-INS.
           COMPUTE TOTALNET = TOTALNET + TOTAL-NET.
           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.
