Be sure you have properly set up a new register save area for each
routine level that needs one. If two routines at different levels each
try to use the same save area thinking they have exclusive use you can
easily see bizarre, impossible behavior like this. When a higher-level
routine attempts to restore registers and return using a save area
corrupted by a lower level routine, it will branch to unexpected places
and exhibit behavior that seems impossible given the intended
instruction flow.
JC Ewing
On 03/16/2013 03:58 AM, jan de decker wrote:
Hi,
Thanks for yout help,
below some more information:
I am really baffled by the situation. Never seen it in my 25+ years as a
zOS systems programmer.
I am stck, what can happen to a parameter list between the BASR and the
called program.
Any help would be greatly appreciated.
Best regards,
jan
zOS is 1.10
Both programs involed are assembler batch, no LE.
Both are APF
YEMI0070 is the calling program, linked into YEMI000 AMODE 31 RMODE 24
YEXC0000 is the called program AMODE 31, RMODE ANY, reentrant, reusable
Top of the layout of the parameter ist
YEIOWTOD_START DS 0F
YEIOWTOD_ID DS CL8 EYECATCHER
YEIOWTOD_CSECT DS CL8 CSECT NAME CALLER
YEIOWTOD_CVTX DS F -> YECVTX
YEIOWTOD_ALET_MSG DS F ALET MESSAGE DATASPACE
YEIOWTOD_ALET_OUT DS F ALET I/O OR WTO DATASPACE
All correct
Just before jumping into yexc0000 I dumped by inserting
LR R1,R9 R1 -> PARAMETER LIST
LR R2,R1
LA R4,YEIOWTOD_ALET_MSG
LR R6,RF
ABEND 555,DUMP
just before the BASR RE,RF
Result:
R2 -> E8C5C9D6 E6E3D6C4 E8C5D4C9 F0F0F7F0 YEIOWTOD YEMI0070
01ED6330 -> YECVTX
01010039 0101003C alets
All OK
I removed the dump statements out of the macro and now I dumped at the
start of YEXC0000
YEXC0000 CSECT
YEXC0000 AMODE 31
YEXC0000 RMODE ANY
PRINT GEN
BAKR RE,0
SAM31 .
LA RC,4095(RB)
LA RC,1(RC)
USING YEXC0000,RB,RC
EYECATCH eyecather macro
EREG R0,R1 RESTORE REGISTERS
EREG RE,RF AFTER WTO
LR RA,R1 RA -> PARAMETER LIST
USING YEIOWTOD,RA RA ADDRESSES THE PARAME
AR#MODE
SAC 512 SWITCH TO ACCESS REGIST
LAM AR0,ARF,=16F'0' ALL ACCESS REGISTERS TO
LAM AR2,AR2,YEIOWTOD_ALET_MSG R2 ADDRESSES MESSAGE
ABEND 777,DUMP
Result:
RA -> E8C5C9D6 E6E3D6C4 E8C5D4C9 F0F0F7F0 YEIOWTOD YEMI0070 OK
01ED3030 wrong
0B000001 1228C000 wrong
On Fri, Mar 15, 2013 at 3:02 PM, Lizette Koehler <[email protected]>wrote:
I would like a little more detail.
1) Can you past the abend and registers?
2) What level of z/OS?
3) I assume all programs are assembler. If not, what are the languages
involved?
4) How are all of them linked? Rent, Reuse, etc...
5) Any LE calls involved? Like CEEPIPI or other interfaces?
6) Are you using 31bit or 64bit programming?
7) Pure batch or are there online (IMS, DB2, CICS, etc?) involved?
8) any additional information would be helpful.
Thanks
Lizette
-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On
Behalf
Of jan de decker
Sent: Friday, March 15, 2013 3:57 AM
To: [email protected]
Subject: Parameter list changes between calling and called program
Hi list,
I am struggling with a curious phenomenom:
Program YEMI0070 builds a parameter list for program YEXC0000 using macro
YEIOWTOD.
The last things YEIOWTOD does is to point register 1 to the parameter
list
and BALR
into YEXC0000.
This created ABEND's.
I dumped just before the BALR and the parameter list was OK.
I dumped at entry of YEXC0000 and the parameter list was corrupted.
Any, really any idea would be highly appreciated.
I will cross-post this to the assembler list.
Best regards,
jan
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send
email
to
[email protected] with the message: INFO IBM-MAIN
...
--
Joel C. Ewing, Bentonville, AR [email protected]
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN