Subscribe
THE DAILY DIGEST

The daily edition.

Essential reading from Rocket Enterprise. Straight to the source.

Archived edition
DAILY EDITION1 story· 3 min read
IN FOCUS

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

Rocket Enterprise Server / Enterprise Developer 12.0, Open PL/I, Linux/UNIX
Documentation references
That’s the briefing.You’ve reached the end of this edition.
More editions

From the archive

View all
Oct 29

CICS Transient Data Queues: Triggering a Transaction Does Not Enable Recovery

Oct 29

Rocket Unit Testing Framework: Process Isolation, Trait Filtering, and JUnit CI Integration

Oct 29

Multiple XA Resources: When XAID Is Required and BatchOnly Prevents Connection Fan-Out