A unified and standardized interface for extracting z/OS control block data.
CBXP is currently in Alpha, meaning that some core functionality may still be missing, unstable, and or subject to change.
Mission Statement
z/OS Control Blocks are in-memory data structures that describe and control countless process, operating system components, and subsystems. Control blocks are unbiquitous on z/OS, but not very straight forward to access and extract information from. The mission of CBXP (Control Block EXPlorer) is to make it easy to extract z/OS control block data using industry standard tools and methodologies. CBXP accomplishes this by implementing a C/C++ XPLINK ASCII interface for extracting control blocks and post processing them into JSON. This makes it straight forward to integrate with industry standard programming languages and tools, which generally have well documented and understood foreign language intefaces for C/C++, and native and or third party JSON support that makes working with JSON data easy.
CBXP is the successor to the existing cbxplorer project. CBXP mainly improves upon this existing work by being implementing in C/C++ so that it is not limited to a specific programming language or tool. CBXP also focuses heavily on providing an interface that is simple and straight forward to use.
Minimum z/OS & Language Versions
Currently, CBXP is being developed on z/OS 3.1. We hope to eventually support all z/OS versions that are fully supported by IBM.
All versions of the IBM Open Enterprise SDK for Python that are fully supported by IBM are supported by CBXP.
Dependencies
- z/OS Language Environment Runtime Support: CBXP is compiled using the IBM Open XL C/C++ 2.1 compiler, which is still fairly new and requires z/OS Language Environment service updates for runtime support.
- More information can be found in section 5.2.2.2 Operational Requisites on page 9 in the Program Directory for IBM Open XL C/C++ 2.1 for z/OS.
Interfaces
Currently, the following interfaces are provided for CBXP. Additional interfaces can be added in the future if there are use cases for them.
Supported Control Blocks
Currently, CBXP only has support for extracting a handful of System-Level Control Blocks from Live Memory (storage). See Supported Control Blocks for more details.
We plan on adding support for extracting control blocks from Files and Data Sets, and extracting control blocks based on a User Defined Structure. We also plan on continuously expanding upon the following list of natively supported control blocks. The community is encouraged to assist in these efforts. See the Contribution Guidelines for more details.
Architecture
CBXP currently does NOT support extracting control blocks from Files and Data Sets.
flowchart LR
python(Python Interface) ---CBXP
style python fill:#ffcb3c,color:#000,stroke:#ffcb3c
shell(Shell Interface) ---CBXP
style shell fill:#33cc22,color:#000,stroke:#33cc22
subgraph C/C+
CBXP(["CBXP (64-bit XPLINK ASCII)"])
style CBXP fill:#0096ff,color:#fff,stroke:#0096ff
end
subgraph "Live Storage (Memory)"
CBXP--- control_blocks_storage@{ shape: procs, label: "Control Blocks"}
style control_blocks_storage color:#fff,stroke:#fff
end
subgraph "Data Sets"
CBXP--- control_blocks_data_set[("Control Blocks")]
style control_blocks_data_set color:#fff,stroke:#fff
end
subgraph "Files"
CBXP--- control_blocks_file[("Control Blocks")]
style control_blocks_file color:#fff,stroke:#fff
end