Try specifying "DCBE=*-*" on the static DCB and "EODAD=*-*" on the
static DCBE.

-----Original Message-----
From: IBM Mainframe Assembler List
[mailto:[email protected]] On Behalf Of Farley, Peter
x23353
Sent: Thursday, October 14, 2010 12:25 PM
To: [email protected]
Subject: EODAD ignored in DCBE for QSAM input file?

Hi All,

I'm not sure if this is the right forum for this question, but I thought
I'd try here first anyway.  I'm not sure what I'm doing wrong, but I'm
sure I am.  Any help you can provide is appreciated.

I have an assembler I/O module in which I create a QSAM DCB and DCBE in
dynamically obtained 24-bit storage and populate them appropriately from
static versions.  I then link the DCBE to the DCB (stored the DCBE
address into the first word of the DCB) and store an above-the-line
(31-bit) dynamic EODAD address into the DCBE at offset X'28'.  All this
is done with labels from the DCBD and IHADCBE macros, not hard-coded
offsets.

The static DCB used to initialize the dynamic DCB specifies only
DSORG=PS,DEVD=DA,MACRF=GL,DDNAME=########.  The static DCBE specifies
only RMODE31=BUFF.

I am able to open the DCB and GET records (record addresses, actually)
successfully, but when I reach EOF on the file (e.g., on the 5th GET for
a 4-record file) the EODAD is never taken, instead I get an S337 abend
as if I had never populated the DCBE EODAD field.  I have used zXDC to
verify that the EODAD address is never executed by placing a breakpoint
at the EODAD address.  The breakpoint at EODAD is never tripped.

Examining the dynamic DCB and DCBE in storage before and after the
abend, I see that the DCBE EODAD address has the proper address for the
routine I want to execute, and that the DCB EODAD address (3 bytes) has
a value of X'000001'.

I have done as much RTFM as I can find in the "Using Datasets" and
"Macro Instructions for Datasets" manuals and it is all consistent: The
DCBE EODAD address is supposed to override any address specified in the
DCB EODAD address.

So, what am I doing wrong here?  Do I need to specify the DCBEODAD
address as zero to make the DCBE EODAD address get used?

Any and all help, RTFM pointers, etc. are welcome.

Peter
--



This message and any attachments are intended only for the use of the
addressee and
may contain information that is privileged and confidential. If the
reader of the
message is not the intended recipient or an authorized representative of
the
intended recipient, you are hereby notified that any dissemination of
this
communication is strictly prohibited. If you have received this
communication in
error, please notify us immediately by e-mail and delete the message and
any
attachments from your system.



This e-mail transmission contains information that is confidential and may be 
privileged.   It is intended only for the addressee(s) named above. If you 
receive this e-mail in error, please do not read, copy or disseminate it in any 
manner. If you are not the intended recipient, any disclosure, copying, 
distribution or use of the contents of this information is prohibited. Please 
reply to the message immediately by informing the sender that the message was 
misdirected. After replying, please erase it from your computer system. Your 
assistance in correcting this error is appreciated.

Reply via email to