User Exit Interface Block (mfjdxit.cpy)

This section presents a listing of the mfjdxit.cpy copybook used by JXIT. The source for this copybook is in %ProgramFiles(x86)%\Micro Focus\Enterprise Developer\cpylib (Windows) or $COBDIR/cpylib (UNIX).

      *===============================================================
      *   Copyright (C) 1997-2017 Micro Focus.
      *   All rights reserved.
      *===============================================================
      *
      *  MFJDXIT - JCL User Exit Control Block
      *    Contains interface information and is passed as a parameter
      *    to the JCL user exit (MFJUXIT) which is invoked as
      *       call  'MFJUXIT' using JXIT
      *
      *  Notes:
      *    1. It should be included as follows (e.g.)
      *         1 JXIT.
      *         COPY MFJDXIT REPLACING ==(tag)== BY ==JXIT==.
      *    2. Fields beginning with JXIT-I- ( (tag)-I- ) are Input
      *       to the user exit and must not be modified
      *       e.g. JXIT-I-size
      *    3. Fields beginning with JXIT-U- ( (tag)-U- ) are Input and
      *       Output. On entry to the user exit, they are set as
      *       appropriate and may be changed by the user exit to an
      *       acceptable value upon return.
      *       e.g. (tag)-U-PGM-alias
      *    4. All data is ASCII(ANSI). Null values are those appropriate
      *       for the data type. i.e. blanks for character data,
      *       zeros for numeric and binary data
      *
      * --Date--- Who --What------------------------------------------
      * 2002Mar04 DSA Initial version
      * 2003Apr25 DSA Changes as a result of addition of support for
      *               Event-step-ready
      * 2005Sep07 DSA Added new event event-job-concluded and
      *                         event event-job-purged
      * 2006Oct13 - Added  Event-job-stmt-info and
      *                    Event-uxit-chgd-jobname
      * 2017MAR27 ANF Added Event-job-queued
      *
      *===============================================================

      *===============================================================
      * Header
      *===============================================================
           3 (tag)-I-header.
      *      Size of this block
             5 (tag)-I-size        pic s9(8) comp.
      *      Unless otherwise noted, all events occur for
      *      JCL, TSO, and TSO-in-batch (PGM=IKJEFTxx or IDAEFTxx)
      *      Event code of event. Ignore undefined event codes.
             5 (tag)-I-event       pic s9(8) comp.
      *        The following events occur for JCL and TSO-in-batch
      *        and represent execution of a JCL JOB stream
               88 (tag)-I-event-job-ready        value  1.
               88 (tag)-I-event-job-stmt-info    value  25. *> This
                  *> event is broadcast ONLY to the JCL user exit
               88 (tag)-I-event-uxit-chgd-jobname  value 26. *>
                  *> event is broadcast ONLY to the event manager
               88 (tag)-I-event-job-queued       value 27.
               88 (tag)-I-event-job-concluded    value  2.
               88 (tag)-I-event-job-started      value  3.
               88 (tag)-I-event-job-purged       value  4.
               88 (tag)-I-event-job-ended        value  5.
      *        The following events occur for an interactive TSO
      *        session only
               88 (tag)-I-event-TSO-started      value  6.
               88 (tag)-I-event-TSO-ended        value  7.
      *        The following events occur for JCL and TSO-in-batch
      *        and represnt execution of "EXEC PGM=" JCL stmt
               88 (tag)-I-event-step-ready       value  8.
               88 (tag)-I-event-step-started     value  9.
               88 (tag)-I-event-step-ended       value 10.
               88 (tag)-I-event-step-bypassed    value 11.
      *        The following events occur for TSO and TSO-in-batch
      *        (IKJEFT01) and
      *        ... represent execution of the TSO "CALL pgm" command
               88 (tag)-I-event-CALL-ready       value 12.
               88 (tag)-I-event-CALL-started     value 13.
               88 (tag)-I-event-CALL-ended       value 14.
      *        ... represent execution of the DSN subcommand
      *            "RUN PROG(pgm)"
               88 (tag)-I-event-RUN-ready        value 15.
               88 (tag)-I-event-RUN-started      value 16.
               88 (tag)-I-event-RUN-ended        value 17.
      *
      *        Under MFE, all events, except Event-before-PGM-call and
      *        Event-after-PGM-call, occur in the parent process.
      *        These two events occur in the child process.
      *
      *        Under ESJCL,
      *         - Event-job-ready, Event-uxit-chgd-jobname, and
      *           Event-job-purged events
      *           occur only in the Service Execution Process (SEP),
      *           not in the initiator SEP.
      *         - Event-job-concluded event occurs in the standard SEP
      *           only if the job is not intended for execution (i.e.
      *           it is TYPRUN=COPY or TYPRUN=SCAN) or it has JCL
      *           errors. Otherwise this event occurs in the initiator
      *           SEP.
      *         - All other events occur in the initiator SEP.
      *
      *
      *        The following events occur for all environments
      *        for execution of a program following all
      *        "...-started" events.
      *        ***Note*** that these events occur in the child process
      *        that executes the program. Any working storage used by
      *        the user exit will not be the same as that for
      *        other events which occur in the parent process.
      *        In the parent process, your user exit will not remember
      *        information prior to "event-before-PGM-call" or after
      *        "event-after-PGM-call". Since both of these events
      *        occur in the child process, the user exit will be
      *        able to remember information between these two events.
               88 (tag)-I-event-before-PGM-call  value 18.
               88 (tag)-I-event-after-PGM-call   value 19.
      *        Event codes 25, 26 and 28 thru 50 
      *        are reserverd for JCL User exit
      *        Event codes 51 thru 99 reserverd for JES Monitor
      *        88 (tag)-I-event-job-stmt-info       value 25. See above
      *        88 (tag)-I-event-uxit-chgd-jobname   value 26. See above
      *        Event codes for file open, close and delete events for
      *        use by HSF stats - passed to ES Event manager  
               88 (tag)-I-event-dd-file-open        value 51.
               88 (tag)-I-event-dd-file-close       value 52.
               88 (tag)-I-event-dd-file-delete      value 53.

      *===============================================================
      * Action codes for all events. Upon return from the user exit,
      * action code indicates next course of action to be taken.
      * Upon entry to the user exit, it is set to zero.
      *===============================================================
             5 (tag)-U-action      pic s9(8) comp.
      *        The JCL engine should continue as if the exit were
      *        never invoked. Any modified data will be ignored.
               88 (tag)-U-action-continue         value 0.
      *        The JCL engine should not call the exit any more in
      *        this process for this job/TSO session
               88 (tag)-U-action-shut-exit        value 1.

      *===============================================================
      *        Action codes for: event-job-ready
      *===============================================================
      *          The JCL engine should use all modified
      *          fields except pc-fname
                 88 (tag)-U-action-MVS-dsn        value 2.
      *          The JCL engine should use all modified
      *          fields except MVS-dsn
                 88 (tag)-U-action-pc-fname       value 3.
      *          The JCL engine should flush the job
                 88 (tag)-U-action-flush          value 4.

      *===============================================================
      *        Action codes for: event-job-stmt-info
      *===============================================================
      *          The JCL engine should use all modified
      *          job information (action-continue)
      *   See    88 (tag)-U-action-flush above

      *===============================================================
      *        Action codes for: event-step-ready
      *                          event-CALL-ready
      *                          event-RUN-ready
      *===============================================================
      *          The JCL engine should use all modified fields
                 88 (tag)-U-action-PGM-info       value 5.
      *          The JCL engine should abend this step/program.
      *          The step/program will be abended with
      *          S822 (Region not available)
                 88 (tag)-U-action-abend          value 6.

      *===============================================================
      *        Action codes for: event-job-ended
      *                          event-TSO-ended
      *                          event-step-ended
      *                          event-CALL-ended
      *                          event-RUN-ended
      *===============================================================
      *          The JCL engine should use all modified fields
                 88 (tag)-U-action-term-info      value 7.

      *===============================================================
      *        Action codes for: event-job-concluded
      *===============================================================
      *          The JCL engine should use all modified fields
                 88 (tag)-U-action-concl-info     value 8.

      *===============================================================
      *        Action codes for: event-job-started
      *                          event-TSO-started
      *                          event-step-bypassed
      *                          event-step-started
      *                          event-CALL-started
      *                          event-RUN-started
      *                          event-before-PGM-call
      *                          event-after-PGM-call
      *         - No Action codes defined other than 0
      *===============================================================

             5 (tag)-U-log-event   pic x.
      *        The JCL engine should log all events (default)
               88 (tag)-U-log-event-on            value x'00'.
      *        The JCL engine should log only those events for which
      *        the exit requests a explicit action (non- 0 or 1)
               88 (tag)-U-log-event-on-action     value x'01'.
      *        The JCL engine not log any events unless
      *        requested to do so otherwise in the future
               88 (tag)-U-log-event-off           value x'02'.
      *        The JCL engine should log most events,
      *        currently all except
      *          - job-event-concluded
               88 (tag)-U-log-event-on-min        value x'03'.
             5                     pic x(2).
      *        Job number - may be 0 if not yet available
             5 (tag)-I-this-jobnum          pic 9(5).
      *        Job name - may be '????????' if not yet available
             5 (tag)-I-this-jobname         pic x(8).
      *        Process id
             5 (tag)-I-this-proc-id         pic 9(9) comp.

      *===============================================================
      * Event related data - varies by event
      *===============================================================
           3 (tag)-I-data          pic x(368).

      *===============================================================
      * Data for: event-job-ready
      *===============================================================
           3                                   redefines (tag)-I-data.
             5 (tag)-I-data-job-ready.
      *        reserved (used to be Job number). Use I-this-jobnum
               7                       pic 9(5).
      *        Fully qualified PC file name.
               7 (tag)-U-pc-fname      pic x(260).
      *        If available, MVS data set name (including member if
      *        a PDS) assoicated with pc-fname, otherwise blanks.
      *        e.g. MFIDSA.CNTL(MYJOB) (for a PDS member) or
      *             S0310.S070508.J01364.D00002.SYSUT2 (for PS)
               7 (tag)-U-MVS-dsn       pic x(54).
      *
               7 (tag)-I-submit-type   pic x(1).
                 88 (tag)-I-submit-type-exec value 'E'.
                 88 (tag)-I-submit-type-scan value 'S'.
               7 (tag)-I-animate       pic x(1).
                 88 (tag)-I-animate-on       value 'Y'.
                 88 (tag)-I-animate-off      value 'N'.

      *===============================================================
      * Data for: event-uxit-chgd-jobname
      *===============================================================
           3                                   redefines (tag)-I-data.
             5 (tag)-I-data-uxit-chgd-jobname.
               7 (tag)-I-old-jobname   pic x(8).
               *> This was the jobname on the job card. it was changed
               *> by the JCL user exit to -i-this-jobname (above).

      *===============================================================
      * Data for: event-job-stmt-info
      *===============================================================
           3                                   redefines (tag)-I-data.
             5 (tag)-U-data-job-stmt-info.
               7 (tag)-U-jobname        pic x(8).
               7 (tag)-U-typrun         pic 9(4) comp.
                 88 (tag)-U-typrun-scan value 0.
                 88 (tag)-U-typrun-exec value 1.
                 88 (tag)-U-typrun-anim value 2.
                 88 (tag)-U-typrun-copy value 3.
                 88 (tag)-U-typrun-hold value 4.
               7 (tag)-U-msgclass       pic x(1).
               7 (tag)-U-msglevel-1     pic 9(1).
               7 (tag)-U-msglevel-2     pic 9(1).
               7 (tag)-U-userid         pic x(8).
               7 (tag)-U-pgmr-name      pic x(20).
               7 (tag)-U-jobclass       pic x(1).
               7 (tag)-U-prty           pic 9(4) comp.   *> 0-15
               7 (tag)-U-group          pic x(8).
               7 (tag)-U-notify-node    pic x(8).
               7 (tag)-U-notify-userid  pic x(8).
               7 (tag)-U-password       pic x(32).
               7 (tag)-U-password-new   pic x(32).
               7 (tag)-U-seclabel       pic x(8).
               7 (tag)-U-job-perform    pic 9(4) comp. *> 1-999
               7 (tag)-U-acct-len       pic 9(4) comp.
               7 (tag)-U-acct-value     pic x(143).
               7                        pic x(81).

      *===============================================================
      * Data for: event-job-concluded
      *   - concl-return-code and concl-reason-code not applicable to
      *     concl-rc-ended, concl-rc-abended, concl-rc-cancelled,
      *     concl-rc-authfailed.
      *     concl-reason-code is currently not used and is always 0.
      *===============================================================
           3                                   redefines (tag)-I-data.
             5 (tag)-I-data-job-concl.
      *        Job processing outcome
               7 (tag)-I-concl-rc        pic s9(8) comp.
                 88 (tag)-I-concl-rc-ended            value 1.
                 88 (tag)-I-concl-rc-abended          value 2.
                 88 (tag)-I-concl-rc-jcl-error        value 3.
                 88 (tag)-I-concl-rc-scanned          value 4.
                 88 (tag)-I-concl-rc-scan-failed      value 5.
                 88 (tag)-I-concl-rc-flush-no-job     value 6.
                 88 (tag)-I-concl-rc-flush-bad-job    value 7.
                 88 (tag)-I-concl-rc-flush-uxit       value 8.
                 88 (tag)-I-concl-rc-copied           value 9.
                 88 (tag)-I-concl-rc-cancelled        value 10.
                 88 (tag)-I-concl-rc-authfailed       value 11.
               7 (tag)-U-concl-return-code         pic s9(8) comp.
               7 (tag)-U-concl-reason-code         pic s9(8) comp.

      *===============================================================
      * Data for: event-job-flushed
      *   See event-job-ready.
      *     - Only the first field is relevant
      *===============================================================

      *===============================================================
      * Data for: event-job-queued
      *===============================================================
           3                                   redefines (tag)-I-data.
             5 (tag)-I-data-job-queued.
               7 (tag)-input-queue            pic 9(02).
                 88 (tag)-I-input-hold-88     value 1.
                 88 (tag)-I-input-ready-88    value 3.

      *===============================================================
      * Data for: event-job-started
      *           event-TSO-started
      *           event-step-bypassed
      *     - Field names containing "step" are irrelevant for non-step
      *       related events
      *===============================================================
           3                                   redefines (tag)-I-data.
             5 (tag)-I-data-job-started.
      $if ILGEN set
               7                       pic x(24).
      $else
               7                       pointer.
               7                       pointer.
               7                       pointer.
      $end
      *
      *        Active System and Subsystems combinations are:
      *               System Subsystem
      *               ----------------
      *               JCL    JCL
      *               JCL    TSO  (IKJEFTxx)
      *               JCL    IMS  (DFSRC000)
      *               TSO    TSO
      *               TSO    IMS  (CALL DFSRC000)
      *               IMS    IMS
      *               CICS   CICS
      *
      *        Active system
               7 (tag)-I-system          pic x.
                 88  (tag)-I-system-JCL  value x'00'.
                 88  (tag)-I-system-TSO  value x'01'.
                 88  (tag)-I-system-ims  value x'02'.
                 88  (tag)-I-system-cics value x'03'.
                 88  (tag)-I-system-null value x'63'.
      *        Active subsystem
               7 (tag)-I-subsystem           pic x.
                 88  (tag)-I-subsystem-JCL       value x'00'.
                 88  (tag)-I-subsystem-TSO       value x'01'.
                 88  (tag)-I-subsystem-ims       value x'02'.
                 88  (tag)-I-subsystem-cics      value x'03'.
                 88  (tag)-I-subsystem-TSO-sstm  value x'0B'.
                 88  (tag)-I-subsystem-ims-sstm  value x'0C'.
                 88  (tag)-I-subsystem-cics-sstm value x'0D'.
                 88  (tag)-I-subsystem-null      value x'63'.
               7 (tag)-I-jobname   pic x(8).
               7 (tag)-I-userid    pic x(8).
               7 (tag)-I-jobstep   pic x(8).
               7 (tag)-I-procstep  pic x(8).
               7 (tag)-I-jobnum    pic 9(5).
               7 (tag)-I-stepnum   pic 9(3).
               7 (tag)-I-procstepnum pic 9(3).
               7                   pic x(1).
               7                   pic x(1).
               7 (tag)-I-msgclass  pic x(1).
               7 (tag)-I-msglevel1 pic x(1).
               7 (tag)-I-msglevel2 pic x(1).
               7                   pic x.
               7                   pic x(1).
      *        Dates in YYYYMMDD format, times in HHMMSShh
               7 (tag)-I-job-start-date pic 9(8).
               7 (tag)-I-job-start-time pic 9(8).
               7 (tag)-I-step-start-date pic 9(8).
               7 (tag)-I-step-start-time pic 9(8).
             5 (tag)-I-job-acct.
               7 (tag)-i-job-acct-len    pic 9(4) comp.
               7 (tag)-i-job-acct-value  pic x(143).
             5 (tag)-I-jobclass    pic x(01).

      *===============================================================
      * Data for: event-job-ended
      *           event-TSO-ended
      *           event-step-ended
      *           event-CALL-ended
      *           event-RUN-ended
      *           event-after-PGM-call
      *   See event-job-started
      *     - plus the following data
      *===============================================================
             5 (tag)-U-data-job-ended.
               7 (tag)-U-term-type                 pic x.
                 88 (tag)-U-term-type-normal       value x'00'.
                 88 (tag)-U-term-type-user-abend   value x'01'.
                 88 (tag)-U-term-type-sys-abend    value x'02'.
                 88 (tag)-U-term-type-RTS-err      value x'03'.
                 88 (tag)-U-term-type-RU-err       value x'04'.
                 88 (tag)-U-term-type-unknown      value x'05'.
               7                                   pic x(3).
               7 (tag)-U-term-return-code          pic s9(8) comp.
               7 (tag)-U-term-reason-code          pic s9(8) comp.
                 *> 88 (tag)-   Currently this is always 0. In the
                 *> future, a non-zero value would indicate a unique
                 *> reason within the return-code above.

      *===============================================================
      * Data for: event-step-ready
      *           event-step-started
      *           event-CALL-ready
      *           event-CALL-started
      *           event-RUN-ready
      *           event-RUN-started
      *           event-before-PGM-call
      *   See event-job-started
      *     - Plus the following data
      *     - Field names containing "step" are relevant
      *===============================================================
             5 (tag)-I-data-step-ready.
               7 (tag)-U-PGM-name          pic x(8).
               7 (tag)-U-PGM-alias         pic x(8).
               7 (tag)-U-PGM-parm.
                 9 (tag)-U-PGM-parm-len    pic s9(4) comp.
                 9 (tag)-U-PGM-parm-txt    pic x(96).

      *===============================================================
      *    HSF Data - passed to ES Event Manager
      *===============================================================
           3                               redefines (tag)-I-data.
             5 (tag)-I-data-file-open.   
               7 (tag)-ddname                     pic x(08).
               7 (tag)-dsname                     pic x(54).
               7 (tag)-ds-type                    pic x(1).
               7 (tag)-ds-access-type             pic x(1). 
             
           3                               redefines (tag)-I-data.
             5 (tag)-I-data-file-close.   
               7 (tag)-ddname                     pic x(08).
               7 (tag)-dsname                     pic x(54).
               7 (tag)-io-cnt-read                pic s9(8).
               7 (tag)-io-cnt-write               pic s9(8).
               7 (tag)-io-cnt-rewrite             pic s9(8).
               7 (tag)-io-cnt-delete              pic s9(8).
       
           3                               redefines (tag)-I-data.
             5 (tag)-I-data-file-delete.   
               7 (tag)-ddname                     pic x(08).
               7 (tag)-dsname                     pic x(54).


      *= End of MFJDXIT ==============================================