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

IEFZB476 getting various 0C4 abends


IBM Mainframe Forums -> PL/I & Assembler
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Grant Goodale

New User


Joined: 13 Nov 2010
Posts: 67
Location: Brampton, Ontario, Canada

PostPosted: Sat Sep 12, 2015 9:27 pm
Reply with quote

I am trying to use IEFZB476 to display some messages coming from a failed SVC 99 invocations. I seem to be getting various 0C4 abends when I do this. Examples of actual IEFZB476 seem to be non-existent. I do have two questions about this interface:

(1) Is EMS99RBP the pointer to S99RBP or S99RB ?
(2) Does the caller have to supply the address of an area in EMBUFP when EMRETURN is active? If so, how big an area should be provided?

I have tried various searched and tests and I cannot find the answer.

Any assistance would be greatly appreciated.
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Sat Sep 12, 2015 10:51 pm
Reply with quote

Examples may be non existent, but information not :

www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.ieaa800/db476fn.htm
Back to top
View user's profile Send private message
Grant Goodale

New User


Joined: 13 Nov 2010
Posts: 67
Location: Brampton, Ontario, Canada

PostPosted: Sat Sep 12, 2015 11:27 pm
Reply with quote

Yes, I have been to those pages. It still leaves my questions unanswered.

Thanks
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Sun Sep 13, 2015 1:00 am
Reply with quote

I know I tried using it. Not that long ago, in fact. I don't know about Mr. Holland's link. It's documented in MVS Auth Assembler Services Guide. I hope you read it very carefully. I was trying to get more complete messages than "DAIRFAIL" puts out. I think I got the messages, but concluded the messages were hardly better than "DAIRFAIL's" messages and it wasn't worth the hassle of trying to use it. That's my impression, anyway, you might get better results than me.
  • I think EMS99RBP points to the S99RB, just like DFS99RBP
  • Return area size: I'd try the value in EMNMSGBK times EMLEN2
Sadly, my memory is hazy, and I think I discarded the attempt
Back to top
View user's profile Send private message
Grant Goodale

New User


Joined: 13 Nov 2010
Posts: 67
Location: Brampton, Ontario, Canada

PostPosted: Sun Sep 13, 2015 1:11 am
Reply with quote

Many thanks. That is the information that I was looking for. Strange that my Google searches did not turn up a reference to that manual.
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Sun Sep 13, 2015 10:06 am
Reply with quote

A Google on svc 99 should have pointed you there.
Back to top
View user's profile Send private message
Grant Goodale

New User


Joined: 13 Nov 2010
Posts: 67
Location: Brampton, Ontario, Canada

PostPosted: Sun Sep 13, 2015 5:21 pm
Reply with quote

I was Googling of IEFZB476 and various EM field names.

Thanks
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Tue Sep 15, 2015 11:16 am
Reply with quote

Well, this was a wasted effort -

DAIRFAIL --
IKJ56894I DATA SET XXXXXX.IEFZB476.OBJ NOT ALLOCATED+
IKJ56894I STORAGE MANAGEMENT SUBSYSTEM DETECTED AN ERROR, EITHER MESSAGES WERE NOT REQUESTED OR A SYSTEM ERROR OCCURRED
IEFZB476 --
IKJ56894I DATA SET XXXXXX.IEFZB476.OBJ NOT ALLOCATED+
IKJ56894I STORAGE MANAGEMENT SUBSYSTEM DETECTED AN ERROR, EITHER MESSAGES WERE NOT REQUESTED OR A SYSTEM ERROR OCCURRED

The allocation request was for an existing data set.

In terms of code -
Code:
         IEFZB476 EMDSEC1=YES,EMDSEC2=YES
EMDSECT1 DSECT
         ORG   ,
SIZE1    EQU   *-EMDSECT1
EMDSECT2 DSECT
SIZE2    EQU   *-EMDSECT2
...
         ST    2,(EMS99RBP-EMPARMS)+ZB476PRM
         ST    3,(EMRETCOD-EMPARMS)+ZB476PRM
         LA    0,ZB476BUF
         LA    1,5*SIZE2
         SR    15,15
         MVCL  0,14
         LINK  EP=IEFDB476,PARAM=ZB476PRM,VL=1
