Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to Arithmetic Operations
Arithmetic Operations | Intermediate | COBOL

Tax Bracket Calculator

Problem Description

Calculate progressive tax: 0-10000: 0%, 10001-30000: 10%, 30001-50000: 20%, Above 50000: 30%.

Expected Output

Tax amount for given income

Hints

Apply each bracket rate to the portion of income in that bracket.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. TAXBRACK. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-INCOME PIC 9(9)V99. 01 WS-TAX PIC 9(9)V99 VALUE 0. 01 WS-REMAINING PIC 9(9)V99. 01 WS-DISP PIC Z,ZZ,ZZ,ZZ9.99. PROCEDURE DIVISION. DISPLAY "ENTER ANNUAL INCOME: ". ACCEPT WS-INCOME. MOVE WS-INCOME TO WS-REMAINING. MOVE 0 TO WS-TAX. * Bracket 1: 0-10000 at 0% IF WS-REMAINING > 10000 SUBTRACT 10000 FROM WS-REMAINING ELSE MOVE 0 TO WS-REMAINING END-IF. * Bracket 2: 10001-30000 at 10% IF WS-REMAINING > 0 IF WS-REMAINING > 20000 ADD 2000 TO WS-TAX SUBTRACT 20000 FROM WS-REMAINING ELSE COMPUTE WS-TAX = WS-TAX + (WS-REMAINING * 0.10) MOVE 0 TO WS-REMAINING END-IF END-IF. * Bracket 3: 30001-50000 at 20% IF WS-REMAINING > 0 IF WS-REMAINING > 20000 ADD 4000 TO WS-TAX SUBTRACT 20000 FROM WS-REMAINING ELSE COMPUTE WS-TAX = WS-TAX + (WS-REMAINING * 0.20) MOVE 0 TO WS-REMAINING END-IF END-IF. * Bracket 4: Above 50000 at 30% IF WS-REMAINING > 0 COMPUTE WS-TAX = WS-TAX + (WS-REMAINING * 0.30) END-IF. DISPLAY "=== TAX CALCULATION ===". MOVE WS-INCOME TO WS-DISP. DISPLAY "INCOME: " WS-DISP. MOVE WS-TAX TO WS-DISP. DISPLAY "TAX: " WS-DISP. STOP RUN.

Explanation:

Progressive tax applies different rates to income portions in each bracket.