Whenever a DC174001 APPLICATION ABORTED. ATTEMPTING TO EXCEED MAXIMUM LINK LEVEL occurs, is it possible to identify the dialogs and link path involved?
Release: All supported releases.
Component: ADS.
Yes. Modify message DC174001 by changing the severity to 3. Ensure that task snap is enabled.
In the snap, do a find on string OTB*. Strings such as OTB*OTX*VDB*, UMBROTB*, OTB*ADSCXCTL will be found. Ignore these. Look for a dialog name after the OTB* eyecatcher.
For example:
3DD88C80 3B6E0400 00000300 D6E3C25C D9C2C2C4 D3C7F1F2 40404040 40404040 E2E8E2C4 *.>......OTB*RBBDLG12 SYSD*
3DD88CA0 C9D9D340 3DD7B808 40D28000 00062688 3DD83108 3DD83108 0002CDB0 00000000 *IRL .P.. K.....h.Q...Q..........*
3DD88CC0 00000000 00000000 00000000 00000000 000A000C 00040000 00030000 000003D0 *...............................}*
3DD88CE0 0002C1C4 E2F24040 40402000 80004000 40404040 40404040 40404040 40404040 *..ADS2 .... . *
3DD88D00 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
CONTENTS THROUGH 3DD88E1F SAME AS ABOVE LINE.
3DD88E20 40404040 40404040 40404040 40404040 D9C2C2C4 D3C7F1F1 D3C9D5D2 00000000 * RBBDLG11LINK....*
^ 3DD88C88+1A8
This OTB identifies the last dialog in the link path. Offset 1A8 and 1B0 show the previous dialog (RBBDLG11) and how it got to RBBDLG12. In this case via a LINK:
0001A8 OTBDCOM DS CL8' ' PREV DIALOG TO HAVE CONTROL
0001B0 OTBCNTL DS CL4' ' CTRL COMMAND ISSUED BY PREV DIALOG.
Note that the OTB above starts at address 3DD88C88, plus offset x'1A8' points to "RBBDLG11LINK".
Now find the VDB* for RBBDLG11. These are the fields from the VDB*:
Here is the part of the VDB DSECT that relates to this process:
000000 VDB DSECT 06/28/90
000000 VDBID DS CL4 "VDB*".
000004 VDBDNAM DS CL8 DIALOG NAME
00000C VDBPREVA DS A PREVIOUS VDB ADDRESS
000010 VDBNEXTA DS A NEXT VDB ADDRESS
Ignore all the VDB*'s that are obviously not followed by a dialog. Walk the VDB chain back to the first dialog. Offset X'C' having the value 00000000 is an indication that the first dialog has been reached again. Note the dialogs along the way to get the sequence.
Backwards from RBBDLG11:
All the VDB's start at offset 8 from the addresses on the right, the bold section, the address of the previous VDB address is underlined and italicized.
Address
3DD7B800 3B6E0840 00000200 E5C4C25C D9C2C2C4 D3C7F1F1 3DD79808 00000000 3DD7B8F0 *.>. ....VDB*RBBDLG11.
The previous VDB address is 3DD79808.
3DD79800 3B6DDFA0 00000200 E5C4C25C D9C2C2C4 D3C7F1F0 3DD7B608 3DD7B808 3DD798F0 *._......VDB*RBBDLG10.
The previous VDB address now is 3DD7B608.
3DD7B600 3B6E0840 00000200 E5C4C25C D9C2C2C4 D3C7F940 3DD79608 3DD79808 3DD7B6F0 *.>. ....VDB*RBBDLG9
The previous VDB address now is 3DD79608.
3DD79600 3B6DDFA0 00000200 E5C4C25C D9C2C2C4 D3C7F840 3DD7B408 3DD7B608 3DD796F0 *._......VDB*RBBDLG8
The previous VDB address now is 3DD7B408
3DD7B400 3B6E0840 00000200 E5C4C25C D9C2C2C4 D3C7F740 3DD79408 3DD79608 3DD7B4F0 *.>. ....VDB*RBBDLG7
The previous VDB address now is 3DD79408
3DD79400 3B6DDFA0 00000200 E5C4C25C D9C2C2C4 D3C7F640 3DD7B208 3DD7B408 3DD794F0 *._......VDB*RBBDLG6
The previous VDB address now is 3DD7B208
3DD7B200 3B6E0840 00000200 E5C4C25C D9C2C2C4 D3C7F540 3DD79208 3DD79408 3DD7B2F0 *.>. ....VDB*RBBDLG5
The previous VDB address now is 3DD79208
3DD79200 3B6DDFA0 00000200 E5C4C25C D9C2C2C4 D3C7F440 3DD7B008 3DD7B208 3DD792F0 *._......VDB*RBBDLG4
The previous VDB address now is 3DD7B008
03DD7B000 3B6E0840 00000200 E5C4C25C D9C2C2C4 D3C7F340 3DD79008 3DD79208 3DD7B0F0 *.>. ....VDB*RBBDLG3
The previous VDB address now is 3DD79008
03DD79000 3B6DDFA0 00000200 E5C4C25C D9C2C2C4 D3C7F240 3DD83408 3DD7B008 3DD790F0 *._......VDB*RBBDLG2
The previous VDB address now is 3DD83408
3DD83400 3B6DFDC0 00000200 E5C4C25C D9C2C2C4 D3C7F140 00000000 3DD79008 3DD834F0 *._.{....VDB*RBBDLG1
The previous VDB address now is 00000000 so the first dialog is RBBDLG1.