...
         DC    0D'0'
ZB476PRM DS    XL(SIZE1)
         ORG   ZB476PRM
         DC    AL1(EMRETURN)       EMFUNCT
         DC    AL1(EMSVC99)        EMIDNUM
         DC    AL1(MAXMSGS)        EMNMSGBK
         DC    AL1(0)              EMRSV01
         DC    A(*-*)              EMS99RBP
         DC    F'0'                EMRETCOD
         DC    A(0)                EMCPPLP
         DC    A(ZB476BUF)         EMBUFP
         ORG   ,
         DC    0D'0'
ZB476BUF DS    XL(5*SIZE2)
MAXMSGS  EQU   (*-ZB476BUF)/(EMBUF2-EMBUF1)
Reg 2 had the address of the S99RB, reg 3 the DYNALLOC return code. Note the LINK macro built a parameter list:

LINK EP=IEFDB476,MF=(E,ZB476PRM)

will just gen an S0C4 .
Back to top
View user's profile Send private message
Grant Goodale

New User


Joined: 13 Nov 2010
Posts: 67
Location: Brampton, Ontario, Canada

PostPosted: Tue Sep 15, 2015 5:07 pm
Reply with quote

I was using LOAD and BALR. Still got an 0C4. I looked at the control blocks in memory without IEFDB476 and did my message scanning directly.

Thanks.
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Tue Sep 15, 2015 5:55 pm
Reply with quote

Grant Goodale wrote:
I was using LOAD and BALR. Still got an 0C4. I looked at the control blocks in memory without IEFDB476 and did my message scanning directly.

Thanks.
You have to be AMODE 31 to do LOAD and BALR.
Code:
         LOAD  EP=IEFDB476
         LR    15,0
         CALL  (15),(ZB476PRM),VL
Back to top
View user's profile Send private message
Grant Goodale

New User


Joined: 13 Nov 2010
Posts: 67
Location: Brampton, Ontario, Canada

PostPosted: Tue Sep 15, 2015 6:02 pm
Reply with quote

I was running in 31 bit mode.
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Tue Sep 15, 2015 6:37 pm
Reply with quote

Did you do something like this?
Code:
         LOAD EP=IEFDB476
         LR   15,0
         CALL (15),MF=(E,ZB476PRM)
Look at the difference
Code:
*        CALL (15),MF=(E,ZB476PRM)
         LA   1,ZB476PRM
         BALR 14,15
and
Code:
*        CALL  (15),(ZB476PRM),VL
         CNOP  0,4
         BAL   1,*+8
         DC    A(ZB476PRM+X'80000000')
         BALR  14,15
I'm confident the first expansion expands as shown. I suspect the second expansion is similar, though not identical to what I show. Register 1 will point to the parameter list that points to the IEFZB476 data area.
Back to top
View user's profile Send private message
Grant Goodale

New User


Joined: 13 Nov 2010
Posts: 67
Location: Brampton, Ontario, Canada

PostPosted: Tue Sep 15, 2015 6:43 pm
Reply with quote

My code was:

Code:

LOAD  EP=IEFDB476             fetch the module
st    r0,DB476@               save the address
la    r3,WEMPARMS             -> parms       
...
lr    r1,r3                   -> parm list
l     r15,DB476@              -> IEFDB476
balr  r14,r15                 invoke it   
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Wed Sep 16, 2015 1:18 am
Reply with quote

Now that's annoying.

It appears if you do a DYNALLOC and then run DAIRFAIL followed by IEFDB476 against the same S99RB and S99RBX, DB476 fails. Similarly, run DB476 and DAIRFAIL, DAIRFAIL will fail.

Grant, I ran DB476 using LOAD and CALL, and it ran OK.

I changed EMFUNCT to EMRETURN+EMKEEP, and ran DB476 followed by DAIRFAIL, and DAIRFAIL ran OK.

In my first trial that worked, I ran DYNALLOC without an S99RBX. In these trials I've been running with an S99RBX. I'm getting these messages -

