#!/bin/ksh
#**********************************************************************#
#*                                                                    *#
#* Copyright (c) 2001 by Sun Microsystems, Inc.                       *#
#* All rights reserved.                                               *#
#*                                                                    *#
#**********************************************************************#


########################################################################
#                                                                      #
# BATCH Utility       :     IEBEDIT                                    #
# Purpose             :     Copy JCL stream to file                    #
#                           Submit jcl stream for translation and      #
#                           execution                                  #
#                                                                      #
########################################################################
original_workdir=`pwd`
echo " "
echo "Start:  IEBEDIT" 
echo " "
if [ "a$LN_SYSUT1" = a ]
then
   echo "IEBEDIT  (S) ERROR: SYSUT1 is undefined"
   echo 16 > status.${JON}
   exit 16
fi
if [ "a$DD_SYSUT2" = a ]
then
   echo "IEBEDIT  (S) ERROR: SYSUT2 is undefined"
   echo 16 > status.${JON}
   exit 16
fi

if [ "a$DD_SYSIN" != a -a "$DD_SYSIN" != "$DEVNULL" ]
then
   echo " "
   echo "IEBEDIT  (W) IEBEDIT Control statements are not supported in the current version"
   echo " "
   SETRETCODE 12
fi

if [ "a$SYSUT2_FILETYPE" = a ]
then
  #Do not  have file type
  if [ "a$SYSUT2_FILENAME" != a ]
  then
     #Have filename, determine if file type is SYSOUT
     echo $SYSUT2_FILENAME | grep sysoutdir >$DEVNULL 2>&1
     if [ $? -eq 0 ]
     then
        SYSUT2_FILETYPE=SYSOUT
     fi
  else
     #Do not have file type or file name
     if [ "a$DSN_SYSUT2" = a ]
     then
        #Do not have file type, file name or datasetname to search File_Map
        echo "IEBEDIT  (S) ERROR: SYSUT2 - Unable to determine filename or type  "
       
     else 
        sysut2_filemap_filetype=`ftval $DSN_SYSUT2 $JOB_CAT 3`
        if [ $? -ne 0 ]
        then
           echo "IEBEDIT  (S) ERROR: accessing File_Map: ftval $DSN_SYSUT2 $JOB_CAT 3"
           echo 16 > status.${JON}
           exit 16
        else
           if [ "a$sysut2_filemap_filetype" != FS ]
           then
              echo "IEBEDIT  (S) ERROR: SYSUT2 file type must be FS or SYSOUT" 
              echo 16 > status.${JON}
              exit 16
           else
              SYSUT2_FILETYPE=FS
           fi
        fi
     fi
  fi 
fi

 
case $SYSUT2_FILETYPE in
   FS|fs)
      if [ "a$SYSUT2_FILENAME" = a ]
      then
         if [ "a$DSN_SYSUT2" != a]
         then
            filemap_filename=`ftval $DSN_SYSUT2 $JOB_CAT 4`
            if [ $? -ne 0 ]
            then 
              echo "IEBEDIT  (S) ERROR: accessing File_Map: ftval $DSN_SYSUT2 $JOB_CAT 4"
              echo 16 > status.${JON}
              exit 16
            else 
               if [ "a$filemap_filename" = a ]
               then 
                 echo "IEBEDIT  (S) ERROR: Unable to determine output file name, verify File_Map"
               else
                  SYSUT2_FILENAME=$filemap_filename
               fi
            fi
         else
            echo "IEBEDIT  (S) ERROR: Unable to determine output file name"
            echo "IEBEDIT  (S) ERROR: dataset or filename is required"
         fi 
      else
         cp $DD_SYSUT2  $SYSUT2_FILENAME
         echo "IEBEDIT  (I) copy complete, file created: $SYSUT2_FILENAME"
      fi
   ;;
   SYSOUT|sysout)
      if [ "a$SYSUT2_WRITER" != a ]
      then
         if [ $SYSUT2_WRITER = INTRDR ]
         then
            workdir=${EBMTMPDIR}/IEBEDIT_${EBMSYS}_${JON}
            rm -fr $workdir
            mkdir $workdir 
            if [ $? != 0 ]
            then
               echo "IEBEDIT  (S) Unable to create work directory: $workdir"
               echo 16 > status.${JON}
               exit 16
            else
               command="mkdir ${workdir}/jmvs ${workdir}/ish ${workdir}/include"
               $command
               if [ $? != 0 ]
               then
                  echo "IEBEDIT  (S) Unable to create work directories: $command"
                  echo 16 > status.${JON}
                  exit 16
               fi
            fi
        
            echo "IEBEDIT  (I) submitting job stream for translation: "
            echo "IEBEDIT  (I) start JCL stream:"
            echo " "
            cat $LN_SYSUT1
            echo " "
            echo "IEBEDIT  (I) end JCL stream:"
            echo " "
            echo " "
	    #
	    # need to get this job's name from the job card
	    # of SYSUT1
	    #
	    cat $LN_SYSUT1 | while read linein 
	    do
               tmp=`echo $linein | cut -f1 -d' '`
               jobname=`echo $tmp | cut -f3 -d'/'`
	       break
	    done
	    #
	   if [ "a${jobname}" = "a" ]
	   then
              echo 16 > ${original_workdir}/status.${JON}
              echo "IEBEDIT  (S) jobname not found in LN_SYSUT1"
              exit 16
	   fi
            cp $LN_SYSUT1  ${workdir}/jmvs/${jobname}
            cd $workdir
            mvstrans ${jobname} -v
            if [ $? = 0 ]
            then
               mvstrans ${jobname} -f
               if [ $? = 0 ]
                  then
                  echo " "
                  echo "IEBEDIT  (I) submitting BATCH job for execution: "
                  echo "IEBEDIT  (I) start display of BATCH job:"
                  echo " "
                  cat ish/${jobname}
                  echo " "
                  echo "IEBEDIT  (I) end display of BATCH job:"
                  echo " "
                  if [ "a$KIXSYS" != a ]
                  then 
                     unikixjob ${jobname}  -k${EBMSYS}
                  else
                     subjob ${jobname} -k${EBMSYS} 
                  fi
                  ##########################
                  #######  rm -fr $workdir
                  ##########################
               else
                  echo "IEBEDIT  (S) mvstrans ${workdir}/jmvs/${jobname} -f failed"
                  echo 16 > ${original_workdir}/status.${JON}
                  exit 16
               fi
            else
               echo "IEBEDIT  (S) mvstrans ${workdir}/jmvs/${jobname} -v failed"
               echo 16 > ${original_workdir}/status.${JON}
               exit 16
            fi
         else
            cp $LN_SYSUT1 $DD_SYSUT2
         fi
      fi
   ;;
   *)
      echo "IEBEDIT  (S) ERROR: output filetype not supported: $SYSUT2_FILETYPE"
      echo 16 > ${original_workdir}/status.${JON}
      exit 16
   ;;
esac
echo 0 > ${original_workdir}/status.${JON}
echo "End:    IEBEDIT" 
exit 0
