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

########################################################################
#                                                                      #
# EBM BATCH JOB MACRO :     Updated Version of SETRINT Macro V. 1.9    #
# Purpose             :     Define processing options for print files. #
#                                                                      #
########################################################################

. verify_jobstatus
. beginjob.${EBMSYS}.${JON}
. current_proc_level.${EBMSYS}.${JON}

STEPNAME='';export STEPNAME

if [ -f label.${EBMSYS}.${JON}.${PROC_LEVEL} ]
then
   . label.${EBMSYS}.${JON}.${PROC_LEVEL}
fi

print_message_STEPNAME=$STEPNAME; export print_message_STEPNAME

if [ -f beginproc.setparms.${EBMSYS}.${JON}.${PROC_LEVEL} ]
then
   . beginproc.setparms.${EBMSYS}.${JON}.${PROC_LEVEL}
fi


if [ -f setparm.${EBMSYS}.${JON}.${PROC_LEVEL} ]
then
   . setparm.${EBMSYS}.${JON}.${PROC_LEVEL}
fi


#------------------------------------------------------------------------------
# SETPRINT standard options
#------------------------------------------------------------------------------

for argument in $*
do
  option=`eval echo $argument`; export option
  case $option in
    ddname=*|DDNAME=*)
       DDNAME="`eval echo $option|cut -f2 -d'='`"
       export DDNAME
       ;;
    disp=*|DISP=*)
       # avoid confusion with ASSGNDD disp option, this one is for
       # sysout only and comes from the $$ LST card
       LSTDISP="`eval echo $option|cut -f2 -d'='`"
       export LSTDISP
       ;;
    overridedd=*|OVERRIDEDD=*)
       OVERRIDEDD="`eval echo $option|cut -f2 -d'='`"
       export OVERRIDEDD
       ;;
    printid=*|PRINTID=*)
       PRINTID="`eval echo $option|cut -f2 -d'='`"
       export PRINTID
       ;;
    pwd=*|PWD=*)
       # avoid confusion with system PWD which is a working directory
       # sysout only and comes from the $$ LST card
       LSTPWD="`eval echo $option|cut -f2 -d'='`"
       export LSTPWD
       ;;
    scope=*|SCOPE=*)
       scope="`eval echo $option|cut -f2 -d'='`"
       export scope
       SCOPE="`echo $scope | tr '[a-z]' '[A-Z]'`"  
       export SCOPE
       ;;
    verbose|VERBOSE)
      VERBOSE=YES
      export VERBOSE 
      ;;
    *)
      . sysout.verify_attr
      if [ "a$INVALID_OPTION" != "a" ]
      then 
         echo " "
         print_message SETPRINT "ERROR   Invalid Option: $option"
         echo " "
         . set_jobstatus_abort
         ABORT=YES; export ABORT
         break
      fi
    ;;
  esac
done
if [ "a$ABORT" = "aYES" ]
then
   exit 0
fi

if [ "a$SCOPE" = "a" ]
then
   SCOPE=DD; export SCOPE
fi

if [ "a$VERBOSE" = "aYES" ]
then
 
   echo " "
   print_message SETPRINT "----------Starting in verbose mode----------"
fi

case $SCOPE in
   DD|dd)
      SCOPE=DD;export SCOPE
      if [ "a$DDNAME" = "a" ]
      then
         print_message SETPRINT "ERROR   Invalid Syntax scope=DD requires ddname"
         . set_jobstatus_abort
         ABORT=YES; export ABORT
         break
      fi
   ;;
   JOB|job)
      SCOPE=JOB;export SCOPE
      if [ "a$PRINTID" = "a" ]
      then
         print_message SETPRINT "ERROR   scope=JOB requires the printid option"
         . set_jobstatus_abort
         ABORT=YES; export ABORT
         break
      fi
   ;;
   JOB_DEFAULT|job_default|JOB-DEFAULT|job-default)
      SCOPE=JOB_DEFAULT;export SCOPE
   ;;
   STEP|step)
      SCOPE=STEP;export SCOPE
      if [ "a$PRINTID" = "a" ]
      then
         print_message SETPRINT "ERROR   scope=STEP requires option:  printid"
         . set_jobstatus_abort
         ABORT=YES; export ABORT
         break
      fi
   ;;
   STEP_DEFAULT|step_default|STEP-DEFAULT|step-default)
      SCOPE=STEP_DEFAULT;export SCOPE
   ;;
   *)
      print_message SETPRINT "ERROR   Invalid Syntax: scope=$SCOPE"
      . set_jobstatus_abort
      ABORT=YES; export ABORT
      break
   ;; 
