PLIDUMP Diagnostics: Prepare Symbols and Check QSAM Buffer Lifetime
PLIDUMP can capture PL/I calling paths and storage, but useful diagnostics depend on accessible symbol files and deliberate output configuration. QSAM buffer displays have a documented storage-lifetime limitation. [2] [3]
Read the full briefing
Scope: Rocket Enterprise Server PL/I diagnostics, documented in Enterprise Developer 12.0 for Eclipse UNIX (Linux/UNIX).
PLIDUMP captures a formatted view of selected program storage and the calling path to the current location. For failure investigation, Rocket documents placing the call in the program’s ON ERROR block so a dump is created before termination. Start analysis with the call stack: the last executed line is a likely trigger, rather than a guaranteed diagnosis. PLIDUMP PLIDUMP Subroutine
The call’s options control what is captured and whether execution continues. T requests traceback, F adds key information for KSDS files accessed by the runtime, and H displays heap data. C continues after the dump; S terminates the enclave with a dump. The defaults are T and C. Rocket’s file-processing example uses PLIDUMP('FC') in a key-condition handler and PLIDUMP('FS') in its error handler—demonstrating different continuation choices for different conditions. PLIDUMP Subroutine
Useful output also depends on preparation. Compile with -debug to generate the .stb files needed for symbols and source lines; Rocket explicitly permits combining this with -opt or -opt3. Make those files available alongside the executable/shared library, including the .so, or through CODEWATCH_STBPATH. Without them, the dump contains substantially less useful information. When making multiple calls, use a distinct header identifier for each invocation to distinguish the resulting dumps. Using PLIDUMP
Output selection is independent of those call options. The environment variable PLIDUMP_CONFIG selects:
NONE: no output.CORE: a core file only.BOTH: a core file plus the Program Environment dump.
An unset or unrecognized value produces only the default Program Environment dump. For JCL output, a DD named PLIDUMP can identify the dump data set. Rocket documents MSGFILE(SYSOUT,FBA,300,0) or MSGFILE(SYSOUT,VBA,304,0) for SYSOUT targets to avoid wrapped dump records. Using PLIDUMP
One interpretation limit deserves particular attention: QSAM buffer contents may be unreliable when the referenced storage was automatic and is no longer valid, or was dynamically allocated and subsequently freed. PLIDUMP attempts to display the memory at the recorded address; that does not establish that it still represents the last I/O buffer. Rocket specifies reading into or writing from STATIC variables when reliable QSAM buffer displays are required. The same reference states that VSAM buffers contain the results of the last I/O operation. PLIDUMP Subroutine
Takeaway: Prepare symbols and output routing before a failure, and check storage lifetime before treating a displayed QSAM buffer as reliable evidence. Using PLIDUMP PLIDUMP Subroutine