       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO-BANKING.
       AUTHOR. SCRIBA-DEMO.
      *
      * Simple banking account inquiry program.
      * Reads an account number and displays balance info.
      *
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT ACCOUNT-FILE ASSIGN TO 'ACCTFILE'
               ORGANIZATION IS INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY IS ACCT-NUM
               FILE STATUS IS WS-FILE-STATUS.

       DATA DIVISION.
       FILE SECTION.
       FD  ACCOUNT-FILE.
       01  ACCOUNT-RECORD.
           05  ACCT-NUM            PIC 9(10).
           05  ACCT-NAME           PIC X(30).
           05  ACCT-TYPE           PIC X(1).
               88 SAVINGS          VALUE 'S'.
               88 CHECKING         VALUE 'C'.
           05  ACCT-BALANCE        PIC S9(9)V99.
           05  ACCT-STATUS         PIC X(1).
               88 ACTIVE           VALUE 'A'.
               88 CLOSED           VALUE 'C'.
               88 FROZEN           VALUE 'F'.
           05  ACCT-OPEN-DATE      PIC 9(8).
           05  ACCT-LAST-TXN-DATE  PIC 9(8).

       WORKING-STORAGE SECTION.
       01  WS-FILE-STATUS          PIC XX.
       01  WS-INPUT-ACCT           PIC 9(10).
       01  WS-FORMATTED-BAL        PIC $ZZZ,ZZZ,ZZ9.99.
       01  WS-DISPLAY-TYPE         PIC X(10).
       01  WS-DISPLAY-STATUS       PIC X(10).
       01  WS-CONTINUE             PIC X(1).
           88 WS-YES               VALUE 'Y' 'y'.

       PROCEDURE DIVISION.
       MAIN-PROGRAM.
           PERFORM OPEN-FILE
           PERFORM PROCESS-INQUIRY
               UNTIL NOT WS-YES
           PERFORM CLOSE-FILE
           STOP RUN.

       OPEN-FILE.
           OPEN INPUT ACCOUNT-FILE
           IF WS-FILE-STATUS NOT = '00'
               DISPLAY 'ERROR: Cannot open account file.'
               DISPLAY 'File status: ' WS-FILE-STATUS
               STOP RUN
           END-IF.

       PROCESS-INQUIRY.
           DISPLAY '================================='
           DISPLAY '  SECB Account Inquiry System'
           DISPLAY '================================='
           DISPLAY 'Enter account number (10 digits): '
           ACCEPT WS-INPUT-ACCT
           MOVE WS-INPUT-ACCT TO ACCT-NUM
           READ ACCOUNT-FILE
               INVALID KEY
                   DISPLAY 'Account not found: ' WS-INPUT-ACCT
               NOT INVALID KEY
                   PERFORM DISPLAY-ACCOUNT
           END-READ
           DISPLAY ' '
           DISPLAY 'Another inquiry? (Y/N): '
           ACCEPT WS-CONTINUE.

       DISPLAY-ACCOUNT.
           MOVE ACCT-BALANCE TO WS-FORMATTED-BAL
           EVALUATE TRUE
               WHEN SAVINGS
                   MOVE 'Savings' TO WS-DISPLAY-TYPE
               WHEN CHECKING
                   MOVE 'Checking' TO WS-DISPLAY-TYPE
               WHEN OTHER
                   MOVE 'Unknown' TO WS-DISPLAY-TYPE
           END-EVALUATE
           EVALUATE TRUE
               WHEN ACTIVE
                   MOVE 'Active' TO WS-DISPLAY-STATUS
               WHEN CLOSED
                   MOVE 'Closed' TO WS-DISPLAY-STATUS
               WHEN FROZEN
                   MOVE 'Frozen' TO WS-DISPLAY-STATUS
               WHEN OTHER
                   MOVE 'Unknown' TO WS-DISPLAY-STATUS
           END-EVALUATE
           DISPLAY '---------------------------------'
           DISPLAY 'Account: ' ACCT-NUM
           DISPLAY 'Name:    ' ACCT-NAME
           DISPLAY 'Type:    ' WS-DISPLAY-TYPE
           DISPLAY 'Balance: ' WS-FORMATTED-BAL
           DISPLAY 'Status:  ' WS-DISPLAY-STATUS
           DISPLAY '---------------------------------'.

       CLOSE-FILE.
           CLOSE ACCOUNT-FILE.
