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 . . 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 . 00050015 . . 000600 00060000 . . 000700 01 INPUT-REC PIC X(133). 00070015 . . 000800 00080000 . . 000900 FD PRINT-FILE 00090000 . . 001000 RECORDING MODE F 00100000 . . 001100 LABEL RECORDS ARE OMITTED. 00110000 . . 001200 01 PRINT-REC PIC X(133). 00120015 . . 001300 00130000 . . 001400 WORKING-STORAGE SECTION. 00140000 . . 001500 00150000 . . 001600 01 HEAD1. 00160000 . . 001601 03 PIC X(1) VALUE SPACES. 00160103 . . 001610 03 H1-YR PIC 9(2). 00161000 . . 001620 03 PIC X(1) VALUE '/'. 00162000 . . 001630 03 H1-MON PIC 9(2). 00163000 . . 001640 03 PIC X(1) VALUE '/'. 00164000 . . 001650 03 H1-DAY PIC 9(2). 00165000 . . 001660 03 PIC X(40) VALUE SPACES. 00166003 . . 001670 03 PIC X(21) VALUE 'MASTERMIND COBOL, INC'. 00167003 . . 001680 03 PIC X(36) VALUE SPACES. 00168003 . . 001690 03 PIC X(4) VALUE 'PAGE'. 00169000 . . 001700 03 PIC X(1) VALUE SPACES. 00170000 . . 001800 03 H1-PAGE-CT PIC ZZ9. 00180000 . . 001850 01 HEAD2. 00185003 . . 001851 03 PIC X(3) VALUE SPACES. 00185103 . . 001852 03 PIC X(6) VALUE 'EMP ID'. 00185203 . . 001853 03 PIC X(6) VALUE SPACES. 00185303 . . 001860 03 PIC X(3) VALUE 'SSN'. 00186000 . . 001870 03 PIC X(12) VALUE SPACES. 00187003 . . 001900 03 PIC X(4) VALUE 'NAME'. 00190003 . . 002000 03 PIC X(34) VALUE SPACES. 00200003 . 002100 03 PIC X(4) VALUE 'TYPE'. 00210003 . . 002200 03 PIC X(2) VALUE SPACES. 00220003 . . 002300 03 PIC X(5) VALUE 'TITLE'. 00230000 . . 002400 03 PIC X(18) VALUE SPACES. 00240005 . . 002410 03 PIC X(4) VALUE 'DATE'. 00241005 . . 002500 01 HEAD3. 00250003 . . 002600 03 PIC X(34) VALUE SPACES. 00260003 . . 002700 03 PIC X(4) VALUE 'LAST'. 00270003 . . 002800 03 PIC X(13) VALUE SPACES. 00280003 . . 002900 03 PIC X(5) VALUE 'FIRST'. 00290003 . . 003300 01 DETAIL1. 00330000 . . 003310 03 PIC X(3) VALUE SPACES. 00331004 . . 003320 03 D1-ID PIC X(8). 00332005 . . 003330 03 PIC X(4) VALUE SPACES. 00333005 . . 003400 03 D1-SSN1 PIC 9(3). 00340000 . . 003500 03 PIC X(1) VALUE '-'. 00350000 . . 003600 03 D1-SSN2 PIC 9(2). 00360000 . . 003700 03 PIC X(1) VALUE '-'. 00370000 . . 003800 03 D1-SSN3 PIC 9(4). 00380000 . . 003900 03 PIC X(4) VALUE SPACES. 00390004 . . 004000 03 D1-LAST PIC X(15). 00400000 . . 004100 03 PIC X(3) VALUE SPACES. 00410000 . . 004200 03 D1-FIRST PIC X(15). 00420004 . . 004300 03 PIC X(6) VALUE SPACES. 00430005 . . 004310 03 D1-TYPE PIC X(2). 00431004 . . 004320 03 PIC X(3) VALUE SPACES. 00432004 . . 004330 03 D1-TITLE PIC X(17). 00433004 . . 004340 03 PIC X(6) VALUE SPACES. 00434004 . . 004370 03 D1-MON PIC 9(2). 00437000 . . 004380 03 PIC X(1) VALUE '/'. 00438000 . . 004390 03 D1-DAY PIC 9(2). 00439000 . . 004391 03 PIC X(1) VALUE '/'. 00439100 . . 004392 03 D1-YEAR PIC 9(4). 00439200 . . 004397 01 DETAIL2. 00439706 . . 004398 03 PIC X(69) VALUE SPACES. 00439806 . . 004399 03 PIC X(7) VALUE 'DEDUCT:'. 00439906 . . 004400 03 PIC X(6) VALUE SPACES. 00440009 . . 004401 03 D2-DEDUCT1 PIC ZZ9.99. 00440108 . . 004402 03 PIC X(4) VALUE SPACES. 00440209 . . 004403 03 PIC X(5) VALUE 'RATE:'. 00440306 . . 004404 03 D2-RATE PIC ZZ9.99. 00440413 . . 004405 03 PIC X(4) VALUE SPACES. 00440506 . . 004406 03 PIC X(6) VALUE 'STATUS'. 00440606 . . 004407 03 PIC X(2) VALUE SPACES. 00440706 . . 004408 03 D2-ST PIC X(1). 00440806 . . 004409 01 DETAIL3. 00440907 . 004410 03 PIC X(82) VALUE SPACES. 00441009 . . 004411 03 D3-DEDUCT2 PIC ZZ9.99. 00441108 . . 004412 01 DETAIL4. 00441207 . . 004413 03 PIC X(82) VALUE SPACES. 00441309 . . 004414 03 D4-DEDUCT3 PIC ZZ9.99. 00441408 . . 004415 01 DETAIL5. 00441507 . . 004416 03 PIC X(82) VALUE SPACES. 00441609 . . 004417 03 D5-DEDUCT4 PIC ZZ9.99. 00441708 . . 004418 01 DETAIL6. 00441807 . . 004419 03 PIC X(82) VALUE SPACES. 00441909 . . 004420 03 D6-DEDUCT5 PIC ZZ9.99. 00442008 . . 004421 01 DETAIL7. 00442107 . . 004422 03 PIC X(69) VALUE SPACES. 00442207 . . 004423 03 PIC X(7) VALUE 'TOTAL:'. 00442307 . . 004424 03 PIC X(3) VALUE SPACES. 00442407 . . 004425 03 D7-TOTAL PIC $$,$99.99. 00442507 . . 004426 01 FOOT1. 00442600 . . 004427 03 PIC X(32) VALUE 'NUMBER OF EMPLOYEE RECORDS READ:'. 00442700 . . 004428 03 PIC X(5) VALUE SPACES. 00442812 . . 004429 03 F1-RECORD PIC ZZ99. 00442900 . . 004430 01 FOOT2. 00443000 . . 004431 03 PIC X(27) VALUE 'NUMBER OF HOURLY EMPLOYEES:'. 00443100 . . 004440 03 PIC X(10) VALUE SPACES. 00444012 . . 004450 03 F2-HOUR PIC ZZZ9. 00445000 . . 004460 03 PIC X(2) VALUE SPACES. 00446001 . . 004470 03 PIC X(20) VALUE 'AVERAGE HOURLY RATE:'. 00447000 . . 004480 03 PIC X(5) VALUE SPACES. 00448000 . . 004490 03 F2-AHRATE PIC $$,$$9.99. 00449000 . . 004491 03 PIC X(2) VALUE SPACES. 00449101 . . 004492 03 PIC X(13) VALUE 'TOTAL DEDUCT:'. 00449201 . . 004493 03 PIC X(3) VALUE SPACES. 00449301 . . 004494 03 F2-HDTOTAL PIC $$$,$$9.99. 00449410 . . 004495 01 FOOT3. 00449500 . . 004496 03 PIC X(29) VALUE 'NUMBER OF SALARIED EMPLOYEES:'. 00449600 . . 004497 03 PIC X(8) VALUE SPACES. 00449712 . . 004498 03 F3-SAL PIC ZZZ9. 00449800 . . 004499 03 PIC X(2) VALUE SPACES. 00449901 . . 004500 03 PIC X(22) VALUE 'AVERAGE SALARIED RATE:'. 00450000 . . 004501 03 PIC X(3) VALUE SPACES. 00450100 . . 004502 03 F3-ASRATE PIC $$,$99.99. 00450200 . . 004503 03 PIC X(2) VALUE SPACES. 00450301 . . 004504 03 PIC X(13) VALUE 'TOTAL DEDUCT:'. 00450402 . . 004505 03 PIC X(3) VALUE SPACES. 00450501 . . 004506 03 F3-SDTOTAL PIC $$$,$$9.99. 00450610 . . 004547 01 INPUT-DATA. 00454700 . . 004548 03 I-ID PIC 9(3). 00454800 . 004550 03 I-LAST PIC X(15). 00455000 . . 004560 03 I-FIRST PIC X(10). 00456000 . . 004570 03 I-TYPE PIC 9(2). 00457000 . . 004580 03 I-TITLE PIC X(12). 00458000 . . 004590 03 I-SSN. 00459000 . . 004600 05 I-SSN1 PIC 9(3). 00460000 . . 004700 05 I-SSN2 PIC 9(2). 00470000 . . 004800 05 I-SSN3 PIC 9(4). 00480000 . . 004810 03 PIC X(19). 00481000 . . 004820 03 I-DATE. 00482000 . . 004830 05 I-MON PIC 9(2). 00483000 . . 004840 05 I-DAY PIC 9(2). 00484000 . . 004850 05 I-YEAR PIC 9(4). 00485000 . . 004860 03 I-RATE PIC 9(3)V99. 00486013 . . 004861 03 I-ST PIC X(1). 00486100 . . 004862 03 I-DEDUCT OCCURS 5 TIMES PIC 9(3)V99. 00486209 . . 004864 01 MISC-DATA. 00486400 . . 004865 03 EOF-I PIC X VALUE SPACES. 00486500 . . 004866 03 PAGE-COUNT PIC 9(1) VALUE 1. 00486600 . . 004867 03 LINE-COUNT PIC 9(2) VALUE 0. 00486700 . . 004868 03 MAX-LINES PIC 9(1) VALUE 2. 00486812 . . 004869 03 CURRENT-DATE. 00486900 . . 004870 05 CUR-YR PIC 9(2). 00487008 . . 004871 05 CUR-MON PIC 9(2). 00487108 . . 004872 05 CUR-DAY PIC 9(2). 00487208 . . 004873 03 SUB PIC 9(6). 00487308 . . 004874 01 EMP-DATA. 00487400 . . 004875 03 RECORD-COUNT PIC 9(3) VALUE 0. 00487500 . . 004876 03 SALARIED. 00487600 . . 004877 05 S-COUNT PIC 9(2) VALUE 0. 00487700 . . 004878 05 SRATE PIC 9(6)V99. 00487800 . . 004879 05 ASRATE PIC 9(4)V99. 00487900 . . 004880 03 HOURLY. 00488000 . . 004881 05 H-COUNT PIC 9(2) VALUE 0. 00488100 . . 004882 05 HRATE PIC 9(5)V99. 00488200 . . 004883 05 AHRATE PIC 9(4)V99. 00488300 . . 004884 03 DEDUCT. 00488408 . . 004885 05 DTOTAL PIC 9(4)V99. 00488508 . . 004886 05 SDTOTAL PIC 9(5)V99. 00488610 . . 004887 05 HDTOTAL PIC 9(5)V99. 00488710 . . 004893 00489300 . . 004894 PROCEDURE DIVISION. 00489400 . . 004895 ACCEPT CURRENT-DATE FROM DATE. 00489500 . . 004896 000-MAINLINE. 00489600 . . 004897 OPEN INPUT INPUT-FILE 00489700 . . 004898 OUTPUT PRINT-FILE. 00489800 . 004899 PERFORM 9000-READ-INPUT. 00489900 . . 004900 PERFORM 2000-PRINT-HEAD. 00490000 . . 004901 PERFORM 1000-LOOP 00490100 . . 004902 UNTIL EOF-I = 1. 00490200 . . 004903 PERFORM 7300-FOOT-CALC. 00490300 . . 004904 PERFORM 4000-PRINT-FOOT. 00490400 . . 004905 CLOSE INPUT-FILE 00490500 . . 004906 PRINT-FILE. 00490600 . . 004907 STOP RUN. 00490700 . . 004908 1000-LOOP. 00490800 . . 004909 ADD 1 TO RECORD-COUNT. 00490900 . . 004910 ADD 1 TO LINE-COUNT 00491012 . . 004920 PERFORM 5000-PRINT-INPUT. 00492007 . . 004930 PERFORM 9000-READ-INPUT. 00493000 . . 004940 IF (I-ST = "S") 00494000 . . 004950 PERFORM 7000-SALARIED-COUNT 00495000 . . 004960 ELSE 00496000 . . 004970 PERFORM 7100-HOURLY-COUNT. 00497000 . . 005020 IF(LINE-COUNT > MAX-LINES AND EOF-I NOT = 1) 00502010 . . 005021 PERFORM 3000-PAGE-HEADING 00502100 . . 005023 END-IF. 00502300 . . 005024 2000-PRINT-HEAD. 00502400 . . 005025 MOVE CUR-YR TO H1-YR. 00502500 . . 005026 MOVE CUR-MON TO H1-MON. 00502600 . . 005027 MOVE CUR-DAY TO H1-DAY. 00502700 . . 005028 MOVE PAGE-COUNT TO H1-PAGE-CT. 00502800 . . 005029 WRITE PRINT-REC FROM HEAD1. 00502900 . . 005030 WRITE PRINT-REC FROM HEAD2. 00503000 . . 005033 WRITE PRINT-REC FROM HEAD3. 00503300 . . 005034 MOVE SPACES TO PRINT-REC. 00503400 . . 005035 WRITE PRINT-REC 00503500 . . 005036 AFTER ADVANCING 1 LINE. 00503600 . . 005037 3000-PAGE-HEADING. 00503700 . . 005038 ADD 1 TO PAGE-COUNT 00503811 . . 005040 MOVE PAGE-COUNT TO H1-PAGE-CT. 00504000 . . 005041 MOVE CUR-YR TO H1-YR. 00504111 . . 005042 MOVE CUR-MON TO H1-MON. 00504211 . . 005043 MOVE CUR-DAY TO H1-DAY. 00504311 . . 005044 WRITE PRINT-REC FROM HEAD1. 00504411 . . 005045 WRITE PRINT-REC FROM HEAD2. 00504511 . . 005046 WRITE PRINT-REC FROM HEAD3. 00504611 . . 005047 MOVE SPACES TO PRINT-REC. 00504711 . . 005048 WRITE PRINT-REC 00504811 . . 005049 AFTER ADVANCING PAGE. 00504911 . . 005050 * PERFORM 2000-PRINT-HEAD. 00505011 . . 005052 * MOVE SPACES TO PRINT-REC. 00505211 . 005053 MOVE 0 TO LINE-COUNT. 00505300 . . 005054 4000-PRINT-FOOT. 00505400 . . 005055 ADD 1 TO PAGE-COUNT. 00505500 . . 005056 MOVE PAGE-COUNT TO H1-PAGE-CT. 00505600 . . 005057 WRITE PRINT-REC FROM HEAD1. 00505700 . . 005058 MOVE SPACES TO PRINT-REC. 00505800 . . 005059 WRITE PRINT-REC 00505900 . . 005060 AFTER ADVANCING 1 LINE. 00506000 . . 005061 WRITE PRINT-REC FROM FOOT1. 00506100 . . 005062 WRITE PRINT-REC FROM FOOT2. 00506200 . . 005063 WRITE PRINT-REC FROM FOOT3. 00506300 . . 005064 MOVE SPACES TO PRINT-REC. 00506400 . . 005065 WRITE PRINT-REC 00506500 . . 005066 AFTER ADVANCING 1 LINE. 00506600 . . 005068 5000-PRINT-INPUT. 00506807 . . 005069 MOVE I-ID TO D1-ID. 00506900 . . 005070 MOVE I-LAST TO D1-LAST. 00507000 . . 005080 MOVE I-FIRST TO D1-FIRST. 00508000 . . 005090 MOVE I-TYPE TO D1-TYPE. 00509000 . . 005100 MOVE I-TITLE TO D1-TITLE. 00510000 . . 005200 MOVE I-SSN1 TO D1-SSN1. 00520000 . . 005300 MOVE I-SSN2 TO D1-SSN2. 00530000 . . 005400 MOVE I-SSN3 TO D1-SSN3. 00540000 . . 005500 MOVE I-DAY TO D1-DAY. 00550000 . . 005600 MOVE I-MON TO D1-MON. 00560000 . . 005700 MOVE I-YEAR TO D1-YEAR. 00570000 . . 005710 WRITE PRINT-REC FROM DETAIL1. 00571006 . . 005720 MOVE I-DEDUCT(1) TO D2-DEDUCT1. 00572009 . . 005800 MOVE I-RATE TO D2-RATE. 00580006 . . 005900 MOVE I-ST TO D2-ST. 00590006 . . 006000 WRITE PRINT-REC FROM DETAIL2 00600006 . . 006010 AFTER ADVANCING 1 LINE. 00601006 . . 006011 MOVE I-DEDUCT(2) TO D3-DEDUCT2. 00601109 . . 006020 WRITE PRINT-REC FROM DETAIL3 00602007 . . 006021 AFTER ADVANCING 1 LINE. 00602107 . . 006022 MOVE I-DEDUCT(3) TO D4-DEDUCT3. 00602209 . . 006030 WRITE PRINT-REC FROM DETAIL4 00603007 . . 006031 AFTER ADVANCING 1 LINE. 00603107 . . 006032 MOVE I-DEDUCT(4) TO D5-DEDUCT4. 00603209 . . 006040 WRITE PRINT-REC FROM DETAIL5 00604007 . . 006050 AFTER ADVANCING 1 LINE. 00605007 . . 006051 MOVE I-DEDUCT(5) TO D6-DEDUCT5. 00605109 . . 006060 WRITE PRINT-REC FROM DETAIL6 00606007 . . 006061 AFTER ADVANCING 1 LINE. 00606107 . . 006062 MOVE 0 TO DTOTAL. 00606208 . . 006063 PERFORM 5100-ADD-DEDUCT-TOTAL 00606309 . 006064 VARYING SUB FROM 1 BY 1 00606408 . . 006065 UNTIL SUB > 5. 00606508 . . 006067 MOVE DTOTAL TO D7-TOTAL. 00606708 . . 006070 WRITE PRINT-REC FROM DETAIL7 00607007 . . 006080 AFTER ADVANCING 1 LINE. 00608007 . . 006090 5100-ADD-DEDUCT-TOTAL. 00609009 . . 006091 ADD I-DEDUCT(SUB) TO DTOTAL. 00609109 . . 006100 7000-SALARIED-COUNT. 00610000 . . 006110 ADD 1 TO S-COUNT. 00611000 . . 006120 ADD I-RATE TO SRATE. 00612000 . . 006121 ADD DTOTAL TO SDTOTAL. 00612110 . . 006130 7100-HOURLY-COUNT. 00613000 . . 006140 ADD 1 TO H-COUNT. 00614000 . . 006150 ADD I-RATE TO HRATE. 00615000 . . 006160 ADD DTOTAL TO HDTOTAL. 00616010 . . 006179 7300-FOOT-CALC. 00617900 . . 006180 DIVIDE SRATE BY S-COUNT GIVING ASRATE. 00618000 . . 006190 DIVIDE HRATE BY H-COUNT GIVING AHRATE. 00619000 . . 006191 MOVE ASRATE TO F3-ASRATE. 00619100 . . 006192 MOVE AHRATE TO F2-AHRATE. 00619200 . . 006193 MOVE RECORD-COUNT TO F1-RECORD. 00619300 . . 006194 MOVE H-COUNT TO F2-HOUR. 00619400 . . 006195 MOVE S-COUNT TO F3-SAL. 00619500 . . 006196 MOVE SDTOTAL TO F3-SDTOTAL. 00619610 . . 006197 MOVE HDTOTAL TO F2-HDTOTAL. 00619710 . . 006206 9000-READ-INPUT. 00620600 . . 006207 READ INPUT-FILE INTO INPUT-DATA 00620700 . . 006208 AT END MOVE 1 TO EOF-I. 00620800 .