(re-posting with a little more code)... mz

On Tue, 1 Feb 2011 11:52:38 +0100, Manfred Lotz
<manfred.l...@googlemail.com> wrote:

>Hi there,
>I have an existing JES2 exit06 and like to restrict time based on jobclass.
>
>Let us say I have a job class z where the maximum allowed time is 9
>minutes. I check for time= in job card and if the time parameter is
>set, and has anything greater than 9 minutes I would like to limit the
>job to 9 minutes as this is the policy for that particular job class.
>
>What is the correct field to set to get this done? I found JCTETIME in
>the JCT but I'm actually not quite sure if this is the one to use.
>

I did it in exit 6 in the past (you probably have seen posts of mine if
you checked the archives).  

When I wrote this exit, we only cared if people were using TIME=
with class "Q", which was an express class with 3 seconds of CPU 
time max.  There were always enough class Q inits since they were
for quick compiles, iebgener jobs, etc.     So I checked for time= 
and set a flag, then did a second check after all JCL was converted
to see if the jobclass was Q and time= was used.  If so, I set RC=8 
and canceled the job.   I also used the same exit to make RACF calls
to JOBCLASS.x in a locally defined RACF class to see if the user
was allowed to run in that class (keep test jobs out of production
classes). 

Here is a snippet of code which shows the internal text keys I 
checked (this was under MVS/XA, but this stuff hasn't changed):

***********************************************************************
*        THE TEXT OF THE EXEC CARD TEXT IS AS FOLLOWS                 *
*            1)  2 BYTE LENGTH OF TEXT STRING INCLUDING ITSELF        *
*            2)  1 BYTE INDICATOR COMMON TO ALL TEXT RECORDS          *
*            3)  1 BYTE OF MISCELLANEOUS INDICATORS                   *
*            4)  1 BYTE INDICATOR X'94' INDICATING EXEC POS INFORMATN *
*            5)  1 BYTE NUMBER OF EXEC POSITIONAL PARAMETERS          *
*                THE 1ST POS PARAMETER IS THE STEP NAME               *
*            6)  VARIABLE LENGTH LIST OF EXEC POS PARAMETERS          *
*                EACH PRECEDED BY A 1 BYTE LENGTH FIELD               *
*            7)  VARIABLE LENGTH LIST OF KEYWORD PARAMETERS           *
*                EACH IS PRECEDED BY A 1 BYTE KEY, 1 BYTE NUMBER OF   *
*                POSITIONAL SUBPARAMETERS PRESENT, AND A LIST OF      *
*                SUBPARAMETERS EACH PRECEDED BY A 1 BYTE LENGTH FIELD *
*                WHICH MAY BE ZERO IF OMITTED AND FOLLOWED BY ANOTHER *
*                POSITIONAL PARAMETER.                                *
*                                                                     *
*  MVS C/I TEXT FORMATS CAN BE FOUND IN :                             *
*  MVS/XA SPL USER EXITS APPENDIX A (GC28-1147-3 - TNL GN28-1201)     *
*                                                                     *
***********************************************************************
         LA    R2,STREKEY         POINT PAST EXEC TEXT STRING PREFIX   
         ST    R2,TEXTADDR        STORE START OF EXEC TEXT STRING      
*********************************************************************  
* CHECK EXEC STATMENT FOR USAGE OF TIME PARAMETERS                     
*********************************************************************  
CHKEXEC  CLI   0(R2),ENDK         END OF INTERNAL TEXT IMAGE?          
         BE    RETURN0            YES, DONE WITH THIS TEXT,  GET OUT   
         CLI   0(R2),TIMEEEK      EXEC "TIME=" KEY (X'93')             
         BNE   CHKTIME2           NO, BRANCH FOR SECOND CHECK          
         CLC   3(4,R2),=C'0000'   CHECK FOR STEP DEFAULT               
         BNE   NOTDEFLT              TIME=(0000,03) FROM               
         CLC   8(2,R2),=C'03'           JES2 PARMS JOBCLASS(Q)         
         BE    RETURN0            TIME OK, DONE WITH THIS TEXT-GET OUT 