IEFZB476 --
IKJ56893I DATA SET XXXXXX.IEFZB476.OBJ NOT ALLOCATED+
IGD17101I DATA SET XXXXXX.IEFZB476.OBJ
NOT DEFINED BECAUSE DUPLICATE NAME EXISTS IN CATALOG
RETURN CODE IS 8 REASON CODE IS 38 IGG0CLEH
DAIRFAIL --
IKJ56893I DATA SET XXXXXX.IEFZB476.OBJ NOT ALLOCATED+
IGD17101I DATA SET XXXXXX.IEFZB476.OBJ

I do not regard the DAIRFAIL messages as satisfactory, but that's outside the scope of this forum. It seems DAIRFAIL is running IEFDB476 under the covers, and returning the first 2 messages. But I'm just guessing here.

Grant, this, too, is outside the scope of this forum. I can't do this as I am not employed by an official z/OS user, but ...

Someone should open a PMR against the IEFZB476 macro. The computation of EMLEN2 is flawed because only 255 bytes are defined between EMBUF2 and EMLEN2. I suggest 3 possible solutions:
  • Add a DS C just before EMLEN2
  • Add a DS 0H just before EMLEN2.
  • Change the definition of EMLEN2 to

    EMLEN2 EQU 2*(EMBUF2-EMBUF1)
Back to top
View user's profile Send private message
Grant Goodale

New User


Joined: 13 Nov 2010
Posts: 67
Location: Brampton, Ontario, Canada

PostPosted: Wed Sep 16, 2015 1:28 am
Reply with quote

I am not knowingly invoking DAIRFAIL. I will give the test another try with no S99RBX later this week. I will keep you posted.

Thanks for all your help.
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Wed Sep 16, 2015 6:15 am
Reply with quote

FWIW, my RBX was built like this -
Code:
         IEFZB4D0 ,
S99RBX   DSECT
         ORG   ,
S99RBXEND EQU  *
RBXSIZE  EQU   S99RBXEND-S99RBX
         ...
ARBX     DC    0XL(RBXSIZE)'0',CL6'S99RBX',AL1(S99RBXVR,S99ERMSG,0,0)
         DC    AL1(S99XINFO,0)
         DC    A(0),XL4'0',XL4'0'
         DC    XL(L'ARBX-(*-ARBX))'0'
I suspect the issue lies in your IEFZB476, though, of course it may be the RBX. MVS Auth Assembler Services Guide doesn't show this, but I was careful to insert the high order bit on in the word that points to the IEFSDF476 data area, your WEMPARMS.
Back to top
View user's profile Send private message
Grant Goodale

New User


Joined: 13 Nov 2010
Posts: 67
Location: Brampton, Ontario, Canada

PostPosted: Wed Sep 16, 2015 9:26 pm
Reply with quote

I now have it working and using an S99RBX. My 0C4 was caused by a dumb rookie move. On entry to IEFDB476, I had R1 pointing to EMPARMS rather than the address of EMPARMS. Your comment about setting the high order bit tipped me off to that.

Many thanks for all the help, it is much appreciated.
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Wed Sep 16, 2015 10:30 pm
Reply with quote

Grant Goodale wrote:
... My 0C4 was caused by a dumb rookie move. ...
I still make that "dumb rookie move" after 45 years, so don't feel too bad!
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 917
Location: The Universe

PostPosted: Thu Sep 17, 2015 8:58 pm
Reply with quote

steve-myers wrote:
I know I tried using it. Not that long ago, in fact. ... I was trying to get more complete messages than "DAIRFAIL" puts out. I think I got the messages, but concluded the messages were hardly better than "DAIRFAIL's" messages and it wasn't worth the hassle of trying to use it. ...
Actually, working on this thread, I now realize where I went wrong before: you have to provide an S99RBX, which I did not supply in my first attempt.
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 -> PL/I & Assembler

 


Similar Topics
Topic Forum Replies
No new posts Batch call online program, EXCI task ... CICS 3
No new posts Recovery Routine/Abend exit to releas... PL/I & Assembler 14
No new posts Abends using up address spaces? ABENDS & Debugging 6
No new posts EMPTY FILE - JOB ABENDS JCL & VSAM 4
No new posts all my abends seemed so far away. General Talk & Fun Stuff 11
Search our Forums:

Back to Top