A.C.M.U : MVS to UNIX/Linux Batch Converter  
ACMU   Introduction   Typical JCL   Shell output   COBOL prog.   Try your JCL !   Feedback   Mainframe Migration   Extranet   

Sample of Shell Script output

Here is the Shell script output of the sample JCL convertion.

It includes the original JCL source lines, in UNIX comments fashion


#!/bin/sh
#-----------------------------------------------------------------
#- Script generated by the HHNS MVS to UNIX Migration Tool       -
#- From file (stdin)                  - 15/01/2005 18:37:03      -
#- A.C.M.U V4.09      - (C) HHNS 1999-2005 -         www.hhns.fr -
#-----------------------------------------------------------------

set -a

# *---------------------------------------------------------------
# *                  CONVERSION PARAMETERS                        -
# * Program Path   : $PRGDIR
# * File Path      : $MVSDATA
# * temp. files    : $TEMPDIR
# * process ddnames: as Shell variables
# * process dsnames: as Files
# * process DISP=  : strict, as in MVS
# *---------------------------------------------------------------
# *---------------------------------------------------------------
# *                  JCL source :                                -
# *---------------------------------------------------------------
# 0001 //JOBTST10 JOB (HHNTST),'HHNS1',CLASS=J,MSGCLASS=B,MSGLEVEL=(1,1),
# 0002 //             REGION=6M,NOTIFY=OPERATOR
# 0003 //********************************************************************
# 0004 //*    THIS JOB CREATES AND SORTS A FILE FROM SCRATCH.
# 0005 //*    AT ENTRY : NOTHING INTERESTING
# 0006 //*    AT EXIT  : FILE 'REAL.TEST10HH.FILE.SAVED'IS CATALOGUED.
# 0007 //*         <ANY OTHER COMMENT ...>
# 0008 //********************************************************************
# 0009 //       JCLLIB ORDER=(OPERATE.PROD9.PROCLIB,OPERATE.PROD8.PROCLIB)
# 0010 //       INCLUDE MEMBER=MARCEL
# 0011 //*
# 0012 //JOBLIB DD DSN=OPERATE.PROD1.LOADLIB,DISP=SHR
# 0013 //       DD DSN=OPERATE.PROD2.LOADLIB,DISP=SHR
# 0014 //       DD DSN=OPERATE.PROD3.LOADLIB,DISP=SHR
# 0015 //********************************************************************
# 0016 //*    STEP T10S05 : PROGRAM IEFBR14
# 0017 //*      REMOVES SOME OLD FILES, IF ANY
# 0018 //********************************************************************
# 0019 //STPS05   EXEC  PGM=IEFBR14
# 0020 //F1     DD  DSN=F1,DISP=(OLD,DELETE)
# 0021 //F2     DD  DSN=F2,DISP=(OLD,DELETE)
# 0022 //F3     DD  DSN=F3,DISP=(OLD,DELETE)
# 0023 //F4     INCLUDE MEMBER=DDF6
# 0024 //********************************************************************
# 0025 //*    STEP T10S10 : PROGRAM IDCAMS
# 0026 //*      REMOVES OLD VERSION OF FILE 'REAL.TEST10.FILE.SORTED', IF ANY
# 0027 //********************************************************************
# 0028 //STPS10   EXEC  PGM=IDCAMS
# 0029 //SYSPRINT DD    SYSOUT=*
# 0030 //SYSIN    DD    *
# 0031  DELETE REAL.TEST10HH.FILE.SAVED
# 0032  IF MAXCC = 8 THEN SET MAXCC = 0
# 0033  END
# 0034 /*
# 0035 //********************************************************************
# 0036 //*    STEP T10S20 : PROGRAM TEST10HH
# 0037 //*       ACCEPTS 3 PARAMETERS
# 0038 //*       READS A LINE FROM SYSIN
# 0039 //*       CREATES FILE 'REAL.TEST10HH.FILE', NEXT GDG
# 0040 //*       USES A WORKFILE '&&WRK'
# 0041 //*       USES SOME FILE WITH '$' EMBEDDED
# 0042 //********************************************************************
# 0043 //STPS20   EXEC  PGM=TEST10HH,COND=(4,LE),
# 0044 //             PARM=(1515,'L''ELEVE BAT DE L''AILE DANS L''ILE D''OLEROX
# 0045 //             N',1000)
# 0046 //SYSTSPRT DD SYSOUT=*
# 0047 //SYSOUT   DD SYSOUT=*
# 0048 //SYSPRINT DD SYSOUT=*
# 0049 //SYSUDUMP DD SYSOUT=D
# 0050 //WRKFILE1 DD DSN=&&WRK,DISP=(NEW,PASS)
# 0051 //SAMPLE$  DD DSN=$TEST.SAMPLE$.DOLLAR,DISP=SHR
# 0052 //TST10F   DD DSN=REAL.TEST10HH.FILE(+1),DISP=(NEW,KEEP)
# 0053 //SYSIN    DD *
# 0054 THESE ARE THE PARAMETERS FOR TEST10HH THAT ARE MORE THAN SEVENTY-ONE CH*
# 0055 ARACTERS LONG.
# 0056 /*
# 0057 //STEPLIB  DD DSN=TEST10H.PROD1.LOADLIB,DISP=SHR
# 0058 //         DD DSN=TEST10H.PROD2.LOADLIB,DISP=SHR
# 0059 //*
# 0060 //********************************************************************
# 0061 //*    STEP T10S30 : PROGRAM SORT   <USES : HHNS EXTENDED SORT/MERGE>
# 0062 //*      SORTS THE PREVOUS FILE IN REVERSE ORDER, COLS 1-3
# 0063 //*                             IN ASCEND. ORDER, COLS 4-9
# 0064 //*      RESULT IS 'REAL.TEST10HH.FILE.SORTED'
# 0065 //********************************************************************
# 0066 //STPS30   EXEC  PGM=SORT,COND=(4,LE)
# 0067 //SYSOUT   DD    SYSOUT=*
# 0068 //SORTIN   DD    DSN=REAL.TEST10HH.FILE(+0),DISP=(OLD)
# 0069 //SORTOUT  DD    DSN=REAL.TEST10HH.FILE.SORTED,DISP=(NEW,KEEP)
# 0070 //SYSIN    DD    *
# 0071   SORT     FIELDS=(1,3,D,4,6,A),FORMAT=BI
# 0072 /*
# 0073 //DEMO40   IF (STS20.RC EQ 0) THEN
# 0074 //********************************************************************
# 0075 //*    STEP T10S40 : PROGRAM IEBGENER
# 0076 //*      COPIES 'REAL.TEST10HH.FILE.SORTED' TO 'REAL.TEST10.FILE.SAVED'
# 0077 //********************************************************************
# 0078 //STPS40   EXEC  PGM=IEBGENER
# 0079 //SYSUT1   DD DSN=*.STPS30.SORTOUT,DISP=OLD
# 0080 //SYSUT2   DD DSN=REAL.TEST10HH.FILE.SAVED(+1),DISP=(NEW,CATALG)
# 0081 //SYSPRINT DD SYSOUT=*
# 0082 //DEMO40   ENDIF

