Space announcement This documentation space provides the same content as before, but the organization of the content has changed. The content is now organized based on logical branches instead of legacy book titles. We hope that the new structure will help you quickly find the content that you need.

Understanding Batch Abend-AID


Abend-AID intercepts and analyzes application program failures and provides a report that presents vital diagnostic information. Review the Abend-AID report in the following sequence:

Diagnostic section

Includes a comprehensive explanation of the error condition.

Next sequential instruction section

Provides information for locating the statement in error. Extended Language Support (XLS) identifies the exact location of the error.

Trace section

Provides a trace of called/linked programs on the save area chain. Includes application program attributes.

Program storage section

Formats program storage for application programs on the calling chain.

File section

Gives a status of each open file along with formatted current and previous records.

Specialized database support

Provides database-specific support for Db2, IMS, and IDMS if the Abend-AID support for that environment is installed on the system.

MQSeries section

Displays either MQSeries batch or MQSeries IMS information created by the Abend-AID for WebSphere MQ product.

LE Section

Validation and analysis of heap storage.

Abend-AID HOTKEY command report access

Use the Abend-AID HOTKEY command to access your batch Abend-AID reports from any ISPF screen by simply executing a two- to eight-character command. Upon executing the command, you are taken either directly to your most recent Abend-AID report or you are prompted with a selection list similar to the one shown in the following figure.

+----------------------Abend-AID Reports----------------------+
 COMMAND INPUT ===>                          Row 1 to 3 of 3
AUTOSEL=30   AUTOSAVE=ON
Jobname        Jobid     Program     Code        Date       Time
_ AA10130F    J0688830   ABNDTEST    S06F     07 SEP 2019  12:18 PM
_ AA941A01    J0387339   CWAADATE    S0C7     07 SEP 2019  12:18 PM
_ TSOUSERT    J0573079    COBBLF2    S0C9     02 SEP 2019   6:04 PM
-- S-View, D-Delete, I-Info, R-Register, E-Edit, P-Print --

Line commands

You can enter the following line commands to the left of the Jobname field on the selection list of batch Abend-AID reports. 

S

View the report

D

Delete the report from the list

I

Information about the report

R

Register the report

E

Edit the report

P

Print the report

For more information about using the HOTKEY command, press the HELP key (PF1) within the selection list, or refer to the see Abend-AID User/Reference.

Abend-AID one-key access

Optional to the Abend-AID HOTKEY command access, you can configure a PF key to access your batch Abend-AID reports by assigning the Abend-AID HOTKEY command to a PF key. For more details, refer to the see Abend-AID User/Reference.

SNAP-AID

You can use SNAP-AID to produce a batch Abend-AID report without terminating the program. SNAP-AID is invoked by a call to the module SNAPAID from COBOL, PL/I, Assembler, or FORTRAN programs. SNAP-AID can help in resolving difficult logic problems or when working with a Db2 or IDMS database management system.

To use SNAP-AID, perform the following steps:

  1. Code a call to the module SNAPAID (or SNPAID for FORTRAN).
  2. Compile and link-edit the program using one of the following:
    • The DYNAM compiler option, which is available for COBOL
    • A //SYSLIB DD statement for the link-edit that includes the Abend-AID load library:

      //SYSLIB DD DSN=SYS1.ABENDAID,DISP=SHR
    • A linkage editor INCLUDE statement for the SNAPAID subroutine module:

        //SYSIN DD *
          INCLUDE SYSLIB(SNAPAID)
  3. Add an //ABENDAID DD statement to the execution JCL.

Normally, the SNAP-AID report is written using the site default report shared directory named by CWROUTE. However, you can override this destination by specifying as follows:

  • //ABNLTERM DD, which overrides
  • CWEXIT02, which overrides
  • CWJOBTAB, which overrides
  • CWROUTE routing group specification, which overrides
  • CWROUTE site default report shared directory specification.

To write the SNAP-AID report to the //ABENDAID DD, use CWEXIT02, CWJOBTAB, or a CWROUTE routing group to designate that the report be written to SYSOUT. Refer to the Abend-AID Advanced Configuration Guide  for more information about routing report output.

