management: z/OS Secrets
IBM's mainframe documentation has always been world class: detailed, correct, and easily obtained.
|
However, there are things that IBM doesn't document, but are commonly known or used in the industry. There are others that are documented, but this documentation can be hard to find. You could think of these as mainframe secrets. Let's look at some of these, starting with the undocumented secrets.
|
|
1. IEFBR14
Everyone working with z/OS knows about IEFBR14: the program that doesn't do anything. Rather, we can use IEFBR14 when we want to allocate or delete a dataset in a step, but not do anything else. For example, the following JCL will delete a dataset if it exists:
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DISP=(MOD,DELETE),SPACE=(TRK,(1)),DSN=MY.DSET.TO.DELETE
However, you won't see IEFBR14 documented anywhere. You may see some manuals with JCL that use it, but nothing that explains what it does and why it is used.
2. Control Blocks
z/OS and other products save information in areas of storage (memory) called control blocks. Even better, IBM provides documentation for some of these control blocks. For example, the format of the ASCB control block, together with how to find it is in the z/OS documentation.
But you won't find general information about control blocks and whey they're used, although veteran assembler programmers use them at will. Beginners must rely on independent sources like this Longpela Expertise article.
3. Re-entrant Programming
IBM documentation shows that you can instruct COBOL, PL/I and C/C++ to create re-entrant code. It will also tell you that CICS threadsafe, and many exits (like IEFACTRT) must be re-entrant. But what does re-entrant mean? This you won't find in IBM documentation, or many books on assembler. Longpela Expertise has an article about re-entrant programming, and some learning institutions like ProTech and Interskill include details about re-entrant HLASM programming.
4. Undocumented Commands
IBM products sometimes have undocumented commands: commands that are not officially supported, but those in the know understand can be useful. Here are a couple:
D LLA,STATISTICS
Provides statistics about every library in LLA. Here's an example:
D LLA,STATISTICS
CSV620I 15.04.09 LLA STATS DISPLAY 869
TOTAL DASD FETCHES: 2549 TOTAL VLF RETRIEVES: 8138
60 LIBRARY ENTRIES FOLLOW
LIBRARY: CSQ911.SCSQAUTH
MEMBERS: 3059
MEMBERS FETCHED: 0 MEMBERS IN VLF: 0
DASD FETCHES: 0 VLF RETRIEVES: 0
LIBRARY: BLZ700.SBLZLOAD
MEMBERS: 79
MEMBERS FETCHED: 0 MEMBERS IN VLF: 0
DASD FETCHES: 0 VLF RETRIEVES: 0
LIBRARY: TCPIP.SEZALOAD
MEMBERS: 302
MEMBERS FETCHED: 37 MEMBERS IN VLF: 35
DASD FETCHES: 0 VLF RETRIEVES: 649
Although not documented in the z/OS documentation, it is mentioned in the IBM Redbook "Partitioned Data Set Extended Usage Guide" (SG24-6106), and is not just for PDSEs, but works for PDS libraries as well.
IND$FILE
Ever used your 3270 emulator to transfer a file between your PC and the z/OS session where you logged onto TSO? Here's an example from Jolly Giant's QWS3270:
These features use the TSO command IND$FILE. This is part of the base z/OS feature "3270 PC File Transfer Program" (IBM product ID 5665-311). However, you won't find any documentation for this product, or the IND$FILE program called within TSO to perform the transfer. You won't even see documentation instructing you to ensure your TSO session is ready to receive a long TSO command.
IPCS Commands
In 2025, Ed Jaffe presented at Share Cleveland, showing some of the undocumented IPCS commands that are available.
Let's leave the undocumented, and look at things that are documented, if you look hard enough.
5. Hiperbatch
Ever heard of Hiperbatch? This extends access methods like QSAM and VSAM to keep data in memory for multiple batch programs and jobs using the z/OS Data Lookaside Facility (DLF). But here's the thing: there's no documentation about Hiperbatch in the current z/OS documentation. This documentation states that Hiperbatch is an option, and has some information about the PARMLIB COFDLFxx member, how to start DLF, and IPCS commands. But nothing about Hiperbatch and how to use it. For that, you need to go back to past documents like the IBM Programming:Hiperbatch guide of 1994.
Batchpipes is in a similar state. This is a separate product allowing a second batch job to access data written to a dataset by a first batch jobs while it is happening: similar to the z/OS UNIX pipes. z/OS documentation mentions it as an option for batch jobs but provides no other information. For that, you need to go back to the OS390 2.1 Batchpipes User Guide and Reference, published in 2000.
6. 3270 Data Stream Format
We all use 3270 screens, usually from a TN3270 emulator. These emulators send and receive 3270 data streams. Products like CICS and IMS provide features to send and receive 3270 data streams, so you don't need to know the details. If you do, these products will point you to a manual called the 3270 Data Stream Programmer's Reference (GA23-0059). Other IBM products working with 3270 do the same. The problem is that you won't find this 1988 era manual on the IBM website. We only found it on Bitsavers.
7. Codepages
Many don't realise that there is more than one EBCDIC. Traditional z/OS people will use the US-based 37 codepage. Those using z/OS UNIX may be more interested in 1047. And those from the Europe may prefer 1140: the same as 37 but with the Euro symbol. Finding the mapping (which character relates to which number) for the 'common' codepages like 37 and 1047 are easy. Others are harder to find. Longpela Expertise shows the values of some of these codepages, and Tachyon software also provides a list. But you won't find current information from IBM about these mappings, or anywhere else for that matter.
Conclusion
The IBM mainframe is very complex, with many things added over the decades. IBM and other vendors have a hard time supporting everything and understandably discontinue support for some products of features. But it's interesting that some basic z/OS or mainframe features are no longer well documented, if they are documented at all.
David Stephens
|