000100 IDENTIFICATION DIVISION. 00010000 . . 000200 PROGRAM-ID. PROGRAM1. 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 INPUT-FILE2 ASSIGN TO INFILE2. 00035108 . . 000352 SELECT INPUT-FILE3 ASSIGN TO INFILE3. 00035205 . . 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 F . 00050004 . . 000700 01 INPUT-REC PIC X(133). 00070009 . . 000710 FD INPUT-FILE2 00071008 . . 000800 RECORDING MODE F. 00080009 . . 000810 01 INPUT-REC2 PIC X(133). 00081009 . . 000811 FD INPUT-FILE3 00081108 . . 000812 RECORDING MODE F. 00081209 . . 000813 01 INPUT-REC3 PIC X(133). 00081309 . . 000900 FD PRINT-FILE 00090000 . . 001000 RECORDING MODE F 00100004 . . 001100 LABEL RECORDS ARE OMITTED. 00110000 . . 001200 01 PRINT-REC PIC X(133). 00120000 . . 001300 00130000 . . 001400 WORKING-STORAGE SECTION. 00140000 . . 001500 00150000 . . 001600 01 HEAD1. 00160000 . . 001601 03 PIC X(1) VALUE SPACES. 00160100 . . 001602 03 H1-YR PIC 9(2). 00160200 . . 001603 03 PIC X(1) VALUE '/'. 00160300 . . 001604 03 H1-MON PIC 9(2). 00160400 . . 001605 03 PIC X(1) VALUE '/'. 00160500 . . 001606 03 H1-DAY PIC 9(2). 00160600 . . 001607 03 PIC X(45) VALUE SPACES. 00160703 . . 001608 03 PIC X(13) VALUE 'Z SERIES, INC'. 00160804 . . 001609 03 PIC X(38) VALUE SPACES. 00160903 . . 001610 03 PIC X(4) VALUE 'PAGE'. 00161000 . . 001620 03 PIC X(1) VALUE SPACES. 00162000 . . 001630 03 H1-PAGE-CT PIC ZZ9. 00163000 . . 001640 01 HEAD2. 00164000 . . 001650 03 PIC X(4) VALUE SPACES. 00165003 . 001660 03 PIC X(6) VALUE 'EMP ID'. 00166000 . . 001670 03 PIC X(9) VALUE SPACES. 00167003 . . 001680 03 PIC X(3) VALUE 'SSN'. 00168000 . . 001690 03 PIC X(11) VALUE SPACES. 00169003 . . 001700 03 PIC X(4) VALUE 'LAST'. 00170003 . . 001800 03 PIC X(9) VALUE SPACES. 00180004 . . 001900 03 PIC X(4) VALUE 'NAME'. 00190003 . . 002000 03 PIC X(4) VALUE SPACES. 00200003 . . 002100 03 PIC X(5) VALUE 'FIRST'. 00210003 . . 002200 03 PIC X(18) VALUE SPACES. 00220000 . . 002300 03 PIC X(5) VALUE 'TITLE'. 00230003 . . 002310 03 PIC X(14) VALUE SPACES. 00231003 . . 002320 03 PIC X(4) VALUE 'DATE'. 00232003 . . 002330 03 PIC X(11) VALUE SPACES. 00233003 . . 002340 03 PIC X(4) VALUE 'RATE'. 00234003 . . 002350 03 PIC X(3) VALUE SPACES. 00235003 . . 002360 03 PIC X(6) VALUE 'STATUS'. 00236003 . . 002900 01 DETAIL1. 00290000 . . 003000 03 PIC X(3) VALUE SPACES. 00300000 . . 003100 03 D1-ID PIC X(4). 00310012 . . 003200 03 PIC X(7) VALUE SPACES. 00320012 . . 003300 03 D1-SSN1 PIC 9(3). 00330000 . . 003400 03 PIC X(1) VALUE '-'. 00340000 . . 003500 03 D1-SSN2 PIC 9(2). 00350000 . . 003600 03 PIC X(1) VALUE '-'. 00360000 . . 003700 03 D1-SSN3 PIC 9(4). 00370000 . . 003800 03 PIC X(4) VALUE SPACES. 00380000 . . 003900 03 D1-LAST PIC X(15). 00390000 . . 004000 03 PIC X(4) VALUE SPACES. 00400003 . . 004100 03 D1-FIRST PIC X(15). 00410000 . . 004200 03 PIC X(9) VALUE SPACES. 00420003 . . 004320 03 D1-TITLE PIC X(17). 00432000 . . 004330 03 PIC X(5) VALUE SPACES. 00433003 . . 004340 03 D1-MON PIC 9(2). 00434000 . . 004350 03 PIC X(1) VALUE '/'. 00435000 . . 004360 03 D1-DAY PIC 9(2). 00436000 . . 004370 03 PIC X(1) VALUE '/'. 00437000 . . 004380 03 D1-YEAR PIC 9(4). 00438000 . . 004381 03 PIC X(4) VALUE SPACES. 00438103 . . 004382 03 D1-RATE PIC ZZ9.99. 00438228 . . 004383 03 PIC X(4) VALUE SPACES. 00438303 . . 004384 03 D1-ST PIC X(1). 00438410 . . 004390 01 DETAIL2. 00439000 . . 004391 03 PIC X(77) VALUE SPACES. 00439101 . . 004392 03 PIC X(5) VALUE 'TYPE:'. 00439201 . . 004393 03 PIC X(2) VALUE SPACES. 00439301 . 004394 03 D2-TYPE PIC 99. 00439401 . . 004402 01 DETAIL3. 00440200 . . 004403 03 PIC X(46) VALUE SPACES. 00440301 . . 004404 03 PIC X(11) VALUE 'DEDUCTIONS:'. 00440401 . . 004405 03 PIC X(4) VALUE SPACES. 00440501 . . 004406 03 D3-DEDUCT1 PIC ZZ9.99. 00440601 . . 004407 03 PIC X(2) VALUE SPACES. 00440701 . . 004408 03 D3-DEDUCT2 PIC ZZ9.99. 00440801 . . 004409 03 PIC X(2) VALUE SPACES. 00440901 . . 004410 03 D3-DEDUCT3 PIC ZZ9.99. 00441001 . . 004411 03 PIC X(2) VALUE SPACES. 00441101 . . 004412 03 D3-DEDUCT4 PIC ZZ9.99. 00441201 . . 004413 03 PIC X(2) VALUE SPACES. 00441301 . . 004414 03 D3-DEDUCT5 PIC ZZ9.99. 00441401 . . 004415 03 PIC X(5) VALUE SPACES. 00441510 . . 004416 03 PIC X(6) VALUE 'TOTAL:'. 00441610 . . 004417 03 PIC X(3) VALUE SPACES. 00441710 . . 004418 03 D3-TOTAL PIC $$,$99.99. 00441801 . . 004431 01 FOOT1. 00443100 . . 004432 03 PIC X(32) VALUE 'NUMBER OF EMPLOYEE RECORDS READ:'. 00443200 . . 004433 03 PIC X(5) VALUE SPACES. 00443300 . . 004434 03 F1-RECORD PIC ZZ99. 00443400 . . 004435 01 FOOT2. 00443500 . . 004436 03 PIC X(27) VALUE 'NUMBER OF HOURLY EMPLOYEES:'. 00443600 . . 004437 03 PIC X(10) VALUE SPACES. 00443700 . . 004438 03 F2-HOUR PIC ZZZ9. 00443800 . . 004439 03 PIC X(2) VALUE SPACES. 00443900 . . 004440 03 PIC X(20) VALUE 'AVERAGE HOURLY RATE:'. 00444000 . . 004441 03 PIC X(5) VALUE SPACES. 00444100 . . 004442 03 F2-AHRATE PIC $$,$$9.99. 00444200 . . 004443 03 PIC X(2) VALUE SPACES. 00444300 . . 004450 03 PIC X(13) VALUE 'TOTAL DEDUCT:'. 00445000 . . 004460 03 PIC X(3) VALUE SPACES. 00446000 . . 004470 03 F2-HDTOTAL PIC $$$,$$9.99. 00447000 . . 004480 01 FOOT3. 00448000 . . 004490 03 PIC X(29) VALUE 'NUMBER OF SALARIED EMPLOYEES:'. 00449000 . . 004491 03 PIC X(8) VALUE SPACES. 00449100 . . 004492 03 F3-SAL PIC ZZZ9. 00449200 . . 004493 03 PIC X(2) VALUE SPACES. 00449300 . . 004494 03 PIC X(22) VALUE 'AVERAGE SALARIED RATE:'. 00449400 . . 004495 03 PIC X(3) VALUE SPACES. 00449500 . . 004496 03 F3-ASRATE PIC $$,$99.99. 00449600 . . 004497 03 PIC X(2) VALUE SPACES. 00449700 . . 004498 03 PIC X(13) VALUE 'TOTAL DEDUCT:'. 00449800 . . 004499 03 PIC X(3) VALUE SPACES. 00449900 . . 004500 03 F3-SDTOTAL PIC $$$,$$9.99. 00450000 . 004510 01 INPUT-DATA. 00451000 . . 004520 03 I-ID PIC 9(3). 00452000 . . 004530 03 I-LAST PIC X(15). 00453000 . . 004540 03 I-FIRST PIC X(10). 00454000 . . 004550 03 I-TYPE PIC 9(2). 00455000 . . 004560 03 I-TITLE PIC X(12). 00456000 . . 004700 03 PIC X(28). 00470004 . . 004800 03 I-DATE. 00480000 . . 004810 05 I-MON PIC 9(2). 00481000 . . 004820 05 I-DAY PIC 9(2). 00482000 . . 004830 05 I-YEAR PIC 9(4). 00483000 . . 004840 03 I-RATE PIC 9(3)V99. 00484028 . . 004850 03 I-ST PIC X(1). 00485000 . . 004860 03 I-DEDUCT OCCURS 5 TIMES PIC 9(3)V99. 00486000 . . 004861 01 INPUT-DATA2. 00486119 . . 004862 03 I2-TYPE PIC X(2). 00486219 . . 004863 03 I2-TITLE PIC X(12). 00486319 . . 004864 01 INPUT-DATA3. 00486404 . . 004865 03 I3-ID PIC 9(3). 00486525 . . 004867 03 I3-SSN. 00486704 . . 004868 05 I3-SSN1 PIC 9(3). 00486812 . . 004869 05 I3-SSN2 PIC 9(2). 00486904 . . 004870 05 I3-SSN3 PIC 9(4). 00487004 . . 004872 01 TABLE1. 00487212 . . 004885 03 TYPES OCCURS 10 TIMES 00488521 . . 004886 ASCENDING KEY IS T-TYPE 00488623 . . 004887 INDEXED BY TYPEX. 00488717 . . 004888 08 T-TYPE PIC 9(2). 00488818 . . 004889 08 T-TITLE PIC X(10). 00488925 . . 004890 01 TABLE2. 00489021 . . 004913 03 SSN OCCURS 20 TIMES 00491321 . . 004914 INDEXED BY SSNX. 00491415 . . 004915 08 SSN-ID PIC 9(3). 00491525 . . 004916 08 SSN1 PIC 9(3). 00491615 . . 004917 08 SSN2 PIC 9(2). 00491715 . . 004918 08 SSN3 PIC 9(4). 00491815 . . 004919 01 MISC-DATA. 00491912 . . 004920 03 EOF-I PIC X VALUE SPACES. 00492000 . . 004921 03 PAGE-COUNT PIC 9(1) VALUE 1. 00492100 . . 004922 03 LINE-COUNT PIC 9(2) VALUE 0. 00492200 . . 004923 03 MAX-LINES PIC 9(2) VALUE 10. 00492310 . . 004924 03 CURRENT-DATE. 00492400 . . 004925 05 CUR-YR PIC 9(2). 00492500 . . 004926 05 CUR-MON PIC 9(2). 00492600 . . 004927 05 CUR-DAY PIC 9(2). 00492700 . . 004928 03 SUB PIC 9(6). 00492800 . 004929 03 TBL-SIZE PIC 9(3) VALUE 0. 00492924 . . 004930 03 TBL-SIZE2 PIC 9(3) VALUE 0. 00493025 . . 004931 01 EMP-DATA. 00493100 . . 004932 03 RECORD-COUNT PIC 9(3) VALUE 0. 00493200 . . 004933 03 SALARIED. 00493300 . . 004934 05 S-COUNT PIC 9(2) VALUE 0. 00493400 . . 004935 05 SRATE PIC 9(6)V99. 00493500 . . 004936 05 ASRATE PIC 9(4)V99. 00493600 . . 004937 03 HOURLY. 00493700 . . 004938 05 H-COUNT PIC 9(2) VALUE 0. 00493800 . . 004939 05 HRATE PIC 9(5)V99. 00493900 . . 004940 05 AHRATE PIC 9(4)V99. 00494000 . . 004941 03 DEDUCT. 00494100 . . 004942 05 DTOTAL PIC 9(4)V99. 00494200 . . 004943 05 SDTOTAL PIC 9(5)V99. 00494300 . . 004944 05 HDTOTAL PIC 9(5)V99. 00494400 . . 004945 00494500 . . 004946 PROCEDURE DIVISION. 00494600 . . 004947 ACCEPT CURRENT-DATE FROM DATE. 00494700 . . 004948 000-MAINLINE. 00494822 . . 004949 OPEN INPUT INPUT-FILE, INPUT-FILE2, INPUT-FILE3 00494922 . . 004950 OUTPUT PRINT-FILE. 00495022 . . 004951 PERFORM 9000-READ-INPUT. 00495127 . . 004952 PERFORM 2000-PRINT-HEAD. 00495222 . . 004953 PERFORM 100-READ-TYPE. 00495322 . . 004954 PERFORM 110-LOAD-TYPE 00495425 . . 004955 VARYING TYPEX FROM 1 BY 1 00495524 . . 004956 UNTIL EOF-I = 2. 00495625 . . 004957 PERFORM 200-READ-SSN. 00495722 . . 004958 PERFORM 210-LOAD-SSN 00495825 . . 004959 VARYING SSNX FROM 1 BY 1 00495925 . . 004960 UNTIL EOF-I = 3. 00496025 . . 004961 PERFORM 1000-LOOP 00496122 . . 004962 UNTIL EOF-I = 1. 00496222 . . 004963 PERFORM 7300-FOOT-CALC. 00496322 . . 004964 PERFORM 4000-PRINT-FOOT. 00496422 . . 004965 CLOSE INPUT-FILE, INPUT-FILE2, INPUT-FILE3 00496522 . . 004966 PRINT-FILE. 00496622 . . 004967 STOP RUN. 00496722 . . 004968 100-READ-TYPE. 00496822 . . 004969 READ INPUT-FILE2 INTO INPUT-DATA2 00496922 . . 004970 AT END MOVE 2 TO EOF-I 00497022 . . 004971 END-READ. 00497122 . . 004972 110-LOAD-TYPE. 00497222 . . 004973 SET TBL-SIZE TO TYPEX. 00497324 . . 004974 MOVE I2-TYPE TO T-TYPE(TYPEX). 00497424 . 004975 MOVE I2-TITLE TO T-TITLE(TYPEX). 00497525 . . 004976 PERFORM 100-READ-TYPE. 00497624 . . 004977 200-READ-SSN. 00497722 . . 004978 READ INPUT-FILE3 INTO INPUT-DATA3 00497822 . . 004979 AT END MOVE 3 TO EOF-I 00497922 . . 004980 END-READ. 00498022 . . 004981 210-LOAD-SSN. 00498122 . . 004982 SET TBL-SIZE2 TO SSNX. 00498225 . . 004983 MOVE I3-ID TO SSN-ID(SSNX). 00498325 . . 004984 MOVE I3-SSN1 TO SSN1(SSNX). 00498425 . . 004985 MOVE I3-SSN2 TO SSN2(SSNX). 00498525 . . 004986 MOVE I3-SSN3 TO SSN3(SSNX). 00498625 . . 004987 PERFORM 200-READ-SSN. 00498725 . . 004988 1000-LOOP. 00498800 . . 004989 ADD 1 TO RECORD-COUNT. 00498900 . . 004990 ADD 1 TO LINE-COUNT 00499000 . . 004991 PERFORM 5000-PRINT-INPUT. 00499127 . . 004992 PERFORM 9000-READ-INPUT. 00499225 . . 004994 IF (I-ST = "S") 00499400 . . 004995 PERFORM 7000-SALARIED-COUNT 00499500 . . 004996 ELSE 00499600 . . 004997 PERFORM 7100-HOURLY-COUNT. 00499700 . . 004998 IF(LINE-COUNT > MAX-LINES AND EOF-I NOT = 1) 00499800 . . 004999 PERFORM 3000-PAGE-HEADING 00499900 . . 005000 END-IF. 00500000 . . 005001 2000-PRINT-HEAD. 00500100 . . 005002 MOVE CUR-YR TO H1-YR. 00500200 . . 005003 MOVE CUR-MON TO H1-MON. 00500300 . . 005004 MOVE CUR-DAY TO H1-DAY. 00500400 . . 005005 MOVE PAGE-COUNT TO H1-PAGE-CT. 00500500 . . 005006 WRITE PRINT-REC FROM HEAD1. 00500600 . . 005007 WRITE PRINT-REC FROM HEAD2. 00500700 . . 005010 MOVE SPACES TO PRINT-REC. 00501000 . . 005020 WRITE PRINT-REC 00502000 . . 005030 AFTER ADVANCING 1 LINE. 00503000 . . 005031 3000-PAGE-HEADING. 00503100 . . 005032 ADD 1 TO PAGE-COUNT 00503200 . . 005033 MOVE PAGE-COUNT TO H1-PAGE-CT. 00503300 . . 005034 MOVE CUR-YR TO H1-YR. 00503400 . . 005035 MOVE CUR-MON TO H1-MON. 00503500 . . 005036 MOVE CUR-DAY TO H1-DAY. 00503600 . . 005037 WRITE PRINT-REC FROM HEAD1. 00503700 . . 005038 WRITE PRINT-REC FROM HEAD2. 00503800 . . 005040 MOVE SPACES TO PRINT-REC. 00504000 . . 005041 WRITE PRINT-REC 00504100 . . 005042 AFTER ADVANCING PAGE. 00504200 . 005045 MOVE 0 TO LINE-COUNT. 00504500 . . 005046 4000-PRINT-FOOT. 00504600 . . 005047 ADD 1 TO PAGE-COUNT. 00504700 . . 005048 MOVE PAGE-COUNT TO H1-PAGE-CT. 00504800 . . 005049 WRITE PRINT-REC FROM HEAD1. 00504900 . . 005050 MOVE SPACES TO PRINT-REC. 00505000 . . 005051 WRITE PRINT-REC 00505100 . . 005052 AFTER ADVANCING 1 LINE. 00505200 . . 005053 WRITE PRINT-REC FROM FOOT1. 00505300 . . 005054 WRITE PRINT-REC FROM FOOT2. 00505400 . . 005055 WRITE PRINT-REC FROM FOOT3. 00505500 . . 005056 MOVE SPACES TO PRINT-REC. 00505600 . . 005057 WRITE PRINT-REC 00505700 . . 005058 AFTER ADVANCING 1 LINE. 00505800 . . 005059 5000-PRINT-INPUT. 00505900 . . 005060 MOVE I-ID TO D1-ID. 00506000 . . 005061 PERFORM 5200-TITLE-SEARCH. 00506117 . . 005062 PERFORM 5300-SSN-SEARCH. 00506217 . . 005070 MOVE I-LAST TO D1-LAST. 00507000 . . 005080 MOVE I-FIRST TO D1-FIRST. 00508000 . . 005500 MOVE I-DAY TO D1-DAY. 00550000 . . 005600 MOVE I-MON TO D1-MON. 00560000 . . 005700 MOVE I-YEAR TO D1-YEAR. 00570000 . . 005701 MOVE I-RATE TO D1-RATE. 00570110 . . 005702 MOVE I-ST TO D1-ST. 00570210 . . 005710 WRITE PRINT-REC FROM DETAIL1. 00571010 . . 005711 PERFORM 5400-TYPE-SEARCH. 00571117 . . 005730 WRITE PRINT-REC FROM DETAIL2. 00573010 . . 005740 MOVE I-DEDUCT(1) TO D3-DEDUCT1. 00574010 . . 005750 MOVE I-DEDUCT(2) TO D3-DEDUCT2. 00575010 . . 005760 MOVE I-DEDUCT(3) TO D3-DEDUCT3. 00576010 . . 005770 MOVE I-DEDUCT(4) TO D3-DEDUCT4. 00577010 . . 005780 MOVE I-DEDUCT(5) TO D3-DEDUCT5. 00578010 . . 005790 MOVE 0 TO DTOTAL. 00579010 . . 005800 PERFORM 5100-ADD-DEDUCT-TOTAL 00580010 . . 005900 VARYING SUB FROM 1 BY 1 00590010 . . 005910 UNTIL SUB > 5. 00591010 . . 005920 MOVE DTOTAL TO D3-TOTAL. 00592010 . . 005930 WRITE PRINT-REC FROM DETAIL3 00593010 . . 006000 AFTER ADVANCING 1 LINE. 00600000 . . 006010 5100-ADD-DEDUCT-TOTAL. 00601010 . . 006020 ADD I-DEDUCT(SUB) TO DTOTAL. 00602010 . . 006021 5200-TITLE-SEARCH. 00602117 . . 006023 SEARCH ALL TYPES 00602323 . . 006024 WHEN T-TYPE(TYPEX) = I-TYPE 00602424 . . 006025 MOVE T-TITLE(TYPEX) TO D1-TITLE 00602525 . 006026 END-SEARCH. 00602617 . . 006030 5300-SSN-SEARCH. 00603016 . . 006040 SET SSNX TO 1. 00604025 . . 006041 SEARCH SSN 00604123 . . 006050 WHEN I-ID = SSN-ID(SSNX) 00605023 . . 006060 MOVE SSN1(SSNX) TO D1-SSN1 00606016 . . 006061 MOVE SSN2(SSNX) TO D1-SSN2 00606116 . . 006062 MOVE SSN3(SSNX) TO D1-SSN3 00606216 . . 006063 END-SEARCH. 00606316 . . 006064 5400-TYPE-SEARCH. 00606417 . . 006066 SEARCH ALL TYPES 00606623 . . 006067 WHEN T-TYPE(TYPEX) = I-TYPE 00606724 . . 006068 MOVE T-TYPE(TYPEX) TO D2-TYPE 00606817 . . 006069 END-SEARCH. 00606917 . . 006070 7000-SALARIED-COUNT. 00607000 . . 006080 ADD 1 TO S-COUNT. 00608000 . . 006090 ADD I-RATE TO SRATE. 00609000 . . 006100 ADD DTOTAL TO SDTOTAL. 00610010 . . 006110 7100-HOURLY-COUNT. 00611000 . . 006120 ADD 1 TO H-COUNT. 00612000 . . 006130 ADD I-RATE TO HRATE. 00613000 . . 006140 ADD DTOTAL TO HDTOTAL. 00614010 . . 006150 7300-FOOT-CALC. 00615000 . . 006160 DIVIDE SRATE BY S-COUNT GIVING ASRATE. 00616000 . . 006170 DIVIDE HRATE BY H-COUNT GIVING AHRATE. 00617000 . . 006180 MOVE ASRATE TO F3-ASRATE. 00618000 . . 006190 MOVE AHRATE TO F2-AHRATE. 00619000 . . 006191 MOVE RECORD-COUNT TO F1-RECORD. 00619100 . . 006192 MOVE H-COUNT TO F2-HOUR. 00619200 . . 006193 MOVE S-COUNT TO F3-SAL. 00619300 . . 006194 MOVE SDTOTAL TO F3-SDTOTAL. 00619410 . . 006195 MOVE HDTOTAL TO F2-HDTOTAL. 00619510 . . 006196 9000-READ-INPUT. 00619600 . . 006197 READ INPUT-FILE INTO INPUT-DATA 00619700 . . 006200 AT END MOVE 1 TO EOF-I. 00620000 .