Overview
The CICS Bank Sample Application (CBSA) simulates the operation of a bank from the perspective of a Bank Teller. It serves multiple purposes including being a teaching aid, a conversation piece for application development lifecycle discussions, a testing tool for CICS interactions, and a foundation for application modernization conversations.
Main Components
Backend
Deleting Customer (DELCUS)
Deleting Customer (DELCUS) is a COBOL program designed to handle the deletion of a customer and their associated accounts. The process involves retrieving all accounts linked to the customer, deleting each account individually, and recording these deletions. Once all accounts are deleted, the customer record itself is deleted, and this deletion is also recorded. The program ensures data consistency by aborting the operation if any failure occurs during the deletion process, except when an account has already been deleted.
Creating Account (BNK1CAC)
Creating Account (BNK1CAC) involves verifying input data and linking to the CREACC
program to add the new account to the account datastore.
Managing Account (BNK1DAC)
Managing Account (BNK1DAC) is a COBOL program that handles displaying account information and processing account deletion requests. It interacts with CICS for transaction processing and uses BMS for screen handling. The program validates input data, retrieves account details, and performs account deletion by linking to the DELACC subprogram. It also manages user interactions through various function keys and ensures proper error handling and messaging throughout the process.
Transferring Funds (BNK1TFN)
Transferring Funds (BNK1TFN) refers to the functionality that allows the transfer of funds between accounts within the same bank. This process involves validating the input data, such as account numbers and transfer amounts, ensuring that the accounts are different and valid, and then performing the transfer operation. The program handles various user interactions, including sending maps, processing data, and handling errors or invalid inputs. It ensures that the transfer is executed correctly and updates the account balances accordingly.
Get Customer Record (INQCUST)
INQCUST is a COBOL program that takes a customer number as input and returns a communication area containing all the customer information for that record. If the customer is found, the data is returned; otherwise, a record with low values is returned. In case of any issues, an appropriate abend is issued.
Credit/Debit (BNK1CRA)
Credit/Debit (BNK1CRA) refers to a COBOL program within the CICS Bank Sample Application that handles credit and debit transactions. It processes user inputs, validates transaction amounts, and updates account balances accordingly. The program interacts with CICS for transaction management and uses BMS for screen handling. It includes various sections for data validation, error handling, and communication with other programs to ensure accurate and secure transaction processing.
Cash Transactions (DBCRFUN)
Cash Transactions (DBCRFUN) handle the process of depositing or withdrawing cash over the counter. The program takes an account number and amount, accesses the DB2 datastore to retrieve the associated account record, applies the transaction, and returns the updated balance. If the update is successful, a record is written to the PROCTRAN datastore. If the transaction fails, a failure code is returned for the calling routine to handle.
Processing Account Creation (CREACC)
Processing Account Creation (CREACC) involves taking account information from the Bank Management System (BMS) application, such as customer number, name, address, and date of birth. The process includes enqueuing a named counter for the account, incrementing the counter to generate a new account number, and updating the account datastore on Db2. If the update is successful, a record is written to the PROCTRAN datastore. If any part of the process fails, the named counter is decremented to its original position, and the counter is dequeued. The final step is to return the new account number if all operations are successful.
Retrieving Account (INQACC)
Retrieving Account (INQACC) involves accessing the DB2 datastore to fetch account details using an account number and account type. The program handles errors by abending if issues occur during the retrieval process.
Transferring Funds (XFRFUN)
Transferring Funds (XFRFUN) refers to the process of moving money from one account to another. This involves taking the sort code and account number of both the source and destination accounts, along with the transfer amount. The program updates the account balances and records the transaction in the PROCTRAN datastore. If any part of the process fails, the transaction is rolled back to maintain data integrity.
Listing Accounts (BNK1CCA)
Listing Accounts (BNK1CCA) refers to the functionality that lists all accounts associated with a specified customer number. This COBOL program, identified as BNK1CCA, retrieves and displays account information for a customer by interacting with the CICS system. It validates the customer number, retrieves the relevant account data, and handles various user inputs to display the account details or appropriate messages.
Updating Customer (UPDCUST)
Updating Customer (UPDCUST) refers to the process of modifying customer details in the system. The program receives customer information as input, validates the fields, and updates the relevant records in the VSAM datastore. Only specific fields are allowed to be changed, and the presentation layer ensures data validation. If the update fails, a failure flag is returned to the calling program.
Deleting Account (DELACC)
Deleting Account (DELACC) refers to the process of removing an account from the datastore. The program takes an incoming account number, retrieves the associated account record by matching the customer number and account type, and then deletes it. If no matching record is found, it returns an error flag for the visualization layer to process. Any issues during the process will cause the program to abend. It is assumed that the incoming customer number is valid.
Creating Customer (BNK1CCS)
Creating Customer (BNK1CCS) refers to the process of adding a new customer to the banking application. This involves capturing customer details through a user interface, validating the input data, and then storing the customer information in the database. The program handles various user interactions, such as pressing function keys or entering data, and ensures that the data is correctly formatted and validated before creating the customer record. It also manages terminal settings and error handling to ensure a smooth user experience.
Main Menu (BNKMENU)
The Main Menu (BNKMENU) is the initial program that displays the main menu to the user, validates input, and initiates corresponding transactions based on user selections.
Displaying Customer (BNK1DCS)
Displaying Customer (BNK1DCS) is a COBOL program within the banking application that handles the display, update, and deletion of customer records. It interacts with the user through a BMS map, allowing the user to view customer details, delete a customer record by pressing PF5, or update a customer record by pressing PF10. The program includes various validation checks and processes to ensure data integrity and proper handling of user inputs.
Initializing Data (BANKDATA)
Initializing Data (BANKDATA) involves running a batch program that generates and populates the necessary data for the banking application. This includes creating customer records in a VSAM file and account records in a DB2 table, using specified parameters to control the range and randomness of the generated data.
Updating Account (BNK1UAC)
Updating Account (BNK1UAC) refers to the COBOL program responsible for handling account updates within the CICS Bank Sample Application. This program validates incoming data, processes updates to account information, and interacts with other components to ensure data integrity and proper transaction handling. It includes sections for receiving and validating data, updating account details, and handling errors or abnormal terminations. The program ensures that account information is accurately updated and that any issues are properly logged and managed.
Processing Customer (CRECUST)
Processing Customer (CRECUST) involves taking customer information from a BMS application, determining the appropriate datastore (VSAM or DB2), performing asynchronous credit checks with multiple agencies, and updating the customer and transaction records. If any step fails, the process ensures data integrity by rolling back changes.
Retrieving Customer Accounts (INQACCCU)
Retrieving Customer Accounts (INQACCCU) involves taking an incoming customer number, accessing the datastore, and retrieving the associated account records that match the customer number.
Programs
Handling Abnormal Terminations (ABNDPROC) Updating Account Information (UPDACC) Managing Account Control Operations (ACCTCTRL) Managing Customer Data (CUSTCTRL) Generating and Storing Credit Scores (CRDTAGY2) Generating Credit Score (CRDTAGY3) Setting Sort Code (GETSCODE) Credit Score Generation and Update (CRDTAGY4) Handling Delay and Error Management (CRDTAGY5) Initializing Company Name (GETCOMPY) Generating and Storing Credit Scores (CRDTAGY1)
Bank Frontend
- Customer details page
Customer Details Page in Bank Frontend - Customer details page
- Customer delete page
- Account delete page
- Account details page
Payment Interface
The Payment Interface is a Spring Boot application that allows trusted companies to process payments and issue refunds directly from customer accounts at CBSA Bank via RESTful API calls to a zOS Connect server, which routes the requests to a CICS region.
Payment Interface Overview - Jsonclasses
- Build tools
Web UI
Web UI refers to the web interface component of the CBSA, built using WebSphere Liberty Profile, and includes all necessary web content and assets.
Web UI Overview - Datainterfaces
- Proctran
- Customer control
- Customer
- Crecust
- Webui
- Account list
- Account
- Customer
- Customer list
- Api
- Customer resource
- Processed transaction resource
- Accounts resource
- Flows
Account Deletion Process Handling Debit and Credit Transactions Retrieving Customer Account Information Creating a New Bank Account Updating Account Details Flow Determining the Number of Accounts Adding a Customer to the Database Transferring Funds Between Accounts Transaction Data Retrieval and Processing Flow Deleting a Bank Account Flow Creating a New Account Flow Creating a New Customer Flow Deleting a Customer Record Flow Handling Local Transfer Requests
- Web
- Account
- Processed transaction
- Build tools
- Flows
Customer Services Interface
- Controllers
- Jsonclasses
- Updatecustomer
- Listaccounts
- Createaccount
- Customerenquiry
- Deleteaccount
- Createcustomer
- Updateaccount
- Accountenquiry
- Build tools
Cross-component Flows
This is an auto-generated document by Swimm 🌊 and has not yet been verified by a human