Example 1

Calling SNAP-AID without using a parameter list:

  COBOL:

CALL ’SNAPAID’  

  PL/I:

CALL SNAPAID )

  Assembler:

LA   R1,0      Indicate no parameter list
CALL SNAPAID  

SNAP-AID parameter list

Using a parameter list in a call to SNAPAID lets you:

  • Customize your SNAP-AID report by selecting or suppressing specified report sections.
  • Identify SNAP-AID reports in the Abend-AID report file directory.
  • Cause dynamic allocation of the //ABENDAID DD.
  • Display storage ranges between selected addresses.

To code a SNAP-AID parameter list, define the parameter interface in your program with the following fields:

  • Identification: This six-byte field must be coded as SNPRML.
  • Action flag: This field is used to select the action (display or suppress) that SNAPAID applies to the sections specified. Valid values are:
    0 (default): Display all report sections
    1: Display specified report sections
    2: Suppress specified report sections.
  • Section selection flags: When the action flag is set to 1 or 2, use the section selection flag to identify the report section to be displayed or suppressed. Valid values are:
    0 (default): Do not apply the action specified by the action flag.
    1: Apply the action specified by the action flag.
  • Comment: This ten-character field is used to identify the SNAPAID call that generated the report. The contents of the comment field is displayed in the DESC (Description) field on the report file directory.

    Example 2

    Calling SNAP-AID using a parameter list:

      COBOL:

    CALL ’SNAPAID’ USING PARM-INTERFACE.  

      PL/I:

    CALL SNAPAID (PARM_INTERFACE)

      Assembler:

    OI   ADDR0,X80’      Set end-of-list bit
            LA   R1,PARMLIST      Point to parameter list
            B    AROUND_LIST
    PARMLIST DS   0F
    ADDR0    DC   A(SNPMITR)       Address of SNAPAID parameters
    AROUND_LIST EQU *
            CALL SNAPAID  

Sample programs

The following figures show sample programs with the parameter interface.

Parameter interface in a COBOL program

01 PARM-INTERFACE.
   03 PARM-IDENT PIC X(6) VALUE 'SNPRML'.
   03 PARM-ACTION PIC 9 VALUE ZERO.
  88 DISPLAY-ALL-SECTIONS VALUE 0.
  88 DISPLAY-SECTION VALUE 1.
  88 SUPPRESS-SECTION VALUE 2.
*  0 FULL SNAPAID REPORT (NO CUSTOMIZATION)
* 1 DISPLAY SELECTED SECTIONS
* 2 SUPPRESS SELECTED SECTIONS
   03 PARM-SECTION-SELECTION.
  05 NSI-SECTION PIC 9 VALUE ZERO.
 88 DO-NOT-APPLY-PARM-ACTION VALUE 0.
 88 APPLY-PARM-ACTION VALUE 1.
*0 DO NOT APPLY PARM-ACTION TO THIS SECTION
*1 APPLY PARM-ACTION TO THIS SECTION
  05 REGISTERS-PSW PIC 9 VALUE ZERO.
  05 TRACE-SUMMARY PIC 9 VALUE ZERO.
  05 PROGRAM-STORAGE PIC 9 VALUE ZERO.
  05 FILES-SECTION PIC 9 VALUE ZERO.
  05 IMS-SECTION PIC 9 VALUE ZERO.
  05 IDMS-SECTION PIC 9 VALUE ZERO.
  05 DB2-SECTION PIC 9 VALUE ZERO.
  05 SORT-SECTION PIC 9 VALUE ZERO.
  05 EBS-SECTION PIC 9 VALUE ZERO.
  05 PARML-VERSION PIC 9 VALUE ZERO
* DYNAMIC ALLOCATION INFORMATION NOT PRESENT IF BLANK
*  1 DYNAMIC ALLOCATION INFORMATION PRESENT
  03 PARM-COMMENT PIC X(10) VALUE SPACE.
  03 DYNALC-REQ PIC X VALUE SPACE.
     88 DON’T-ALLOCATE-ABENDAID VALUE SPACE.
 88 ALLOCATE-ABENDAID VALUE 'D'.
 88 ALLOC-AND-FREE-ON-CLOSE VALUE 'F'.
