Just to clarify, in the first sentence when I said "SRB's can ..." I mean "SRB routines can ..." =============================================== Wayne Driscoll OMEGAMON DB2 L3 Support/Development wdrisco(AT)us.ibm.com ===============================================
From: Wayne Driscoll/Chicago/IBM@IBMUS To: [email protected], Date: 11/15/2012 03:47 PM Subject: Re: [IBM-MAIN] SRB Again Sent by: IBM Mainframe Discussion List <[email protected]> Donald, First, SRB's can and do reside in the private area, and can freely access storage in the private area, or in a dataspace (subject to access list requirements of course). Second, when you specify SYNCH=YES on the IEAMSCHD, the system will handle the synchronization process between the scheduling TCB and the SRB, your application doesn't have to issue an WAIT or POST calls for this. As for you environment at the time of abend, try issuing IP STATUS FAILDATA it should show the PSW and register related data at the time of error. Good Luck =============================================== Wayne Driscoll OMEGAMON DB2 L3 Support/Development wdrisco(AT)us.ibm.com =============================================== From: Donald Likens <[email protected]> To: [email protected], Date: 11/15/2012 07:54 AM Subject: [IBM-MAIN] SRB Again Sent by: IBM Mainframe Discussion List <[email protected]> What I don't understand fills volumes and when I think I understand something I am often wrong. One of the things I don't understand is SRBs. I know this because what I am doing is not working! Note: When I use the option to turn off SRB processing and call (BALR) the SRB routine, instead of scheduling it, it works great. I schedule my SRB with the following macro: IEAMSCHD EPADDR=SRBRTN,PRIORITY=ENCLAVE,ENCLAVETOKEN=WKETKN, X PARM=ISELPARM,SYNCH=YES, X PURGESTOKEN=WKTKN,PTCBADDR=WKTOLD, (SAME AS PSATOLD) X SYNCHCOMPADDR=ISELCOMP,SYNCHCODEADDR=ISELCODE, X SYNCHRSNADDR=ISELRSN In all my reading SRBs are work that runs in parallel to the scheduling program but the SYNCH documentation states: SYNCH=YES The SRB is to be scheduled and synchronized with the caller’s work unit; the caller’s work unit is suspended until the SRB completes, is purged, or ends abnormally. My interpretation of SYNCH=YES is that the scheduling program waits for the SRB to complete. It my reading it also says that I need to use wait and post. I reason that wait and post is an alternate way to do what SYNCH does. My SRB terminates by branching to register 14. When it terminates I expect my code to resume. Correct? I read somewhere that storage reference by an SRB had to be in common storage. I reasoned that storage referenced by the SRB had to be in common storage if the SRB runs in another address space. The parm I pass points to storage in my address space, I believe this should work because this SRB runs in my address space (ENV=HOME). Am I correct? I also read that storage obtained by an SRB had to be in SQA. The Authorized Assembler Services Guide does not say this, so I do not believe it. Am I correct? When I first started testing everything looked great. My jobs were scheduling the SRB and running to completion. But as it turned out the SRB was abending and disappearing so I added the following options: PURGESTOKEN=WKTKN,PTCBADDR=WKTOLD, (SAME AS PSATOLD) X SYNCHCOMPADDR=ISELCOMP,SYNCHCODEADDR=ISELCODE, X SYNCHRSNADDR=ISELRSN Now when my SRB fails I know it because I display a message like the following: SRB SCHEDULING RC=28 COMP=08 CODE=000C4000 I am not sure why but I still did not get a dump (I thought the task recovery routines would create a dump but they didn’t) so I added the following code to my SRB: SETFRR A,FRRAD=FRRA,EUT=YES,MODE=FULLXM,WRKREGS=(R1,R2) FRR DS 0H USING FRR,R15 ST R14,FRRSAVE LR R3,R15 DROP R15 LR R4,R1 *C TAKE A DUMP USING FRR,R3 SDUMPX HDR='SRB ERROR',BRANCH=YES, SDATA=(NOSQA,RGN,CSA) *C RETURN TO FRRRETRY L R2,FRRRETRY SETRP RC=4,REMREC=YES,RETREGS=YES,FRESDWA=YES, DUMP=YES,WKAREA=(R4),RETADDR=(R2) L R14,FRRSAVE BR R14 Now I get a dump but I don’t know how to read it. I do not see any RMT2 information or any control blocks that give me the registers and PSW at the time of error. I looked in the Diagnostic reference manual but I did not see what I needed. Can anyone direct me to the proper documentation or at least tell me where to look in the dump for the registers and PSW at time of error in a SRB? ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