esac

if [ "a$ABORT" = "aYES" ]
then
   exit 0
fi


#------------------------------------------------------------------------------
# if OVERRIDEDD is YES, then this was translated from a JES2 OUTPUT 
# statement.  
#------------------------------------------------------------------------------

if [ "a$OVERRIDEDD" != "a" ]
then
   case $OVERRIDEDD in
      Y|YES|y|yes)
         OVERRIDEDD=Y;export OVERRIDEDD
         EXEC_PHASE=post_assgndd; export EXEC_PHASE
      ;;
      N|NO|n|no)
         OVERRIDEDD=N;export OVERRIDEDD
         EXEC_PHASE=pre_assgndd; export EXEC_PHASE
      ;;
      *)
         print_message SETPRINT "ERROR   Invalid Syntax:  overridedd=$OVERRIDEDD"
         . set_jobstatus_abort
         ABORT=YES; export ABORT
   esac
fi

if [ "a$PRINTID" = "a" -a "a$DDNAME" = "a" ]
then
   print_message SETPRINT "ERROR   Invalid syntax:  printid or ddname is required"
   . set_jobstatus_abort
   ABORT=YES; export ABORT
fi

if [ "a$ABORT" = "aYES" ]
then
   exit 0
fi

#------------------------------------------------------------------------------
# VERBOSE - Display values of SETPRINT standard options
#
# The STD_OPTIONS variable defines a list containing the standard options
# of the SETPRINT macro.
#
#------------------------------------------------------------------------------
if [ "a$VERBOSE" = "aYES" ]
then
   ebmsed EBM_PRINT_OPTIONS SETPRINT "DDNAME OVERRIDEDD PRINTID SCOPE"
fi

if [ "a$OVERRIDEDD" = "a" ]
then
   OVERRIDEDD=N;export OVERRIDEDD
   EXEC_PHASE=pre_assgndd; export EXEC_PHASE
fi

if [ "a$PRINTID" = "a" ]
then
   PRINTID=''; export PRINTID
fi

if [ $PROC_LEVEL -ne 0 ]
then
   if [ "a$CALLERS_STEPNAME" != "a" ] 
   then
      SNAME=$CALLERS_STEPNAME; export SNAME
   else
      SNAME=''; export SNAME
   fi

   PSNAME=$STEPNAME; export PSNAME
else
   SNAME=$STEPNAME; export SNAME
   PSNAME=''; export PSNAME
fi
 
#----------------------------------------------------------------------------
# SETPRINT workfiles can be any of the following formats:
#
#
# case $SCOPE
#
#    DD      only one format is allowed:
#
#       ${DDNAME}_setprint.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
#   
#
#    JOB|JOB_DEFAULT
#
#       if PRINTID is defined 
#          ${PRINTID}.setprint.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
#       else
#                     setprint.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
#       fi
#
#    STEP|STEP_DEFAULT
#
#       if PRINTID is defined 
#          if in a procedure:
#             ${PRINTID}.setprint_${SNAME}_${PSNAME}.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
#          else
#             ${PRINTID}.setprint_${SNAME}.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
#          fi
#       else 
#          if in a procedure:
#             setprint_${SNAME}_${PSNAME}.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
#          else
#             setprint_${SNAME}.${PSNAME}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
#          fi
#       fi
#
#----------------------------------------------------------------------------

case $SCOPE in
#----------------------------------------------------------------------------
   DD)
      EXEC_PHASE=pre_assgndd; export EXEC_PHASE

      SETPRINT_FILENAME=${DDNAME}.setprint.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
      export SETPRINT_FILENAME
      cat <$DEVNULL > $SETPRINT_FILENAME 
   ;;
