000100 IDENTIFICATION DIVISION. 00010000 000200 PROGRAM-ID. NUMBER4. 00020000 000300 AUTHOR. SAMUELS. 00030000 000400************************************************************ 00040000 000500* THIS PROGRAM DEMONSTRATES A CONTROL BREAK. * 00050000 000800************************************************************ 00080000 000900 ENVIRONMENT DIVISION. 00090000 001000 INPUT-OUTPUT SECTION. 00100000 001100 FILE-CONTROL. 00110000 001200 SELECT INFILE ASSIGN TO INSTUFF. 00120000 001300 SELECT OUTFILE ASSIGN TO OUTSTUFF. 00130000 001400 DATA DIVISION. 00140000 001500 FILE SECTION. 00150000 001600 FD INFILE 001700 DATA RECORD IS IN-REC. 001800 01 IN-REC PIC X(80). 001900 FD OUTFILE 00170000 002000 DATA RECORD IS OUT-REC. 00220000 002100 01 OUT-REC PIC X(80). 00230000 002400 WORKING-STORAGE SECTION. 00240000 002500 01 EOF-SWITCH PIC XXX VALUE 'NO '. 00250000 002700 01 TEMP-DEPT PIC XX. 00270000 002800 01 WORK-REC. 00280000 002900 05 NAME PIC X(20). 00290000 003000 05 SALARY PIC 999V99. 00300000 003100 05 PIC X. 00310000 003200 05 BONUS PIC 999V99. 00320000 003300 05 PIC X(9). 00330000 003400 05 DEPT-IN PIC XX. 00340000 003500 05 PIC X(38). 00350000 003600 01 DETAIL-LINE. 00360000 003700 05 PIC X. 00370000 003800 05 NAME-OUT PIC X(20). 00380000 003900 05 PIC X(10) VALUE SPACES. 00390000 004000 05 NEW-GROSS PIC $$,$$$.99. 00400000 004100 05 PIC X(5) VALUE SPACES. 00410000 004200 05 DEPT-NAME-OUT PIC X(15). 00420000 004300 01 HEADER-1. 00430000 004400 05 PIC X. 00440000 004500 05 PIC X(79) VALUE ALL '*'. 00450000 004600 01 HEADER-2. 00460000 004700 05 PIC X. 00470000 004800 05 PIC X(4) VALUE 'NAME'. 00480000 004900 05 PIC X(26) VALUE SPACES. 00490000 005000 05 PIC X(5) VALUE 'GROSS'. 00500000 005100 05 PIC X(20) VALUE SPACES. 00510000 005200 05 MONTH-OUT PIC 99. 00520000 005300 05 PIC X VALUE '/'. 00530000 005400 05 DAY-OUT PIC 99. 00540000 005500 05 PIC X VALUE '/'. 00550000 005600 05 YEAR-OUT PIC 99. 00560000 005700 01 TEMP-GROSS PIC 9999V99. 00570000 005800 01 XCOUNT PIC 99 VALUE 0. 00580000 005900 01 WS-DATE. 00590000 006000 05 WS-YEAR PIC 99. 00600000 006100 05 WS-MONTH PIC 99. 00610000 006200 05 WS-DAY PIC 99. 00620000 006300*********************************************************** 00630000 006400* THIS DATA AREA FOR A CONTROL BREAK * 00640000 006500*********************************************************** 00650000 006600 01 TEMP-DEPT-TOTAL PIC 9(5)V99 VALUE 0. 00660000 006700 01 DEPARTMENT-LINE. 00670000 006800 05 PIC X(5) VALUE SPACES. 00680000 006900 05 PIC X(50) VALUE 00690000 007000 'TOTAL PAYROLL FOR DEPARTMENT '. 00700000 007100 05 DEPT-OUT PIC XX. 00710000 007200 05 PIC XXX VALUE ' = '. 00720000 007300 05 DEPT-TOTAL-OUT PIC $$$,$$$.99. 00730000 007400*********************************************************** 00740000 007500* THIS DATA AREA FOR A FINAL BREAK * 00750000 007600*********************************************************** 00760000 007700 01 TEMP-GRAND-TOTAL PIC 9(5)V99 VALUE 0. 00770000 007800 01 FINAL-LINE. 00780000 007900 05 PIC X(5) VALUE SPACES. 00790000 008000 05 PIC X(50) VALUE 00800000 008100 'TOTAL PAYROLL FOR ALL DEPARTMENTS = '. 00810000 008200 05 GRAND-TOTAL-OUT PIC $$$,$$$.99. 00820000 008300 PROCEDURE DIVISION. 00830000 008400 000-MAINLINE. 00840000 008500 PERFORM 100-BEGIN. 00850000 008600 PERFORM 200-LOOPER UNTIL EOF-SWITCH = 'YES'. 00860000 008700 PERFORM 300-DEPT-BREAK-ROUTINE. 00870010 008800 PERFORM 999-ENDER. 00880000 008900 100-BEGIN. 00890000 009000 OPEN INPUT INFILE OUTPUT OUTFILE. 00900000 009100 ACCEPT WS-DATE FROM DATE. 00910000 009200 MOVE WS-YEAR TO YEAR-OUT. 00920000 009300 MOVE WS-MONTH TO MONTH-OUT. 00930000 009400 MOVE WS-DAY TO DAY-OUT. 00940000 009500 PERFORM 400-HEADER-ROUTINE. 00950009 009600 READ INFILE INTO WORK-REC 00960000 009700 AT END MOVE 'YES' TO EOF-SWITCH 00970000 009800 END-READ. 00980000 009900 MOVE DEPT-IN TO TEMP-DEPT. 00990000 010000 200-LOOPER. 01000000 010100 IF DEPT-IN NOT = TEMP-DEPT 01010000 010200 PERFORM 300-DEPT-BREAK-ROUTINE 01020000 010300 END-IF. 01030000 010400 IF XCOUNT > 60 01040000 010500 PERFORM 400-HEADER-ROUTINE 01050000 010600 END-IF. 01060000 010700 MOVE NAME TO NAME-OUT. 01070000 010800 EVALUATE DEPT-IN 01080000 010900 WHEN 15 MOVE 'PAYROLL' TO DEPT-NAME-OUT 01090000 011000 WHEN 22 MOVE 'MAINTENANCE' TO DEPT-NAME-OUT 01100000 011100 WHEN 35 MOVE 'SYSTEMS' TO DEPT-NAME-OUT 01110000 011200 WHEN 44 MOVE 'AUDITING' TO DEPT-NAME-OUT 01120000 011300 WHEN 57 MOVE 'SALES' TO DEPT-NAME-OUT 01130000 011400 WHEN OTHER MOVE 'NO DEPARTMENT' TO DEPT-NAME-OUT 01140010 011500 END-EVALUATE. 01150010 011600 COMPUTE TEMP-GROSS = SALARY + BONUS. 01160000 011700 ADD TEMP-GROSS TO TEMP-DEPT-TOTAL. 01170000 011800 MOVE TEMP-GROSS TO NEW-GROSS. 01180000 011900 WRITE OUT-REC FROM DETAIL-LINE AFTER 2. 01190000 012000 ADD 2 TO XCOUNT. 01200000 012100 READ INFILE INTO WORK-REC 01210000 012200 AT END MOVE 'YES' TO EOF-SWITCH 01220000 012300 END-READ. 01230000 012400 300-DEPT-BREAK-ROUTINE. 01240000 012600 MOVE TEMP-DEPT-TOTAL TO DEPT-TOTAL-OUT. 01260000 012700 MOVE TEMP-DEPT TO DEPT-OUT. 01270000 012800 WRITE OUT-REC FROM DEPARTMENT-LINE AFTER 2. 01280000 012900 ADD TEMP-DEPT-TOTAL TO TEMP-GRAND-TOTAL. 01290000 013000 ADD 2 TO XCOUNT. 01300000 013100 MOVE 0 TO TEMP-DEPT-TOTAL. 01310000 013200 MOVE DEPT-IN TO TEMP-DEPT. 01320000 013300 400-HEADER-ROUTINE. 01330000 013400 WRITE OUT-REC FROM HEADER-1 AFTER PAGE. 01340000 013500 WRITE OUT-REC FROM HEADER-2 AFTER 1. 01350000 013600 WRITE OUT-REC FROM HEADER-1 AFTER 1. 01360000 013700 MOVE 3 TO XCOUNT. 01370000 013800 999-ENDER. 01380000 013900 MOVE TEMP-GRAND-TOTAL TO GRAND-TOTAL-OUT. 01390000 014000 WRITE OUT-REC FROM FINAL-LINE AFTER 5. 01400000 014100 CLOSE INFILE OUTFILE. 01410000 014200 STOP RUN. 01420000 INPUT DATA: STEVE SAMUELS 30000 20000 15 JOE SMITH 25000 04000 15 PETER RABBIT 50000 40000 15 RAMSEY LEWIS 30000 54000 22 SCREAMIN JAY 90000 05000 22 MARY MCPARTLAND 35000 30000 22 JOE JONES 22222 11111 22 ANN MARGARET 25000 70000 35 OSCAR PETERSON 30000 30000 55 C.U. LATER 43000 20300 55 JACKIE ROBINSON 24521 29021 57 SHELLY MANN 00400 20000 57 ANTONIO JOBIM 20000 10000 57 DAVID SAMUELS 25000 06000 57 MILES DAVIS 40000 00000 57 OUTPUT: ******************************************************************************* NAME GROSS 01/01/01 ******************************************************************************* STEVE SAMUELS $500.00 PAYROLL JOE SMITH $290.00 PAYROLL PETER RABBIT $900.00 PAYROLL TOTAL PAYROLL FOR DEPARTMENT 15 = $1,690.00 RAMSEY LEWIS $840.00 MAINTENANCE SCREAMIN JAY $950.00 MAINTENANCE MARY MCPARTLAND $650.00 MAINTENANCE JOE JONES $333.33 MAINTENANCE TOTAL PAYROLL FOR DEPARTMENT 22 = $2,773.33 ANN MARGARET $950.00 SYSTEMS TOTAL PAYROLL FOR DEPARTMENT 35 = $950.00 OSCAR PETERSON $600.00 NO DEPARTMENT C.U. LATER $633.00 NO DEPARTMENT TOTAL PAYROLL FOR DEPARTMENT 55 = $1,233.00 JACKIE ROBINSON $535.42 SALES SHELLY MANN $204.00 SALES ANTONIO JOBIM $300.00 SALES DAVID SAMUELS $310.00 SALES MILES DAVIS $400.00 SALES TOTAL PAYROLL FOR DEPARTMENT 57 = $1,749.42 TOTAL PAYROLL FOR ALL DEPARTMENTS = $8,395.75