Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

CICS ASRA Abend (Protection Exception) Help

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> CICS
View previous topic :: :: View next topic  
Author Message
cyrus.e.cabrera

New User


Joined: 25 Jul 2011
Posts: 14
Location: Philippines

PostPosted: Thu May 17, 2012 8:33 am    Post subject: CICS ASRA Abend (Protection Exception) Help
Reply with quote

Hi guys,

I just want to ask help on this matter,

I have this particular code that declares an ABEND Protection Exception.

Code:
MOVE LT-ONE-LIT          TO CC-DTL-IDX       
                            SC-SCR-DISPLAY-IDX
                            SC-IDX.           
                                             



When I try to move the variable LT-ONE-LIT to SC-SCR-DISPLAY-IDX and SC-IDX that's when the abend happens.

all of this variables have the same data type: S9(4) comp.

SC-***** main variable (elementary item if the term is right): SC-STEP-CONTEXT-AREA

Values moved to SC-STEP-CONTEXT-AREA:
Code:
SET ADDRESS OF SC-STEP-CONTEXT-AREA TO       
    ADDR-EXCHANGE-CONTEXT.                   


ADDR-EXCHANGE-CONTEXT is a POINTER.
Code:
    LV ---- COBOL DATANAME ---------- -- ATTRIBUTES -- ----+---10----+---20--->
    02 ADDR-EXCHANGE-CONTEXT          POINTER       'X 2D9785EF                 



The statement above is the first occurence of usage of the said variable. No previous moves happened before this.


Thank you and God bless.
Back to top
View user's profile Send private message

dick scherrer

Site Director


Joined: 23 Nov 2006
Posts: 19270
Location: Inside the Matrix

PostPosted: Thu May 17, 2012 8:53 am    Post subject:
Reply with quote

Hello,

Somewhere you are pointing to an address that does not belong to your process.

The problem is not the data type, but rather where it is located.

You need to verify the address as being valid for your run.
Back to top
View user's profile Send private message
cyrus.e.cabrera

New User


Joined: 25 Jul 2011
Posts: 14
Location: Philippines

PostPosted: Thu May 17, 2012 11:12 am    Post subject:
Reply with quote

Hi,

Thank for your immediate response.

May I ask what are the common methods to know if the address is valid? I am new on debugging this kind of problem.

Your help is appreciated. Meanwhile, I will try to track the ADDR-EXCHANGE-CONTEXT on the code since it cannot be seen when not Xpedited.
Back to top
View user's profile Send private message
Bill Woodger

DFSORT Moderator


Joined: 09 Mar 2011
Posts: 7251

PostPosted: Thu May 17, 2012 12:53 pm    Post subject: Reply to: CICS ASRA Abend (Protection Exception) Help
Reply with quote

You definitely need to concentrate on ADDR-EXCHANGE-CONTEXT. It contains an invalid address (pointing to storage to which you don't have access).

You need to find where it is given any values. Where is it defined? If in some other module, you have to check whether it is getting passed correctly to your module.

You have to locate everywhere where it gets set. If it starts off with correct values, you have to "watch" it through to the point where it becomes incorrect.

It might be something "simple" like a bunch of pointers in a copybook and not using the same copybook in different modules.
Back to top
View user's profile Send private message
cyrus.e.cabrera

New User


Joined: 25 Jul 2011
Posts: 14
Location: Philippines

PostPosted: Thu May 17, 2012 4:47 pm    Post subject: Re: Reply to: CICS ASRA Abend (Protection Exception) Help
Reply with quote

Bill Woodger wrote:
You definitely need to concentrate on ADDR-EXCHANGE-CONTEXT. It contains an invalid address (pointing to storage to which you don't have access).

You need to find where it is given any values. Where is it defined? If in some other module, you have to check whether it is getting passed correctly to your module.

You have to locate everywhere where it gets set. If it starts off with correct values, you have to "watch" it through to the point where it becomes incorrect.

It might be something "simple" like a bunch of pointers in a copybook and not using the same copybook in different modules.



Thank you for the advice Bill. As of now, I am having a hardtime pin-pointing the location of the first pass for this variable. I don't have any experience on debugging this kind of PROTECTION EXCEPTION RELATED ABEND.

I think I will look at the parent module of this so that I can check the passing of data. However, I am not confident if I am able to know that the data passed is correct. Moreover, I will definitely try what you have suggested.

I will update this post if I accidentally find the solution.


Godspeed.
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 7932
Location: Bellevue, IA

PostPosted: Thu May 17, 2012 5:04 pm    Post subject:
Reply with quote

If you have debugging tools installed at your site, such as Xpediter, use them. Otherwise, if the transaction is started at a terminal, try using CEDF to look at the data being passed from calling program to subprogram.
Back to top
View user's profile Send private message
Bill Woodger

DFSORT Moderator


Joined: 09 Mar 2011
Posts: 7251

PostPosted: Thu May 17, 2012 6:02 pm    Post subject: Re: Reply to: CICS ASRA Abend (Protection Exception) Help
Reply with quote

Quote:
I don't have any experience on debugging this kind of PROTECTION EXCEPTION RELATED ABEND.

I think I will look at the parent module of this so that I can check the passing of data. However, I am not confident if I am able to know that the data passed is correct. Moreover, I will definitely try what you have suggested.

I will update this post if I accidentally find the solution.


Don't get hung-up on the particular type of abend. If your pointer were a COMP-3 and you were using it in a calculation and it had a sufficiently invalid value, you'd get a DATA EXCEPTION. You'd have to look for the cause in exactly the same way.

Definitely, if it has come from another module, you must look there. If it goes to other modules before yours, check there.

Somewhere originally it has been given a value which is an address to a piece of storage for you to use. Either it has done that incorrectly, or after that something has clobbered it, or your linkage doesn't match up so it looks "clobbered" when you try to use it.

What you have to do is: find where it first gets a value; check that the value is correct; if yes, check it where it goes off to anywhere else first; check it as it arrives in your module.

Once you have some idea of where it happened, then you can start to narrow it down.

Have a little more confidence. The only way you find it "by accident" is if you start changing code, running, changing again, etc, and stumble on a "fix", without knowing why, how or anything (and it is probably not the full story).

If you go looking for the problem, and you know enough to identify it when you see it, there is no accident involved.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> CICS All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts CICS transaction slow response time vasanthz All Other Mainframe Topics 1 Thu Jan 19, 2017 1:31 am
No new posts INDEPENDENT CICS TS 4.1 MRO REGION UP... Kyle Carroll CICS 0 Wed Dec 14, 2016 6:55 pm
No new posts CICS START AND CANCEL blayek CICS 1 Wed Dec 07, 2016 3:27 am
No new posts How does a called pgm know if its cal... Graeme Westerman COBOL Programming 4 Tue Nov 29, 2016 9:25 pm
No new posts IMS BMP program causes 878 system abend Artemk IMS DB/DC 7 Tue Nov 22, 2016 8:26 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us