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

ASRA abend caused due to invalid values in DSA


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

New User


Joined: 25 Nov 2011
Posts: 2
Location: India

PostPosted: Tue Nov 29, 2011 4:53 pm
Reply with quote

Hi,
I need some help for an ASRA abend.We are not able to replicate the same in test regions.This abend occurs once in a while.It has been reported once or twice in every month.Please find the details regarding the AADF log:
An ASRA abend occurred in program ********. The abending transaction was
T*** running at terminal for user ID ******.

Analysis of error

The Numeric Compare instruction in error is located at offset 009F54 in
program ********.

Current values of fields on abending statement:

The first field is in error. The COMP-3 1st data field causing the error is
located in the Dynamic Storage Area addressed by program ********. The field
in error can be found in the program's "DSA" at displacement 00000418. This
field contains:

25B22C
A Data Exception is caused when a decimal instruction is attempted on a
field that does not contain valid packed data, eg. contains an invalid digit
(not 0-9), or its last byte contains an invalid sign (not A, B, C, D, E, or
F).
Next Sequential Instruction


The next sequential instruction to be executed in program ******** was at
displacement 00009F5A.

The program was compiled on 26FEB2011 at 11:35:19 and is 00C0A2 bytes long.
It is part of load module T8A5GTWK which was loaded from
****.****.CICS.LOADLIB.
It was link edited on 26FEB2011 and is 00CCF8 bytes long.
The program AMODE is 31 and RMODE is ANY.
The execution key for this program was USER_KEY.

Last Call or EXEC CICS Command

The last call or 'EXEC CICS' command was issued from program ******** at
displacement 00009630.



I am not able to track the valid values since the operands belong to DSA and not the working storage section.


Please find the AADF log regarding PSW:
To display Registers at abend, select REGS

Program Status Word at Time of Abend Program Information

PSW................. 079D1000 A72B1F7A
Instruction Length.. 0006 Program.. ********
Interrupt Code...... 0007 Offset... 00009F5A
Description......... Compare Decimal

Address Instruction Opcode D1(L1,B1),D2(L2,B2)
272B1F74 F924 D418 6531 CP 1048(3,13),1329(5,6)

The first operand was located at address 25B22C48 and contained -

25B22C * *


The second operand was located at address 272AA6A9 and contained -

00000010 0F * *



I have masked the program and dataset names due to security concerns.
Please help me in resolving it.
Is it due to the some invalid program storage movements which may have caused corruption in DSA?
Please let me know if some one has faced these kinda problems earlier(i.e. ASRA or SOC7 in DSA rather than working storage section or linkage section variables). Because the displacement shown for the next instruction is a simple move statement.
The transaction invokes a CWS-COBOL program to fetch the details and throw it back to the screen in the form of HTML page.

Thanks and Regards,
Srikaanth
Back to top
View user's profile Send private message
Garry Carroll

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Tue Nov 29, 2011 5:38 pm
Reply with quote

The DSA refers to storagebwhich contains the program, the working storage the linkage section &c. You need to determine what instruction is at the offset given and see which fields are beinfg used. You are comparing what should be a packed decimal value with a packed decimal value of 100.

It looks like you have a storage overlay where the first operand is getting trashed somehow.

Garry.
Back to top
View user's profile Send private message
Srikaanth S

New User


Joined: 25 Nov 2011
Posts: 2
Location: India

PostPosted: Tue Nov 29, 2011 5:48 pm
Reply with quote

Hi Garry,
The offset refers to a simple move statement where I don't think can be any chance of storage overlapping.
Please find the allocation of DSA (I got it from compile listing of the program):
*** DSA MEMORY MAP ***
DSALOC

00000000 REGISTER SAVE AREA
0000004C STACK NAB (NEXT AVAILABLE BYTE)
00000058 ADDRESS OF INLINE-CODE PRIMARY DSA
0000005C ADDRESS OF TGT
00000060 ADDRESS OF CAA
00000084 SWITCHES
00000088 CURRENT INT. PROGRAM OR METHOD NUMBER
0000008C ADDRESS OF CALL STATEMENT PROGRAM NAME
00000090 CALC ROUTINE REGISTER SAVE AREA
000000C4 ADDRESS OF FILE MUTEX USE COUNT CELLS
000000C8 PROCEDURE DIVISION RETURNING VALUE

*** VARIABLE PORTION OF DSA ***

000000D0 BACKSTORE CELLS FOR SYMBOLIC REGISTERS
000000F8 VARIABLE-LENGTH CELLS
00000100 VARIABLE NAME (VN) CELLS FOR PERFORM
00000200 PERFORM SAVE CELLS
00000418 TEMPORARY STORAGE-2
00000498 OPTIMIZER TEMPORARY STORAGE

The operands belong to the temporary storage-2 of DSA. Is there any way by which we can trace back using AADF to find out the exact source of error. I tried running in test region with inter-test but I am not able to replicate it in test regions.

Please let me know if there is any way of tracing the source of error with the help of AADF.As I mentioned in my earlier post, this abend occurs occassionally in the production region. It always comes up with the same offset. icon_sad.gif

Thanks and regards,
Srikaanth
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 Nov 29, 2011 6:31 pm
Reply with quote

Quote:
The offset refers to a simple move statement where I don't think can be any chance of storage overlapping.
What does the offset have to do with the storage overlay? The storage overlay could have happened tens -- or thousands -- of statements away from where the dump occurred (and hence where the offset points).
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue Nov 29, 2011 6:43 pm
Reply with quote

Recompile with the generated pseudo-assembler but all other compile options the same as the last compile. Check the program length. If equal, you can (probably) use it to check on the temporary-storage.

However, you have a CP which is abending. You state that you have tracked it back to a simple move. Don't go together, do they, those sentences?

You need to be certain about which bit of Cobol is causing the abend. If you are certain it is the move you have to explain away the CP.

You have Occurs Depending On(s) in the program. Any relationship to the field you fhink is abending?

Did the abends occur before the February re-complie? If not, likely to be to do with the changes then.

Of course, you can check all indexes/subsrcipts/ODO values.
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: Tue Nov 29, 2011 11:46 pm
Reply with quote

If the failure is occurring on an entry in the ODO table (subscript value too high), first, initialize the entire ODO with a unique packed-decimal value, such as negative 9's, which would raise a not equal condition on the CP instruction but would not cause a S0C7.

After initialization, load the ODO table based upon the DEPENDING ON variable with the valid values and the remaining entries will be your chosen default.

If you do encounter a not equal condition against the chosen value, log the subscript value to ensure you haven't gone beyond the DEPENDING ON variable.

Mr. Bill
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 INCLUDE OMIT COND for Multiple values... DFSORT/ICETOOL 5
No new posts Replace Multiple Field values to Othe... DFSORT/ICETOOL 12
No new posts ISAM and abend S03B JCL & VSAM 10
No new posts Null values are considered in Total c... DFSORT/ICETOOL 6
No new posts Abend S0C4 11 (Page Translation Excep... PL/I & Assembler 16
Search our Forums:

Back to Top