View previous topic :: View next topic
|
Author |
Message |
Grant Goodale
New User
Joined: 13 Nov 2010 Posts: 67 Location: Brampton, Ontario, Canada
|
|
|
|
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 |
|
|
PeterHolland
Global Moderator
Joined: 27 Oct 2009 Posts: 2481 Location: Netherlands, Amstelveen
|
|
Back to top |
|
|
Grant Goodale
New User
Joined: 13 Nov 2010 Posts: 67 Location: Brampton, Ontario, Canada
|
|
|
|
Yes, I have been to those pages. It still leaves my questions unanswered.
Thanks |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
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 |
|
|
Grant Goodale
New User
Joined: 13 Nov 2010 Posts: 67 Location: Brampton, Ontario, Canada
|
|
|
|
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 |
|
|
PeterHolland
Global Moderator
Joined: 27 Oct 2009 Posts: 2481 Location: Netherlands, Amstelveen
|
|
|
|
A Google on svc 99 should have pointed you there. |
|
Back to top |
|
|
Grant Goodale
New User
Joined: 13 Nov 2010 Posts: 67 Location: Brampton, Ontario, Canada
|
|
|
|
I was Googling of IEFZB476 and various EM field names.
Thanks |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
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 |
|
|
Grant Goodale
New User
Joined: 13 Nov 2010 Posts: 67 Location: Brampton, Ontario, Canada
|
|
|
|
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 |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
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 |
|
|
Grant Goodale
New User
Joined: 13 Nov 2010 Posts: 67 Location: Brampton, Ontario, Canada
|
|
|
|
I was running in 31 bit mode. |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
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 |
|
|
Grant Goodale
New User
Joined: 13 Nov 2010 Posts: 67 Location: Brampton, Ontario, Canada
|
|
|
|
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 |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
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 |
|
|
Grant Goodale
New User
Joined: 13 Nov 2010 Posts: 67 Location: Brampton, Ontario, Canada
|
|
|
|
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 |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
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 |
|
|
Grant Goodale
New User
Joined: 13 Nov 2010 Posts: 67 Location: Brampton, Ontario, Canada
|
|
|
|
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 |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
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 |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
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 |
|
|
|