(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