Previous Topic: 4.3.2.2 Standard File and Accounting Exits

Next Topic: 4.4 SAS Functions and Call Routines

4.3.2.3 JCL Generation Output Exit (JCLEXIT)


The JCLEXIT facility enables you to tailor items produced by
the CA MICS JCLGEN process. The exit is used to make changes
that are not possible with the basic or extended JCLGEN
facilities.  Before writing a JCLGEN exit, you should:

    o Ensure that there is not an existing JCLGEN facility
      that can be used to accomplish the tailoring.

    o Discuss the design with the CA MICS Product Support
      Group before undertaking the actual work.

The JCLGEN process creates IEBUPDTE streams in temporary work
files that are used to update the CA MICS libraries. If the
generation has been successful, macro JCLUPDT is invoked to
process the IEBUPDTE stream and update the appropriate
CA MICS library. The user exit macro JCLEXIT is invoked by
the JCLUPDT macro.

To use the JCLEXIT facility during a complex-level generation
and all unit-level generations, code the JCLEXIT macro in
sharedprefix.MICS.SOURCE(#USRMAC).  If you want to invoke the
JCLEXIT macro for one specific unit database, code it in
prefix.MICS.USER.SOURCE(#USRMAC).

The macro to be coded is a SAS Macro Language direct exit of
the form:

    %MACRO JCLEXIT;

       /* user statements go here */

    %MEND JCLEXIT;

If present, the macro executes in-stream within the JCLUPDT
function.  It is placed so that it has an opportunity to
examine each record before it is added to the CA MICS data
set.  The following SAS variables are defined at the time the
exit receives control:

    &COMPLEX - A SAS macro variable that will have a value of
               COMPLEX if the JCL generation is being
               performed at the COMPLEX level and a null
               value if the JCL generation is being performed
               at the unit level.

    &GENLIST - A SAS macro variable that contains the name of
               the MICS.PARMS GENLIST member.

    LCLLIBMM - A 16-byte variable.  The first 8 bytes are the
               DDNAME of the library to be updated, the last
               8 bytes are the member being created.

    LCLLINE  - The 80-byte record about to be put into the
               member in the output library.

    WRKDDN   - The DDNAME of the library to be updated.

                 TCLIST   - sharedprefix.MICS.CLIST
                 TGENLIB  - sharedprefix.MICS.GENLIB
                 TMACAUTO - sharedprefix.MICS.MACAUTOS
                 TSOURCE  - sharedprefix.MICS.SOURCE
                 OUTUSOR  - prefix.MICS.USER.SOURCE
                 TCNTL    - sharedprefix/prefix.MICS.CNTL
                 TPARMS   - sharedprefix/prefix.MICS.PARMS

IMPORTANT NOTE:


The JCLUPDT function, which invokes the JCLEXIT macro, is
used by the JCLGEN process to update all libraries.  It is
IMPORTANT that the value of the variable WRKDDN be checked to
ensure that user updates only occur for the CNTL and CLIST
libraries.

The following sample JCLEXIT macro illustrates how you can
ensure that each generated JCL statement contains only
uppercase characters:

  %MACRO JCLEXIT;
    IF WRKDDN = 'TCNTL' THEN LCLLINE = UPCASE(LCLLINE);
  %MEND JCLEXIT;