Oh, if only class was so easily acquired! Think of the people we could
improve...

(sorry)

On Fri, Mar 16, 2018 at 4:00 PM, Carmen Vitullo <[email protected]> wrote:

> ok, I didn't think you could intergedate the JCL, and modify the JCL
> within one exit. very nice !
>
>
>
> Carmen Vitullo
>
> ----- Original Message -----
>
> From: "Steely.Mark" <[email protected]>
> To: [email protected]
> Sent: Friday, March 16, 2018 2:53:39 PM
> Subject: Re: EXIT to control use of Class
>
> Here is the JES2 Exit 50 we used.
>
> If the ID is CA7ONL class U was forced.
>
> Thanks
>
> HASX50A TITLE 'USER EXIT 50 MODULE -- PROLOG (MODULE COMMENT BLOCK)'
> 00010000
> ***********************************************************************
> 00140000
> * * 00150000
> * MODULE NAME = HASX50A (HASX50A load module) * 00160000
> * * 00170000
> * DESCRIPTIVE NAME = JOB STATEMENT SCAN * 00180000
> * * 00190000
> * STATUS = OS/VS2 - SEE $MODULE EXPANSION BELOW FOR FMID, VERSION *
> 00200000
> * * 00210000
> * FUNCTION = * 00220000
> * * 00230000
> * * 00230000
> * * 00230000
> * * 00230000
> * * 00260000
> * * 00420000
> * REGISTER CONVENTIONS = SEE ENTRY POINT DOCUMENTATION * 00430000
> * * 00440000
> * PATCH LABEL = NONE * 00450000
> * * 00460000
> * MODULE TYPE = Procedure ( CSECT type ) * 00470000
> * * 00480000
> * PROCESSOR = IBM High Level Assembler/MVS 1.5.0 @Z07LASM 00490000
> * * 00500000
> * MODULE SIZE = SEE $MODEND MACRO EXPANSION AT END OF ASSEMBLY * 00510000
> * * 00520000
> * ATTRIBUTES = JES2 REENTRANT, RMODE ANY, AMODE 31 * 00530000
> * Supervisor state, protect key of JES2's (1) * 00540000
> * * 00550000
> * ENTRY POINT = EXIT50A * 00560000
> * * 00570000
> * PURPOSE = SEE FUNCTION * 00580000
> * * 00590000
> * LINKAGE = STANDARD MVS LINKAGE * 00600000
> * * 00610000
> * EXIT-NORMAL = RETURN TO CALLER (HASPRDR) * 00620000
> * * 00630000
> * EXIT-ERROR = NONE * 00640000
> * * 00650000
> * EXTERNAL REFERENCES = SEE BELOW * 00660000
> * * 00670000
> * ROUTINES = MISCELLANEOUS JES2 SERVICE ROUTINES * 00680000
> * * 00690000
> * DATA AREAS = SEE $MODULE MACRO EXPANSION * 00700000
> * * 00710000
> * CONTROL BLOCKS = SEE $MODULE MACRO EXPANSION * 00720000
> * * 00730000
> * TABLES = SEE $MODULE MACRO DEFINITION (BELOW) * 00740000
> * * 00750000
> * MACROS = JES2 - $DOGBERT, $ENTRY, $JCTXGET, $MODEND, $MODULE, * 00760000
> * $RETURN * 00770000
> * * 00780000
> * MACROS = MVS - none * 00790000
> * * 00800000
> * CHANGE ACTIVITY: * 00810000
> * * 00820000
> * $Z07LASM=NJETCP HJE7720 050203 CLW: HLASM 5.0 support * 00830000
> * * 00840000
> * A000000-999999 CREATED FOR JES2 z/OS 1.7 @Z07LTCP 00850000
> ***********************************************************************
> 00860000
> TITLE 'USER EXIT 50 MODULE -- PROLOG ($HASPGBL)' 00870000
> COPY $HASPGBL COPY HASP GLOBALS 00880000
> TITLE 'USER EXIT 50 MODULE -- PROLOG ($MODULE)' 00890000
> ************************************************************** 00900000
> * Note that the environment for this module is * 00910000
> * (USER,ANY). All routines compiled in this * 00920000
> * environment require R11 to be the HCCT address, * 00930000
> * and will use main task $SAVE/$RETURN services * 00940000
> * when invoked from the main task, and special * 00950000
> * USER environment $SAVE/RETURN services in other * 00960000
> * run-time environments. * 00970000
> * * 00980000
> * This allows (with special code in $EXIT 20) the * 00990000
> * same routine to be shared by both $EXIT 20 and * 01000000
> * $EXIT 50. Note that while many services require * 01010000
> * different linkage and parameters in different * 01020000
> * run-time environments, this exit uses none of * 01030000
> * those services. See HASX55A for an example of * 01040000
> * how to implement environment-dependent services * 01050000
> * from this type of exit. * 01060000
> ************************************************************** 01070000
> EJECT , 01080000
> HASX50A $MODULE ENVIRON=(USER,ANY), C01090000
> RMODE=ANY, C01100000
> IBMJES2=SAMPLE, C01110000
> TITLE='USER EXIT 50 MODULE', C01120000
> $BERT, Generate HASP BERT DSECT C01130000
> $BERTTAB, Generate HASP BERTTAB DSECT C01140000
> $BUFFER, GENERATE HASP BUFFER DSECT C01150000
> $CADDR, GENERATE HASP CADDR DSECT C01160000
> $CATBERT, Generate HASP CATBERT DSECT C01170000
> $HASPEQU, GENERATE HASP EQU DSECT C01180000
> $HCCT, Generate HASP HCCT DSECT C01190000
> $HCT, GENERATE HASP HCT DSECT C01200000
> $JCT, GENERATE HASP JCT DSECT C01210000
> $JCTX, Generate HASP JCTX DSECT C01220000
> $JQE, Generate HASP JQE DSECT C01230000
> $MIT, GENERATE HASP MIT DSECT C01240000
> $MITETBL, Generate HASP MTE dsect C01250000
> $PADDR, GENERATE HASP PADDR DSECT C01260000
> $PARMLST, GENERATE HASP PADDR DSECT C01270000
> $PCE, GENERATE HASP PCE DSECT C01280000
> $PSV, GENERATE HASP PSV DSECT C01290000
> $TRE, Generate HASP TRE DSECT C01300000
> $USERCBS, GENERATE HASP USERCBDS DSECT C01310000
> $XECB, GENERATE HASP XECB DSECT C01320000
> $XIT, Generate HASP XIT DSECT C01330000
> $XPL Generate HASP XPL DSECT 01340000
> TITLE 'USER EXIT 50 MODULE -- JOB STATEMENT SCAN' 01350000
> ***********************************************************************
> 01360000
> * * 01370000
> * EXIT50 - INSTALLATION EXIT 50 ROUTINE * 01380000
> * * 01390000
> * FUNCTION: * 01400000
> * * 01410000
> * * 01420000
> * * 01450000
> * LINKAGE: * 01460000
> * * 01470000
> * * 01490000
> * ENVIRONMENT: * 01500000
> * * 01510000
> * JES2 maintask or user environment * 01520000
> * * 01530000
> * RECOVERY: * 01540000
> * * 01550000
> * None * 01560000
> * * 01570000
> * REGISTER USAGE: * 01580000
> * * 01590000
> * INPUT R0 = 0 - X050GJOB - Normal Job * 01600000
> * 4 - X050JECL - JECL error * 01610000
> * 8 - X050BSAF - SAF failure * 01620000
> * 12 - X050WSEL - Work selection mismatch * 01630000
> * * 01640000
> * R1 = Address of $XPL * 01650000
> * * 01660000
> * R2-R9 = n/a * 01670000
> * R10 = address of JCT * 01680000
> * R11 = address of HCCT * 01690000
> * R12 = n/a * 01700000
> * R13 = address of save area * 01710000
> * R14 = return address * 01720000
> * R15 = Address of entry point * 01730000
> * * 01740000
> * OUTPUT R15 = Return code * 01750000
> * (All others unchanged) * 01760000
> * * 01770000
> * * 01780000
> * REGISTER USAGE (INTERNAL): R0-R9 = Work registers * 01790000
> * R10 = Address of the JCT * 01800000
> * R11 = Address of the HCCT * 01810000
> * R12 = Local addressability * 01820000
> * R13 = Address of save area * 01830000
> * R14-R15 = Work and linkage registers * 01840000
> * * 01850000
> * RETURN CODES (R15 ON EXIT): * 01860000
> * * 01870000
> * 0 - Tells JES2 that if there are any other routines * 01880000
> * associated with this exit, call the next exit. * 01890000
> * If there are no other routines, continue with * 01900000
> * normal HASPRDR processing. * 01910000
> * * 01920000
> * 4 - Tells JES2 to ignore any additional exits associated * 01930000
> * with this exit and continue with normal HASPRDR * 01940000
> * processing. * 01950000
> * * 01960000
> * 8 - Tells JES2 to cancel the job; any output (the JCL * 01970000
> * image listing) is produced. * 01980000
> * * 01990000
> * 12 - Tells JES2 to purge job; no output is produced. * 02000000
> * * 02010000
> * * 02020000
> * OPERATION: * 02030000
> * * 02040000
> * The following commands should be issued during * 02050000
> * initialization to load and enable this exit and to * 02060000
> * define the exit entry points. * 02070000
> * * 02080000
> * LOADMOD(HASX50A) STORAGE=CSA * 02150000
> * EXIT(50) ROUTINES=(EXIT50A),STATUS=ENABLED * 02160000
> * * 02250000
> ***********************************************************************
> 02260000
> EJECT 02270000
> ***********************************************************************
> 02280000
> * * 02290000
> * THIS EXIT50 ROUTINE WILL BE ENTERED FOR FOR JOBS FROM THE * 02300000
> * FOLLOWING SOURCES: * 02310000
> * * 02320000
> * - TSO LOGONS * 02330000
> * - STARTED TASKS * 02340000
> * - INTERNAL READERS ALLOCATED TO BATCH JOBS * 02350000
> * - INTERNAL READERS ALLOCATED TO STARTED TASKS * 02360000
> * - INTERNAL READERS ALLOCATED TO TSO USER (TSO SUBMIT) * 02370000
> * - NJE JOB RECEIVERS (TCP/IP) * 02380000
> * * 02390000
> * IN ADDITION, THIS ROUTINE WILL BE CALLED FROM HASX20A IN * 02400000
> * THE JES2 MAIN TASK FOR JOBS FROM THE FOLLOWING SOURCES * 02410000
> * (VIA ITS INVOCATION OF $EXIT 50 IN THE CORRECT ENVIRONMENT): * 02420000
> * * 02430000
> * - LOCAL CARD READER * 02440000
> * - REMOTE (RJE) CARD READER * 02450000
> * - NJE JOB RECEIVERS (SNA AND BSC) * 02460000
> * - SPOOL OFFLOAD JOB RECEIVERS * 02470000
> * - EXECUTION BATCH MONITOR (XBM) JOBLET * 02480000
> * * 02490000
> ***********************************************************************
> 02500000
> SPACE 1 02510000
> * USING JQA,R6 JQE addressability 02520000
> USING XPL,R8 XPL addressability 02530000
> USING JCT,R10 JCT addressability 02540000
> SPACE 1 02550000
> EXIT50A $ENTRY BASE=R12,SAVE=YES PROVIDE EXIT ROUTINE ENTRY POINT 02560000
> LR R8,R1 Copy XPL address 02570000
> ICM R10,B'1111',X050JCT Get JCT address 02580000
> JZ EXIT50RT Just return if none 02590000
> * ICM R6,B'1111',X050JQE Get JQA address 02600000
> * JZ EXIT50RT Just return if none 02610000
> *------------------------------------------------------------* 02620000
> * Note that both $EXIT 20 and $EXIT 50 are passed * 02630000
> * a JQA that can be updated in the exit, therefore * 02640000
> * no $DOGJQE call is necessary in the main task. * 02650000
> *------------------------------------------------------------* 02660000
> EJECT 02670000
> ************************************************************** 02680000
> * * 02690000
> * * 02700000
> * * 02720000
> ************************************************************** 02730000
> SPACE 1 02740000
> CLC JCTJUSID,CA7USER Is this the CA-7 userid?
> JNE EXIT50RT No, just return
> MVI JCTMCLAS,C'U' Yes, force MSGCLASS=U
> SPACE 1
> ************************************************************** 03370000
> * * 03380000
> * Return * 03390000
> * * 03400000
> ************************************************************** 03410000
> SPACE 1 03420000
> EXIT50RT $RETURN , Return to JES2 03430000
> SPACE 1 03440000
> DROP R12,R10,R8 03450000
> SPACE 1 03460000
> CA7USER DC CL8'CA7ONL ' CA-7 UseridCA-7 userid?
> SPACE 1
> LTORG PLACE LITERALS HERE 03470000
> EJECT , 03480000
> TITLE 'USER EXIT 50 MODULE -- EPILOG ($MODEND)' 99990000
> $MODEND 99991000
> APARNUM DC CL8'NONE' APAR NUMBER 99999997
> PTFNUM DC CL8'NONE' PTF NUMBER 99999998
> END , END OF HASX50A 99999999
>
>
> Thanks
>
> -----Original Message-----
> From: IBM Mainframe Discussion List [mailto:[email protected]] On
> Behalf Of Peter
> Sent: Friday, March 16, 2018 12:40 PM
> To: [email protected]
> Subject: EXIT to control use of Class
>
> Hi
>
> Is there an EXIT which can assign CLASS to the users based on RACF ID ?
> For example even if a user tries to use CLASS C the user Job must run only
> using CLASS A.
>
> This is for our training LPAR and I would like to implement this feature.
>
> We are at zOS1.13
>
> Regards
> Peter
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions, send email
> to [email protected] with the message: INFO IBM-MAIN
>
> *** Disclaimer ***
> This communication (including all attachments) is solely for the use of
> the person to whom it is addressed and is a confidential AAA communication.
> If you are not the intended recipient, any use, distribution, printing, or
> copying is prohibited. If you received this email in error, please
> immediately delete it and notify the sender.
>
> ----------------------------------------------------------------------
> 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
>



-- 
zMan -- "I've got a mainframe and I'm not afraid to use it"

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to