PID=$$

# *---------------------------------------------------------------
#   some useful functions   ...                                   -
# *---------------------------------------------------------------

# -- function WTO :
#    a very simple WTO function :
#       WTO userid msg
WTO() {
echo $2 | write $1
}

IEFBR14() {
# -- dummy IEFBR14 : returns 0
return 0
}

rc=0    # first time, retcode is 0
#
# 0001 //JOBTST10 JOB (HHNTST),'HHNS1',CLASS=J,MSGCLASS=B,MSGLEVEL=(1,1),
# 0002 //             REGION=6M,NOTIFY=OPERATOR
#

# *--------------------------------------------
# *--------------------------------------------
# *-------- START OF JOB  JOBTST10 ----------
# *--------------------------------------------
# *--------------------------------------------

# ---------- Notify user OPERATOR ----------
WTO OPERATOR "$(date +%D) $(date +%T) *--- JOB JOBTST10 STARTED ---*"


# ---------- Export JOB Environment---
JOBNAME="JOBTST10"
MSGCLASS="B"
CLASS="J"
# 0009 //       JCLLIB ORDER=(OPERATE.PROD9.PROCLIB,OPERATE.PROD8.PROCLIB)

# -- Setup PROCPATH variable for the INCLUDE an EXEC PROC= statements
PROCPATH="$PRGDIR/OPERATE.PROD9.PROCLIB:$PRGDIR/OPERATE.PROD8.PROCLIB:$PROCPATH"

# 0010 //       INCLUDE MEMBER=MARCEL