NOTDEFLT MVI   TIMEFLAG,C'Y'      CHG TIME USAGE FLAG IN WKAREA TO 'Y' 
         B     RETURN0            DONE WITH THIS TEXT, GET OUT         
CHKTIME2 CLI   0(R2),TIMEPEK      EXEC "TIME." JCLOVRD KEY (X'8F')     
         BNE   EXLOOP             NO, GO FIND TO NEXT KEYWORD          
         MVI   TIMEFLAG,C'Y'      CHG TIME USAGE FLAG IN WKAREA TO 'Y' 
         B     RETURN0            DONE WITH THIS TEXT, GET OUT         
***********************************************************************
*        THIS ROUTINE WILL INCREMENT PAST THE STRING(S) BEING         *
*        PROCESSED.  NOTE THAT FOLLOWING THE KEYWORD DESCRIPTOR       *
*        FIELD IS A COUNT OF SUBPARAMETERS.  FOLLOWING THE COUNT      *
*        WILL BE A LENGTH OR DESCRIPTOR FIELD.  IF THE HIGH ORDER     *
*        BIT IS ON, THE FIELD IS A COUNT FIELD OF THE NUMBER OF       *
*        SUBPARAMETERS WHICH THE SUBPARAMETER ITSELF MAY HAVE.        *
*        IF THIS IS TRUE, THE DESCRIPTOR FIELD WILL BE FOLLOWED BY    *
*        A LENGTH FIELD FOR THE FIRST SUBPARAMETER.  IF THE HIGH      *
*        ORDER BIT IS NOT ON, IT IS ONLY A LENGTH FIELD FOR A         *
*        SINGLE SUBPARAMETER.                                         *
***********************************************************************
EXLOOP   L     R2,TEXTADDR        RESTORE START OF EXEC TEXT STRING    
         SLR   R3,R3              CLEAR WORK REG FOR ICM               
         LA    R2,1(,R2)          INCREMENT PAST KEYWORD               
         ICM   R3,1,0(R2)         LOAD SUBPARAMETER COUNT              
         BNZ   EXLOOP1            SUBPARMS EXIST - BRANCH INTO ROUTINE 
         LA    R2,1(,R2)          NO PARMS, INCREMENT PAST COUNT       
         B     EXLOOP5            AND GET OUT OF ROUTINE               
EXLOOP1  LA    R2,1(,R2)          INCREMENT PAST KEYWORD               
EXLOOP2  SLR   R4,R4              CLEAR WORK REG FOR ICM               
         ICM   R4,1,0(R2)         LOAD PARAMETER LENGTH                
         BNM   EXLOOP3            HIGH BIT NOT ON, ONLY 1 PARAMETER    
         N     R4,=F'127'         'AND' OUT THE HIGH ORDER BIT         
         LA    R2,1(,R2)          INCREMENT PAST CONTROL BYTE          
         B     EXLOOP4            BRANCH                               
EXLOOP3  LA    R4,1               SET PARAM COUNT TO 1                 
EXLOOP4  SLR   R5,R5              CLEAR WORK REG FOR ICM               
         ICM   R5,1,0(R2)         LOAD PARAMETER LENGTH                
         LA    R2,1(R5,R2)        INCREMENT PAST PARM                  
         BCT   R4,EXLOOP4         LOOP UNTIL PROCESSED ALL PARMS       
         BCT   R3,EXLOOP2         LOOP UNTIL PROCESSED ALL PARMS       
EXLOOP5  ST    R2,TEXTADDR        SAVE START OF PARAMETER ADDRESS      
         B     CHKEXEC            CONTINUE - GO CHECK TEXT KEY         


--
Mark Zelden - Zelden Consulting Services - z/OS, OS/390 and MVS       
mailto:mzel...@flash.net                                          
Mark's MVS Utilities: http://home.flash.net/~mzelden/mvsutil.html 
Systems Programming expert at http://expertanswercenter.techtarget.com/

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to