//jobnameX JOB account,'EXECALT1',
// classmsgclassMSGLEVEL=(1,1)
jobparm
//* Exec CFT (if cft.check_exec = value)
//*LIB    JCLLIB ORDER=(cftv2.INSTALL)
//LIB    JCLLIB ORDER=(&RUNTIMEDIR.INSTALL)
//      INCLUDE MEMBER=cftenv
//*
//    SET SYSPROC=&CFTENV..EXEC
//* ----------------------------------------------
//* EXEXALT1: [NAME_PRODUCT] [PRODUCT_VERSION]
//*
//* [PRODUCT_COPYRIGHT]
//* ----------------------------------------------
//* Member=cftv2.EXEC(EXECALT1)
//* ------------------------------------------------
//* Purpose: Alternative EOT exec procedure
//* The monitor UserID must be authorized to read the procedures to
//* be submitted.
//* In the event that only the owner of the transfer is
//* allowed to read the associated EOT procedure, it is possible
//* to use this relay JCL, which, in its turn, will submit the JCL
//* using the transfer owner UserID.
//*
//* CFTRECV EXEC=..EXEC(EXECALT1) -> the transfer initial EOT
//*                                  is the 'relay' JCL.
//*
//* In this example, the requester filled the PARM variable with
//* the name of the EOT procedure to be submitted.
//*
//*
//* Steps:
//*
//* SUBMIT: submit JCL (JCL name from the PARM variable)
//* SUBERR: rc > 1 Error during submit
//* SUB0S1: rc = 0 Submit ok _ Wlog is used to return the JOBNUM
//*                The END command must be done in the submitted JCL
//* SUB1S1: rc = 1 PARM CFT variable is empty (no JCL)
//*
//* ---------------------------------------------------------------+
//SUBMIT   EXEC PGM=IKJEFT01,REGION=6M,PARM='%RXALT1 SJ'
//SYSPROC   DD  DISP=SHR,DSN=&CFTENV..INSTALL
//JOBLOG    DD  SYSOUT=&OUT
//SYSTSPRT  DD  SYSOUT=&OUT
//OUTVAR    DD  DISP=(NEW,PASS),DCB=(LRECL=80,BLKSIZE=80,RECFM=FB),
//          DSN=&TMP1,UNIT=SYSDA,SPACE=(TRK,1)
//SYSTSIN   DD  DUMMY
//PARM      DD  *,DLM=OK
  set   CFTJCL    '&PARM'
*
* rep&: (replace) : _ used CFT variables list in JCL submitted
*
 rep& 'IDTU'       '&IDTU'
 rep& 'FNAME'      '&FNAME'
 rep& 'RUNTIMEDIR' '&RUNTIMEDIR'
 rep& 'PART'       '&PART'
 rep& 'XIDT'       '&7.2IDT'
OK
//*
//*  submit error
//*
//   IF (SUBMIT.RC GT 1) THEN
//SUBERR  EXEC PCFTUTIL,PARM='',
//   QUAL=&CFTENV,OUT=&OUT
//CFTPARM  DD DUMMY
//CFTIN    DD *,DLM=OK
  LONG NAME=RCL
  CHAR NAME=JOBNAME,SIZE=16
  CHAR NAME=DATETIME,SIZE=17
  _JOB  PARM=JOBNAME,RC=RCL
  _DATTIM PARM=DATETIME,RC=RCL

  WLOG SEVERITY=ERROR,
  MSG='EXECALT1 - <IDTU=&IDTU> -
  JOB %JOBNAME% at %DATETIME% submit error -
  (&PARM)'

  END PART=&PART,IDTU=&IDTU,DIRECT=RECV,ISTATE=YES,
      APPSTATE=SUBERR,PHASE=Y,PHASESTEP=C

  SEND PART=&PART,IDT=&IDT,TYPE=NACK,IDM=&IDF,
  MSG='JOB %JOBNAME% at %DATETIME% submit error -
  (&PARM)'

  KEEP PART=&PART,IDTU=&IDTU,DIAGP=SUBMIT,
       DIAGC=submit_error,
       PHASE=Y,PHASESTEP=C

OK
//   ENDIF
//*
//*  submit OK (WLOG: Link IDTU and new JOBID)
//*
//   IF (SUBMIT.RC EQ 0) THEN
//*
//*  Merge files
//*
//SUB0S1  EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSN=&TMP1,DISP=(OLD,DELETE)
//         DD *,DLM=OK
  LONG NAME=RCL
  CHAR NAME=JOBNAME,SIZE=16
  CHAR NAME=DATETIME,SIZE=17
  _JOB  PARM=JOBNAME,RC=RCL
  _DATTIM PARM=DATETIME,RC=RCL

  WLOG MSG='EXECALT1 - <IDTU=&IDTU> -
  JOB %JOBS% at %DATETIME% -
  (&PARM) -
  submitted by %JOBNAME%'
OK
//SYSUT2    DD  DISP=(NEW,PASS),DCB=(LRECL=80,BLKSIZE=80,RECFM=FB),
//          DSN=&TMP2,UNIT=SYSDA,SPACE=(TRK,1)
//SYSIN     DD  DUMMY
//*
//*  Execute CFT 'END' command
//*
//SUBOS2  EXEC PCFTUTIL,PARM='',
//   QUAL=&CFTENV,OUT=&OUT
//CFTPARM  DD DUMMY
//CFTIN    DD DSN=&TMP2,DISP=(OLD,DELETE)
//  ENDIF
//*
//* No job submitted (PARM empty or PARM=_NONE_)
//*
//   IF (SUBMIT.RC EQ 1) THEN
//SUB1S1  EXEC PCFTUTIL,PARM='',
//   QUAL=&CFTENV,OUT=&OUT
//CFTPARM  DD DUMMY
//CFTIN    DD *,DLM=OK
  LONG NAME=RCL
  CHAR NAME=JOBNAME,SIZE=16
  CHAR NAME=DATETIME,SIZE=17
  _JOB  PARM=JOBNAME,RC=RCL
  _DATTIM PARM=DATETIME,RC=RCL

  WLOG MSG='EXECALT1 - <IDTU=&IDTU> -
  %DATETIME% No JOB submitted -
  by %JOBNAME%'

  END PART=&PART,IDTU=&IDTU
OK
//  ENDIF
//*
//*
//* -------------------------------
//* EXECALT1 : End of JCL
//* -------------------------------
//* cftstamp
//* -----------------------------