# -- this INCLUDE statement is ignored in the demo version
# -- it would have been replaced by member 'MARCEL' from $PROCPATH


# 0012 //JOBLIB DD DSN=OPERATE.PROD1.LOADLIB,DISP=SHR
# 0013 //       DD DSN=OPERATE.PROD2.LOADLIB,DISP=SHR
# 0014 //       DD DSN=OPERATE.PROD3.LOADLIB,DISP=SHR

# -- this file will be processed as a UNIX PATH
JOBPATH=$PRGDIR/OPERATE.PROD1.LOADLIB:$JOBPATH
JOBPATH=$PRGDIR/OPERATE.PROD2.LOADLIB:$JOBPATH
JOBPATH=$PRGDIR/OPERATE.PROD3.LOADLIB:$JOBPATH
SAVEPATH=$PATH
PATH=$JOBPATH:$SAVEPATH
MSGLOG=MSGLOG_B

# 0019 //STPS05   EXEC  PGM=IEFBR14

# *--------------------------------------------
# *--------------------------------------------
# *-------- START OF STEP STPS05 -----------
# *--------------------------------------------
# *--------------------------------------------

echo "-------- START OF STEP STPS05 ------------" >>$MSGLOG

# 0020 //F1     DD  DSN=F1,DISP=(OLD,DELETE)
# -- this file is a shell variable : 
F1="$MVSDATA/F1"
# -- this file is checked at start of step :
if [ ! -f "$F1" ]; then
   echo "----- Missing dataset $MVSDATA/F1  -----" >> $MSGLOG
exit 23
fi
# -- this file will be deleted at end of step

# 0021 //F2     DD  DSN=F2,DISP=(OLD,DELETE)
# -- this file is a shell variable : 
F2="$MVSDATA/F2"
# -- this file is checked at start of step :
if [ ! -f "$F2" ]; then
    echo "----- Missing dataset $MVSDATA/F2  -----" >> $MSGLOG
       exit 23
fi
# -- this file will be deleted at end of step

# 0022 //F3     DD  DSN=F3,DISP=(OLD,DELETE)
# -- this file is a shell variable : 
F3="$MVSDATA/F3"
# -- this file is checked at start of step :
if [ ! -f "$F3" ]; then
echo "----- Missing dataset $MVSDATA/F3  -----" >> $MSGLOG
exit 23
fi
# -- this file will be deleted at end of step

# 0023 //F4     INCLUDE MEMBER=DDF6
# -- this file is not processed by demo version
# -- if would have been replaced by member 'DDF6' from PROCPATH


# -----------------------------------------------------------
# -- step STPS05 : command IEFBR14
# -- path for step :
#         $PRGDIR/OPERATE.PROD1.LOADLIB +
#         $PRGDIR/OPERATE.PROD2.LOADLIB +
#         $PRGDIR/OPERATE.PROD3.LOADLIB  
# -- file F1       :  $F1 $MVSDATA/F1
# -- file F2       :  $F2 $MVSDATA/F2
# -- file F3       :  $F3 $MVSDATA/F3
# -----------------------------------------------------------

# -- launch the program IEFBR14

IEFBR14  2>> $MSGLOG 

rc=$?   # save return code for next steps
rc_STPS05=$rc

# -- Remove dataset $F1 :
[ -f "$F1" ] && rm -f "$F1"
# -- Unset shell var F1 :
[ "$F1" ] && unset F1

# -- Remove dataset $F2 :
[ -f "$F2" ] && rm -f "$F2"
# -- Unset shell var F2 :
[ "$F2" ] && unset F2

# -- Remove dataset $F3 :
[ -f "$F3" ] && rm -f "$F3"
# -- Unset shell var F3 :
[ "$F3" ] && unset F3


# *------------------------------------------
# *------------------------------------------
# *-------- END OF STEP STPS05 ----------
# *------------------------------------------
# *------------------------------------------

# 0028 //STPS10   EXEC  PGM=IDCAMS

# *--------------------------------------------
# *--------------------------------------------
# *-------- START OF STEP STPS10 -----------
# *--------------------------------------------
# *--------------------------------------------

echo "-------- START OF STEP STPS10 ------------" >>$MSGLOG

# 0029 //SYSPRINT DD    SYSOUT=*
# -- this file is a shell variable : 
SYSPRINT="$TEMPDIR/LPD_CLASS-B-SYSPRINT.JOBTST10-STPS10-JOBTST10-$PID"
# -- this file is redirected as stdout
# -- this file is a spool file to be printed at end of step
# -- this file will be deleted at end of step

