CICS PL/I Fault Diagnosis
This tutorial will guide you through some of the capabilities within BMC AMI DevX Abend-AID, including:
- Using BMC AMI DevX Abend-AID to examine a CICS PL/I abend.
- Utilizing Abend-AID's features to view storage, compiled listings, variable values.
- Employing Abend-AID to dig into the transaction executing at the time of the abend.
Table of Contents
- Starting BMC AMI DevX Abend-AID
- The Diagnostic Summary
- Program Detail Screen
- Task Detail Screen
- Program Summary Screen
- Wrap-up
Starting BMC AMI DevX Abend-AID
To access Abend-AID for Batch within BMC AMI DevX Workbench for Eclipse:
This opens a view into Abend-AID within your BMC AMI DevX Workbench for Eclipse IDE. Integration of the tools needed for developers to do their daily jobs is a key feature of the Workbench experience.
The main menu of Abend-AID is the gateway to many useful views of your Fault Analysis data. We'll start by looking at the Fault Summary of a specific job (HCCAC013) to spotlight how you can leverage Abend-AID to quickly understand the root cause of a reported abend.
Fault Summary provides you easy, hyperlinked access to your generated batch, CICS, IMS, and SVC dumps sortable by job name, CICS region name, IMS message region name, etc. Each column provides a masking field (asterisks) to shorten the time needed to find your dump.
You now have filtered to only jobnames that begin with HCCA. Next, we'll dig a little deeper using Abend-AID's hyperlinks.
We've now filtered down to entries only for jobname HCCAC013. Next we'll select one of the entries to begin diagnosing an abend.
The Diagnostic Summary
The Diagnostic Summary provides the information necessary for diagnosing a transaction abend. The summary provides a probable reason for the abend, and usually suggests a resolution. For COBOL, PL/I, and Assembler programs compiled or assembled with source support, the statement number and source code of the statement in error are provided to the developer.
We'll use the Diagnostic Summary as a window into details about the program, the listing, storage areas, a narrative explanation of the error code, and other information valuable in diagnosing an abend.
Abend-AID provides to you an explanation of the abend code. For many reason codes, recommended corrective action is offered.
Program Detail Screen
The Program Detail screen provides detailed information about the selected program and gives you hyperlinks to source listings, concatenations and storage areas.
CICS has no STEPLIB or JOBLIB, but Abend-AID gives you easy access to your DFHRPL concatenation. Highlighted for you is the dataset from where the program was loaded.
You are now placed in your compiled listing, directly at the last instruction processed (the abending instruction). The line is also highlighted to quickly catch your eye and move you forward in your diagnosis.
Now Abend-AID displays the entire instruction but also maintains the highlight for the last line of the instruction processed.
The PL/I Storage Selection List displays the internal procedures for the selected transaction abend. Each internal procedure entry represents a PL/I library procedure, internal procedure, begin block, or on-unit. Only those active at the time of the failure are shown.
Here you can see the program storage for the abending program.
Here you are taken to the Expanded Data Field, which shows values in both zoned decimal and in character mode. This section is particularly helpful for fields containing a mixture of display, binary, and packed decimal fields.
Here Abend-AID gives you a one-stop location for the various storage areas in the PL/I program.
The PL/I Automatic Storage List displays the name, address, length, owning internal procedure name, and generation number of each PL/I automatic storage area allocated during program execution.
Each automatic storage area represents a PL/I library procedure, internal procedure, begin block, or on-unit. These storage blocks remain allocated until program execution ends in the PL/I block containing the storage declaration. The most current generation of the automatic storage is generation zero.
Static storage areas are those storage locations allocated when the selected program is loaded, and which remain allocated until the selected program ends. Static storage areas are displayed in hexadecimal format on the Memory Display screen.
As the message indicates, CWDEMPL1 does not have PL/I controlled storage.
The PL/I Controlled Storage List, when available, lists the name, address, length, pseudo register name, and generation number of each PL/I controlled storage area that was allocated by the program.
Each controlled storage area represents a PL/I structure that has been declared with the controlled attribute. The controlled attribute allows multiple procedures to access the same PL/I structure. These storage blocks remain allocated until program execution ends in the PL/I block containing the storage declaration. The most current generation of the controlled storage is zero.
As the message indicates, CWDEMPL1 does not have PL/I external storage.
The PL/I External Storage List displays the name, address, and length of each PL/I external storage area that was allocated by the program. Each external storage area represents a PL/I structure that has been declared with the external attribute. The external attribute allows multiple procedures to access the same PL/I structure.
Task Detail Screen
The Task Detail screen gives you detailed information about the status of the transaction at the time of the abend. Included is information about the resources being used, such as the program control table (PCT) entry, the task control area (TCA), and the execute interface block (EIB).
Abend-AID provides multiple paths to key information. Earlier we saw the Program Detail screen was accessed from the Diagnostic Summary. Here we access the same info from the Task Detail screen, saving you the time it would take to return to Diagnostic Summary before again accessing Program Detail.
The initial program was not in this dump because the program storage was no longer available. This can occur when an invoked program issued a transfer control to a new program.
When control is transferred, the base is reset to the called program. Program storage for programs prior to the transfer is cleared. In this situation, clicking the initial program returns message ‘Program name ******** is not in this dump’. If the abending program and the initial program are the same, clicking the initial program would display the same Program Detail section.
The remaining fields on the top half of the page contain detailed information about the transaction, including control block information for use by the CICS administrators.
The Terminal Detail screen provides information about the terminal used to invoke the transaction. This is only viewable for terminal-based transactions (not message-based transactions).
- The abending statement is easily found with a hyperlinked line number that takes you to the listing.
- The variables that comprise the line of code are displayed along with your picture types and the values at the time of the abend.
- Abend-AID also provides a narrative explanation of what the abend was, as well as any IBM messages that accompany the abend.
- The Next Sequential Instruction subsection provides basic information about the instruction after the abend, the load library or program object library the module was loaded from and the bind date/time.
- The Last Call or EXEC CICS subsection provides information about the last program call or last ‘EXEC CICS’ executed prior to the abend in the paragraph where the statement resided.
- The Last Call Arguments and Values subsection displays variables and values passed when the previous subsection shows a call. In this case, it's an EXEC CICS Request so there are no arguments and values to display.
- The Program Link Summary displays the sequence of programs called from the initial program to the point the abend occurs. In this example, the initial program was the abending program, so the active calling chain consists of a single module.
As with the Terminal Detail screen's 'Last 3270 Image' hyperlink, clicking the 'SCREEN' hyperlink (or command if using the CLI) will display an image of the user's terminal.
Provided are links to information about the called application programs appearing in the Diagnostic Summary's subsection Program Link Summary.
Program Summary Screen
The Program Summary Information screen identifies all active modules involved in an abending transaction. Key identification data is summarized for each module used by a transaction up to the abending module.
As you can see from the menu, you can gather a great deal of information about the application programs that comprise the active calling chain:
- The Program Detail, Program Listing, and Program Storage options have all been covered in this document previously.
- Clicking on the Compile Options shows the language and version the program was compiled or assembled under, as well as the compile options (if the program was compiled with COBOL).
- Note that Impact Analysis, Extended Search, and Perform Flow options are not available for PL/I programs.
Wrap-up
This concludes our look at how Abend-AID provides powerful tools for diagnosing PL/I abends in CICS. We hope that you have enjoyed your look at these capabilities and look forward to working with you to implement some or all of the solution within your systems. Please remember to complete the Test Drive survey, as both your sponsor and our team are very interested in your feedback on the Test Drive Experience.
You can choose from any of the available scripts from the panel to the left or return to the main page here: Welcome to Test Drive