IDENTIFICATION DIVISION. PROGRAM-ID. HW04BH. AUTHOR. Brian Hamil. DATE-WRITTEN. 1/30/19. 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', 'p'. 88 ACCOUNTANT VALUE 'A', 'a'. 88 MANAGER VALUE 'M', 'm'. 88 INTERN VALUE 'I', 'i'. 88 TESTER VALUE 'T', 't'. 01 EMP-TAX-RATE PIC V99 VALUE .32. 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-RATE PIC 9(02)V99. 05 EMP-OVERTIME-PAY PIC 9(04)V99. 01 PROGRAM-TOTALS. 05 LOOP-COUNTER PIC 9(05) VALUE 0. 05 RECORD-LEN PIC 9(05). 05 TOTAL-GROSS-PAY PIC 9(05)V99. 05 TOTAL-NET-PAY PIC 9(05)V99. 05 TOTAL-TAXES PIC 9(05)V99. 05 TOTAL-HOURS-S PIC 9(03)V99. 05 TOTAL-HOURS-H PIC 9(03)V99. 05 TOTAL-HOURS PIC 9(03)V99. 05 SYS-DATE. 10 SYS-YEAR PIC 9(04). 10 SYS-MONTH PIC 9(02). 10 SYS-DAY PIC 9(02). 05 AVERAGE-GROSS-PAY PIC 9(05)V99. 05 AVERAGE-TAXES PIC 9(05)V99. 05 AVERAGE-NET-PAY PIC 9(05)V99. 05 TEMP PIC 9(05). 05 OVERTIME-HOURS PIC 9(03)V99. 05 OVERTIME-HOURLY PIC 9(03)V99. 05 OVERTIME-SALARY PIC 9(03)V99. 05 TOTAL-OVERTIME PIC 9(03)V99. 05 OVERTIME-PAY PIC 9(04)V99. PROCEDURE DIVISION. DISPLAY 'PAYROLL HW04BH FOR Brian Hamil.'. DISPLAY ' -- BEGINNING OF RECORDS --'. DISPLAY '--'. ACCEPT RECORD-LEN. IF RECORD-LEN < 1 ADD 2 TO RECORD-LEN. PERFORM UNTIL LOOP-COUNTER = RECORD-LEN ACCEPT EMPLOYEE-RECORD-IN IF HOURS-WORKED > 40 SUBTRACT 40 FROM HOURS-WORKED GIVING OVERTIME-HOURS IF EMP-PAY-TYPE = 'H' OR 'h' MULTIPLY PAY-RATE BY 1.5 GIVING EMP-OVERTIME-RATE MULTIPLY OVERTIME-HOURS BY EMP-OVERTIME-RATE GIVING EMP-OVERTIME-PAY MULTIPLY PAY-RATE BY 40 GIVING EMP-GROSS-PAY ADD EMP-OVERTIME-PAY TO EMP-GROSS-PAY GIVING EMP-GROSS-PAY ELSE IF EMP-PAY-TYPE = 'S' OR 's' MULTIPLY PAY-RATE BY 40 GIVING EMP-GROSS-PAY ELSE MULTIPLY PAY-RATE BY HOURS-WORKED GIVING EMP-GROSS-PAY ELSE MULTIPLY HOURS-WORKED BY PAY-RATE GIVING EMP-GROSS-PAY END-IF MULTIPLY EMP-GROSS-PAY BY EMP-TAX-RATE GIVING EMP-TAXES SUBTRACT EMP-TAXES FROM EMP-GROSS-PAY GIVING EMP-NET-PAY DISPLAY 'RECORD ENTRY : ' 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 : ' HOURS-WORKED DISPLAY ' OT HOURS : ' OVERTIME-HOURS DISPLAY ' PAY RATE : $' PAY-RATE DISPLAY ' OT RATE : $' EMP-OVERTIME-RATE DISPLAY ' POSITION : ' EMP-POSITION EVALUATE TRUE WHEN PROGRAMMER DISPLAY ' TITLE : PROGRAMMER' WHEN ACCOUNTANT DISPLAY ' TITLE : ACCOUNTANT' WHEN MANAGER DISPLAY ' TITLE : MANAGER' WHEN INTERN DISPLAY ' TITLE : INTERN' WHEN TESTER DISPLAY ' TITLE : TESTER' WHEN OTHER DISPLAY ' TITLE : INVALID ENTRY -- ERROR IN RECORD --' END-EVALUATE IF EMP-PAY-TYPE = 'H' OR 'h' OR 'S' OR 's' DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE ELSE DISPLAY ' PAY TYPE : INVALID ENTRY -- ERROR IN RECORD --' END-IF DISPLAY ' GROSS PAY: $' EMP-GROSS-PAY IF EMP-PAY-TYPE = 'S' DISPLAY ' OT PAY : NOT ELIGIBLE' ELSE DISPLAY ' OT PAY : $' EMP-OVERTIME-PAY END-IF DISPLAY ' TAXES : $' EMP-TAXES DISPLAY ' NET PAY : $' EMP-NET-PAY DISPLAY '--' ADD 1 TO LOOP-COUNTER ADD EMP-GROSS-PAY TO TOTAL-GROSS-PAY ADD EMP-TAXES TO TOTAL-TAXES ADD EMP-NET-PAY TO TOTAL-NET-PAY IF EMP-PAY-TYPE = 'H' OR 'h' ADD HOURS-WORKED TO TOTAL-HOURS-H ADD OVERTIME-HOURS TO OVERTIME-HOURLY ELSE ADD HOURS-WORKED TO TOTAL-HOURS-S ADD OVERTIME-HOURS TO OVERTIME-SALARY END-PERFORM. DISPLAY ' -- END OF RECORDS --'. MOVE FUNCTION CURRENT-DATE TO SYS-DATE. DISPLAY 'PROGRAM RUN DATE : ' SYS-MONTH '/' SYS-DAY '/' SYS-YEAR. DISPLAY '--'. DISPLAY ' TOTAL GROSS PAY : $' TOTAL-GROSS-PAY. DISPLAY ' TOTAL TAXES : $' TOTAL-TAXES. DISPLAY ' TOTAL NET PAY : $' TOTAL-NET-PAY. DISPLAY '--'. DISPLAY ' NUMBER OF RECORDS : ' LOOP-COUNTER. DISPLAY ' TOTAL HOURLY HOURS : ' TOTAL-HOURS-H. DISPLAY ' TOTAL SALARY HOURS : ' TOTAL-HOURS-S. ADD TOTAL-HOURS-H TO TOTAL-HOURS-S GIVING TOTAL-HOURS. DISPLAY ' OVERALL HOURS : ' TOTAL-HOURS DISPLAY ' TOTAL HOURLY OT : ' OVERTIME-HOURLY. DISPLAY ' TOTAL SALARY OT : ' OVERTIME-SALARY. ADD OVERTIME-SALARY TO OVERTIME-HOURLY GIVING TOTAL-OVERTIME. DISPLAY ' OVERALL OT : ' TOTAL-OVERTIME. DISPLAY '--'. DIVIDE TOTAL-GROSS-PAY BY LOOP-COUNTER GIVING AVERAGE-GROSS-PAY. DIVIDE TOTAL-TAXES BY LOOP-COUNTER GIVING AVERAGE-TAXES. DIVIDE TOTAL-NET-PAY BY LOOP-COUNTER GIVING AVERAGE-NET-PAY DISPLAY ' AVERAGE GROSS PAY : $' AVERAGE-GROSS-PAY. DISPLAY ' AVERAGE TAXES : $' AVERAGE-TAXES. DISPLAY ' AVERAGE NET PAY : $' AVERAGE-NET-PAY. DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR Brian Hamil'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. CUST-BILL. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-CUST. 05 WS-CUSTNAME PIC A(3) VALUE 'ABC'. 05 WS-UNITS PIC 9(3) VALUE 70. 05 WS-BILL PIC 9(4)V9(2). PROCEDURE DIVISION. ACCEPT WS-CUSTNAME. ACCEPT WS-UNITS. IF WS-UNITS < 100 THEN COMPUTE WS-BILL= (2.5 * WS-UNITS) DISPLAY 'TOTAL BILL:' WS-BILL ELSE IF WS-UNITS > 100 AND WS-UNITS < 250 THEN COMPUTE WS-BILL=(100 * 2.5)+(WS-UNITS - 100)*4 DISPLAY 'TOTAL BILL:' WS-BILL ELSE IF WS-UNITS>250 THEN COMPUTE WS-BILL=(100 * 2.5)+(150 * 4)+(WS-UNITS - 100 - 150)*10 DISPLAY 'TOTAL BILL:'WS-BILL ELSE DISPLAY 'INVALID' END-IF STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TABLE. 05 WS-RECORD OCCURS 10 TIMES ASCENDING KEY IS WS-NUM INDEXED BY I. 10 WS-NUM PIC 9(2). 10 WS-NAME PIC A(3). PROCEDURE DIVISION. MOVE '12ABC56DEF34GHI78JKL93MNO11PQR' TO WS-TABLE. SEARCH ALL WS-RECORD AT END DISPLAY 'RECORD NOT FOUND' WHEN WS-NUM(I) = 93 DISPLAY 'RECORD FOUND ' DISPLAY WS-NUM(I) DISPLAY WS-NAME(I) END-SEARCH.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-A PIC 9 VALUE 0. PROCEDURE DIVISION. MOVE 3 TO WS-A. EVALUATE TRUE WHEN WS-A > 2 DISPLAY 'WS-A GREATER THAN 2' WHEN WS-A < 0 DISPLAY 'WS-A LESS THAN 0' WHEN OTHER DISPLAY 'INVALID VALUE OF WS-A' END-EVALUATE. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM PIC 9(3). 88 PASS VALUES ARE 041 THRU 100. 88 FAIL VALUES ARE 000 THRU 40. PROCEDURE DIVISION. A000-FIRST-PARA. MOVE 65 TO WS-NUM. IF PASS DISPLAY 'Passed with ' WS-NUM ' marks'. IF FAIL DISPLAY 'FAILED with ' WS-NUM 'marks'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC 9(9). 01 WS-NUM2 PIC 9(9). PROCEDURE DIVISION. A000-FIRST-PARA. MOVE 25 TO WS-NUM1. MOVE 15 TO WS-NUM2. IF WS-NUM1 IS GREATER THAN OR EQUAL TO WS-NUM2 THEN DISPLAY 'WS-NUM1 IS GREATER THAN WS-NUM2' ELSE DISPLAY 'WS-NUM1 IS LESS THAN WS-NUM2' END-IF. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. DISPLAY 'Welcome to Tutorialspoint'. STOP RUN.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more