Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to Real-World Scenarios
Real-World Scenarios | Advanced | COBOL

Employee Salary Report

Problem Description

Read employee file, calculate tax based on salary slabs, generate formatted salary report. Tax Slabs: 0-25000: 0%, 25001-50000: 10%, 50001-100000: 20%, Above 100000: 30%

Expected Output

Formatted salary report with tax calculations for each employee

Hints

Use EVALUATE for tax slabs. Format output with headers and totals.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. SALRPT. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-EMP-ID PIC 9(5). 01 WS-EMP-NAME PIC X(25). 01 WS-SALARY PIC 9(7)V99. 01 WS-TAX-RATE PIC V99. 01 WS-TAX-AMT PIC 9(7)V99. 01 WS-NET-SALARY PIC 9(7)V99. 01 WS-TOTAL-SAL PIC 9(9)V99 VALUE 0. 01 WS-TOTAL-TAX PIC 9(9)V99 VALUE 0. 01 WS-COUNT PIC 9(3) VALUE 0. 01 WS-CONTINUE PIC X VALUE "Y". PROCEDURE DIVISION. DISPLAY "========================================". DISPLAY " EMPLOYEE SALARY REPORT ". DISPLAY "========================================". DISPLAY "ID NAME SALARY TAX NET". PERFORM UNTIL WS-CONTINUE NOT = "Y" DISPLAY "ENTER EMP ID (0 TO END): " ACCEPT WS-EMP-ID IF WS-EMP-ID = 0 MOVE "N" TO WS-CONTINUE ELSE DISPLAY "ENTER NAME: " ACCEPT WS-EMP-NAME DISPLAY "ENTER SALARY: " ACCEPT WS-SALARY EVALUATE TRUE WHEN WS-SALARY <= 25000 MOVE 0 TO WS-TAX-RATE WHEN WS-SALARY <= 50000 MOVE 0.10 TO WS-TAX-RATE WHEN WS-SALARY <= 100000 MOVE 0.20 TO WS-TAX-RATE WHEN OTHER MOVE 0.30 TO WS-TAX-RATE END-EVALUATE COMPUTE WS-TAX-AMT = WS-SALARY * WS-TAX-RATE COMPUTE WS-NET-SALARY = WS-SALARY - WS-TAX-AMT ADD WS-SALARY TO WS-TOTAL-SAL ADD WS-TAX-AMT TO WS-TOTAL-TAX ADD 1 TO WS-COUNT DISPLAY WS-EMP-ID " " WS-EMP-NAME " " WS-SALARY " " WS-TAX-AMT " " WS-NET-SALARY END-IF END-PERFORM. DISPLAY "TOTAL EMPLOYEES: " WS-COUNT. DISPLAY "TOTAL SALARY: " WS-TOTAL-SAL. DISPLAY "TOTAL TAX: " WS-TOTAL-TAX. STOP RUN.

Explanation:

Real payroll report with tax slabs using EVALUATE, running totals, formatted output.