IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-DESCRIPTION. 05 WS-DATE1 VALUE '20140831'. 10 WS-YEAR PIC X(4). 10 WS-MONTH PIC X(2). 10 WS-DATE PIC X(2). 05 WS-DATE2 REDEFINES WS-DATE1 PIC 9(5). PROCEDURE DIVISION. DISPLAY "WS-DATE1 : "WS-DATE1. DISPLAY "WS-DATE2 : "WS-DATE2. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. DATA DIVISION. WORKING-STORAGE SECTION. 01 NUM-VALUE. 02 WS-NUM. 05 WS-NUM1 PIC S9(3)V9(2). 05 WS-NUM2 PIC P999999. 05 WS-NUM3 PIC S9(3)V9(2) VALUE -123.45. 05 WS-NAME PIC A(6) VALUE 'ABCDEF'. 66 WS-REN RENAMES WS-NUM. 01 WS-ID PIC X(5) VALUE 'A121$'. 01 IP-DIGIT PIC X(1). 88 IP-NUMBERS VALUE '0' THRU '9'. 88 IP-CHARACTERS VALUE 'A' THRU 'Z'. PROCEDURE DIVISION. DISPLAY "WS-NUM1 : "WS-NUM1. MOVE 00.01234560 TO WS-NUM2. DISPLAY "WS-NUM2 : "WS-NUM2. DISPLAY "WS-NUM3 : "WS-NUM3. DISPLAY "WS-NAME : "WS-NAME. DISPLAY "WS-ID : "WS-ID. DISPLAY "WS-REN : "WS-REN. MOVE 'P' TO IP-DIGIT. DISPLAY IP-DIGIT. IF IP-NUMBERS THEN DISPLAY " NUMBERS ENTERED " IP-DIGIT ELSE IF IP-CHARACTERS THEN DISPLAY " CHARACTERS ENTERED " IP-DIGIT ELSE DISPLAY " WRONG INPUT " IP-DIGIT END-IF. EVALUATE TRUE WHEN IP-NUMBERS DISPLAY " NUMBERS ENTERED " IP-DIGIT WHEN IP-CHARACTERS DISPLAY " CHARACTERS ENTERED " IP-DIGIT WHEN OTHER DISPLAY " WRONG CHARACTERS ENTERED " IP-DIGIT END-EVALUATE. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. DATA DIVISION. WORKING-STORAGE SECTION. 01 IFELSE-CHK PIC X(6). 01 DAT-CHK PIC X(6). 01 LNGTH PIC 9(1). 01 COUNTER-VARIABLES. 05 X-COUNTER PIC 9(01) VALUE ZEROS. 05 X-OP-COUNTER PIC 9(01) VALUE 1. 01 MARKS PIC 9(3). 88 PASS VALUE IS 035 THRU 100. 88 FAIL VALUE IS 000 THRU 034. PROCEDURE DIVISION. INITIALIZE IFELSE-CHK , DAT-CHK , LNGTH. ACCEPT IFELSE-CHK. DISPLAY IFELSE-CHK. STRING IFELSE-CHK DELIMITED BY ' ' INTO DAT-CHK. EVALUATE DAT-CHK WHEN 'MALE' DISPLAY "HE IS MALE" WHEN 'FEMALE' DISPLAY "SHE IS FEMALE" WHEN OTHER DISPLAY "NOT KNOWN" END-EVALUATE. ACCEPT MARKS. DISPLAY MARKS. IF PASS THEN DISPLAY "STUDENT IS PASS WITH " MARKS ELSE DISPLAY "STUDENT IS FAIL WITH " MARKS END-IF. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. DATA DIVISION. WORKING-STORAGE SECTION. 01 IFELSE-CHK PIC X(6). 01 DAT-CHK PIC X(6). 01 LNGTH PIC 9(1). 01 COUNTER-VARIABLES. 05 X-COUNTER PIC 9(01) VALUE ZEROS. 05 X-OP-COUNTER PIC 9(01) VALUE 1. 01 MARKS PIC 9(3). 88 PASS VALUE IS 035 THRU 100. 88 FAIL VALUE IS 000 THRU 034. PROCEDURE DIVISION. INITIALIZE IFELSE-CHK , DAT-CHK , LNGTH. ACCEPT IFELSE-CHK. DISPLAY IFELSE-CHK. STRING IFELSE-CHK DELIMITED BY ' ' INTO DAT-CHK. MOVE LENGTH OF DAT-CHK TO LNGTH. DISPLAY 'LENGTH : ' LNGTH. DISPLAY 'DATA-CHK: ' DAT-CHK ' END'. IF DAT-CHK = "MALE" THEN DISPLAY "HE IS MALE" ELSE DISPLAY "SHE IS FEMALE" END-IF. ACCEPT MARKS. DISPLAY MARKS. IF PASS THEN DISPLAY "STUDENT IS PASS WITH " MARKS ELSE DISPLAY "STUDENT IS FAIL WITH " MARKS END-IF. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW07RG. AUTHOR. RACHEL GRAHAM. DATE-WRITTEN. 02-17-2019. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-RECORD-IN. 05 EMP-PAY-DATE-IN. 10 EMP-PAY-YY PIC X(02). 10 EMP-PAY-MM PIC X(02). 10 EMP-PAY-DD PIC X(02). 05 EMP-NUMBER PIC X(03). 05 EMP-NAME. 10 EMP-LAST-NAME PIC X(15). 10 EMP-FIRST-NAME PIC X(10). 05 HOURS-WORKED PIC 9(02)V99. 05 PAY-RATE PIC 9(02)V99. 05 EMP-PAY-TYPE PIC X(01). 88 HOURLY VALUE 'H'. 88 SALARY VALUE 'S'. 05 EMP-POSITION PIC X(01). 88 PROGRAMMER VALUE 'P'. 88 ACCOUNTANT VALUE 'A'. 88 MANAGER VALUE 'M'. 88 INTERN VALUE 'I'. 88 TESTER VALUE 'T'. 05 EMP-GROSS-OUT PIC 9(04)V99. 05 EMP-OVERTIME-HOURS-OUT PIC 9(02). 05 EMP-OVERTIME-OUT PIC 9(04)V99. 05 EMP-TAXES-OUT PIC 9(04)V99. 05 EMP-NET-OUT PIC 9(04)V99. 01 DISPLAY-FORMATTING. 05 PRINT-PAY-RATE PIC ZZZZ,ZZ9.99. 05 PRINT-GROSS-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-NET-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-TAXES PIC ZZZZ,ZZ9.99. 05 PRINT-OVERTIME-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-OVERTIME-HOURS PIC ZZZZZ,ZZ9.99. 05 PRINT-HOURS-WORKED PIC ZZZZZ,ZZ9.99. 05 PRINT-PROGRAM-GROSS PIC ZZZZ,ZZ9.99. 05 PRINT-PROGRAM-NET-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-PROGRAM-TAXES PIC ZZZZ,ZZ9.99. 05 PRINT-AVERAGE-GROSS PIC ZZZZ,ZZ9.99. 05 PRINT-AVERAGE-NET PIC ZZZZ,ZZ9.99. 05 PRINT-PROGRAM-OVERTIME-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-PROGRAM-HOURS PIC ZZZZZZZZ9.99. 05 PRINT-PROGRAM-OVERTIME-HOURS PIC ZZZZZZZZ9.99. 05 PRINT-PROGRAM-HOURS-WORKED PIC ZZZZZZZZ9.99. 05 PRINT-PROGRAM-RECORD-COUNT PIC ZZZZZZZZZZZ9. 01 EMP-TAX-RATE PIC V99. 01 EMP-OVERTIME-RATE PIC 9(04)V99. 01 EMP-REGULAR-PAY PIC 9(04)V99. 01 EMP-POSITION-TITLE PIC X(18). 01 EMPLOYEE-PAY-TOTALS. 05 EMP-GROSS-PAY PIC 9(04)V99. 05 EMP-NET-PAY PIC 9(04)V99. 05 EMP-TAXES PIC 9(04)V99. 05 EMP-OVERTIME-HOURS PIC 9(02)V99. 05 EMP-OVERTIME-PAY PIC 9(03)V99. 01 PROGRAM-TOTALS. 05 PROGRAM-GROSS-PAY PIC 9(06)V99. 05 PROGRAM-NET-PAY PIC 9(06)V99. 05 PROGRAM-TAXES PIC 9(06)V99. 05 PROGRAM-RECORD-COUNT PIC 9(02). 05 PROGRAM-HOURS-WORKED PIC 9(04)V99. 05 PROGRAM-AVERAGE-GROSS PIC 9(06)V99. 05 PROGRAM-AVERAGE-NET PIC 9(06)V99. 05 PROGRAM-OVERTIME-HOURS PIC 9(04)V99. 05 PROGRAM-OVERTIME-PAY PIC 9(06)V99. 01 CURRENT-DATE. 05 CURRENT-YEAR PIC 99. 05 CURRENT-MONTH PIC 99. 05 CURRENT-DAY PIC 99. 01 WS-POSITIONS. 05 WS-PROGRAMMER. 10 WS-PROGRAMMER-CODE PIC X(01) VALUE 'P'. 10 WS-PROGRAMMER-TITLE PIC X(18) VALUE 'PROGRAMMER'. 10 WS-PROGRAMMER-RATE PIC 9(02)V99 VALUE 65.00. 05 WS-ACCOUNTANT. 10 WS-ACCOUNTANT-CODE PIC X(01) VALUE 'A'. 10 WS-ACCOUNTANT-TITLE PIC X(18) VALUE 'ACCOUNTANT'. 10 WS-ACCOUNTANT-RATE PIC 9(02)V99 VALUE 58.00. 05 WS-MANAGER. 10 WS-MANAGER-CODE PIC X(01) VALUE 'M'. 10 WS-MANAGER-TITLE PIC X(18) VALUE 'MANAGER'. 10 WS-MANAGER-RATE PIC 9(02)V99 VALUE 62.00. 05 WS-INTERN. 10 WS-INTERN-CODE PIC X(01) VALUE 'I'. 10 WS-INTERN-TITLE PIC X(18) VALUE 'INTERN'. 10 WS-INTERN-RATE PIC 9(02)V99 VALUE 22.00. 05 WS-TESTER. 10 WS-TESTER-CODE PIC X(01) VALUE 'T'. 10 WS-TESTER-TITLE PIC X(18) VALUE 'TESTER'. 10 WS-TESTER-RATE PIC 9(02)V99 VALUE 22.00. PROCEDURE DIVISION. 0000-DRIVER. PERFORM 0100-INITIALIZE-PROGRAM. PERFORM 1000-PROCESS-PAYROLL-RECORDS UNTIL EMPLOYEE-RECORD-IN = ' '. PERFORM 2000-PROVIDE-FINAL-TOTALS. PERFORM 3000-CLOSE-PROGRAM. GOBACK. 0100-INITIALIZE-PROGRAM. ACCEPT CURRENT-DATE FROM DATE. DISPLAY 'PAYROLL HW07RG FOR RACHEL GRAHAM'. DISPLAY ' PROGRAM BEGINS: ' CURRENT-MONTH '/' CURRENT-DAY '/' CURRENT-YEAR. DISPLAY '--'. MOVE .32 TO EMP-TAX-RATE. PERFORM 1900-ACCEPT-RECORD. 1000-PROCESS-PAYROLL-RECORDS. ADD 1 TO PROGRAM-RECORD-COUNT. PERFORM 1100-DETERMINE-POS-AND-PAY. PERFORM 1200-CALCULATE-PAYROLL. PERFORM 1300-UPDATE-PROGRAM-TOTALS. PERFORM 1400-DISPLAY-PAYROLL. PERFORM 1900-ACCEPT-RECORD. 1100-DETERMINE-POS-AND-PAY. EVALUATE TRUE ALSO TRUE WHEN PROGRAMMER ALSO ANY MOVE WS-PROGRAMMER-RATE TO PAY-RATE WHEN ACCOUNTANT ALSO ANY MOVE WS-ACCOUNTANT-RATE TO PAY-RATE WHEN MANAGER ALSO ANY MOVE WS-MANAGER-RATE TO PAY-RATE WHEN INTERN ALSO ANY MOVE WS-INTERN-RATE TO PAY-RATE WHEN TESTER ALSO ANY MOVE WS-TESTER-RATE TO PAY-RATE WHEN OTHER MOVE 0000 TO PAY-RATE DISPLAY ' POSITION ERROR' END-EVALUATE. EVALUATE TRUE ALSO TRUE WHEN PROGRAMMER ALSO ANY MOVE WS-PROGRAMMER-TITLE TO EMP-POSITION-TITLE WHEN ACCOUNTANT ALSO ANY MOVE WS-ACCOUNTANT-TITLE TO EMP-POSITION-TITLE WHEN MANAGER ALSO ANY MOVE WS-MANAGER-TITLE TO EMP-POSITION-TITLE WHEN INTERN ALSO ANY MOVE WS-INTERN-TITLE TO EMP-POSITION-TITLE WHEN TESTER ALSO ANY MOVE WS-TESTER-TITLE TO EMP-POSITION-TITLE WHEN OTHER MOVE 'UNDEFINED POSITION' TO EMP-POSITION-TITLE END-EVALUATE. 1200-CALCULATE-PAYROLL. IF SALARY THEN COMPUTE EMP-GROSS-PAY = 40 * PAY-RATE MOVE 0.00 TO EMP-OVERTIME-PAY END-IF IF HOURLY THEN COMPUTE EMP-OVERTIME-RATE = PAY-RATE * (1.5) IF HOURS-WORKED > 40 COMPUTE EMP-REGULAR-PAY = 40 * PAY-RATE COMPUTE EMP-OVERTIME-PAY = (HOURS-WORKED - 40) * EMP-OVERTIME-RATE COMPUTE EMP-GROSS-PAY = EMP-REGULAR-PAY + EMP-OVERTIME-PAY ELSE COMPUTE EMP-GROSS-PAY= HOURS-WORKED * PAY-RATE MOVE 0.00 TO EMP-OVERTIME-PAY END-IF END-IF IF NOT (HOURLY OR SALARY) THEN COMPUTE EMP-GROSS-PAY= HOURS-WORKED * PAY-RATE END-IF IF HOURS-WORKED > 40 COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40 ELSE MOVE 0.00 TO EMP-OVERTIME-HOURS END-IF COMPUTE EMP-TAXES= EMP-TAX-RATE * EMP-GROSS-PAY. COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES. 1300-UPDATE-PROGRAM-TOTALS. ADD EMP-GROSS-PAY TO PROGRAM-GROSS-PAY. ADD EMP-TAXES TO PROGRAM-TAXES. ADD EMP-NET-PAY TO PROGRAM-NET-PAY. ADD EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS. ADD EMP-OVERTIME-PAY TO PROGRAM-OVERTIME-PAY. ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED. 1400-DISPLAY-PAYROLL. MOVE HOURS-WORKED TO PRINT-HOURS-WORKED. MOVE PAY-RATE TO PRINT-PAY-RATE. MOVE EMP-GROSS-PAY TO PRINT-GROSS-PAY. MOVE EMP-OVERTIME-PAY TO PRINT-OVERTIME-PAY. MOVE EMP-OVERTIME-HOURS TO PRINT-OVERTIME-HOURS. MOVE EMP-TAXES TO PRINT-TAXES. MOVE EMP-NET-PAY TO PRINT-NET-PAY. MOVE EMP-OVERTIME-HOURS TO PRINT-OVERTIME-HOURS. DISPLAY 'RECORD #'PROGRAM-RECORD-COUNT': ' EMPLOYEE-RECORD-IN. DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ',' EMP-FIRST-NAME. DISPLAY ' NUMBER : ' EMP-NUMBER. DISPLAY ' HOURS : ' PRINT-HOURS-WORKED. DISPLAY ' PAY RATE : $' PRINT-PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' TITLE : ' EMP-POSITION-TITLE. DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE. DISPLAY ' GROSS PAY : $' PRINT-GROSS-PAY. DISPLAY ' OT PAY : $' PRINT-OVERTIME-PAY. DISPLAY ' OT HOURS : ' PRINT-OVERTIME-HOURS. DISPLAY ' TAXES : $' PRINT-TAXES. DISPLAY ' NET PAY : $' PRINT-NET-PAY. DISPLAY '--'. 1900-ACCEPT-RECORD. ACCEPT EMPLOYEE-RECORD-IN. 2000-PROVIDE-FINAL-TOTALS. DIVIDE PROGRAM-GROSS-PAY BY PROGRAM-RECORD-COUNT GIVING PROGRAM-AVERAGE-GROSS. DIVIDE PROGRAM-NET-PAY BY PROGRAM-RECORD-COUNT GIVING PROGRAM-AVERAGE-NET. MOVE PROGRAM-HOURS-WORKED TO PRINT-PROGRAM-HOURS-WORKED. MOVE PROGRAM-GROSS-PAY TO PRINT-PROGRAM-GROSS. MOVE PROGRAM-TAXES TO PRINT-PROGRAM-TAXES. MOVE PROGRAM-NET-PAY TO PRINT-PROGRAM-NET-PAY. MOVE PROGRAM-OVERTIME-HOURS TO PRINT-PROGRAM-OVERTIME-HOURS. MOVE PROGRAM-OVERTIME-PAY TO PRINT-PROGRAM-OVERTIME-PAY. MOVE PROGRAM-AVERAGE-GROSS TO PRINT-AVERAGE-GROSS. MOVE PROGRAM-AVERAGE-NET TO PRINT-AVERAGE-NET. MOVE PROGRAM-RECORD-COUNT TO PRINT-PROGRAM-RECORD-COUNT. DISPLAY 'FILE TOTALS : '. DISPLAY ' RECORDS : ' PRINT-PROGRAM-RECORD-COUNT. DISPLAY ' HOURS : ' PRINT-PROGRAM-HOURS-WORKED. DISPLAY ' GROSS : $' PRINT-PROGRAM-GROSS. DISPLAY ' TAXES : $' PRINT-PROGRAM-TAXES. DISPLAY ' NET : $' PRINT-PROGRAM-NET-PAY. DISPLAY ' OT HOURS : ' PRINT-PROGRAM-OVERTIME-HOURS. DISPLAY ' OT PAY : $' PRINT-PROGRAM-OVERTIME-PAY. DISPLAY 'AVERAGE GROSS: $' PRINT-AVERAGE-GROSS. DISPLAY ' AVERAGE NET: $' PRINT-AVERAGE-NET. DISPLAY '--'. 3000-CLOSE-PROGRAM. DISPLAY 'END OF PROGRAM FOR RACHEL GRAHAM'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW06YM. AUTHOR. YIMENG MA. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-RECORD-IN. 05 EMP-PAY-DATE-IN. 10 EMP-PAY-YY PIC X(02). 10 EMP-PAY-MM PIC X(02). 10 EMP-PAY-DD PIC X(02). 05 EMP-NUMBER PIC X(03). 05 EMP-NAME. 10 EMP-LAST-NAME PIC X(15). 10 EMP-FIRST-NAME PIC X(10). 05 HOURS-WORKED PIC 99V99. 05 PAY-RATE PIC 99V99. 05 EMP-PAY-TYPE PIC X. 88 HOURLY-PAY VALUE 'H'. 88 SALARY-PAY VALUE 'S'. 05 EMP-POSITION PIC X. 88 PROGRAMMER VALUE 'P'. 88 ACCOUNTANT VALUE 'A'. 88 MANAGER VALUE 'M'. 88 INTERN VALUE 'I'. 88 TESTER VALUE 'T'. 05 EMP-GROSS-OUT PIC $ZZZ,ZZ9.99. 05 EMP-OVERTIME-HOURS-OUT PIC ZZZZZZZ9.99. 05 EMP-OVERTIME-OUT PIC $ZZZ,ZZ9.99. 05 EMP-TAXES-OUT PIC $ZZZ,ZZ9.99. 05 EMP-NET-OUT PIC $ZZZ,ZZ9.99. 05 FILLER PIC X(10). 01 EMP-TAX-RATE PIC V99. 01 EMP-POSITION-TITLE PIC X(18). 01 EMPLOYEE-PAY-TOTALS. 05 EMP-GROSS-PAY PIC 9(04)V99. 05 EMP-NET-PAY PIC 9(04)V99. 05 EMP-TAXES PIC 9(04)V99. 05 EMP-OVERTIME-HOURS PIC 9(02)V99. 05 EMP-OVERTIME-PAY PIC 9(03)V99. 01 PROGRAM-TOTALS. 05 PROGRAM-GROSS-PAY PIC 9(04)V99. 05 PROGRAM-NET-PAY PIC 9(04)V99. 05 PROGRAM-TAXES PIC 9(04)V99. 05 PROGRAM-RECORD-COUNT PIC 9(02). 05 PROGRAM-HOURS-WORKED PIC 9(04)V99. 05 PROGRAM-AVERAGE-GROSS PIC 9(04)V99. 05 PROGRAM-AVERAGE-NET PIC 9(04)V99. 05 PROGRAM-OVERTIME-HOURS PIC 9(04)V99. 05 PROGRAM-OVERTIME-PAY PIC 9(04)V99. 01 RPT-PROGRAM-TOTALS. 05 RPT-PROGRAM-GROSS-PAY PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-NET-PAY PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-TAXES PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-HOURS-WORKED PIC ZZZZZZZ9.99. 05 RPT-PROGRAM-AVERAGE-GROSS PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-AVERAGE-NET PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-OVERTIME-HOURS PIC ZZZZZZZ9.99. 05 RPT-PROGRAM-OVERTIME-PAY PIC $ZZZ,ZZ9.99. 01 WS-DATE-IN PIC 9(08). 01 WS-POSITIONS. 05 WS-PROGRAMMER. 10 WS-PROGRAMMER-CODE PIC X(01) VALUE 'P'. 10 WS-PROGRAMMER-TITLE PIC X(18) VALUE 'PROGRAMMER'. 10 WS-PROGRAMMER-RATE PIC 9(02)V99 VALUE 65.00. 05 WS-ACCOUNTANT. 10 WS-ACCOUNTANT-CODE PIC X(01) VALUE 'A'. 10 WS-ACCOUNTANT-TITLE PIC X(18) VALUE 'ACCOUNTANT'. 10 WS-ACCOUNTANT-RATE PIC 9(02)V99 VALUE 58.00. 05 WS-MANAGER. 10 WS-MANAGER-CODE PIC X(01) VALUE 'M'. 10 WS-MANAGER-TITLE PIC X(18) VALUE 'MANAGER'. 10 WS-MANAGER-RATE PIC 9(02)V99 VALUE 62.00. 05 WS-INTERN. 10 WS-INTERN-CODE PIC X(01) VALUE 'I'. 10 WS-INTERN-TITLE PIC X(18) VALUE 'INTERN'. 10 WS-INTERN-RATE PIC 9(02)V99 VALUE 22.00. 05 WS-TESTER. 10 WS-TESTER-CODE PIC X(01) VALUE 'T'. 10 WS-TESTER-TITLE PIC X(18) VALUE 'TESTER'. 10 WS-TESTER-RATE PIC 9(02)V99 VALUE 22.00. PROCEDURE DIVISION. 0000-DRIVER. PERFORM 0100-INITIALIZE-PROGRAM PERFORM 1000-PROCESS-PAYROLL-RECORDS PERFORM 2000-PROVIDE-FINAL-TOTALS PERFORM 3000-CLOSE-PROGRAM. 0100-INITIALIZE-PROGRAM. PERFORM 1900-ACCEPT-RECORD ACCEPT WS-DATE-IN FROM DATE YYYYMMDD. DISPLAY 'PAYROLL HW06YM FOR YIMENG MA' DISPLAY 'PROGRAM BEGINS: ' WS-DATE-IN MOVE .32 TO EMP-TAX-RATE PERFORM 1000-PROCESS-PAYROLL-RECORDS. 1000-PROCESS-PAYROLL-RECORDS. COMPUTE PROGRAM-RECORD-COUNT = PROGRAM-RECORD-COUNT + 1 DISPLAY ' RECORDS : ' PROGRAM-RECORD-COUNT PERFORM 1100-DETERMINE-POSITION-AND-PAY PERFORM 1200-CALCULATE-PAYROLL PERFORM 1300-UPDATE-PROGRAM-TOTALS PERFORM 1400-DISPLAY-PAYROLL-RECORD-INFO PERFORM 1900-ACCEPT-RECORD. 1100-DETERMINE-POSITION-AND-PAY. EVALUATE EMP-POSITION WHEN WS-PROGRAMMER-CODE MOVE WS-PROGRAMMER-TITLE TO EMP-POSITION-TITLE MOVE WS-PROGRAMMER-RATE TO PAY-RATE WHEN WS-ACCOUNTANT-CODE MOVE WS-ACCOUNTANT-TITLE TO EMP-POSITION-TITLE MOVE WS-ACCOUNTANT-RATE TO PAY-RATE WHEN WS-MANAGER-CODE MOVE WS-MANAGER-TITLE TO EMP-POSITION-TITLE MOVE WS-MANAGER-RATE TO PAY-RATE WHEN WS-INTERN-CODE MOVE WS-INTERN-TITLE TO EMP-POSITION-TITLE MOVE WS-INTERN-RATE TO PAY-RATE WHEN WS-TESTER-CODE MOVE WS-TESTER-TITLE TO EMP-POSITION-TITLE MOVE WS-TESTER-RATE TO PAY-RATE WHEN OTHER MOVE 'UNDEFINED-POSITION' TO EMP-POSITION-TITLE MOVE '00.00' TO PAY-RATE. 1200-CALCULATE-PAYROLL. IF EMP-PAY-TYPE = 'S' COMPUTE EMP-GROSS-PAY = 40 * PAY-RATE MOVE '0' TO EMP-OVERTIME-PAY IF HOURS-WORKED > 40 COMPUTE EMP-OVERTIME-HOURS = HOURS-WORKED - 40. IF EMP-PAY-TYPE = 'H' IF HOURS-WORKED > 40 COMPUTE EMP-OVERTIME-HOURS = HOURS-WORKED - 40 COMPUTE EMP-OVERTIME-PAY = 1.5 * PAY-RATE * EMP-OVERTIME-HOURS COMPUTE EMP-GROSS-PAY = 40 * PAY-RATE + EMP-OVERTIME-PAY IF HOURS-WORKED < 40 COMPUTE EMP-GROSS-PAY = HOURS-WORKED * PAY-RATE. COMPUTE EMP-TAXES = EMP-GROSS-PAY * EMP-TAX-RATE. COMPUTE EMP-NET-PAY = EMP-GROSS-PAY - EMP-TAXES. 1300-UPDATE-PROGRAM-TOTALS. COMPUTE PROGRAM-HOURS-WORKED = PROGRAM-HOURS-WORKED + HOURS-WORKED COMPUTE PROGRAM-GROSS-PAY = PROGRAM-GROSS-PAY + EMP-GROSS-PAY COMPUTE PROGRAM-TAXES = PROGRAM-TAXES + EMP-TAXES COMPUTE PROGRAM-NET-PAY = PROGRAM-NET-PAY + EMP-NET-PAY COMPUTE PROGRAM-OVERTIME-HOURS = PROGRAM-OVERTIME-HOURS + EMP-OVERTIME-HOURS COMPUTE PROGRAM-OVERTIME-PAY = PROGRAM-OVERTIME-PAY + EMP-OVERTIME-PAY COMPUTE PROGRAM-AVERAGE-GROSS = PROGRAM-GROSS-PAY / PROGRAM-RECORD-COUNT COMPUTE PROGRAM-AVERAGE-NET = PROGRAM-NET-PAY / PROGRAM-RECORD-COUNT. 1400-DISPLAY-PAYROLL-RECORD-INFO. MOVE EMP-GROSS-PAY TO EMP-GROSS-OUT. MOVE EMP-OVERTIME-HOURS TO EMP-OVERTIME-HOURS-OUT. MOVE EMP-OVERTIME-PAY TO EMP-OVERTIME-OUT. MOVE EMP-TAXES TO EMP-TAXES-OUT. MOVE EMP-NET-PAY TO EMP-NET-OUT. DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ', ' EMP-FIRST-NAME. DISPLAY ' NUMBER : ' EMP-NUMBER. DISPLAY ' HOURS : ' HOURS-WORKED. DISPLAY ' PAY RATE : ' PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' TITLE : ' EMP-POSITION-TITLE DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE. DISPLAY ' GROSS PAY: ' EMP-GROSS-OUT. DISPLAY ' OT PAY : ' EMP-OVERTIME-OUT. DISPLAY ' OT HOURS : ' EMP-OVERTIME-HOURS-OUT. DISPLAY ' TAXES : ' EMP-TAXES-OUT. DISPLAY ' NET PAY : ' EMP-NET-OUT. DISPLAY '--'. 1900-ACCEPT-RECORD. ACCEPT EMPLOYEE-RECORD-IN. 2000-PROVIDE-FINAL-TOTALS. MOVE PROGRAM-HOURS-WORKED TO RPT-PROGRAM-HOURS-WORKED. MOVE PROGRAM-GROSS-PAY TO RPT-PROGRAM-GROSS-PAY. MOVE PROGRAM-TAXES TO RPT-PROGRAM-TAXES. MOVE PROGRAM-NET-PAY TO RPT-PROGRAM-NET-PAY. MOVE PROGRAM-OVERTIME-HOURS TO RPT-PROGRAM-OVERTIME-HOURS. MOVE PROGRAM-OVERTIME-PAY TO RPT-PROGRAM-OVERTIME-PAY. MOVE PROGRAM-AVERAGE-GROSS TO RPT-PROGRAM-AVERAGE-GROSS. MOVE PROGRAM-AVERAGE-NET TO RPT-PROGRAM-AVERAGE-NET DISPLAY 'FILE TOTALS:'. DISPLAY ' RECORDS : ' PROGRAM-RECORD-COUNT. DISPLAY ' HOURS : ' RPT-PROGRAM-HOURS-WORKED. DISPLAY ' GROSS : ' RPT-PROGRAM-GROSS-PAY. DISPLAY ' TAXES : ' RPT-PROGRAM-TAXES. DISPLAY ' NET : ' RPT-PROGRAM-NET-PAY. DISPLAY ' OT HOURS : ' RPT-PROGRAM-OVERTIME-HOURS. DISPLAY ' OT PAY : ' RPT-PROGRAM-OVERTIME-PAY. DISPLAY 'AVERAGE GROSS: ' RPT-PROGRAM-AVERAGE-GROSS. DISPLAY ' AVERAGE NET: ' RPT-PROGRAM-AVERAGE-NET. 3000-CLOSE-PROGRAM. DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR YIMENG MA'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW04GH. AUTHOR GAVIN HOOPER. DATE-WRITTEN 02/16/2019. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-RECORD-IN. 05 EMP-PAY-DATE-IN. 10 EMP-PAY-YY PIC X(02). 10 EMP-PAY-MM PIC X(02). 10 EMP-PAY-DD PIC X(02). 05 EMP-NUMBER PIC X(03). 05 EMP-NAME. 10 EMP-LAST-NAME PIC X(15). 10 EMP-FIRST-NAME PIC X(10). 05 HOURS-WORKED PIC 99V99. 05 PAY-RATE PIC 99V99. 05 EMP-PAY-TYPE PIC X. 88 HOURLY-PAY VALUE 'H'. 88 SALARY-PAY VALUE 'S'. 05 EMP-POSITION PIC X(20). 88 PROGRAMMER VALUE 'P'. 88 ACCOUNTANT VALUE 'A'. 88 MANAGER VALUE 'M'. 88 INTERN VALUE 'I'. 88 TESTER VALUE 'T'. 05 EMP-GROSS-OUT PIC 9(04)V99. 05 EMP-OVERTIME-HOURS-OUT PIC 9(02). 05 EMP-OVERTIME-OUT PIC 9(04)V99. 05 EMP-TAXES-OUT PIC 9(04)V99. 05 EMP-NET-OUT PIC 9(04)V99. 05 FILLER PIC X(10). 01 EMP-TAX-RATE PIC V99 VALUE .32. 01 EMP-POSITION-TITLE PIC X(18). 01 EMPLOYEE-PAY-TOTALS. 05 EMP-GROSS-PAY PIC 9(04)V99. 05 EMP-NET-PAY PIC 9(04)V99. 05 EMP-TAXES PIC 9(04)V99. 05 EMP-OVERTIME-HOURS PIC 9(02)V99. 05 EMP-OVERTIME-PAY PIC 9(03)V99. 01 PROGRAM-TOTALS. 05 PROGRAM-GROSS-PAY PIC 9(04)V99. 05 PROGRAM-NET-PAY PIC 9(04)V99. 05 PROGRAM-TAXES PIC 9(04)V99. 05 PROGRAM-RECORD-COUNT PIC 9(01). 05 PROGRAM-HOURS-WORKED PIC 9(04)V99. 05 PROGRAM-AVERAGE-GROSS PIC 9(04)V99. 05 PROGRAM-AVERAGE-NET PIC 9(04)V99. 05 PROGRAM-OVERTIME-HOURS PIC 9(02)V99. 05 PROGRAM-OVERTIME-PAY PIC 9(03)V99. 01 WS-DATE-IN PIC 9(08). PROCEDURE DIVISION. DISPLAY 'PAYROLL HW04GH FOR GAVIN HOOPER'. DISPLAY '--'. ACCEPT EMPLOYEE-RECORD-IN. ADD 1 TO PROGRAM-RECORD-COUNT. IF EMP-PAY-TYPE = 'H' THEN COMPUTE EMP-GROSS-PAY= (HOURS-WORKED * PAY-RATE) + EMP-OVERTIME-PAY ELSE COMPUTE EMP-GROSS-PAY=(40 * PAY-RATE) COMPUTE EMP-TAXES= EMP-GROSS-PAY * EMP-TAX-RATE COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-PAY=PAY-RATE * 1.5 * EMP-OVERTIME-HOURS IF EMP-PAY-TYPE = 'S' THEN SUBTRACT EMP-OVERTIME-PAY FROM EMP-OVERTIME-PAY. IF EMP-POSITION = 'P' THEN MOVE 'PROGRAMMER'TO EMP-POSITION ELSE IF EMP-POSITION = 'A' THEN MOVE 'ACCOUNTANT'TO EMP-POSITION ELSE IF EMP-POSITION = 'M' THEN MOVE 'MANAGER'TO EMP-POSITION ELSE IF EMP-POSITION = 'I' THEN MOVE 'INTERN'TO EMP-POSITION ELSE IF EMP-POSITION = 'T' THEN MOVE 'TESTER'TO EMP-POSITION ELSE MOVE 'UNDEFINED POSITION' TO EMP-POSITION. DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ', ' EMP-FIRST-NAME. DISPLAY ' NUMBER : ' EMP-NUMBER. DISPLAY ' HOURS : ' HOURS-WORKED. DISPLAY ' PAY RATE : ' PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE. DISPLAY ' GROSS PAY: ' EMP-GROSS-PAY DISPLAY ' OT PAY : ' EMP-OVERTIME-PAY. DISPLAY ' OT HOURS : 'EMP-OVERTIME-HOURS. DISPLAY ' TAXES : 'EMP-TAXES DISPLAY ' NET PAY : 'EMP-NET-PAY DISPLAY '--'. ADD EMP-GROSS-PAY TO PROGRAM-GROSS-PAY. ADD EMP-TAXES TO PROGRAM-TAXES. ADD EMP-NET-PAY TO PROGRAM-NET-PAY. ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED. ADD EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS. ADD EMP-OVERTIME-PAY TO PROGRAM-OVERTIME-PAY. ACCEPT EMPLOYEE-RECORD-IN. ADD 1 TO PROGRAM-RECORD-COUNT. IF EMP-PAY-TYPE = 'H' THEN COMPUTE EMP-GROSS-PAY= (HOURS-WORKED * PAY-RATE) + EMP-OVERTIME-PAY ELSE COMPUTE EMP-GROSS-PAY=(40 * PAY-RATE) COMPUTE EMP-TAXES= EMP-GROSS-PAY * EMP-TAX-RATE COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES IF EMP-PAY-TYPE = 'S' THEN SUBTRACT EMP-OVERTIME-PAY FROM EMP-OVERTIME-PAY. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-PAY=PAY-RATE * 1.5 * EMP-OVERTIME-HOURS IF EMP-POSITION = 'P' THEN MOVE 'PROGRAMMER'TO EMP-POSITION ELSE IF EMP-POSITION = 'A' THEN MOVE 'ACCOUNTANT'TO EMP-POSITION ELSE IF EMP-POSITION = 'M' THEN MOVE 'MANAGER'TO EMP-POSITION ELSE IF EMP-POSITION = 'I' THEN MOVE 'INTERN'TO EMP-POSITION ELSE IF EMP-POSITION = 'T' THEN MOVE 'TESTER'TO EMP-POSITION ELSE MOVE 'UNDEFINED POSITION' TO EMP-POSITION. DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ', ' EMP-FIRST-NAME. DISPLAY ' NUMBER : ' EMP-NUMBER. DISPLAY ' HOURS : ' HOURS-WORKED. DISPLAY ' PAY RATE : ' PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE. DISPLAY ' GROSS PAY: ' EMP-GROSS-PAY DISPLAY ' OT PAY : ' EMP-OVERTIME-PAY DISPLAY ' OT HOURS : 'EMP-OVERTIME-HOURS DISPLAY ' TAXES : ' EMP-TAXES. DISPLAY ' NET PAY : ' EMP-NET-PAY DISPLAY '--'. ADD EMP-GROSS-PAY TO PROGRAM-GROSS-PAY. ADD EMP-TAXES TO PROGRAM-TAXES. ADD EMP-NET-PAY TO PROGRAM-NET-PAY. ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED. ADD EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS. ADD EMP-OVERTIME-PAY TO PROGRAM-OVERTIME-PAY. COMPUTE PROGRAM-AVERAGE-GROSS=PROGRAM-GROSS-PAY/PROGRAM-RECORD-COUNT. COMPUTE PROGRAM-AVERAGE-NET=PROGRAM-NET-PAY/PROGRAM-RECORD-COUNT. DISPLAY 'FILE TOTALS:'. DISPLAY ' RECORDS : ' PROGRAM-RECORD-COUNT. DISPLAY ' HOURS : ' PROGRAM-HOURS-WORKED. DISPLAY ' GROSS : ' PROGRAM-GROSS-PAY. DISPLAY ' TAXES : ' PROGRAM-TAXES. DISPLAY ' NET : ' PROGRAM-NET-PAY. DISPLAY ' OT HOURS : ' PROGRAM-OVERTIME-HOURS. DISPLAY ' OT PAY : ' PROGRAM-OVERTIME-PAY. DISPLAY 'AVERAGE GROSS: ' PROGRAM-AVERAGE-GROSS. DISPLAY ' AVERAGE NET: ' PROGRAM-AVERAGE-NET. DISPLAY '--'. DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR GAVIN HOOPER'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW05GH. AUTHOR GAVIN HOOPER. DATE-WRITTEN 02/16/2019. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-RECORD-IN. 05 EMP-PAY-DATE-IN. 10 EMP-PAY-YY PIC X(02). 10 EMP-PAY-MM PIC X(02). 10 EMP-PAY-DD PIC X(02). 05 EMP-NUMBER PIC X(03). 05 EMP-NAME. 10 EMP-LAST-NAME PIC X(15). 10 EMP-FIRST-NAME PIC X(10). 05 HOURS-WORKED PIC 99V99. 05 PAY-RATE PIC 99V99. 05 EMP-PAY-TYPE PIC X. 88 HOURLY-PAY VALUE 'H'. 88 SALARY-PAY VALUE 'S'. 05 EMP-POSITION PIC X. 88 PROGRAMMER VALUE 'P'. 88 ACCOUNTANT VALUE 'A'. 88 MANAGER VALUE 'M'. 88 INTERN VALUE 'I'. 88 TESTER VALUE 'T'. 05 EMP-GROSS-OUT PIC 9(04)V99. 05 EMP-OVERTIME-HOURS-OUT PIC 9(02). 05 EMP-OVERTIME-OUT PIC 9(04)V99. 05 EMP-TAXES-OUT PIC 9(04)V99. 05 EMP-NET-OUT PIC 9(04)V99. 05 FILLER PIC X(10). 01 EMP-TAX-RATE PIC V99 VALUE .32. 01 EMP-POSITION-TITLE PIC X(18). 01 EMPLOYEE-PAY-TOTALS. 05 EMP-GROSS-PAY PIC 9(04)V99. 05 EMP-NET-PAY PIC 9(04)V99. 05 EMP-TAXES PIC 9(04)V99. 05 EMP-OVERTIME-HOURS PIC 9(02)V99. 05 EMP-OVERTIME-PAY PIC 9(03)V99. 01 PROGRAM-TOTALS. 05 PROGRAM-GROSS-PAY PIC 9(04)V99. 05 PROGRAM-NET-PAY PIC 9(04)V99. 05 PROGRAM-TAXES PIC 9(04)V99. 05 PROGRAM-RECORD-COUNT PIC 9(01). 05 PROGRAM-HOURS-WORKED PIC 9(04)V99. 05 PROGRAM-AVERAGE-GROSS PIC 9(04)V99. 05 PROGRAM-AVERAGE-NET PIC 9(04)V99. 05 PROGRAM-OVERTIME-HOURS PIC 9(02)V99. 05 PROGRAM-OVERTIME-PAY PIC 9(03)V99. 01 WS-DATE-IN PIC 9(08). 01 WS-POSITIONS. 05 WS-PROGRAMMER. 10 WS-PROGRAMMER-CODE PIC X(01) VALUE 'P'. 10 WS-PROGRAMMER-TITLE PIC X(18) VALUE 'PROGRAMMER'. 10 WS-PROGRAMMER-RATE PIC 9(02)V99 VALUE 65.00. 05 WS-ACCOUNTANT. 10 WS-ACCOUNTANT-CODE PIC X(01) VALUE 'A'. 10 WS-ACCOUNTANT-TITLE PIC X(18) VALUE 'ACCOUNTANT'. 10 WS-ACCOUNTANT-RATE PIC 9(02)V99 VALUE 58.00. 05 WS-MANAGER. 10 WS-MANAGER-CODE PIC X(01) VALUE 'M'. 10 WS-MANAGER-TITLE PIC X(18) VALUE 'MANAGER'. 10 WS-MANAGER-RATE PIC 9(02)V99 VALUE 62.00. 05 WS-INTERN. 10 WS-INTERN-CODE PIC X(01) VALUE 'I'. 10 WS-INTERN-TITLE PIC X(18) VALUE 'INTERN'. 10 WS-INTERN-RATE PIC 9(02)V99 VALUE 22.00. 05 WS-TESTER. 10 WS-TESTER-CODE PIC X(01) VALUE 'T'. 10 WS-TESTER-TITLE PIC X(18) VALUE 'TESTER'. 10 WS-TESTER-RATE PIC 9(02)V99 VALUE 22.00. PROCEDURE DIVISION. DISPLAY 'PAYROLL HW05GH FOR GAVIN HOOPER'. DISPLAY WS-POSITIONS. DISPLAY '--'. MOVE .32 TO EMP-TAX-RATE. ACCEPT EMPLOYEE-RECORD-IN. ADD 1 TO PROGRAM-RECORD-COUNT. EVALUATE EMP-POSITION WHEN 'P' MOVE 'PROGRAMMER' TO WS-POSITIONS WHEN 'A' MOVE 'ACCOUNTANT' TO WS-POSITIONS WHEN 'M' MOVE 'MANAGER' TO WS-POSITIONS WHEN 'I' MOVE 'INTERN' TO WS-POSITIONS WHEN 'T' MOVE 'TESTER' TO WS-POSITIONS WHEN OTHER MOVE 'UNDEFINED POSITION' TO WS-POSITIONS. EVALUATE EMP-POSITION WHEN 'P' MOVE 65.00 TO PAY-RATE WHEN 'A' MOVE 58.00 TO PAY-RATE WHEN 'M' MOVE 62.00 TO PAY-RATE WHEN 'I' MOVE 22.00 TO PAY-RATE WHEN 'T' MOVE 22.00 TO PAY-RATE WHEN OTHER MOVE 0000 TO PAY-RATE. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-PAY=PAY-RATE * 1.5 * EMP-OVERTIME-HOURS IF EMP-PAY-TYPE = 'S' THEN SUBTRACT EMP-OVERTIME-PAY FROM EMP-OVERTIME-PAY. IF EMP-PAY-TYPE = 'H' THEN COMPUTE EMP-GROSS-PAY= (HOURS-WORKED * PAY-RATE) + EMP-OVERTIME-PAY ELSE COMPUTE EMP-GROSS-PAY=(40 * PAY-RATE) COMPUTE EMP-TAXES= EMP-GROSS-PAY * EMP-TAX-RATE COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ', ' EMP-FIRST-NAME. DISPLAY ' NUMBER : ' EMP-NUMBER. DISPLAY ' HOURS : ' HOURS-WORKED. DISPLAY ' PAY RATE : ' PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' TITLE : ' WS-POSITIONS. DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE. DISPLAY ' GROSS PAY: ' EMP-GROSS-PAY DISPLAY ' OT PAY : ' EMP-OVERTIME-PAY. DISPLAY ' OT HOURS : ' EMP-OVERTIME-HOURS. DISPLAY ' TAXES : ' EMP-TAXES. DISPLAY ' NET PAY : ' EMP-NET-PAY. DISPLAY '--'. ADD EMP-GROSS-PAY TO PROGRAM-GROSS-PAY. ADD EMP-TAXES TO PROGRAM-TAXES. ADD EMP-NET-PAY TO PROGRAM-NET-PAY. ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED. ADD EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS. ADD EMP-OVERTIME-PAY TO PROGRAM-OVERTIME-PAY. ACCEPT EMPLOYEE-RECORD-IN. ADD 1 TO PROGRAM-RECORD-COUNT. EVALUATE EMP-POSITION WHEN 'P' MOVE 'PROGRAMMER' TO WS-POSITIONS WHEN 'A' MOVE 'ACCOUNTANT' TO WS-POSITIONS WHEN 'M' MOVE 'MANAGER' TO WS-POSITIONS WHEN 'I' MOVE 'INTERN' TO WS-POSITIONS WHEN 'T' MOVE 'TESTER' TO WS-POSITIONS WHEN OTHER MOVE 'UNDEFINED POSITION' TO WS-POSITIONS. EVALUATE EMP-POSITION WHEN 'P' MOVE 65.00 TO PAY-RATE WHEN 'A' MOVE 58.00 TO PAY-RATE WHEN 'M' MOVE 62.00 TO PAY-RATE WHEN 'I' MOVE 22.00 TO PAY-RATE WHEN 'T' MOVE 22.00 TO PAY-RATE WHEN OTHER MOVE 0000 TO PAY-RATE. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-PAY=PAY-RATE * 1.5 * EMP-OVERTIME-HOURS IF EMP-PAY-TYPE = 'S' THEN SUBTRACT EMP-OVERTIME-PAY FROM EMP-OVERTIME-PAY. IF EMP-PAY-TYPE = 'H' THEN COMPUTE EMP-GROSS-PAY= (HOURS-WORKED * PAY-RATE) + EMP-OVERTIME-PAY ELSE COMPUTE EMP-GROSS-PAY=(40 * PAY-RATE) COMPUTE EMP-TAXES= EMP-GROSS-PAY * EMP-TAX-RATE COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ', ' EMP-FIRST-NAME. DISPLAY ' NUMBER : ' EMP-NUMBER. DISPLAY ' HOURS : ' HOURS-WORKED. DISPLAY ' PAY RATE : ' PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' TITLE : ' WS-POSITIONS. DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE. DISPLAY ' GROSS PAY: ' EMP-GROSS-PAY DISPLAY ' OT PAY : ' EMP-OVERTIME-PAY. DISPLAY ' OT HOURS : ' EMP-OVERTIME-HOURS. DISPLAY ' TAXES : ' EMP-TAXES. DISPLAY ' NET PAY : ' EMP-NET-PAY. DISPLAY '--'. ADD EMP-GROSS-PAY TO PROGRAM-GROSS-PAY. ADD EMP-TAXES TO PROGRAM-TAXES. ADD EMP-NET-PAY TO PROGRAM-NET-PAY. ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED. ADD EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS. ADD EMP-OVERTIME-PAY TO PROGRAM-OVERTIME-PAY. COMPUTE PROGRAM-AVERAGE-GROSS=PROGRAM-GROSS-PAY/PROGRAM-RECORD-COUNT. COMPUTE PROGRAM-AVERAGE-NET=PROGRAM-NET-PAY/PROGRAM-RECORD-COUNT. DISPLAY 'FILE TOTALS:'. DISPLAY ' RECORDS : ' PROGRAM-RECORD-COUNT. DISPLAY ' HOURS : ' PROGRAM-HOURS-WORKED. DISPLAY ' GROSS : ' PROGRAM-GROSS-PAY. DISPLAY ' TAXES : ' PROGRAM-TAXES. DISPLAY ' NET : ' PROGRAM-NET-PAY. DISPLAY ' OT HOURS : ' PROGRAM-OVERTIME-HOURS. DISPLAY ' OT PAY : ' PROGRAM-OVERTIME-PAY. DISPLAY 'AVERAGE GROSS: ' PROGRAM-AVERAGE-GROSS. DISPLAY ' AVERAGE NET: ' PROGRAM-AVERAGE-NET. DISPLAY '--'. DISPLAY 'EXTRA CREDIT:' DISPLAY ' -Right Justify Align Decimal Places in Display + 5%'. DISPLAY ' -Update the PAY-RATE on the Input File and DISPLAY it as' ' as an output record. ' DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR GAVIN HOOPER'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. Iteration-If. AUTHOR. Michael Coughlan. DATA DIVISION. WORKING-STORAGE SECTION. 01 V-DII7DV-TEMP-VARS. 03 TMP0 PIC S9(5)V9(13) USAGE COMP-3 VALUE 0. 03 X-PIC-TMP0 REDEFINES TMP0 PIC X(10). 03 OLDTMP0 PIC S9(5) USAGE COMP-3 VALUE 0. 03 X-PIC-OLDTMP0 REDEFINES OLDTMP0 PIC X(3). 01 V-DII7DV-DII8DV. 03 F-ELEVATOR-POSITION PIC S9(4) USAGE COMP-4. 01 V-DII7DV-DII9DV. 03 F-ZAAAKAB PIC S9(9) USAGE COMP-4. PROCEDURE DIVISION. DISPLAY "Enter F-ELEVATOR" WITH NO ADVANCING. ACCEPT F-ELEVATOR-POSITION. DISPLAY "F-ELEVATOR-POSITION IS = ",F-ELEVATOR-POSITION. COMPUTE OLDTMP0 OF V-DII7DV-TEMP-VARS = ( F-ELEVATOR-POSITION OF V-DII7DV-DII8DV - 51 ) / 50. DISPLAY "OLDTMP 0 IS = ", OLDTMP0 OF V-DII7DV-TEMP-VARS. COMPUTE TMP0 OF V-DII7DV-TEMP-VARS = ( F-ELEVATOR-POSITION OF V-DII7DV-DII8DV - 51 ) / 50. DISPLAY "TMP 0 BEFORE IS = ", TMP0 OF V-DII7DV-TEMP-VARS. COMPUTE TMP0 OF V-DII7DV-TEMP-VARS = FUNCTION INTEGER ( TMP0 OF V-DII7DV-TEMP-VARS). DISPLAY "TMP 0 AFTER INTEGER IS = ", TMP0 OF V-DII7DV-TEMP-VARS. COMPUTE F-ZAAAKAB OF V-DII7DV-DII9DV = F-ELEVATOR-POSITION OF V-DII7DV-DII8DV - TMP0 OF V-DII7DV-TEMP-VARS * 2 - 2. DISPLAY "Result NEW is = ", F-ZAAAKAB OF V-DII7DV-DII9DV. COMPUTE F-ZAAAKAB OF V-DII7DV-DII9DV = F-ELEVATOR-POSITION OF V-DII7DV-DII8DV - OLDTMP0 OF V-DII7DV-TEMP-VARS * 2 - 2. DISPLAY "Result OLD is = ", F-ZAAAKAB OF V-DII7DV-DII9DV.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 MY-DATA. 05 ZAHL PIC 99999 VALUE 1. 05 PARAMETER PIC 99. 01 LESBAR. 05 AUSGABE-ZAHL PIC ZZZZ9. PROCEDURE DIVISION. ACCEPT PARAMETER. DISPLAY PARAMETER. PERFORM VARYING PARAMETER FROM PARAMETER BY -1 UNTIL PARAMETER < 2 MULTIPLY PARAMETER BY ZAHL GIVING ZAHL END-PERFORM. MOVE ZAHL TO AUSGABE-ZAHL DISPLAY AUSGABE-ZAHL. STOP RUN.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more