WAVV 2014 CICS ASRA Dump Analysis Answers Mike Poil CICS

WAVV 2014 CICS ASRA Dump
Analysis Answers
Mike Poil
CICS Level 3 Service
IBM Hursley
[email protected]
April 2014
CICS Transaction Server
Exercise - ASRA Dumps 2 and 3
 Dump 2 is a Protection Exception due to a bad address being used.

Identify the failing machine and COBOL instructions.
000470
D24F 2000 8000
000147

MVC
0(80,2),0(8)
REC2
REC1
MOVE REC1 TO REC2.
Explain why the machine instruction failed.
GPR 2 (the address of REC2) is 00000000, you cannot overwrite storage there.

What is the address of RESP2 and its hex/decimal value?
019CB8B6 and its value is 0000000D/13.
05 RESP2
PIC S9(8) COMP. BLW=0000+03E,000001E 4C
TGTLOC  GPR 13
000134
BASE LOCATORS FOR WORKING-STORAGE
 BLW=0 GPR 13 + 134
GPR 13 019CB648 + 134 = 019CB77C, BLW=0 contains 019CB878, 019CB878 + 3E = 019CB8B6
00006EC0
00000000 00000000 019CB840 019CB878
00000000 006C00D0 00000000 019CD788
*........... ..................PH*
019CB770
00007000
F0F00000 00000000 000D0000 00000000
00000000 00000000 00000000 00000000
*00..............................*
019CB8B0
CICS in a Service Oriented Architecture | www.ibm.com/cics
2
CICS Transaction Server
Exercise - ASRA Dumps 2 and 3

If you have time, what is the address and value of BLL #4?
The address is 019CB790 and the value is 00000000.
TGTLOC  GPR 13
000138
BASE LOCATORS FOR LINKAGE-SECTION
 BLL=0 +138, BLL=1 +13C, BLL=2 +140, BLL=3 +144,
BLL=4 +148
GPR 13 019CB648
00006EE0
+ 148 = 019CB790, BLL=4 contains 00000000
00000000 00000000 00000000 00000000
00000000 00000000 01D09680 00000000
CICS in a Service Oriented Architecture | www.ibm.com/cics
3
*..........................O.....*
019CB790
CICS Transaction Server
Exercise - ASRA Dumps 2 and 3
 Dump 3 is an Operation Exception due to a bad address being used.

Use GPR 14 as a substitute for the PSW address and see if it works.
GPR 14 = 01D098E4.
Subtract PROGC1 load point 01D09420 gives Phase Offset +0004C4.
Subtract CSECT offset 000020 gives +0004A4.
This takes us to statement 150 CALL 'PROGC2' USING COMMC2.

Use the Linkage Editor map to find the root cause.
In the Linkage Editor Map we see that PROGC2 is an UNRESOLVED EXTERNAL
REFERENCE. The address that COBOL uses to transfer control will contain
00000000, so a static CALL will always fail in the way we see here.
CICS in a Service Oriented Architecture | www.ibm.com/cics
4
CICS Transaction Server
Exercise - ASRA Dump 2 Trace Analysis
 Answer the following questions:

How much RUWAPOOL storage was requested and was in obtained in 24-bit or 31bit storage?
X'8EC0' bytes from 31-bit storage at address 019C48B8.

How much LE-RUWA storage was requested and was in obtained in 24-bit or 31-bit
storage?
X'FF0' bytes from 24-bit at address 006C0838.

Did the first FILEA READ complete successfully?
Yes.

What key value was used for the second FILEA READ? (Hint: AP 0492.)
000000 from entry =000078=.
CICS in a Service Oriented Architecture | www.ibm.com/cics
5
CICS Transaction Server
Exercise - ASRA Dump 2 Trace Analysis

What do you think the AP 04B7 entry is telling you?
That there is a problem with the READ request.

Document the AP 04B7 data 2 one-byte VSAM R15 value at offset X'25' and the
one-byte VSAM Error Code at offset X'27', which trace entry interprets it and what
does it mean?
R15=08 Error code=10 (you will also see it in the previous AP 0493 and the following
AP 0492).
You can choose from several trace entries for an explanation, the following AP 04B1,
AP 04E1 and AP 00E1 all say that the record was not found. RESP(13) in the AP
E161 says the same thing - this is what you saw in RESP2 in the earlier exercise.
CICS in a Service Oriented Architecture | www.ibm.com/cics
6
CICS Transaction Server
Exercise - ASRA Dump 2 Trace Analysis

Use the correct trace RET address and the dump to work back to the failing COBOL
source statement, note the COBOL statement number; now identify what the
program will do if an exception happens at this point.
You cannot cheat for this one with EI level 2 active as the AP 0161 gives you the
original source statement number as 43, and you only have the compile listing after
translation.
The RET from the second AP 00E1 READ =000073= is 01D0985A.
Subtracting the load point 01D09420 and another 20 for the CSECT offset gives the
compile listing offset of 00041A, which is in line 144 CALL 'DFHEI1' from the EXEC CICS
READ FILE('FILEA') RIDFLD (RID2).
There is no check on the RESP(RESP2), so the program will continue even if there is an
error, and it has continued with a REC2 address of 00000000 from the NOTFND.

Can you now see what the root cause of the ASRA/0C4 is?
Bad programming!
CICS in a Service Oriented Architecture | www.ibm.com/cics
7