# 0030 //SYSIN    DD    *
# 0031  DELETE REAL.TEST10HH.FILE.SAVED
# 0032  IF MAXCC = 8 THEN SET MAXCC = 0
# 0033  END
# -- this file is redirected as stdin

# -----------------------------------------------------------
# -- step STPS10 : command IDCAMS
# -- path for step :
#         $PRGDIR/OPERATE.PROD1.LOADLIB +
#         $PRGDIR/OPERATE.PROD2.LOADLIB +
#         $PRGDIR/OPERATE.PROD3.LOADLIB  
# -- input         : stdin
# -- output        : stdout (> $SYSPRINT)
# -----------------------------------------------------------

# -- launch the program IDCAMS

IDCAMS > $SYSPRINT 2>> $MSGLOG <<SYSIN_EOF
DELETE REAL.TEST10HH.FILE.SAVED
IF MAXCC = 8 THEN SET MAXCC = 0
END
SYSIN_EOF

rc=$?   # save return code for next steps
rc_STPS10=$rc

# -- Prints $SYSPRINT
echo "JOBTST10 - $(date)" | lpr -J JOBTST10 -P LPD_CLASS-B
[ -f "$SYSPRINT" ] && lpr -P LPD_CLASS-B "$SYSPRINT"

# -- Remove dataset $SYSPRINT :
[ -f "$SYSPRINT" ] && rm -f "$SYSPRINT"
# -- Unset shell var SYSPRINT :
[ "$SYSPRINT" ] && unset SYSPRINT

# -- Unset shell var SYSIN :
[ "$SYSIN" ] && unset SYSIN

# *------------------------------------------
# *------------------------------------------
# *-------- END OF STEP STPS10 ----------
# *------------------------------------------
# *------------------------------------------

# 0043 //STPS20   EXEC  PGM=TEST10HH,COND=(4,LE),
# 0044 //             PARM=(1515,'L''ELEVE BAT DE L''AILE DANS L''ILE D''OLEROX
# 0045 //             N',1000)

# *--------------------------------------------
# *--------------------------------------------
# *-------- START OF STEP STPS20 -----------
# *--------------------------------------------
# *--------------------------------------------


#----------------- start of CC for step STPS20:
if [ $rc_STPS10 -le 4 ]; then   #----------- CC > 0, returns false

echo "-------- START OF STEP STPS20 ------------" >>$MSGLOG

# 0057 //STEPLIB  DD DSN=TEST10H.PROD1.LOADLIB,DISP=SHR
# 0058 //         DD DSN=TEST10H.PROD2.LOADLIB,DISP=SHR
# -- this file will be processed as a UNIX PATH
STPPATH=$PRGDIR/TEST10H.PROD1.LOADLIB:$STPPATH
STPPATH=$PRGDIR/TEST10H.PROD2.LOADLIB:$STPPATH


# 0046 //SYSTSPRT DD SYSOUT=*

# 0047 //SYSOUT   DD SYSOUT=*

# 0048 //SYSPRINT DD SYSOUT=*
# -- this file is a shell variable : 
SYSPRINT="$TEMPDIR/LPD_CLASS-B-SYSPRINT.JOBTST10-STPS20-JOBTST10-$PID"
# -- this file is redirected as stdout
# -- this file is a spool file to be printed at end of step
# -- this file will be deleted at end of step

# 0049 //SYSUDUMP DD SYSOUT=D

# 0050 //WRKFILE1 DD DSN=&&WRK,DISP=(NEW,PASS)
# -- this file is a shell variable : 
WRKFILE1="$TEMPDIR/WRK-$PID"
# -- this file is deleted at start of step :
[ -f "$WRKFILE1" ] && rm -f "$WRKFILE1"
# -- this file will be deleted at end of step if rc > 0
# -- this file will be deleted at end of job

# 0051 //SAMPLE$  DD DSN=$TEST.SAMPLE$.DOLLAR,DISP=SHR
# -- this file is a shell variable : 
SAMPLE\$="$MVSDATA/\$TEST.SAMPLE\$.DOLLAR"

# 0052 //TST10F   DD DSN=REAL.TEST10HH.FILE(+1),DISP=(NEW,KEEP)
# -- this file is a shell variable : 
TST10F="$(GET_GDG $MVSDATA/REAL.TEST10HH.FILE +1)"
# -- this file is deleted at start of step :
[ -f "$TST10F" ] && rm -f "$TST10F"
# -- this file will be deleted at end of step if rc > 0

