Find the abending statement in an ADS dialog.
search cancel

Find the abending statement in an ADS dialog.

book

Article ID: 142243

calendar_today

Updated On:

Products

IDMS IDMS - ADS

Issue/Introduction

This document describes how to find the abending statement in an ADS dialog.

Environment

Release: All supported releases.

Resolution

First, compile the dialog with SYMBOL TABLE: YES and re-produce the abend with task snaps ENABLED (DCMT VARY SNAP TASK ON). This will produce a task snap in the dc-log. At the head of the task snap, go to MOST RECENT USER MODE REGISTERS and find R9.

MOST RECENT USER MODE REGISTERS.
   R0        R1        R2        R3        R4        R5        R6        R7
3D795CB8  3D795A10  3D795EFC  C152D166  3D79585C  416FEEC8  3D795CAC  3D795EFC
   R8        R9        R10       R11       R12       R13       R14       R15
416FEEC0  3D793F88  3D7957F0  3D795A08  4152D690  3D7964E0  4152D7FA  00165010

R9 points to the OTB. Find the OTB in the task snap, and look at offset x'1C':

3D793F80 3B05A140 00000300 D6E3C25C E3E2E3C4 *... ....OTB*TSTD*
3D793F90 E2F0C3F7 40404040 40404040 C5D4D7C4 *S0C7        EMPD*
3D793FA0 C5D4D6F1 3D795708 416FEA00 00061708 *EMO1.`...?......* 

OTB + x’1C’ points to the VDB. Look at offset x’20’:

3D795700 3B059FE0 00000200 E5C4C25C E3E2E3C4 *..¤\....VDB*TSTD*
3D795710 E2F0C3F7 00000000 00000000 3D7957F0 *S0C7...........0*
3D795720 3D79585C 0004FFFF 000004B0 000003B8 *.`.*............*

The value at VDB + x’20’ is the offset of the current CME (command element). In this case, it is x’000004B0’.

Now run an ADSORPTS report for the dialog and look for the CME AT 000004B0:

CME  AT  000004B0             CLASS  +3(0003)        FUNC   +21(0015)       NEXT
       ADD
       SEQ#   000000600       FLAG1  00              FLAG2  00              FLAG3 00
       ICMD#  000000005
       BODY   000000AC 00050003 003C4000 00240000 00000004 00070000 00240000 000C0004
              00070000 0034001C 00180001 00040000 00440000 00240003 00041500 00000000
              00300000 00002800

The CME offset value is unique across all processes in the dialog.

Note that the statement is an ADD, SEQ# 00000600 and ICMD# 00000005. The ICMD# is unique only within the process, not across the whole dialog. Scroll backwards to find the current process.

RSE  AT  000003B8                NAME    TSTDS0C7-RP

The process is TSTDS0C7-RP.

Now go to the source listing section of the ADSORPTS for process TSTDS0C7-RP and find the ADD statement at SEQ# 00000600.

26  00000600  ADD 1 TO WS-NUM4.

This is the statement that was being executed at the time of the abend.

If for some reason it is not possible to force the abend with SYMBOL TABLE: YES, then force it with SYMBOL TABLE: NO and run the ADSORPTS on the dialog in that condition. Again, find the CME and then the ICMD# within that ADSORPTS output.

Then re-compile the dialog with SYMBOL TABLE: YES and re-run the ADSORPTS, and find the same ICMD# in that report. Note that in this case, it is possible that the ICMD# will identify the statement AFTER the one which is abending.

Going through the entire process with SYMBOL TABLE: YES is much more reliable.