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

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.