# 0053 //SYSIN    DD *
# 0054 THESE ARE THE PARAMETERS FOR TEST10HH THAT ARE MORE THAN SEVENTY-ONE CH*
# 0055 ARACTERS LONG.
# -- this file is redirected as stdin

# -----------------------------------------------------------
# -- step STPS20 : command TEST10HH
# -- path for step :
#         $PRGDIR/TEST10H.PROD1.LOADLIB +
#         $PRGDIR/TEST10H.PROD2.LOADLIB +
#         $PRGDIR/OPERATE.PROD1.LOADLIB +
#         $PRGDIR/OPERATE.PROD2.LOADLIB +
#         $PRGDIR/OPERATE.PROD3.LOADLIB  
# -- input         : stdin
# -- output        : stdout (> $SYSPRINT)
# -- file WRKFILE1 :  $WRKFILE1 $TEMPDIR/WRK-$PID
# -- file SAMPLE\$ :  $SAMPLE\$ $MVSDATA/\$TEST.SAMPLE\$.DOLLAR
# -- file TST10F   :  $TST10F $(GET_GDG $MVSDATA/REAL.TEST10HH.FILE +1)
# -----------------------------------------------------------

# --  set the PATH for this step
PATH=$PROCPATH:$STPPATH:$PATH

# -- launch the program TEST10HH

TEST10HH 1515 "L'ELEVE BAT DE L'AILE DANS L'ILE D'OLERON" 1000 > $SYSPRINT 2>> $MSGLOG <<SYSIN_EOF
THESE ARE THE PARAMETERS FOR TEST10HH THAT ARE MORE THAN SEVENTY-ONE CH
ARACTERS LONG.
SYSIN_EOF

rc=$?   # save return code for next steps
rc_STPS20=$rc
# -- reset the PATH to normal JOBPATH
PATH=$JOBPATH:$SAVEPATH
# -- reset STPPATH
unset STPPATH




# -- Prints $SYSPRINT
echo "JOBTST10 - $(date)" | lpr -J JOBTST10 -P LPD_CLASS-B
[ -f "$SYSPRINT" ] && lpr -P LPD_CLASS-B "$SYSPRINT"

# -- Remove dataset $SYSPRINT :
[ -f "$SYSPRINT" ] && rm -f "$SYSPRINT"
# -- Unset shell var SYSPRINT :
[ "$SYSPRINT" ] && unset SYSPRINT


if [ $rc_STPS20 -ne 0 ]; then
# -- Remove dataset $WRKFILE1 :
[ -f "$WRKFILE1" ] && rm -f "$WRKFILE1"
fi
# -- Unset shell var WRKFILE1 :
[ "$WRKFILE1" ] && unset WRKFILE1

# -- Unset shell var SAMPLE\$ :
[ "$SAMPLE\$" ] && unset SAMPLE\$

if [ $rc_STPS20 -ne 0 ]; then
# -- Remove dataset $TST10F :
[ -f "$TST10F" ] && rm -f "$TST10F"
fi
# -- Unset shell var TST10F :
[ "$TST10F" ] && unset TST10F

# -- Unset shell var SYSIN :
[ "$SYSIN" ] && unset SYSIN

else   #----------- CC = 0, returns true
     echo "step STPS20 skipped due to previous CC" >> $MSGLOG
fi     #----------- end of  CC for step STPS20

# *------------------------------------------
# *------------------------------------------
# *-------- END OF STEP STPS20 ----------
# *------------------------------------------
# *------------------------------------------

# 0066 //STPS30   EXEC  PGM=SORT,COND=(4,LE)

# *--------------------------------------------
# *--------------------------------------------
# *-------- START OF STEP STPS30 -----------
# *--------------------------------------------
# *--------------------------------------------


#----------------- start of CC for step STPS30:
if [ $rc_STPS20 -le 4 ]; then   #----------- CC > 0, returns false

echo "-------- START OF STEP STPS30 ------------" >>$MSGLOG

# 0067 //SYSOUT   DD    SYSOUT=*
# -- this file is a shell variable : 
SYSOUT="$TEMPDIR/LPD_CLASS-B-SYSOUT.JOBTST10-STPS30-JOBTST10-$PID"
# -- this file is redirected as stdout
# -- this file is a spool file to be printed at end of step
# -- this file will be deleted at end of step

