Jon 

Kudos to you even Peter Relson wasn’t sure if this correct   

-----Original Message-----
From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of Jon 
Perryman
Sent: Wednesday, September 27, 2023 10:00 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: SCHEDIRB

On Tue, 19 Sep 2023 20:29:52 -0400, Joseph Reichman <reichman...@gmail.com> 
wrote:

> Source code below.

Sorry for chiming in so late but I've had other priorities. I think you're 
being led down the wrong path. A 30 second glance at your code shows obvious 
coding errors. SRB and IRB are the the real danger. Running key 0 and sup makes 
you the destroyer of worlds. Always make this code obvious. 

1. Labels IRBPTR and STIMER are not preceded by a "DROP ,". As exit routines, 
prior USINGs are not guaranteed. They may be using a bad reg.

2. IRBLST and TIMERLST are in a DSECT that is not obvious they have been 
initialized correctly. It's not obvious that generated eye catchers and default 
values were copied or if the area was simply zeroed.

3. Use "save (R14,R12),'exit eyecatcher' will simplify debugging when looking 
at a dump for the PSW address.

4. I believe that LOAD will abend if the module is not linked with the AC=1 
attribute when running authorized.

5. TSO does SVC screening to protect itself from SUP and non-KEY8 security 
exposures. Does TSO allow an unknown LOAD from the job step TCB.

6. Is there a reason you haven't tried IDENTIFY for the module? I've never 
tested this situation but I suspect it increments the use count to ensure the 
alternate name remains available when the TCB goes away.

7. Another possibility is STORAGE OBTAIN and LOAD to the obtained area.

8. If you need to refresh the module, using LOAD from the IKJEFT01 TCB will 
require logoff / logon or the implementation of another IRB to refresh the LOAD 
module.

I suspect there are other problems. With so many possible problems, you need to 
get familiar with IPCS because analyzing the dump would tell you quickly where 
and what abended. Since you don't have XDC, you may find IPCS useful when 
looking at the active system with the SAF BLSACTV resource permitted because 
you can view all address spaces. Alternatively, insert WTO's in you code to see 
where you are failing.


>
>         STIMERM SET,                                                  X
>               ID=TIMER,                                               X
>               BINTVL=NOW,                                             X
>               ERRET=ERROR,                                            X
>               EXIT=STIMER,                                            X
>               PARM=TIMER_PLIST,                                       X
>               WAIT=NO,MF=(E,TIMERLST)                                    
>
>
>STIMER   DS   0D                                                        
>          STM  R14,R12,12(R13)                                           
> *                                                                       
>          LR    R4,R15                                                   
>          DROP  R3                                                       
>          USING STIMER,R4                                                
>          LR    R10,R13                                                  
>          L     R13,4(,R1)                Get Save area                  
>          DROP  R13                                                      
>          USING TIMERSVE,R13                                             
>          ST    R10,4(R13)                                               
> *                                                                       
>          SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,REGS=SAVE                
> *                                                                       
> *                                                                       
> *  Chain rb pointer to put this IRB as next                             
> * 
>          LA    R5,IRBPTR                                                
>          O     R5,=X'80000000'                                          
>          ST    R5,IRBADD                                                
>          L     R6,PSATOLD                                               
>          USING TCB,R6                                                   
>          L     R6,TCBJSTCB                   Get the Job Step tcb       
>          ST    R6,JSTCB                                                 
>          SCHEDIRB EPPTR=IRBADD,                                        X
>                TCBPTR=JSTCB,                                           X
>                SVAREA=YES,                                             X
>                MODE=SUPR,                                              X
>                KEY=SUPR,                                               X
>                PARAMPTR=PLIST,                                         X
>                MF=(E,IRBLST)                                            
>          SETLOCK RELEASE,TYPE=LOCAL,REGS=SAVE                           
> *                                                                       
> *                                                                       
>          L    R13,4(,R13)                                               
>          XR   R15,R14  
>          L    R14,12(R13)                                               
>          LM   R0,R12,20(R13)                                            
>          BR   R14                                                       
>          DROP  R13                                                      
>          USING WORKAREA,R13                                             
>          DROP  R4                                                       
> IRBPTR   DS    0D                                                       
> *                                                                       
>          STM  R14,R12,12(R13)                                           
>          LR    R5,R15                                                   
>          USING IRBPTR,R5                                                
>          LR    R10,R1                        Save Plist pointer         
>          LOAD  EP=GETVECT                                               
>          ST    R0,0(R10)                     Store Pointer              
>          XR    R15,R15                                                  
>          L     R14,12(R13)                                              
>          LM    R0,R12,20(R13)                                           
>          BR    R14                                                      
>          DROP  R5
>
>
> WORKAREA DSECT                                                          
> SAVEAREA DS 18F                                                         
> TIMERSVE DS 18F                                                         
>          DS 0D                                                          
> TIMER    DS    F                                                        
> PARMPTR  DS    A                                                        
> FADDR    DS    A                                                        
> DEPARM   DESERV MF=L                                                    
> CSVLMPEA DS    CL(LPMEA_LEN)                                            
> DELEN    EQU   *-DEPARM                                                 
>          SCHEDIRB MF=(L,IRBLST)                                         
>          CSVQUERY MF=(L,CSVQUERY)                                       
> TIMERLST STIMERM SET,MF=L                                               
> PLIST    DS    0A                                                       
>          DS    A                                                        
> TIMER_PLIST DS  A                                                       
> DESPTR   DS    A                                                        
> IRBADD   DS    A
>JSTCB    DS    A                                                         

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
lists...@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to