*   THE ABENDAID DD WILL NOT BE DYNAMICALLY ALLOCATED IF
*   BLANK
* D DYNAMICALLY ALLOCATE THE ABENDAID DD
* F DYNAMICALLY ALLOCATE THE ABENDAID DD AND FREE=CLOSE
  03 OUTPUT-CLASS PIC X VALUE SPACE.
  03 HOLD-OUTPUT PIC X VALUE SPACE.
     88 DONT-HOLD-DEF VALUE SPACE.
 88 HOLD VALUE 'Y'.
 88 DONT-HOLD VALUE 'N'.
 03 FILLER PIC X VALUE SPACE.
 03 DESTINATION-PARM PIC X(8) VALUE SPACE.
 03 USERID PIC X(8) VALUE SPACE.
 03 OUTPUT-WRITER PIC X(8) VALUE SPACE.
 03 USER-FORM PIC X(4) VALUE SPACE.

 Parameter interface in a PL/I program

DECLARE1PARM_INTERFACE,
2 PARM_IDENTCHAR(6)INIT('SNPRML'),
2 PARM_ACTION CHAR(1) INIT('0'),
/*= 0 FULL SNAPAID REPORT (NO CUSTOMIZATION) */
/* = 1 DISPLAY SELECTED SECTIONS */
/* = 2 SUPPRESS SELECTED SECTIONS */
2 PARM_SECTION(11) CHAR(1) INIT((11)('0'),(1)('1')),
/* (1) NSI */
/* (2) REGISTERS-PSW */
/* = 0 DO NOT APPLY PARM_ACTION FOR THIS SECT */
/* = 1 APPLY PARM_ACTION FOR THIS SECTION */
/* (3) TRACE-SUMMARY */
/* (4) PROGRAM-STORAGE */
/* (5) FILES */
/* (6) IMS-SECTION */
/* (7) IDMS-SECTION */
/* (8) DB2-SECTION */
/* (9) SORT-SECTION */
/* (10) UNUSED */
/* (11) PARML-VERSION */
/*  = 1 DYNAMIC ALLOCATION DATA IS PRESENT */
   2 PARM_COMMENT CHAR(10) INIT((10)' '),
   2 DYNALC-REQ CHAR(1) INIT('F'),
/*  = D DYNAMIC ALLOCATION OF THE ABENDAID DD */
/*  = F DYNAMICALLY ALLOCATE AND DO FREE=CLOSE */
   2 OUTPUT-CLASS CHAR(1) INIT('A'),
/*  = X ANY VALID OUTPUT CLASS */
   2 HOLD-OUTPUT CHAR(1) INIT('Y'),
/*  = Y HOLD THE OUTPUT */
/*  = N DON'T HOLD THE OUTPUT */
   2 FILLER CHAR(1) INIT(' '),
   2 DESTINATION CHAR(8) INIT('RMT5'),
   2 USERID CHAR(8) INIT('MYID'),
   2 OUTPUT-WRITER CHAR(8) INIT(' '),
   2 USER-FORM CHAR(4) INIT('SPCL');
DCL SNAPAID EXTERNAL ENTRY OPTIONS(RETCODE,ASSEMBLER);

 Parameter interface in an assembler program