# 0068 //SORTIN   DD    DSN=REAL.TEST10HH.FILE(+0),DISP=(OLD)
# -- this file is a shell variable : 
SORTIN="$(GET_GDG $MVSDATA/REAL.TEST10HH.FILE +0)"
# -- this file is checked at start of step :
if [ ! -f "$SORTIN" ]; then
   echo "----- Missing dataset $(GET_GDG $MVSDATA/REAL.TEST10HH.FILE +0)  -----" >> $MSGLOG
      exit 23
fi
# -- this file will be deleted at end of step

# 0069 //SORTOUT  DD    DSN=REAL.TEST10HH.FILE.SORTED,DISP=(NEW,KEEP)
# -- this file is a shell variable : 
SORTOUT="$MVSDATA/REAL.TEST10HH.FILE.SORTED"
# -- this file is deleted at start of step :
[ -f "$SORTOUT" ] && rm -f "$SORTOUT"
# -- this file will be deleted at end of step if rc > 0

# 0070 //SYSIN    DD    *
# 0071   SORT     FIELDS=(1,3,D,4,6,A),FORMAT=BI
# -- this file is redirected as stdin

# -----------------------------------------------------------
# -- step STPS30 : command SORT
# -- path for step :
#         $PRGDIR/OPERATE.PROD1.LOADLIB +
#         $PRGDIR/OPERATE.PROD2.LOADLIB +
#         $PRGDIR/OPERATE.PROD3.LOADLIB  
# -- input         : stdin
# -- output        : stdout (> $SYSOUT)
# -- file SORTIN   :  $SORTIN $(GET_GDG $MVSDATA/REAL.TEST10HH.FILE +0)
# -- file SORTOUT  :  $SORTOUT $MVSDATA/REAL.TEST10HH.FILE.SORTED
# -----------------------------------------------------------

# -- launch the program SORT

SORT > $SYSOUT 2>> $MSGLOG <<SYSIN_EOF
SORT     FIELDS=(1,3,D,4,6,A),FORMAT=BI
SYSIN_EOF

rc=$?   # save return code for next steps
rc_STPS30=$rc

# -- Prints $SYSOUT
echo "JOBTST10 - $(date)" | lpr -J JOBTST10 -P LPD_CLASS-B
[ -f "$SYSOUT" ] && lpr -P LPD_CLASS-B "$SYSOUT"

# -- Remove dataset $SYSOUT :
[ -f "$SYSOUT" ] && rm -f "$SYSOUT"
# -- Unset shell var SYSOUT :
[ "$SYSOUT" ] && unset SYSOUT

# -- Remove dataset $SORTIN :
[ -f "$SORTIN" ] && rm -f "$SORTIN"
# -- Unset shell var SORTIN :
[ "$SORTIN" ] && unset SORTIN

if [ $rc_STPS30 -ne 0 ]; then
# -- Remove dataset $SORTOUT :
[ -f "$SORTOUT" ] && rm -f "$SORTOUT"
fi
# -- Unset shell var SORTOUT :
[ "$SORTOUT" ] && unset SORTOUT

# -- Unset shell var SYSIN :
[ "$SYSIN" ] && unset SYSIN

else   #----------- CC = 0, returns true
echo "step STPS30 skipped due to previous CC" >> $MSGLOG
fi     #----------- end of  CC for step STPS30

# *------------------------------------------
# *------------------------------------------
# *-------- END OF STEP STPS30 ----------
# *------------------------------------------
# *------------------------------------------

# 0073 //DEMO40   IF (STS20.RC EQ 0) THEN

# *--------------------------------------------
# *--- STATEMENT : (DEMO40) IF STS20.RC EQ 0
# *--------------------------------------------

if [ $rc_STS20 -eq 0 ]; then

# 0078 //STPS40   EXEC  PGM=IEBGENER

# *--------------------------------------------
# *--------------------------------------------
# *-------- START OF STEP STPS40 -----------
# *--------------------------------------------
# *--------------------------------------------

echo "-------- START OF STEP STPS40 ------------" >>$MSGLOG

