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

Reply via email to