View previous topic :: View next topic
|
Author |
Message |
ignich7
New User
Joined: 02 Nov 2005 Posts: 66
|
|
|
|
Hello...
I want to know whether the PSW & R14 contents are used only to find the recently executed EXEC CICS statement or it can be used to find non-CICS (COBOL for eg.) statements as well.
I am reading CICS dump analysis. I wrote a sample program(COBPRG) to produce ASRA abend. I included a cobol statement which divides an integer by 0.
Now, I am trying to locate my failed instruction from the CICS dumps. When I looked at the load point address and the return address of the failed statement, the load point seemed to be higher than the return address of the failed statement. And so, I could not subtract load point address from the return address of the failed instruction in order to get the offset in my program.
These are my trace entries...
Code: |
LD 0001 LDLD ENTRY ACQUIRE_PROGRAM 1025D6B0
LD 0002 LDLD EXIT ACQUIRE_PROGRAM/OK 8FA143C0,0FA143C0,13A8,REUSABLE,ERDS
AP 1940 APLI ENTRY START_PROGRAM COBPRG,CEDF,FULLAPI,EXEC,NO,10022C24
SM 0301 SMGF ENTRY GETMAIN 84A8,YES,RUWAPOOL,TASK31
SM 0302 SMGF EXIT GETMAIN/OK 10123868 |
and the return address of the failing instruction...
Code: |
AP 1942 APLI *EXC* - Program-Check FUNCTION(START_PROGRAM) PROGRAM(COBPRG)
ENVIRONMENT_TYPE(EXEC) SYNCONRETURN(NO) LANGUAGE_BLOCK(1002
SYSEIB_REQUEST(NO)
TASK-00044 KE_NUM-00ED TCB-QR /007CE758 RET-8F00C7A8 TIME-17:5
AP 0790 SRP *EXC* - PROGRAM_CHECK
TASK-00044 KE_NUM-00ED TCB-QR /007CE758 RET-8EDA7876 TIME-17:5
1-0000 F0C3F961 C1D2C5C1 018400C9 0000FFFF C4C6C8C1 D7D3C9F1
AP 0781 SRP *EXC* - ABEND_ASRA PROGRAM(COBPRG ) OFFSET(00000490) EXEC_KEY(CI
TASK-00044 KE_NUM-00ED TCB-QR /007CE758 RET-8EDA7876 TIME-17:5
AP 1942 APLI *EXC* - Abend-Percolate FUNCTION(START_PROGRAM) PROGRAM(COBPRG)
ENVIRONMENT_TYPE(EXEC) SYNCONRETURN(NO) LANGUAGE_BLOCK(1002
SYSEIB_REQUEST(NO)
TASK-00044 KE_NUM-00ED TCB-QR /007CE758 RET-8F00C7A8 TIME-17:5
AP 1942 APLI *EXC* - Abend-Percolate FUNCTION(START_PROGRAM) PROGRAM(COBPRG)
ENVIRONMENT_TYPE(EXEC) SYNCONRETURN(NO) LANGUAGE_BLOCK(1002
SYSEIB_REQUEST(NO)
TASK-00044 KE_NUM-00ED TCB-QR /007CE758 RET-8F00C7A8 TIME-17:5 |
Please let me know whether we can only locate failed EXEC CICS statement by PSW/R14 or we can locate non-CICS statements also.
Thanks in advance,
Gnana Nicholas I |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8697 Location: Dubuque, Iowa, USA
|
|
|
|
Code: |
AP 0781 SRP *EXC* - ABEND_ASRA PROGRAM(COBPRG ) OFFSET(00000490) EXEC_KEY(CI |
Why not just use the provided offset?
There should be a lot more trace entries for your program -- the initial GETMAIN is just allocating storage for your program; there's typically a number of trace entries (sometimes hundreds) for a CICS program.
Also, if your CICS region is providing a dump, using IPCS would be the best analysis tool. The precise verb to use depends upon the CICS release but that's not hard to find. |
|
Back to top |
|
|
ignich7
New User
Joined: 02 Nov 2005 Posts: 66
|
|
|
|
Thanks for the response Robert.
I got these internal trace entries from the CICS dumps. I formatted it by VERBX DFHPD650 'TR=2' as my CICS version is 3.2
The load point address of my program is 0FA143C0 and the return adresses captured in all the trace entries are RET-8F00C7A8, RET-8EDA7876, RET-8EDA7876, RET-8F00C7A8 and RET-8F00C7A8. All these return addresses are less than 0FA143C0. I am bit ambiguous why it looks so.
--------------------------
Gnana Nicholas I |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8697 Location: Dubuque, Iowa, USA
|
|
|
|
I repeat my question -- since you've already been told the offset in the program for your abend, why do you care about return addresses at all? |
|
Back to top |
|
|
ignich7
New User
Joined: 02 Nov 2005 Posts: 66
|
|
|
|
Not anymore. Thanks again for your help Robert
--------------------
Gnana Nicholas I |
|
Back to top |
|
|
Bill O'Boyle
CICS Moderator
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
|
|
When the high-order bit of a register is "ON", this normally means 31-Bit addressing-mode.
In your example, subtract X'80000000' from one of these register-values and you'll see.
This can also be done programmatically in Assembler (three of many ways) -
Code: |
LA Rxx,0(,Rxx) CLEAR TOP-BIT
NIHH Rxx,32767 SAME
N Rxx,=X'7FFFFFFF' SAME
|
Much cheaper than a SUBTRACT....
Bill |
|
Back to top |
|
|
ignich7
New User
Joined: 02 Nov 2005 Posts: 66
|
|
|
|
Yeah.. which means just discarding the higher order digit. Even if you do so, my initial question stands still
Thanks for your response Bill,
Gnana Nicholas I |
|
Back to top |
|
|
|