# 0079 //SYSUT1   DD DSN=*.STPS30.SORTOUT,DISP=OLD
# -- this file refers to ddn 'SORTOUT' in step 'STPS30'
# -- this file is a shell variable : 
SYSUT1="$MVSDATA/REAL.TEST10HH.FILE.SORTED"
# -- this file is checked at start of step :
if [ ! -f "$SYSUT1" ]; then
   echo "----- Missing dataset $MVSDATA/REAL.TEST10HH.FILE.SORTED  -----" >> $MSGLOG
exit 23
fi
# -- this file will be deleted at end of step

# 0080 //SYSUT2   DD DSN=REAL.TEST10HH.FILE.SAVED(+1),DISP=(NEW,CATALG)
# -- this file is a shell variable : 
SYSUT2="$(GET_GDG $MVSDATA/REAL.TEST10HH.FILE.SAVED +1)"
# -- this file is deleted at start of step :
[ -f "$SYSUT2" ] && rm -f "$SYSUT2"
# -- this file will be deleted at end of step if rc > 0

# 0081 //SYSPRINT DD SYSOUT=*
# -- this file is a shell variable : 
SYSPRINT="$TEMPDIR/LPD_CLASS-B-SYSPRINT.JOBTST10-STPS40-JOBTST10-$PID"
# -- this file is redirected as stdout
# -- this file is a spool file to be printed at end of step
# -- this file will be deleted at end of step

# -----------------------------------------------------------
# -- step STPS40 : command IEBGENER
# -- path for step :
#         $PRGDIR/OPERATE.PROD1.LOADLIB +
#         $PRGDIR/OPERATE.PROD2.LOADLIB +
#         $PRGDIR/OPERATE.PROD3.LOADLIB  
# -- output        : stdout (> $SYSPRINT)
# -- file SYSUT1   :  $SYSUT1 $MVSDATA/REAL.TEST10HH.FILE.SORTED
# -- file SYSUT2   :  $SYSUT2 $(GET_GDG $MVSDATA/REAL.TEST10HH.FILE.SAVED +1)
# -----------------------------------------------------------

# -- launch the program IEBGENER

IEBGENER > $SYSPRINT 2>> $MSGLOG 

rc=$?   # save return code for next steps
rc_STPS40=$rc

# -- Remove dataset $SYSUT1 :
[ -f "$SYSUT1" ] && rm -f "$SYSUT1"
# -- Unset shell var SYSUT1 :
[ "$SYSUT1" ] && unset SYSUT1

if [ $rc_STPS40 -ne 0 ]; then
# -- Remove dataset $SYSUT2 :
[ -f "$SYSUT2" ] && rm -f "$SYSUT2"
fi
# -- Unset shell var SYSUT2 :
[ "$SYSUT2" ] && unset SYSUT2

# -- Prints $SYSPRINT
echo "JOBTST10 - $(date)" | lpr -J JOBTST10 -P LPD_CLASS-B
[ -f "$SYSPRINT" ] && lpr -P LPD_CLASS-B "$SYSPRINT"

# -- Remove dataset $SYSPRINT :
[ -f "$SYSPRINT" ] && rm -f "$SYSPRINT"
# -- Unset shell var SYSPRINT :
[ "$SYSPRINT" ] && unset SYSPRINT

# *------------------------------------------
# *------------------------------------------
# *-------- END OF STEP STPS40 ----------
# *------------------------------------------
# *------------------------------------------

# 0082 //DEMO40   ENDIF

# *--------------------------------------------
# *-------- STATEMENT : STPS40 ENDIF -----------
# *--------------------------------------------

fi  # ENDIF STPS40

# -- JOBTST10 : print $MSGLOG -------
echo "$MSGLOG - $(date)" | lpr -P MSGLOG
[ -f "$MSGLOG" ] && lpr -P MSGLOG "$MSGLOG"
[ -f "$MSGLOG" ] && rm -f "$MSGLOG"

[ -f $TEMPDIR/*-$PID ] && rm -f $TEMPDIR/*-$PID
# *---------- END OF JOB JOBTST10 ----------

# ---------- Notify user OPERATOR ----------
WTO OPERATOR "$(date +%D) $(date +%T) *--- JOB JOBTST10 ENDED, rc=$rc ---*"

# ---------------  Reset PATH ------------
PATH=$SAVEPATH
# ---------------  Exit Job  -------------
exit $rc

#---  Generated 15/01/2005 at 18:37:03 
#---  On www.hhns.fr 
#---  By A.C.M.U - (C) HHNS 1999-2005 - www.hhns.fr


Back to the sample JCL source.

Go & submit your own JCL.