000100 IDENTIFICATION DIVISION. 00010000 . . 000200 PROGRAM-ID. PROGRAM5. 00020000 . . 000300 AUTHOR. JACK KIM. 00030000 . . 000310 00031000 . . 000320 ENVIRONMENT DIVISION. 00032000 . . 000330 INPUT-OUTPUT SECTION. 00033000 . . 000340 FILE-CONTROL. 00034000 . . 000350 SELECT INPUT-FILE ASSIGN TO INFILE. 00035000 . . 000351 SELECT SORT-FILE ASSIGN TO SORTFILE. 00035113 . . 000360 SELECT PRINT-FILE ASSIGN TO SYSPRINT. 00036000 . . 000370 00037000 . . 000380 DATA DIVISION. 00038000 . . 000390 FILE SECTION. 00039000 . . 000400 FD INPUT-FILE 00040000 . . 000500 RECORDING MODE V. 00050015 . . 000600 01 INPUT-REC PIC X(129). 00060015 . . 000700 FD PRINT-FILE 00070000 . . 000800 RECORDING MODE V 00080017 . . 000900 LABEL RECORDS ARE OMITTED. 00090000 . . 000910 01 PRINT-REC PIC X(129). 00091015 . . 000911 SD SORT-FILE. 00091103 . . 000912 01 SORT-REC. 00091200 . . 000913 03 SID PIC 9(3). 00091300 . . 000914 03 SLAST PIC X(15). 00091400 . . 000915 03 SFIRST PIC X(10). 00091501 . . 000916 03 FILLER PIC X(101). 00091615 . . 000920 00092000 . . 000930 WORKING-STORAGE SECTION. 00093000 . . 000940 01 HEAD1. 00094000 . . 000950 03 H1-YR PIC 9(2). 00095000 . . 000960 03 PIC X(1) VALUE '/'. 00096000 . . 000970 03 H1-MON PIC 9(2). 00097000 . . 000980 03 PIC X(1) VALUE '/'. 00098000 . . 000990 03 H1-DAY PIC 9(2). 00099000 . . 000991 03 PIC X(38) VALUE SPACES. 00099100 . . 000992 03 PIC X(13) VALUE 'LAST PGM, INC'. 00099200 . . 000993 03 PIC X(42) VALUE SPACES. 00099300 . . 000994 03 PIC X(4) VALUE 'PAGE'. 00099400 . . 000995 03 PIC X(1) VALUE SPACES. 00099500 . . 000996 03 H1-PAGE PIC ZZ9. 00099600 . . 000997 01 HEAD2. 00099700 . . 000998 03 PIC X(3) VALUE SPACES. 00099800 . . 000999 03 PIC X(6) VALUE 'EMP ID'. 00099900 . . 001000 03 PIC X(15) VALUE SPACES. 00100000 . . 001010 03 PIC X(4) VALUE 'NAME'. 00101000 . 001020 03 PIC X(30) VALUE SPACES. 00102000 . . 001030 03 PIC X(5) VALUE 'TITLE'. 00103000 . . 001040 03 PIC X(17) VALUE SPACES. 00104000 . . 001050 03 PIC X(4) VALUE 'RATE'. 00105000 . . 001060 03 PIC X(9) VALUE SPACES. 00106000 . . 001070 03 PIC X(5) VALUE 'TOTAL'. 00107000 . . 001080 03 PIC X(8) VALUE SPACES. 00108000 . . 001090 03 PIC X(6) VALUE 'STATUS'. 00109000 . . 001091 01 DETAIL1. 00109100 . . 001092 03 PIC X(3) VALUE SPACES. 00109200 . . 001093 03 D1-ID1 PIC 9(1). 00109300 . . 001094 03 PIC X(1) VALUE '-'. 00109400 . . 001095 03 D1-ID2 PIC 9(6). 00109500 . . 001096 03 PIC X(4) VALUE SPACES. 00109600 . . 001097 03 D1-LAST PIC X(15). 00109700 . . 001098 03 PIC X(1) VALUE ','. 00109800 . . 001099 03 PIC X(1) VALUE SPACES. 00109900 . . 001100 03 D1-FIRST PIC X(15). 00110000 . . 001110 03 PIC X(6) VALUE SPACES. 00111000 . . 001120 03 D1-TITLE PIC X(17). 00112000 . . 001130 03 PIC X(7) VALUE SPACES. 00113000 . . 001140 03 D1-RATE PIC Z,ZZ9.99. 00114000 . . 001150 03 PIC X(5) VALUE SPACES. 00115000 . . 001160 03 D1-TOTAL PIC $$,$99.99. 00116000 . . 001170 03 PIC X(9) VALUE SPACES. 00117000 . . 001180 03 D1-ST PIC X(1). 00118000 . . 001190 01 FOOT1. 00119000 . . 001191 03 PIC X(16) VALUE 'SUBTOTAL HOURLY:'. 00119100 . . 001192 03 PIC X(70) VALUE SPACES. 00119200 . . 001193 03 F1-TOTAL PIC $$$$,$99.99. 00119300 . . 001194 01 FOOT2. 00119400 . . 001195 03 PIC X(18) VALUE 'SUBTOTAL SALARIED:'. 00119500 . . 001196 03 PIC X(68) VALUE SPACES. 00119600 . . 001197 03 F2-TOTAL PIC $$$$,$99.99. 00119700 . . 001198 01 FOOT3. 00119800 . . 001199 03 PIC X(27) VALUE 'NUMBER OF HOURLY EMPLOYEES:'. 00119900 . . 001200 03 PIC X(19) VALUE SPACES. 00120000 . . 001210 03 F3-HTOTAL PIC ZZZ9. 00121000 . . 001220 03 PIC X(4) VALUE SPACES. 00122000 . . 001230 03 PIC X(24) VALUE 'TOTAL DEDUCTIONS HOURLY:'. 00123000 . . 001240 03 PIC X(7) VALUE SPACES. 00124000 . . 001250 03 F3-TOTALDED PIC $$$$,999.99. 00125000 . . 001260 01 FOOT4. 00126000 . . 001270 03 PIC X(27) VALUE 'NUMBER OF SALARY EMPLOYEES:'. 00127000 . . 001280 03 PIC X(19) VALUE SPACES. 00128000 . . 001290 03 F4-STOTAL PIC ZZZ9. 00129000 . 001300 03 PIC X(4) VALUE SPACES. 00130000 . . 001310 03 PIC X(24) VALUE 'TOTAL DEDUCTIONS HOURLY:'. 00131000 . . 001320 03 PIC X(7) VALUE SPACES. 00132000 . . 001330 03 F4-TOTALDED PIC $$$$,999.99. 00133000 . . 001340 01 FOOT5. 00134000 . . 001350 03 PIC X(32) VALUE 'NUMBER OF EMPLOYEE RECORDS READ:'. 00135000 . . 001360 03 PIC X(14) VALUE SPACES. 00136000 . . 001370 03 F5-TOTALREC PIC ZZZ9. 00137000 . . 001380 03 PIC X(4) VALUE SPACES. 00138000 . . 001381 03 PIC X(23) VALUE 'GRAND TOTAL DEDUCTIONS:'. 00138100 . . 001382 03 PIC X(8) VALUE SPACES. 00138200 . . 001383 03 F5-GRAND PIC $$$$,999.99. 00138300 . . 001385 01 INPUT-DATA. 00138500 . . 001386 03 I-ID1 PIC 9(1). 00138600 . . 001387 03 I-ID2 PIC 9(2). 00138700 . . 001388 03 I-LAST PIC X(15). 00138800 . . 001389 03 I-FIRST PIC X(10). 00138900 . . 001390 03 PIC X(2). 00139000 . . 001391 03 I-TITLE PIC X(12). 00139100 . . 001392 03 PIC X(36). 00139200 . . 001393 03 I-RATE PIC 9(4)V99. 00139300 . . 001394 03 I-ST PIC X(1). 00139400 . . 001395 03 I-DEDUCT OCCURS 5 TIMES PIC 9(3)V99. 00139500 . . 001396 01 SORT-DATA. 00139600 . . 001397 03 S-ID1 PIC 9(1). 00139701 . . 001398 03 S-ID2 PIC 9(2). 00139800 . . 001399 03 S-LAST PIC X(15). 00139900 . . 001400 03 S-FIRST PIC X(10). 00140000 . . 001401 03 PIC X(2). 00140100 . . 001402 03 S-TITLE PIC X(12). 00140200 . . 001403 03 PIC X(36). 00140300 . . 001404 03 S-RATE PIC 9(4)V99. 00140400 . . 001405 03 S-ST PIC X(1). 00140500 . . 001406 03 S-TOTAL PIC $$,$99.99. 00140601 . . 001407 01 MISC-DATA. 00140700 . . 001408 03 EOF-I PIC X VALUE SPACES. 00140800 . . 001409 03 EOF-S PIC X VALUE SPACES. 00140900 . . 001410 03 PAGE-COUNT PIC 9(1) VALUE 1. 00141000 . . 001411 03 LINE-COUNT PIC 9(2) VALUE 0. 00141100 . . 001412 03 MAX-LINES PIC 9(1) VALUE 0. 00141200 . . 001413 03 CURRENT-DATE. 00141300 . . 001414 05 CUR-YR PIC 9(2). 00141400 . . 001415 05 CUR-MON PIC 9(2). 00141500 . . 001416 05 CUR-DAY PIC 9(2). 00141600 . . 001417 03 SUB PIC 9(6). 00141700 . . 001418 01 EMP-DATA. 00141800 . 001419 03 RECORD-COUNT PIC 9(3) VALUE 0. 00141900 . . 001420 03 S-COUNT PIC 9(3) VALUE 0. 00142000 . . 001421 03 H-COUNT PIC 9(3) VALUE 0. 00142100 . . 001422 03 TOTAL PIC 9(4)V99. 00142200 . . 001423 03 HOURSUBTOTAL PIC 9(6)V99. 00142300 . . 001424 03 SALSUBTOTAL PIC 9(6)V99. 00142400 . . 001425 03 HOURTOTDED PIC 9(6)V99. 00142500 . . 001426 03 SALTOTDED PIC 9(6)V99. 00142600 . . 001427 03 GRANDTOTDED PIC 9(6)V99. 00142700 . . 001428 00142800 . . 001429 PROCEDURE DIVISION. 00142900 . . 001430 000-SORT SECTION. 00143018 . . 001432 000-MAINLINE. 00143200 . . 001433 ACCEPT CURRENT-DATE FROM DATE. 00143304 . . 001434 SORT SORT-FILE 00143400 . . 001435 ASCENDING KEY SLAST 00143521 . . 001437 INPUT PROCEDURE IS 003-INPUT THRU 003-EXIT 00143721 . . 001438 OUTPUT PROCEDURE IS 020-OUTPUT THRU 020-EXIT. 00143821 . . 001439 STOP RUN. 00143900 . . 001440 003-INPUT SECTION. 00144000 . . 001442 OPEN INPUT INPUT-FILE. 00144206 . . 001444 PERFORM 1000-READ-INPUT. 00144400 . . 001460 PERFORM 3000-LOOP 00146000 . . 001470 UNTIL EOF-I = 1. 00147000 . . 001500 CLOSE INPUT-FILE. 00150001 . . 001700 003-EXIT. 00170016 . . 001710 EXIT. 00171016 . . 001730 020-OUTPUT SECTION. 00173000 . . 001750 OPEN OUTPUT PRINT-FILE. 00175006 . . 001760 PERFORM 2000-PRINT-HEAD. 00176000 . . 001770 PERFORM 6000-RETURN-SORT-FILE. 00177000 . . 001780 PERFORM 3400-PROCESS-LOOP 00178000 . . 001790 UNTIL EOF-S = 1. 00179001 . . 001791 CLOSE PRINT-FILE. 00179105 . . 001793 020-EXIT. 00179316 . . 001794 EXIT. 00179416 . . 001800 1000-READ-INPUT. 00180000 . . 001900 READ INPUT-FILE INTO INPUT-DATA 00190000 . . 002000 AT END MOVE 1 TO EOF-I. 00200000 . . 002100 2000-PRINT-HEAD. 00210000 . . 002200 MOVE CUR-YR TO H1-YR. 00220000 . . 002300 MOVE CUR-MON TO H1-MON. 00230000 . . 002400 MOVE CUR-DAY TO H1-DAY. 00240000 . . 002500 MOVE PAGE-COUNT TO H1-PAGE. 00250000 . . 002600 WRITE PRINT-REC FROM HEAD1 00260000 . . 002700 BEFORE ADVANCING 1 LINE. 00270000 . 002800 WRITE PRINT-REC FROM HEAD2 00280000 . . 002900 BEFORE ADVANCING 1 LINE. 00290000 . . 003000 MOVE SPACES TO PRINT-REC. 00300000 . . 003100 WRITE PRINT-REC. 00310000 . . 003200 3000-LOOP. 00320000 . . 003300 ADD 1 TO RECORD-COUNT. 00330000 . . 003400 PERFORM 5000-INPUT-LOOP. 00340011 . . 003500 PERFORM 1000-READ-INPUT. 00350000 . . 003600 IF(I-ST = "S") 00360000 . . 003700 PERFORM 3100-SALARY-COUNT 00370000 . . 003800 ELSE 00380000 . . 003900 PERFORM 3200-HOURLY-COUNT 00390000 . . 004000 END-IF. 00400000 . . 004100 3100-SALARY-COUNT. 00410000 . . 004200 ADD 1 TO S-COUNT. 00420000 . . 004300 ADD TOTAL TO SALSUBTOTAL. 00430000 . . 004400 MOVE S-COUNT TO F4-STOTAL. 00440000 . . 004500 MOVE SALSUBTOTAL TO F2-TOTAL. 00450000 . . 004600 3200-HOURLY-COUNT. 00460000 . . 004700 ADD 1 TO H-COUNT. 00470000 . . 004800 ADD TOTAL TO HOURSUBTOTAL. 00480000 . . 004900 MOVE H-COUNT TO F3-HTOTAL. 00490000 . . 004910 MOVE HOURSUBTOTAL TO F1-TOTAL. 00491000 . . 004920 3300-CALC-GRAND-TOTAL. 00492000 . . 004921 ADD HOURSUBTOTAL TO HOURTOTDED. 00492100 . . 004922 MOVE HOURTOTDED TO F3-TOTALDED. 00492200 . . 004923 ADD HOURTOTDED TO GRANDTOTDED. 00492300 . . 004924 ADD SALSUBTOTAL TO SALTOTDED. 00492400 . . 004925 MOVE SALTOTDED TO F4-TOTALDED. 00492500 . . 004926 ADD SALTOTDED TO GRANDTOTDED. 00492600 . . 004927 3400-PROCESS-LOOP. 00492700 . . 004928 IF LINE-COUNT = 10 00492809 . . 004929 PERFORM 2000-PRINT-HEAD. 00492912 . . 004932 MOVE S-ID1 TO D1-ID1. 00493200 . . 004933 MOVE S-ID2 TO D1-ID2. 00493300 . . 004934 MOVE S-LAST TO D1-LAST. 00493400 . . 004935 MOVE S-FIRST TO D1-FIRST. 00493500 . . 004936 MOVE S-TITLE TO D1-TITLE. 00493600 . . 004937 MOVE S-RATE TO D1-RATE. 00493700 . . 004938 MOVE S-TOTAL TO D1-TOTAL. 00493800 . . 004939 MOVE S-ST TO D1-ST. 00493900 . . 004940 WRITE PRINT-REC FROM DETAIL1 00494000 . . 004941 BEFORE ADVANCING 1 LINE. 00494100 . . 004942 ADD 1 TO LINE-COUNT. 00494200 . . 004943 PERFORM 6000-RETURN-SORT-FILE. 00494300 . . 004944 4000-PRINT-FOOT-SUB. 00494400 . 004945 WRITE PRINT-REC FROM FOOT1. 00494500 . . 004946 WRITE PRINT-REC FROM FOOT2 00494600 . . 004947 BEFORE ADVANCING 1 LINE. 00494700 . . 004948 4100-PRINT-FOOT-LAST-PAGE. 00494800 . . 004949 MOVE RECORD-COUNT TO F5-TOTALREC. 00494900 . . 004950 PERFORM 3300-CALC-GRAND-TOTAL. 00495000 . . 004951 MOVE GRANDTOTDED TO F5-GRAND. 00495100 . . 004952 WRITE PRINT-REC FROM FOOT3. 00495200 . . 004953 WRITE PRINT-REC FROM FOOT4 00495300 . . 004954 BEFORE ADVANCING 1 LINE. 00495400 . . 004955 WRITE PRINT-REC FROM FOOT5 00495500 . . 004956 BEFORE ADVANCING 1 LINE. 00495600 . . 004957 5000-INPUT-LOOP. 00495711 . . 004958 MOVE I-ID1 TO S-ID1. 00495800 . . 004960 MOVE I-ID2 TO S-ID2. 00496000 . . 004970 MOVE I-LAST TO S-LAST. 00497000 . . 004980 MOVE I-FIRST TO S-FIRST. 00498000 . . 004990 MOVE I-TITLE TO S-TITLE. 00499000 . . 005000 MOVE I-RATE TO S-RATE. 00500000 . . 005100 PERFORM 5100-ADD-DEDUCT-TOTAL 00510000 . . 005200 VARYING SUB FROM 1 BY 1 00520000 . . 005300 UNTIL SUB > 5. 00530000 . . 005400 MOVE TOTAL TO S-TOTAL. 00540000 . . 005500 MOVE I-ST TO S-ST. 00550000 . . 005600 RELEASE SORT-REC FROM SORT-DATA. 00560011 . . 005800 5100-ADD-DEDUCT-TOTAL. 00580000 . . 005900 ADD I-DEDUCT(SUB) TO TOTAL. 00590000 . . 006000 6000-RETURN-SORT-FILE. 00600000 . . 006100 RETURN SORT-FILE INTO SORT-DATA 00610000 . . 006200 AT END MOVE 1 TO EOF-S. 00620000 .