#----------------------------------------------------------------------------
   JOB|JOB_DEFAULT)
      case $PRINTID in
         '')
            SETPRINT_FILENAME=setprint.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
            export SETPRINT_FILENAME
         ;;

         *)
            SETPRINT_FILENAME=${PRINTID}.setprint.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
            export SETPRINT_FILENAME
            if [ "$BATCH_MODE" = "VSE" ]
            then
               if [ -f $SETPRINT_FILENAME ]
               then
                  cat <$DEVNULL >  $SETPRINT_FILENAME
               fi
            fi
         ;;
      esac
   ;;

#----------------------------------------------------------------------------
   STEP|STEP_DEFAULT)
      case $PRINTID in
         '')
            case $PROC_LEVEL in
               0)
                  SETPRINT_FILENAME=setprint_${SNAME}.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
                  export SETPRINT_FILENAME
               ;;

               *)
                  SETPRINT_FILENAME=setprint_${SNAME}_${PSNAME}.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
                  export SETPRINT_FILENAME
               ;;
            esac
         ;;

         *)
            case $PROC_LEVEL in
               0)
                  SETPRINT_FILENAME=${PRINTID}.setprint_${SNAME}.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
                  export SETPRINT_FILENAME
               ;;

               *)
                  SETPRINT_FILENAME=${PRINTID}.setprint_${SNAME}_${PSNAME}.${SCOPE}.${EXEC_PHASE}.${EBMSYS}.${JON}.${PROC_LEVEL}
                  export SETPRINT_FILENAME
               ;;
            esac
         ;;
      esac
      echo "rm -f $SETPRINT_FILENAME" >> ${JON}_WK2n
      echo "#LCB rmf $SETPRINT_FILENAME" >> ${JON}_WK2n
      echo "rm -f $SETPRINT_FILENAME" >> ${JON}_WK2a
      echo "#LCB rmf $SETPRINT_FILENAME" >> ${JON}_WK2a
   ;;
#----------------------------------------------------------------------------
esac
#----------------------------------------------------------------------------

#------------------------------------------------------------------------------
# If migrating from MVS, a JES2 /*OUTPUT id ...  can be continued by coding 
# multiple statements with the same id. mvstrans generates multiple SETPRINT 
# macros with the same id.  # The options specified by multiple SETPRINTs with 
# the same id must be appended. JES2 /*OUTPUTS always generate a PRINTID
#------------------------------------------------------------------------------
if [ "$BATCH_MODE" = "MVS" ]
then
   if [ ! -f $SETPRINT_FILENAME ]
   then
      cat <$DEVNULL >  $SETPRINT_FILENAME
   fi
fi

#------------------------------------------------------------------------------
# Build all print option variable assignments in:
#      $SETPRINT_FILENAME 
#
# SYSOUT_VARIABLES is a variable defined by the BEGINJOB macro 
# in the beginjob.${EBMYS}.${JON} file. It is a list of all print 
# attribute variable names.
#
# If a new print variable or option is required, it must be added 
# to the list specified in the BEGINJOB macro and added to the
# sysout_verify_attr utility.
#
# All print-related options can be specified on the SETPRINT macro. 
# The  ASSGNDD macro can set only dest and copies.
#------------------------------------------------------------------------------
 
ebmsed EBM_SET_SETRINT_VALUES $SETPRINT_FILENAME "$SYSOUT_VARIABLES"

chmod 755 $SETPRINT_FILENAME

#------------------------------------------------------------------------------
# VERBOSE
#------------------------------------------------------------------------------
# Display the values of all print related options
#
# SYSOUT_OPTIONS are set when the beginjob.${EBMYS}.${JON} file is sourced.
#
# If a new option is required, it must be added to the list specified
# in the BEGINJOB MACRO.
#
# Any of these options can be specified on the SETPRINT macros.
# ASSGNDD can specify dest or copies
#------------------------------------------------------------------------------
 
if [ "a$VERBOSE" = "aYES" ]
then
   ebmsed EBM_PRINT_OPTIONS SETPRINT "$SYSOUT_OPTIONS"
fi

exit 0
