A comprehensive demonstration of IBM mainframe technologies including JCL, COBOL, DB2, CICS, IMS, VSAM, and more.
Mainframe-sample/
├── JCL/ # Job Control Language
│ ├── MASTERJB.jcl # Master batch job
│ ├── DB2BATCH.jcl # DB2 batch processing
│ ├── CICSJOB.jcl # CICS batch interface
│ ├── IMSJOB.jcl # IMS DB/DC operations
│ ├── VSAMJOB.jcl # VSAM operations
│ └── CTCFILES.jcl # CTC file transfers
│
├── COBOL/ # COBOL Programs
│ ├── CUSTEXTR.cbl # Customer extraction (DB2/VSAM)
│ ├── CICSPROG.cbl # CICS online program
│ └── IMSBATCH.cbl # IMS batch program
│
├── COPYBOOK/ # COBOL Copybooks
│ ├── CUSTREC.cpy # Customer record layout
│ ├── WSCOPY.cpy # Working storage common
│ ├── SQLCOPY.cpy # DB2 SQL common
│ ├── IMSCOPY.cpy # IMS common
│ └── CUSTMAP.cpy # CICS BMS map symbolic
│
├── PROC/ # Cataloged Procedures
│ ├── LOGPROC.prc # Logging procedure
│ ├── DSNCOBOL.prc # DB2 COBOL execution
│ ├── VSAMPROC.prc # VSAM processing
│ ├── IMSPROC.prc # IMS execution
│ ├── SASPROC.prc # SAS execution
│ ├── PLIPROC.prc # PL/I execution
│ ├── FOCPROC.prc # FOCUS execution
│ ├── CDPROC.prc # Connect:Direct
│ ├── FTPPROC.prc # FTP transfer
│ └── ABENDPRC.prc # Abend handling
│
├── DB2/ # DB2 Database Objects
│ ├── CUSTDCLG.sql # Customer DCLGEN
│ ├── ACCTDCLG.sql # Account DCLGEN
│ └── DB2PROCS.sql # Stored procedures
│
├── VSAM/ # VSAM Definitions
│ └── CUSTKSDS.ctl # Customer KSDS definition
│
├── CICS/ # CICS Components
│ └── CUSTMAP.bms # BMS map definition
│
├── IMS/ # IMS Components
│ ├── CUSTDBD.dbd # IMS DBD definition
│ └── CUSTPSB.psb # IMS PSB definition
│
├── ASSEMBLER/ # Assembler Programs
│ ├── ABENDHND.asm # Abend handler
│ └── LOGWRITE.asm # Log writer utility
│
├── REXX/ # REXX Execs
│ ├── MAINEXEC.rexx # Main processing exec
│ └── VSAMUTIL.rexx # VSAM utility exec
│
├── CLIST/ # TSO CLIST Scripts
│ └── CUSTINQ.clist # Customer inquiry
│
├── SAS/ # SAS Programs
│ └── CUSTRPT.sas # Customer report
│
├── PLI/ # PL/I Programs
│ └── DATATRAN.pli # Data transformation
│
├── FOCUS/ # FOCUS Reports
│ └── SALESRPT.fex # Sales report
│
├── SUPRA/ # SUPRA/DATACOM
│ └── SUPRADEF.sql # SUPRA definitions
│
├── PANVALET/ # Panvalet Library
│ └── PANMAINT.pan # Library maintenance
│
├── CONNECT-DIRECT/ # Connect:Direct
│ └── CUSTXMIT.cdp # Transfer process
│
├── FTP/ # FTP Scripts
│ ├── CUSTFTP.ftp # FTP commands
│ └── SFTPSCPT.sftp # SFTP script
│
├── SCHEDULER/ # Job Schedulers
│ ├── CTLJOB.ctl # Control-M definition
│ └── TWSJOB.sch # TWS/OPC definition
│
├── ISPF/ # TSO/ISPF Components
│ ├── CUSTPNL.ispf # ISPF panel
│ └── CUSTTABL.ispf # ISPF table
│
├── ABEND-HANDLER/ # Abend Handling
│ └── ABNDCOPY.cpy # Abend copybook
│
├── FILE-MANAGER/ # IBM File Manager
│ └── FMCOPY.fm # File Manager utility
│
├── SDFS/ # SDFS Definitions
│ └── SDFSDEF.sdf # Data set services
│
├── UTILITIES/ # Utility Programs
│ ├── SN01UTIL.jcl # External SN01* utilities
│ └── IEBUTIL.jcl # IBM utilities
│
├── SCHEMA/ # Schema Definitions
│ ├── DEPENDENCY_GRAPH.json # Dependency graph schema
│ └── SAMPLE_DEPENDENCY.json # Sample dependency data
│
├── OUTPUT/ # Sample Output
│ └── CUSTRPT.txt # Sample report
│
└── LOGS/ # Log Files
└── SAMPLE_LOG.log # Sample log output
| Technology | Description | Sample Files |
|---|---|---|
| JCL | Job Control Language | JCL/*.jcl |
| COBOL | Business logic | COBOL/*.cbl |
| Copybooks | Reusable data structures | COPYBOOK/*.cpy |
| Procedures | Cataloged PROCs | PROC/*.prc |
| Technology | Description | Sample Files |
|---|---|---|
| DB2 | Relational database | DB2/*.sql |
| IMS DB | Hierarchical database | IMS/CUSTDBD.dbd |
| VSAM | Virtual Storage Access Method | VSAM/*.ctl |
| SUPRA | CA-DATACOM database | SUPRA/SUPRADEF.sql |
| FOCUS DB | FOCUS database/reporting | FOCUS/SALESRPT.fex |
| Technology | Description | Sample Files |
|---|---|---|
| CICS | Online transaction processing | COBOL/CICSPROG.cbl, CICS/CUSTMAP.bms |
| IMS DC | IMS Data Communications | IMS/CUSTPSB.psb |
| TSO/ISPF | Time Sharing Option | ISPF/*.ispf |
| Technology | Description | Sample Files |
|---|---|---|
| Assembler | System-level programming | ASSEMBLER/*.asm |
| REXX | Scripting language | REXX/*.rexx |
| CLIST | TSO command procedures | CLIST/*.clist |
| SAS | Statistical analysis | SAS/*.sas |
| PL/I | General purpose language | PLI/*.pli |
| Technology | Description | Sample Files |
|---|---|---|
| Connect:Direct | Secure file transfer | CONNECT-DIRECT/*.cdp |
| FTP | File Transfer Protocol | FTP/*.ftp |
| CTC Files | Channel-to-channel | JCL/CTCFILES.jcl |
| Technology | Description | Sample Files |
|---|---|---|
| Job Schedulers | Workload automation | SCHEDULER/*.ctl, SCHEDULER/*.sch |
| Abend Handlers | Error recovery | ABEND-HANDLER/*.cpy, ASSEMBLER/ABENDHND.asm |
| IBM File Manager | Data utilities | FILE-MANAGER/*.fm |
| Panvalet | Source management | PANVALET/*.pan |
| SDFS | Data set services | SDFS/*.sdf |
| IBM Utilities | IEB*, IEH*, IDCAMS | UTILITIES/IEBUTIL.jcl |
| External Utilities | SN01* and others | UTILITIES/SN01UTIL.jcl |
All programs include comprehensive logging:
- COBOL Programs: Write to LOGDD DD with timestamp, level, and message
- JCL Jobs: Use LOGPROC procedure for standardized logging
- REXX Execs: WRITELOG function with timestamp and log level
- PL/I Programs: Stream output to LOGFILE with formatted messages
- Assembler: WTO and DCB-based logging
2026-01-21 00:00:00.000000 | INFO | Message text here
2026-01-21 00:00:01.000000 | WARN | Warning message
2026-01-21 00:00:02.000000 | ERROR | Error description
The project includes a JSON schema for documenting application dependencies:
SCHEMA/DEPENDENCY_GRAPH.json- JSON Schema definitionSCHEMA/SAMPLE_DEPENDENCY.json- Sample dependency data
- JCL, COBOL, COPYBOOK, PROC
- DB2_TABLE, DB2_PROC, VSAM_FILE
- CICS_PROGRAM, CICS_TRANSACTION
- IMS_DBD, IMS_PSB, IMS_SEGMENT
- ASSEMBLER, REXX, CLIST, SAS_PROGRAM, PLI_PROGRAM
- CONNECT_DIRECT, FTP_SCRIPT, SCHEDULER_JOB
- EXTERNAL_SYSTEM, LOAD_MODULE
- CALLS, INCLUDES, READS, WRITES, UPDATES
- EXECUTES, REFERENCES, DEPENDS_ON
- TRIGGERS, TRANSFERS_TO, RECEIVES_FROM, SUBMITS
//SUBMIT EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=PROD.MAINFRM.JCL(MASTERJB),DISP=SHR
//SYSUT2 DD SYSOUT=(A,INTRDR)
//SYSIN DD DUMMYCUST CUST000001
TSO EXEC 'PROD.MAINFRM.REXX.EXEC(MAINEXEC)' EXEC
The project generates various output formats:
- Sequential Files - Fixed/variable length records
- VSAM Files - KSDS, ESDS, RRDS
- Reports - Print files (FBA, RECFM=FBA,LRECL=133)
- Logs - Timestamped processing logs
- JSON - Dependency graphs
- CSV - Export data (SAS generated)
Mainframe Demo Project
1.0.0 - Initial Release
MIT License