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

Currency Converter

Problem Description

Convert between USD, EUR, GBP, and INR.

Expected Output

Converted amount in selected currency

Hints

Store conversion rates, multiply/divide appropriately.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. CURRENCY. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-AMOUNT PIC 9(9)V99. 01 WS-FROM PIC X(3). 01 WS-TO PIC X(3). 01 WS-RESULT PIC 9(9)V99. 01 WS-USD-VAL PIC 9(9)V99. * Rates relative to USD 01 WS-EUR-RATE PIC 9V9(4) VALUE 0.92. 01 WS-GBP-RATE PIC 9V9(4) VALUE 0.79. 01 WS-INR-RATE PIC 9(3)V99 VALUE 83.00. 01 WS-DISP PIC Z,ZZ,ZZ,ZZ9.99. PROCEDURE DIVISION. DISPLAY "=== CURRENCY CONVERTER ===". DISPLAY "CURRENCIES: USD, EUR, GBP, INR". DISPLAY "ENTER AMOUNT: ". ACCEPT WS-AMOUNT. DISPLAY "FROM CURRENCY: ". ACCEPT WS-FROM. DISPLAY "TO CURRENCY: ". ACCEPT WS-TO. * Convert to USD first EVALUATE WS-FROM WHEN "USD" MOVE WS-AMOUNT TO WS-USD-VAL WHEN "EUR" DIVIDE WS-AMOUNT BY WS-EUR-RATE GIVING WS-USD-VAL WHEN "GBP" DIVIDE WS-AMOUNT BY WS-GBP-RATE GIVING WS-USD-VAL WHEN "INR" DIVIDE WS-AMOUNT BY WS-INR-RATE GIVING WS-USD-VAL END-EVALUATE. * Convert from USD to target EVALUATE WS-TO WHEN "USD" MOVE WS-USD-VAL TO WS-RESULT WHEN "EUR" MULTIPLY WS-USD-VAL BY WS-EUR-RATE GIVING WS-RESULT WHEN "GBP" MULTIPLY WS-USD-VAL BY WS-GBP-RATE GIVING WS-RESULT WHEN "INR" MULTIPLY WS-USD-VAL BY WS-INR-RATE GIVING WS-RESULT END-EVALUATE. MOVE WS-AMOUNT TO WS-DISP. DISPLAY WS-DISP " " WS-FROM " = ". MOVE WS-RESULT TO WS-DISP. DISPLAY WS-DISP " " WS-TO. STOP RUN.

Explanation:

Convert to base currency (USD) then to target currency.