The Bank of Z provides a modern browser interface to manage a personal bank account. The application is hybrid – it drives IMS transactions that update a Db2 database for some customers and it drives CICS transactions that update the same Db2 database for other customers.
This hybrid application is the result of a merger of two banking systems into one. The Bank of Z UI routes requests based on customer number. In both cases, z/OS Connect enables the client to communicate with the transactional environment.
- Bank of Z UI: Modern browser-based interface for customer banking operations
- z/OS Connect: Enterprise API gateway enabling communication between the UI and mainframe transaction systems
- CICS: Transaction processing system for customers with IDs starting with 'C'
- IMS TM: Transaction Manager for customers with IDs starting with 'I'
- Money and Account Management Db2 DB: Shared database for account and transaction data
- Money and Account Management IMS DB: IMS database for account management
- Account History Db2 DB: Database storing historical account information
- MQ: Message queuing system for asynchronous communication with external systems
- Bank of Q Money Transfer In: External banking system for money transfers
The application provides typical banking operations:
- Account Management - Create, update, delete, and inquire on accounts
- Customer Management - Manage customer information and profiles
- Transaction Processing - Handle debits, credits, and fund transfers
- Menu Navigation - User-friendly CICS interface for banking operations
- Batch Processing - Monthly statement generation and batch reporting
graph LR
UI[Bank of Z UI]
ZOS[z/OS Connect]
BANKQ1["Bank of Q
Money Transfer In"]
BANKQ2["Bank of Q
Money Transfer In"]
subgraph CICS_Flow[" "]
CICS[CICS]
MQ1[MQ]
DB2_CICS[("Money & Account Mgmt Db2 DB")]
end
subgraph IMS_Flow[" "]
MQ2[MQ]
IMS[IMS TM]
DB2_IMS[("Money & Account Mgmt IMS DB")]
end
HISTDB[("Account History Db2 DB")]
UI --> ZOS
BANKQ1 --> MQ1
ZOS -->|"CICS Path (Customers with ID Cnnnn)"| CICS
MQ1 --> CICS
CICS --> DB2_CICS
CICS --> HISTDB
BANKQ2 --> MQ2
MQ2 --> IMS
ZOS -->|"IMS Path (Customers with ID Innnn)"| IMS
IMS --> DB2_IMS
IMS --> HISTDB
style UI fill:#e1f5ff
style ZOS fill:#fff4e6
style CICS fill:#f3e5f5
style IMS fill:#f3e5f5
style DB2_CICS fill:#e8f5e9
style DB2_IMS fill:#e8f5e9
style HISTDB fill:#e8f5e9
style MQ1 fill:#fff9c4
style MQ2 fill:#fff9c4
style BANKQ1 fill:#ffebee
style BANKQ2 fill:#ffebee
- Customers with ID pattern Cnnnn → Routed to CICS
- Customers with ID pattern Innnn → Routed to IMS TM
Bank-of-Z/
├── src/ # Application source code
│ ├── base/
│ │ ├── batch/ # Batch programs
│ │ │ ├── pli/ # PL/I batch programs
│ │ │ └── job/ # JCL job control
│ │ ├── cics/ # CICS programs
│ │ │ ├── cobol/ # COBOL programs
│ │ │ ├── bms/ # BMS map definitions
│ │ │ └── copy/ # Copybooks
│ │ └── ims/ # IMS programs
│ │ ├── cobol/ # IMS COBOL programs
│ │ ├── pli/ # IMS PL/I programs
│ │ ├── copy/ # IMS copybooks
│ │ ├── DBD/ # Database Descriptors (assembler)
│ │ ├── PSB/ # Program Specification Blocks (assembler)
│ │ ├── java/ # IMS Java bridge components
│ │ └── LoadData/ # IMS database load files
│ ├── api/ # z/OS Connect API definitions
│ │ └── src/main/
│ │ ├── api/ # OpenAPI specifications
│ │ └── liberty/config/ # Liberty server configuration
│ └── frontend/ # Browser-based UI
│ ├── js/ # JavaScript files
│ ├── css/ # Stylesheets
│ └── assets/ # Images and static resources
├── .setup/ # Pipeline setup automation
│ ├── config.yaml # Environment configuration
│ ├── setup.sh # Setup script
│ ├── run_pipeline.sh # Pipeline execution script
│ ├── pipeline_simulation.sh # Pipeline simulation script
│ └── build/ # zBuilder framework
├── .vscode/
│ └── tasks.json # VS Code custom tasks
├── docs/
│ └── SETUP_GUIDE.md # Detailed setup instructions
└── dbb-app.yaml # DBB application configuration
- COBOL Programs - Core banking business logic for account management, customer operations, and transactions
- PL/I Programs - Monthly statement generation
- BMS Maps - Screen definitions for CICS terminal interactions
- Copybooks - Shared data structures and definitions
- IBM DBB Integration - Modern build automation for z/OS applications
- Pipeline Simulation - Automated build and deployment workflows
Local Machine:
- Java version 21 of IBM's Semeru Runtime
- Node.js and npm
- npm: ">=10.9.4 < 10.10.0"
npm -v
- node: ">=22.22.1 < 23"
node -v
- npm: ">=10.9.4 < 10.10.0"
- Zowe CLI:
npm install -g @zowe/cli@zowe-v3-lts
- Zowe RSE API Plugin:
zowe plugins install @ibm/rse-api-for-zowe-cli
- Configured Zowe profile with z/OS connection details
Here is a sample configuration for the Zowe profile. Change:
- the 'host' line to match your z/OS host
- the 'account' line to match your TSO account on the host
- the 'logonProcedure' line to match your logon procedure on the host
and if you use non-default ports, you may have to change other lines as well.
Save the file in: ~/.zowe/zowe.config.json
{
"$schema": "./zowe.schema.json",
"profiles": {
"BankOfZDemo": {
"properties": {
"host": "<your host>",
"rejectUnauthorized": false
},
"secure": ["user", "password"],
"profiles": {
"rseapi": {
"type": "rse",
"properties": {
"port": 8195,
"basePath": "rseapi",
"protocol": "https"
}
},
"zosmf": {
"type": "zosmf",
"properties": {
"port": 10443
}
},
"ssh": {
"type": "ssh",
"properties": {
"port": 22
}
},
"tso": {
"type": "tso",
"properties": {
"account": "<account>",
"codePage": "1047",
"logonProcedure": "<logon procedure>"
}
},
"zOpenDebug": {
"type": "zOpenDebug",
"properties": {
"dpsPort": 8192,
"rdsPort": 8194,
"dpsContextRoot": "api/v1",
"dpsSecured": true,
"authenticationType": "basic",
"uuid": "4267a0f6-b756-4f3c-b900-0b959b4567c3"
}
}
}
}
},
"defaults": {
"zosmf": "BankOfZDemo.zosmf",
"tso": "BankOfZDemo.tso",
"ssh": "BankOfZDemo.ssh",
"rse": "BankOfZDemo.rseapi",
"zOpenDebug": "BankOfZDemo.zOpenDebug"
},
"autoStore": true
}You can then test each connection. Example:
zowe zosmf check statuszowe rse check status- ...
z/OS System:
Bank of Z requires a mainframe runtime environment.
- Appropriate permissions for USS directories and dataset creation
- Git installed and available in PATH on USS
- zconfig for provisioning the middleware configuration
- CICS region for application deployment
- Db2 for z/OS
- IMS
- IBM DBB 3.0.5 installed (typically at
/usr/lpp/IBM/dbb) - ZOAU 1.4.1.0 installed (typically at
/usr/lpp/IBM/zoautil) - Wazi Deploy 3.0.7.3 installed (typically at
/global/opt/pyenv/gdp) - ZCodeScan 1.0.2 installed (typically at
/global/opt/pyenv/akf) - CICS TS Resource Builder
If a VS Code or Open VSX link available, the extension can be installed via the marketplace, with Bob IDE using the Open VSX marketplace. If setting up the Bob IDE environment and the extension is not avaialble in the Open VSX Marketplace use the Download VSIX link to download the extensions .vsix from the VS Code Marketplace and manually install it in the IDE.
Install Bob IDE and/or VS Code IDE and required extensions:
| Extension Name | VS Code Marketplace | Open VSX Marketplace | Download VSIX |
|---|---|---|---|
| IDzEE Extension Pack • IBM Z Open Editor • IBM Z Open Debug • IBM Compiled Code Coverage • Zowe Explorer • Zowe Explorer for IBM CICS Transaction Server |
Link | Link | Link |
| CICS Interdependency Analyzer Extension for Zowe Explorer | Link | N/A | Link |
| IBM IMS Explorer for VS Code | Link | N/A | Link |
| IBM Db2 for z/OS Developer Extension | Link | Link | Link |
| IBM z/OS Connect development tools | Link | N/A | Link |
| IBM TAZ Early Development Testing | Link | Link | Link |
Note: For MQ, there is no IBM extension in the VS Code marketplace. See IBM docs for IBM MQ Console within Visual Studio Code's built-in browser that links to an extension in the github.com/ibm-messaging group.
Note: Automated scripts require Node.js (version 22.22.1 or higher recommended)
Run the following command in the root of the repository:
node scripts/download-vsix.js [output-directory]Default output directory is ./vsix-extensions
The following command will require the bobide command line tool installed and on the PATH. To do this from the Bob IDE GUI:
- Open the command palette by selecting
View->Command Palette, then typeShell Command: Install 'bobide' command in PATH
Run the following command in the root of the repository, no need to pass an output directory if default was used for download:
node scripts/install-bobide-vsix.js [output-directory]The following command will require the code command line tool installed and on the PATH. To do this from the VS Code GUI:
- Open the command palette by selecting
View->Command Palette, then typeShell Command: Install 'code' command in PATH
Run the following command in the root of the repository, no need to pass an output directory if default was used for download:
node scripts/install-vscode-vsix.js [output-directory]For more information regarding the download and install scripts see scripts/README.md.
To manually install the extension into the Bob IDE or VS Code:
- Select the extensions icon located in the Activity Bar on the left side of the IDE.
- Select the
...icon forViews and More Actions... - Select
Install from VSIX...choosing the download location of the extension from VS Code Marketplace in the file picker.
- Take a fork this repository, or move it into your own git provider
- Follow the initial setup instuctions in docs/README.md to install and configure Bank of Z to your own runtime environment.
After setting up Bank of Z in your environment, you can exercise the following developer tasks:
- Make Changes - Edit COBOL programs, BMS maps, or copybooks
- Commit Changes - Push to your git repository
- Run Pipeline - Execute via VS Code task or command line
- Review Results - Check build output and load modules
- Deploy - Use generated artifacts for CICS deployment
- Setup Guide - Comprehensive setup instructions, troubleshooting, and customization
- Source Code README - Application source code structure
Common issues and solutions:
- Zowe CLI not found - Install with
npm install -g @zowe/cli - Connection failed - Verify Zowe profile:
zowe zosmf check status - Git not available on z/OS - Contact system administrator to install git
- Permission denied - Check USS directory permissions and dataset access
See the Setup Guide for detailed troubleshooting steps.
This is a sample application for demonstration purposes. Feel free to:
- Fork the repository
- Customize for your environment
- Add new features or programs
- Share improvements
- IBM DBB Documentation
- IBM DBB GitHub Repository
- Zowe CLI Documentation
- COBOL Programming Guide
- CICS Documentation
Licensed under the Apache License, Version 2.0. See LICENSE for details.
Getting Started: Follow the Setup Guide to configure your environment and run your first build.