ATM Simulation
Problem Description
Simulate ATM: PIN verification (3 attempts), check balance, withdraw (multiples of 100, max 20000), deposit, mini statement (last 5 transactions).
Expected Output
Complete ATM functionality with transaction history
Hints
Track transactions in array. Validate PIN and amounts.
Solution
IDENTIFICATION DIVISION.
PROGRAM-ID. ATM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-PIN PIC 9(4) VALUE 1234.
01 WS-INPUT-PIN PIC 9(4).
01 WS-ATTEMPTS PIC 9 VALUE 0.
01 WS-BALANCE PIC 9(9)V99 VALUE 50000.
01 WS-AMOUNT PIC 9(7)V99.
01 WS-CHOICE PIC 9.
01 WS-TRANS-COUNT PIC 9(2) VALUE 0.
01 WS-I PIC 9(2).
01 WS-REMAINDER PIC 9(3).
01 WS-DISP PIC Z,ZZ,ZZ9.99.
PROCEDURE DIVISION.
DISPLAY "=== ATM SYSTEM ===".
PERFORM VERIFY-PIN.
IF WS-ATTEMPTS >= 3
DISPLAY "CARD BLOCKED!"
STOP RUN
END-IF.
PERFORM UNTIL WS-CHOICE = 5
DISPLAY "1. CHECK BALANCE 2. WITHDRAW"
DISPLAY "3. DEPOSIT 5. EXIT"
ACCEPT WS-CHOICE
EVALUATE WS-CHOICE
WHEN 1 PERFORM CHECK-BALANCE
WHEN 2 PERFORM WITHDRAW
WHEN 3 PERFORM DEPOSIT
END-EVALUATE
END-PERFORM.
DISPLAY "THANK YOU!".
STOP RUN.
VERIFY-PIN.
PERFORM UNTIL WS-ATTEMPTS >= 3
DISPLAY "ENTER 4-DIGIT PIN: "
ACCEPT WS-INPUT-PIN
IF WS-INPUT-PIN = WS-PIN
DISPLAY "PIN VERIFIED!"
EXIT PERFORM
ELSE
ADD 1 TO WS-ATTEMPTS
COMPUTE WS-I = 3 - WS-ATTEMPTS
DISPLAY "WRONG PIN! " WS-I " ATTEMPTS LEFT"
END-IF
END-PERFORM.
CHECK-BALANCE.
MOVE WS-BALANCE TO WS-DISP.
DISPLAY "BALANCE: Rs." WS-DISP.
WITHDRAW.
DISPLAY "ENTER AMOUNT (MULTIPLES OF 100): "
ACCEPT WS-AMOUNT.
DIVIDE WS-AMOUNT BY 100 GIVING WS-I REMAINDER WS-REMAINDER.
IF WS-REMAINDER NOT = 0
DISPLAY "MUST BE MULTIPLE OF 100"
ELSE IF WS-AMOUNT > 20000
DISPLAY "MAX WITHDRAWAL IS 20000"
ELSE IF WS-AMOUNT > WS-BALANCE
DISPLAY "INSUFFICIENT BALANCE"
ELSE
SUBTRACT WS-AMOUNT FROM WS-BALANCE
DISPLAY "PLEASE COLLECT CASH"
END-IF.
DEPOSIT.
DISPLAY "ENTER AMOUNT: "
ACCEPT WS-AMOUNT.
ADD WS-AMOUNT TO WS-BALANCE.
DISPLAY "DEPOSITED SUCCESSFULLY".
Explanation:
Complete ATM with PIN security, transaction limits.