SNPRMITRDS 0H
PARMIDEN DC CL6'SNPRML' +0 CALLER ID
*
PARMACTN DC CL1'0' +6 ACTION FLAG
* EQUATES TO BE USED IN SETTING PARMACTN (ACTION).
FULLFLG EQUC'0' FULL SNAPAID REPORT
* (NO CUSTOMIZATION)
DISPLYFLG EQU C'1' DISPLAY SELECTED SECTIONS
SUPPRFLG EQU C'2' SUPPRESS SELECTED SECTIONS
*
PARMSECT EQU * SECTION FLAGS - SET TO "0" OR "1"
NSISCTDCCL1'0'+7NSI
REGSCT DC CL1'0' +8 REGISTERS-PSW
TRACSCT DC CL1'0' +9 TRACE-SUMMARY
PROGSCT DC CL1'0' +10 PROGRAM-STORAGE
FILESCT DC CL1'0' +11 FILES
IMSSCT DC CL1'0' +12 IMS-SECTION
IDMSSCT DC CL1'0' +13 IDMS-SECTION
DB2SCT DC CL1'0' +14 DB2-SECTION
SRTSCT DC CL1'0' +15 SORT-SECTION
ECMSET DC CL1'0' +16 E-COMMERCE-SECTION
PRMLVERS DC CL1'1' +17 DYNAMIC ALLOCATION DATA PRESENT
* EQUATES TO BE USED IN SETTING SECTION FLAGS ABOVE.
SECTNOFF EQU C'0' DO NOT APPLY DISPLAY/SUPPRESS
* ACTION TO THIS SECTION.
SECTNON EQU C'1' APPLY DISPLAY/SUPPRESS ACTION
* TO THIS SECTION.
PARMCMNTDC 10CL1' '+18COMMENT - APPEARS IN PROGRAMMER
* COLUMN OF REPORT FILE DIRECTORY
DYNASECT EQU * DYNAMIC ALLOCATION SECTION
DYNALC DC CL1' ' +28DYNAMICALLY ALLOC ABENDAID
* AND OPTIONALLY SPECIFY
* FREE=CLOSE
DYNALLOC EQU C'D' DYNAMICALLY ALLOC ABENDAID
FREEQCLS EQU C'F' SPECIFY FREE=CLOSE TOO
OUTPTCLS DC CL1' '+29 SYSOUT CLASS TO BE USED
HOLDOUTP DC CL1' ' +30 HOLD THE OUTPUT (Y/N)
UNUSE2 DC CL1' ' +31 UNUSED
DESTNATN DC CL8' ' +32 DESTINATION (LOCAL / REMOTE)
USERID DC CL8' ' +40 USER I.D.
OUTPWRTR DC CL8' ' +48 OUPUT WRITER NAME
USERFORM DC CL4' ' +56 USER FORM NAME
SNPRMLNG EQU *-SNPRMITR
END

Abend-AID DD statements

Abend-AID provides the following DD statements. If two mutually exclusive DD statements are present in the JCL, the last one encountered takes effect.

  • //ABENDAID DD SYSOUT: Alternate DD for Abend-AID output. This DD statement is required for SNAP-AID. If there is an error while writing to a report data set, Abend-AID output is written to this DD. If it is not present in the JCL, it may be dynamically allocated.
  • //ABNLDUMP DD DUMMY: Requests printing of the normal IBM dump, in addition to the Abend-AID report.
  • //ABNLENAB DD DUMMY: Enables Abend-AID when it has been disabled in the CWGLOBAL table.
  • //ABNLHELP DD DUMMY: Produces the Abend-AID help pages.
  • //ABNLIGNR DD DUMMY: Suppresses Abend-AID and allows normal IBM dump processing.
  • //ABNLIGNS DD DUMMY: Suppresses SNAP-AID.
  • //ABNLINCL DD DUMMY: Causes all active load modules to be considered for CSECT inclusion via CWINCLUD table.
  • //ABNLLIST DD DSN: Specifies BMC source shared directory or source listing file in the job JCL to be used to merge the source into the Abend-AID report.
  • //ABNLLPDS DD DSN: Specifies a partitioned data set containing COBOL compiled source listings that may be used to provide the source code of the statement in error when a matching listing is not available in a BMC source listing file.
  • //ABNLNDUP DD DUMMY: Produces a report for an error in a job step even if duplicate dump suppression is enabled.
  • //ABNLTERM DD DSN: Specifies an Abend-AID report data set for Abend-AID output.
  • //ABNLTERM DD SYSOUT: Routes Abend-AID output to SYSOUT in 72-column format, in addition to writing to the Abend-AID report data set.
  • //ABNLWIDE DD DUMMY: Specifies 121-column output when the default is 72 columns.
  • //ABNLYDUP DD DUMMY: Causes a report for an error in a job step to always be considered for suppression using JOBNAME, but not SYSID.

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*