IDENTIFICATION DIVISION. PROGRAM-ID. HW06FL. 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. 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 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. *-Place PERFORM statement(s) code to control the program: * 1) Initialize Program * 2) Process all the records * 3) Calculate and Display Final Totals. * 4) Perform any closing program tasks and end the program. 0100-INITIALIZE-PROGRAM. *-Place statements here to do initial tasks the program needs: * 1) Accept & Format the date * 2) Complete initial display. * 3) Set tax rate * 4) Perform a paragraph to get the first record (ACCEPT the record) 1000-PROCESS-PAYROLL-RECORDS. *-Place Code & PERFORM Statement Code here needed for each record: * 1) Update the record count * 2) Display the record * 3) Perform a paragraph to set the pay & title * 4) Perform a paragraph to calculate the payroll amounts * 5) Perform a paragrpah to update the program totals * 6) Perform a paragraph to Display the Payroll Record Details * 7) Perform a paragraph to get the next record (ACCEPT the record) 1100-DETERMINE-POSITION-AND-PAY. *-set the pay & title here: 1200-CALCULATE-PAYROLL. *-calculate the payroll amount here: 1300-UPDATE-PROGRAM-TOTALS. *-update the program totals here: 1400-DISPLAY-PAYROLL-RECORD-INFO. *-Display the Payroll Record Details here: 1900-ACCEPT-RECORD. ACCEPT EMPLOYEE-RECORD-IN. 2000-PROVIDE-FINAL-TOTALS. *-Calculate and Display Final Totals here: 3000-CLOSE-PROGRAM. *-Perform any closing program tasks and end the program here:
IDENTIFICATION DIVISION. PROGRAM-ID. INVESTMENT-CAL. DATA DIVISION. WORKING-STORAGE SECTION. 01 BTD PIC X(20). 01 DTB PIC X(15). 01 PRT-DTB PIC X(15). 01 INPUTS1 PIC X(20). 01 INPUTS2 PIC X(20). 01 INPUTS3 PIC X(20). 01 INTLOOP PIC 99 VALUE 1. 01 TBLLOOP PIC 99 VALUE 1. 01 INT PIC 9 OCCURS 10 TIMES. 01 COUNTER PIC 99. 01 MULTIPLIER PIC 9(6) VALUE 1. 01 DECIMAL PIC 9(5). 01 CTR PIC 9(20). 01 COM PIC 9. 01 COM-DECIMAL PIC 9(10). 01 COM-DECIMAL2 PIC X(10). 01 PRT-FINAL PIC 9(10). 01 PRT-DECIMAL PIC ZZZZZZZZZ9. 01 prt-final1 pic x(10). 01 CNT1 PIC 99. 01 CNT2 PIC 99. 01 CTR1 PIC 9(20). 01 CTR2 PIC 9(5). 01 ANS PIC 9. 01 Q1 PIC 9(15). 01 R1 PIC 9(02). 01 R2 PIC 9(02). 01 R3 PIC X(02). 01 R4 PIC X(20). 01 R5 PIC X(20). 01 RLOOP PIC 99 VALUE 1. 01 RTBLLOOP PIC 99 VALUE 1. 01 RINT PIC 9 OCCURS 20 TIMES. 01 SLOOP PIC 99 VALUE 1. 01 STBLLOOP PIC 99 VALUE 1. 01 SINT PIC 9 OCCURS 15 TIMES. 01 WS PIC 9(20) OCCURS 20 TIMES. 01 WS1 PIC 9. PROCEDURE DIVISION. DISPLAY "*******************************************************************" DISPLAY "** BINARY TO DECIMAL/DECIMAL TO BINARY **" DISPLAY "** CONVERTER **" DISPLAY "*******************************************************************" DISPLAY "** SELECT OPTION **" DISPLAY "** **" DISPLAY "** 1 BINARY TO DECIMAL 2 DECIMAL TO BINARY **" DISPLAY "** **" ACCEPT ANS DISPLAY "** OPTION : "ANS" **" DISPLAY "** **" IF ANS = 1 PERFORM 1000-BINARY-TO-DECIMAL ELSE IF ANS = 2 PERFORM 2000-DECIMAL-TO-BINARY ELSE STOP RUN END-IF . 1000-BINARY-TO-DECIMAL. ACCEPT BTD MOVE FUNCTION REVERSE(BTD) TO INPUTS2. INSPECT INPUTS2 TALLYING CTR1 FOR LEADING SPACES MOVE INPUTS2 (CTR1 + 1:) TO INPUTS3 INSPECT INPUTS3 TALLYING CNT1 FOR ALL "1" INSPECT INPUTS3 TALLYING CNT2 FOR ALL "0" ADD CNT1 TO CNT2 PERFORM MOVE INPUTS3(INTLOOP:1) TO INT(TBLLOOP) COMPUTE MULTIPLIER = MULTIPLIER * 1 MOVE INT(TBLLOOP) TO COM COMPUTE DECIMAL = COM * MULTIPLIER ADD DECIMAL TO COM-DECIMAL ADD 1 TO COUNTER ADD 1 TO INTLOOP END-PERFORM MOVE 0 TO DECIMAL PERFORM UNTIL COUNTER = CNT2 MOVE INPUTS3(INTLOOP:1) TO INT(TBLLOOP) COMPUTE MULTIPLIER = MULTIPLIER * 2 MOVE INT(TBLLOOP) TO COM COMPUTE DECIMAL = COM * MULTIPLIER ADD DECIMAL TO COM-DECIMAL ADD 1 TO COUNTER ADD 1 TO INTLOOP END-PERFORM MOVE COM-DECIMAL TO PRT-DECIMAL MOVE FUNCTION TRIM(prt-decimal LEADING) TO prt-final1 display prt-final1 DISPLAY "*******************************************************************" DISPLAY "** BINARY TO DECIMAL **" DISPLAY "*******************************************************************" DISPLAY "** **" DISPLAY "** ***************************** **" DISPLAY "** BINARY CODE * " BTD " * **" DISPLAY "** ***************************** **" DISPLAY "** **" DISPLAY "** ************************ **" DISPLAY "** DECIMAL * " PRT-final1 " * **" DISPLAY "** ************************ **" DISPLAY "** **" DISPLAY "*******************************************************************" STOP RUN . 2000-DECIMAL-TO-BINARY. ACCEPT DTB MOVE DTB TO Q1 PRT-DTB PERFORM UNTIL Q1 = 0 DIVIDE Q1 BY 2 GIVING Q1 REMAINDER R1 MOVE FUNCTION REVERSE(R1) TO R2 MOVE R2(RLOOP:1) TO RINT(RTBLLOOP) MOVE RINT(RTBLLOOP) TO R3 STRING R4 DELIMITED BY " " R3 DELIMITED BY " " INTO R4 END-STRING MOVE FUNCTION TRIM(FUNCTION REVERSE(R4) LEADING) TO R5 ADD 1 TO RINT(RTBLLOOP) END-PERFORM DISPLAY "*******************************************************************" DISPLAY "** DECIMAL TO BINARY **" DISPLAY "*******************************************************************" DISPLAY "** **" DISPLAY "** ************************ **" DISPLAY "** DECIMAL * " PRT-DTB " * **" DISPLAY "** ************************ **" DISPLAY "** **" DISPLAY "** ***************************** **" DISPLAY "** BINARY CODE * " R5 " * **" DISPLAY "** ***************************** **" DISPLAY "** **" DISPLAY "*******************************************************************" STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW02DW. AUTHOR. DANIELLE WILLIAMS. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-RECORD-IN. 05 EMP-PAY-DATE-IN. 10 EMP-PAY-YY PIC X(02) VALUE '19'. 10 EMP-PAY-MM PIC X(02) VALUE '01'. 10 EMP-PAY-DD PIC X(02) VALUE '04'. 05 EMP-NUMBER PIC X(03). 05 EMP-NAME. 10 EMP-LAST-NAME PIC X(15) VALUE 'WILLIAMS'. 10 EMP-FIRST-NAME PIC X(10) VALUE 'DANIELLE'. 05 HOURS-WORKED PIC 99V99. 05 PAY-RATE PIC 99V99. 05 PAY-TYPE PIC X. 88 H-HOURLY VALUE 'H'. 88 S-SALARY VALUE 'S'. 05 EMP-POSITION PIC X. 88 P-PROGRAMMER VALUE 'P'. 88 A-ACCOUNTANT VALUE 'A'. 88 M-MANAGER VALUE 'M'. 88 I-INTERN VALUE 'I'. 88 T-TESTER VALUE 'T'. 01 GROSS-PAY PIC 9(03) VALUE 0. PROCEDURE DIVISION. DISPLAY 'PAYROLL HW02DW FOR DA WI'. DISPLAY '--'. ACCEPT EMPLOYEE-RECORD-IN. DISPLAY 'WHOLE INPUT RECORD: 190104A01WILLIAMS DANIELLE 00000000HS' 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 'POSITIONS :' EMP-POSITION. DISPLAY 'PAY TYPE :' PAY-TYPE. DISPLAY 'EXTRA CREDIT :' COMPUTE GROSS-PAY = HOURS-WORKED * PAY-RATE DISPLAY 'GROSS PAY :'GROSS-PAY. DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR FIRSTNAME LASTNAME'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW05BH. AUTHOR. Brian Hamil. DATE-WRITTEN. 2/04/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', 'h'. 88 SALARY-PAY VALUE 'S', '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'. 88 DEFALUT VALUE 'X', 'x'. 01 EMP-TITLE PIC X(18). 01 EMP-PAY-DISPLAY PIC X(18). 01 EMP-MESSAGE PIC X(30). 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 999(03) VALUE 1. 05 RECORD-LEN PIC 999(03) VALUE 16. 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. 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. 05 WS-DEFAULT. 10 WS-DEFAULT-CODE PIC X(01) VALUE 'X'. 10 WS-DEFAULT-TITLE PIC X(18) VALUE 'UNDEFINED POSITION'. 10 WS-DEFAULT-RATE PIC 9(02)V99 VALUE 20.00. PROCEDURE DIVISION. 0000-DRIVER. 0100-INITIALIZE-PROGRAM. 1000-PROCESS-PAYROLL-RECORDS. 1100-DETERMINE-POSITION-AND-PAY. 1200-CALCULATE-PAYROLL. 1300-UPDATE-PROGRAM-TOTALS. 1400-DISPLAY-PAYROLL-RECORD-INFO. 1900-ACCEPT-RECORD. 2000-PROVIDE-FINAL-TOTALS. 3000-CLOSE-PROGRAM. DISPLAY 'PAYROLL HW04BH FOR Brian Hamil.'. DISPLAY WS-PROGRAMMER-CODE ' ' WS-PROGRAMMER-TITLE ' ' WS-PROGRAMMER-RATE DISPLAY WS-ACCOUNTANT-CODE ' ' WS-ACCOUNTANT-TITLE ' ' WS-ACCOUNTANT-RATE DISPLAY WS-MANAGER-CODE ' ' WS-MANAGER-TITLE ' ' WS-MANAGER-RATE DISPLAY WS-INTERN-CODE ' ' WS-INTERN-TITLE ' ' WS-INTERN-RATE DISPLAY WS-TESTER-CODE ' ' WS-TESTER-TITLE ' ' WS-TESTER-RATE DISPLAY WS-DEFAULT-CODE ' ' WS-DEFAULT-TITLE ' ' WS-DEFAULT-RATE DISPLAY ' -- BEGINNING OF RECORDS --'. DISPLAY '--'. PERFORM UNTIL LOOP-COUNTER = 16 ACCEPT EMPLOYEE-RECORD-IN EVALUATE TRUE WHEN HOURLY-PAY MOVE 'HOURLY' TO EMP-PAY-DISPLAY WHEN SALARY-PAY MOVE 'SALARY' TO EMP-PAY-DISPLAY MOVE ' -- NOT ELIGIBLE --' TO EMP-MESSAGE MOVE 0 TO EMP-OVERTIME-PAY MOVE 0 TO EMP-OVERTIME-RATE WHEN OTHER MOVE 'INVALID' TO EMP-PAY-DISPLAY END-EVALUATE EVALUATE TRUE WHEN PROGRAMMER MOVE WS-PROGRAMMER-RATE TO PAY-RATE MOVE WS-PROGRAMMER-CODE TO EMP-POSITION MOVE WS-PROGRAMMER-TITLE TO EMP-TITLE WHEN ACCOUNTANT MOVE WS-ACCOUNTANT-RATE TO PAY-RATE MOVE WS-ACCOUNTANT-CODE TO EMP-POSITION MOVE WS-ACCOUNTANT-TITLE TO EMP-TITLE WHEN MANAGER MOVE WS-MANAGER-RATE TO PAY-RATE MOVE WS-MANAGER-CODE TO EMP-POSITION MOVE WS-MANAGER-TITLE TO EMP-TITLE WHEN INTERN MOVE WS-INTERN-RATE TO PAY-RATE MOVE WS-INTERN-CODE TO EMP-POSITION MOVE WS-INTERN-TITLE TO EMP-TITLE WHEN TESTER MOVE WS-TESTER-RATE TO PAY-RATE MOVE WS-TESTER-CODE TO EMP-POSITION MOVE WS-TESTER-TITLE TO EMP-TITLE WHEN OTHER MOVE WS-DEFAULT-RATE TO PAY-RATE MOVE WS-DEFAULT-CODE TO EMP-POSITION MOVE WS-DEFAULT-TITLE TO EMP-TITLE END-EVALUATE 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 EMP-MESSAGE DISPLAY ' POSITION : ' EMP-POSITION DISPLAY ' TITLE : ' EMP-TITLE DISPLAY ' PAY TYPE : ' EMP-PAY-DISPLAY DISPLAY ' GROSS PAY: $' EMP-GROSS-PAY DISPLAY ' OT PAY : $' EMP-OVERTIME-PAY EMP-MESSAGE DISPLAY ' TAXES : $' EMP-TAXES DISPLAY ' NET PAY : $' EMP-NET-PAY DISPLAY '--' 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 ADD 1 TO LOOP-COUNTER END-PERFORM. DISPLAY ' -- END OF RECORDS --'. ADD TOTAL-HOURS-H TO TOTAL-HOURS-S GIVING TOTAL-HOURS. ADD OVERTIME-SALARY TO OVERTIME-HOURLY GIVING TOTAL-OVERTIME. 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 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 ' AVERAGE GROSS PAY : $' AVERAGE-GROSS-PAY. DISPLAY ' AVERAGE TAXES : $' AVERAGE-TAXES. DISPLAY ' AVERAGE NET PAY : $' AVERAGE-NET-PAY. DISPLAY '--'. DISPLAY ' NUMBER OF RECORDS : ' LOOP-COUNTER. DISPLAY ' TOTAL HOURLY HOURS : ' TOTAL-HOURS-H. DISPLAY ' TOTAL SALARY HOURS : ' TOTAL-HOURS-S. DISPLAY ' OVERALL HOURS : ' TOTAL-HOURS. DISPLAY ' TOTAL HOURLY OT : ' OVERTIME-HOURLY. DISPLAY ' TOTAL SALARY OT : ' OVERTIME-SALARY. DISPLAY ' OVERALL OT : ' TOTAL-OVERTIME. DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR Brian Hamil'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. PROCEDURE DIVISION. DISPLAY 'Hello, world'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. CALCULATOR. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 FIRST-NUMBER PICTURE IS 9999. 01 CALC-VALUE PICTURE IS xxxx VALUE 'S'. 01 THE-RESULT PICTURE IS 9999. 01 SECOND-NUMBER PICTURE IS 9999. PROCEDURE DIVISION. PROGRAM-BEGIN. SET FIRST-NUMBER TO 5. SET SECOND-NUMBER TO 15. EVALUATE TRUE WHEN CALC-VALUE = 'A' ADD FIRST-NUMBER SECOND-NUMBER TO THE-RESULT DISPLAY "The first number is:" DISPLAY FIRST-NUMBER DISPLAY "The second number is:" DISPLAY SECOND-NUMBER DISPLAY "The result is" DISPLAY THE-RESULT WHEN CALC-VALUE = 'M' MULTIPLY FIRST-NUMBER BY SECOND-NUMBER GIVING THE-RESULT ROUNDED DISPLAY "The first number is:" DISPLAY FIRST-NUMBER DISPLAY "The second number is:" DISPLAY SECOND-NUMBER DISPLAY "The result is" DISPLAY THE-RESULT WHEN CALC-VALUE = 'D' DIVIDE FIRST-NUMBER BY SECOND-NUMBER GIVING THE-RESULT DISPLAY "The first number is:" DISPLAY FIRST-NUMBER DISPLAY "The second number is:" DISPLAY SECOND-NUMBER DISPLAY "The result is" DISPLAY THE-RESULT WHEN CALC-VALUE = 'S' SUBTRACT FIRST-NUMBER FROM SECOND-NUMBER GIVING THE-RESULT DISPLAY "The first number is:" DISPLAY FIRST-NUMBER DISPLAY "The second number is:" DISPLAY SECOND-NUMBER DISPLAY "The result is" DISPLAY THE-RESULT END-EVALUATE. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. ADD01. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 FIRST-NUMBER PICTURE IS 9999999999. 01 SECOND-NUMBER PICTURE IS 99. 01 THE-RESULT PICTURE IS 99. PROCEDURE DIVISION. PROGRAM-BEGIN. SET FIRST-NUMBER TO 1999999999. DISPLAY FIRST-NUMBER.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT P-FILE ASSIGN TO dd-name-jcl ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD P-FILE. 01 P-NUMBER PICTURE 99 USAGE DISPLAY. WORKING-STORAGE SECTION. 01 WORKING-VARIABLES. 05 W-SUB PICTURE 99. PROCEDURE DIVISION. OPEN OUTPUT P-FILE. PERFORM LOOP 10 TIMES. CLOSE P-FILE. STOP RUN. LOOP. ADD 1 TO W-SUB. MOVE W-SUB TO P-NUMBER. WRITE P-NUMBER END-WRITE. STOP RUN.
*> Program Name: COBOLSum *> Author: Joshua Smith *> Class - Principles of Programming Languages *> Description: This COBOL application gathers 3 numeric inputs (single digit) from the user, sums them up, then repeats what the user entered and the sum back to the user. IDENTIFICATION DIVISION. *>Program Name is here PROGRAM-ID. COBOLSum. DATA DIVISION. WORKING-STORAGE SECTION. *> 4 integer variables: num1, num2, and num3 are all single-digit (0-9), while total is 2-digits (0-99) 01 num1 PIC 9. 01 num2 PIC 9. 01 num3 PIC 9. 01 total PIC 99. PROCEDURE DIVISION. *> Start of Procedures *> Header Displayed to the user (name of program and author, formatted) DISPLAY "*****************************" DISPLAY "*---------COBOL SUM---------*" DISPLAY "*------By Joshua Smith------*" DISPLAY "*****************************" *> Prompt the user for the first number and store it in num1. DISPLAY "*Number 1: (shown in STDIN) *". ACCEPT num1 *> Prompt the user for the second number and store it in num2. DISPLAY "*Number 2: (shown in STDIN) *". ACCEPT num2 *> Prompt the user for the third number and store it in num3. DISPLAY "*Number 3: (shown in STDIN) *". ACCEPT num3 *> Simple formatting line DISPLAY "*---------------------------* ". *> Compute the sum of the three numeric values, num1, num2, and num3 COMPUTE total = num1 + num2 + num3 *> Display the first value the user entered. DISPLAY "Number 1: " WITH NO ADVANCING DISPLAY num1 *> Display the second value the user entered. DISPLAY "Number 2: " WITH NO ADVANCING DISPLAY num2 *> Display the third value the user entered. DISPLAY "Number 3: " WITH NO ADVANCING DISPLAY num3 *> Display the computed total DISPLAY "Total: : " WITH NO ADVANCING DISPLAY total *> End of program STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW05YM. 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 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. 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 HW05FL FOR YIMENG MA'. ACCEPT WS-DATE-IN FROM DATE YYYYMMDD. DISPLAY 'PROGRAM BEGINS: ' WS-DATE-IN. DISPLAY WS-POSITIONS. DISPLAY '--'. MOVE .32 TO EMP-TAX-RATE. ACCEPT EMPLOYEE-RECORD-IN. COMPUTE PROGRAM-RECORD-COUNT = PROGRAM-RECORD-COUNT + 1 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. 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. 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 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-PAY. DISPLAY ' OT PAY : ' EMP-OVERTIME-PAY. DISPLAY ' OT HOURS : ' EMP-OVERTIME-HOURS DISPLAY ' TAXES : ' EMP-TAXES. DISPLAY ' NET PAY : ' EMP-NET-PAY. DISPLAY '--'. ACCEPT EMPLOYEE-RECORD-IN. COMPUTE PROGRAM-RECORD-COUNT = PROGRAM-RECORD-COUNT + 1 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. 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. 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 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-PAY. DISPLAY ' OT PAY : ' EMP-OVERTIME-PAY. DISPLAY ' OT HOURS : ' EMP-OVERTIME-HOURS DISPLAY ' TAXES : ' EMP-TAXES. DISPLAY ' NET PAY : ' EMP-NET-PAY. DISPLAY '--'. COMPUTE PROGRAM-AVERAGE-GROSS = PROGRAM-GROSS-PAY / 2 COMPUTE PROGRAM-AVERAGE-NET = PROGRAM-NET-PAY /2 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 'RECORD #1: ' EMP-PAY-DATE-IN EMP-NUMBER EMP-NAME HOURS-WORKED PAY-RATE EMP-PAY-TYPE EMP-POSITION DISPLAY 'RECORD #2: ' EMP-PAY-DATE-IN EMP-NUMBER EMP-NAME HOURS-WORKED PAY-RATE EMP-PAY-TYPE EMP-POSITION DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR YIMENG MA'. STOP RUN.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more