IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

PSW & R14 contents are only to find EXEC CICS statement?


IBM Mainframe Forums -> CICS
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
ignich7

New User


Joined: 02 Nov 2005
Posts: 66

PostPosted: Tue Oct 26, 2010 7:55 pm
Reply with quote

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
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8697
Location: Dubuque, Iowa, USA

PostPosted: Tue Oct 26, 2010 8:10 pm
Reply with quote

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
View user's profile Send private message
ignich7

New User


Joined: 02 Nov 2005
Posts: 66

PostPosted: Wed Oct 27, 2010 12:05 pm
Reply with quote

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
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8697
Location: Dubuque, Iowa, USA

PostPosted: Wed Oct 27, 2010 5:08 pm
Reply with quote

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
View user's profile Send private message
ignich7

New User


Joined: 02 Nov 2005
Posts: 66

PostPosted: Wed Oct 27, 2010 5:17 pm
Reply with quote

Not anymore. Thanks again for your help Robert icon_smile.gif

--------------------
Gnana Nicholas I
Back to top
View user's profile Send private message
Bill O'Boyle

CICS Moderator


Joined: 14 Jan 2008
Posts: 2501
Location: Atlanta, Georgia, USA

PostPosted: Wed Oct 27, 2010 5:36 pm
Reply with quote

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.... icon_wink.gif

Bill
Back to top
View user's profile Send private message
ignich7

New User


Joined: 02 Nov 2005
Posts: 66

PostPosted: Wed Oct 27, 2010 6:08 pm
Reply with quote

Yeah.. which means just discarding the higher order digit. Even if you do so, my initial question stands still icon_wink.gif

Thanks for your response Bill,
Gnana Nicholas I
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> CICS

 


Similar Topics
Topic Forum Replies
No new posts Using API Gateway from CICS program CICS 0
No new posts To find whether record count are true... DFSORT/ICETOOL 6
No new posts Calling an Open C library function in... CICS 1
No new posts How to 'Ping' a CICS region in JCL CICS 2
No new posts JCL EXEC PARM data in C Java & MQSeries 2
Search our Forums:

Back to Top