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.