#/ ---------------------------------------------------------------------------------
#/ This template generates job steps to execute the following:
#/ - Update the deployment registry using the script created by the Install Tool
#/ - Clear the VJR cache
#/ - Update the valid job drivers
#/ - Clean up temporary files no longer needed, including the temporary setinit
#/   files, SAS core catalog files, and deployment registry update file.
#/ Because the work is done in a shell script, the generated job steps include a
#/ TSO step to create the shell script file, followed by a BPXBATCH step to execute
#/ the shell script. The output from the shell script is written to files that
#/ another TSO step copies to SYSOUT datasets so that the output is viewable in the
#/ job output. Finally, a cleanup step deletes temporary output files.
#/ ---------------------------------------------------------------------------------
#/
//*
//* This job step creates a shell script that runs the post
//* install tasks. This script is executed by the next job step.
//*
//POSTINST EXEC PGM=IKJEFT1B,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=[SYSOUT]
//SCRIPT DD *
#! /bin/sh      #/ force default shell
OSTMPDIR1=[OSTEMPDIR1]
export OSTMPDIR1
OSTMPDIR2=[OSTEMPDIR2]
export OSTMPDIR2
OSTMPDIR3=[OSTEMPDIR3]
export OSTMPDIR3
OSTEMPDIR=$OSTMPDIR1$OSTMPDIR2$OSTMPDIR3
export OSTEMPDIR
SHERR=$OSTEMPDIR/[DATETIMEPFX].postinst.sherr
export SHERR
msg="Performing post install processing..."
echo $msg
echo "CONTROL ASIS" > $SHERR
echo "WRITE $msg" >> $SHERR
JREHOME1=[SDW_JREHOME1]
export JREHOME1
JREHOME2=[SDW_JREHOME2]
export JREHOME2
JREHOME3=[SDW_JREHOME3]
export JREHOME3
JREHOME4=[SDW_JREHOME4]
export JREHOME4
JRELIB=$JREHOME1$JREHOME2$JREHOME3$JREHOME4/lib
export JRELIB
JREBIN=$JREHOME1$JREHOME2$JREHOME3$JREHOME4/bin
export JREBIN
PATH=$JRELIB:$JREBIN:$PATH:/bin:/usr/bin
export PATH
SASHOMEDIR="[SASHOME]"
export SASHOMEDIR
msg="Updating the deployment registry..."
echo $msg
echo "WRITE $msg" >> $SHERR
DRDIR="$SASHOMEDIR/deploymntreg"
export DRDIR
DRJAR="$DRDIR/sas.tools.deploymntreg.jar"
export DRJAR
DRINPUT="$SASHOMEDIR/InstallMisc/DepRegUpdateData.xml"
export DRINPUT
if test ! -d $DRDIR
then
  msg="Missing deployment registry directory $DRDIR"
  echo $msg
  echo "WRITE $msg" >> $SHERR
  echo "EXIT CODE(12)" >> $SHERR
  exit 12
fi
if test ! -f $DRJAR
then
  msg="Missing deployment registry jar file $DRJAR"
  echo $msg
  echo "WRITE $msg" >> $SHERR
  echo "EXIT CODE(12)" >> $SHERR
  exit 12
fi
if test ! -f $INPUT
then
  msg="Missing deployment registry update data file $DRINPUT"
  echo $msg
  echo "WRITE $msg" >> $SHERR
  echo "EXIT CODE(12)" >> $SHERR
  exit 12
fi
msg="Running java -jar $DRJAR --file $DRINPUT"
echo $msg
java -jar $DRJAR --file $DRINPUT
rc=$?
if test ! "$rc" = 0
then
  msg="Failure updating the deployment registry."
  echo $msg	
  echo "WRITE $msg" >> $SHERR
  echo "EXIT CODE(12)" >> $SHERR
  exit 12
fi
msg="Deployment registry update completed successfully."
echo $msg
echo "WRITE $msg" >> $SHERR
#/ 
#/ Currently the VJR is not installed for Z64
#/
#IFEQ [HOST] z64 #THEN NOVJR
msg="Initializing the VJR cache..."
echo $msg
echo "WRITE $msg" >> $SHERR
VJRHOME1=[VJRHOME1]
export VJRHOME1
VJRHOME2=[VJRHOME2]
export VJRHOME2
VJRHOME3=[VJRHOME3]
export VJRHOME3
VJRHOME4=[VJRHOME4]
export VJRHOME4
VJRHOME=$VJRHOME1$VJRHOME2$VJRHOME3$VJRHOME4
export VJRHOME
VJRJAR=$VJRHOME/eclipse/plugins/sas.launcher.jar
export VJRJAR
if test ! -d $VJRHOME
then
  msg="Missing VJR home directory $VJRHOME"
  echo $msg
  echo "WRITE $msg" >> $SHERR
  echo "EXIT CODE(12)" >> $SHERR
  exit 12
fi
if test ! -f $VJRJAR
then
  msg="Missing VJR plugin $VJRJAR"
  echo $msg
  echo "WRITE $msg" >> $SHERR
  echo "EXIT CODE(12)" >> $SHERR
  exit 12
fi
msg="Running java -cp $VJRJAR com.sas.app.NonAPI -install"
echo $msg
java -cp $VJRJAR com.sas.app.NonAPI -install
rc=$?
if test ! "$rc" = 0
then
  msg="Failure initializing the VJR cache."
  echo $msg
  echo "WRITE $msg" >> $SHERR
  echo "EXIT CODE(12)" >> $SHERR
  exit 12
fi
msg="VJR cache initialization completed successfully."
echo $msg
echo "WRITE $msg" >> $SHERR
#NOVJR
msg="Updating the valid job drivers..."
echo $msg
echo "WRITE $msg" >> $SHERR
DWIZDIR1=[SDWPATH1]
export DWIZDIR1
DWIZDIR2=[SDWPATH2]
export DWIZDIR2
DWIZDIR3=[SDWPATH3]
export DWIZDIR3
DWIZDIR4=[SDWPATH4]
export DWIZDIR4
DWIZDIR=$DWIZDIR1$DWIZDIR2$DWIZDIR3$DWIZDIR4
export DWIZDIR
ITJAR="$DWIZDIR/[ITJAR]"
export ITJAR
SDWJAR="$DWIZDIR/setup.jar"
export SDWJAR
CP="$ITJAR:$SDWJAR"
export CP
#/
#/ S1551424: need to be backward compatible, so we have
#/ to use the correct package for ZosMain. Initially set
#/ the package name to the new one. If the new
#/ Allocate.txt template is not present, set the package
#/ name to the old one.
#/ 
MAIN="com.sas.tools.installs.it.zos.ZosMain"
ALLOC="$DWIZDIR/MVSTemplates/Allocate.txt"
if test ! -f $ALLOC
then
  MAIN="com.sas.tools.installs.it.ZosMain"
fi
export MAIN
HLQ="-hlq [CUSTPRODQUAL]"
export HLQ
ENC="-encoding [ORDERENCODING]"
export ENC
LC="-language [LANGCODE]"
export LC
FE="-Dfile.encoding=IBM-1047"
export FE
TD="-Djava.io.tmpdir=$OSTEMPDIR"
export TD
OPTIONS="-DSASHome=$SASHOMEDIR $FE $TD"
export OPTIONS
msg="Running java -cp $CP $OPTIONS $MAIN $HLQ $ENC $LC"
echo $msg
java -cp $CP $OPTIONS $MAIN $HLQ $ENC $LC
rc=$?
if test ! "$rc" = 0
then
  msg="Failed to update valid job drivers"
  echo "WRITE $msg" >> $SHERR
  echo "EXIT CODE(12)" >> $SHERR
  exit 12
fi
msg="Valid job drivers updated successfully."
echo $msg
echo "WRITE $msg" >> $SHERR
#IFEQ [HOTFIX] FALSE #THEN DONE
msg="Updating CLIST/PROC/REXX/CONFIG datasets to remove non-staged"
echo $msg
echo "WRITE $msg" >> $SHERR
msg="dataset references."
echo $msg
echo "WRITE $msg" >> $SHERR
MAIN="com.sas.tools.installs.it.tasks.MvsextractTask"
export MAIN
MVSTEMPLATES=$DWIZDIR/MVSTemplates
export MVSTEMPLATES
MT="-DMVSTemplatesLocation=$MVSTEMPLATES"
export MT
FE="-Dfile.encoding=IBM-1047 -Dconsole.encoding=IBM-1047"
export FE
TD="-Djava.io.tmpdir=$OSTEMPDIR"
export TD
OPTIONS="-DSASHome=$SASHOMEDIR $FE $TD"
export OPTIONS
#IFNOTEQ [HOST] z64 #THEN NOT64
Z64="-z64"
#THEN DOIT
Z64=""
#NOT64
#DOIT
export Z64
msg="Running java -cp $CP $OPTIONS $MT $MAIN [STAGEQUAL] $Z64"
echo $msg
java -cp $CP $OPTIONS $MT $MAIN [STAGEQUAL] $Z64
rc=$?
if test ! "$rc" = 0
then
  msg="Failed to remove non-staged dataset references"
  echo "WRITE $msg" >> $SHERR
  echo "EXIT CODE(12)" >> $SHERR
  exit 12
fi
msg="Non-staged dataset references removed successfully"
echo $msg
echo "WRITE $msg" >> $SHERR
#DONE
msg="Performing final cleanup"
echo $msg
echo "WRITE $msg" >> $SHERR
CAT1=[SETINITDIR1]
export CAT1
CAT2=[SETINITDIR2] 
export CAT2
CAT3=[SETINITDIR3]
export CAT3
CATDIR=$CAT1$CAT2$CAT3
export CATDIR 
msg="Removing temporary catalog directory $CATDIR..."
echo $msg
echo "WRITE $msg" >> $SHERR
rm -rfv $CATDIR
rc=$?
if test "$rc" = "0"
then
  msg="Removed temporary catalog directory $CATDIR"
  echo $msg
  echo "WRITE $msg" >> $SHERR
else
  msg="Failed to remove temporary catalog directory $CATDIR"
  echo $msg
  echo "WRITE $msg" >> $SHERR
  msg="Removal of temporary catalog directory failed. This is not"
  echo "WRITE $msg" >> $SHERR
  msg="a fatal error, but the following directory and its contents"
  echo "WRITE $msg" >> $SHERR
  msg="should be removed manually:"
  echo "WRITE $msg" >> $SHERR
  echo "WRITE $DIR" >> $SHERR
fi
msg="Removing temporary setinit files..."
echo $msg
echo "WRITE $msg" >> $SHERR
rm -rfv $SASHOMEDIR/InstallMisc/setinit.*.sas
rc=$?
if test "$rc" = "0"
then
  msg="Removed temporary setinit files"
  echo $msg
  echo "WRITE $msg" >> $SHERR
else
  msg="Failed to remove temporary setinit files"
  echo $msg
  echo "WRITE $msg" >> $SHERR
  msg="Removal of temporary setinit files failed. This is not"
  echo "WRITE $msg" >> $SHERR
  msg="a fatal error, but the following directory and its contents"
  echo "WRITE $msg" >> $SHERR
  msg="should be removed manually:"
  echo "WRITE $msg" >> $SHERR
  echo "WRITE $DIR" >> $SHERR
fi
msg="Removing deployment registry update file $DRINPUT"
echo $msg
echo "WRITE $msg" >> $SHERR
rm -fv $DRINPUT
rc=$?
if test "$rc" = "0"
then
  msg="Removed deployment registry update file"
  echo $msg
  echo "WRITE $msg" >> $SHERR
else
  msg="Failed to remove deployment registry update file. This is"
  echo $msg
  echo "WRITE $msg" >> $SHERR
  msg="not a fatal error, but the file should be removed"
  echo "WRITE $msg" >> $SHERR
  msg="manually:"
  echo "WRITE $msg" >> $SHERR
  echo "WRITE $DRINPUT" >> $SHERR
fi
msg="Post install processing completed successfully."
echo $msg
echo "WRITE $msg" >> $SHERR
echo "EXIT CODE(0)" >> $SHERR           
exit 0
/*
//DFALTERR DD *
CONTROL ASIS
WRITE Post install processing failed.
EXIT CODE(16)
//SYSTSIN DD *
 ALLOC FILE(OUTPUT) +
   PATH('[OSTEMPDIR1]+
#IFNOT [OSTEMPDIR2] #THEN NEXT
  [OSTEMPDIR2]+
#NEXT
#IFNOT [OSTEMPDIR3] #THEN NEXT
   [OSTEMPDIR3]+
#NEXT 
  /[DATETIMEPFX].postinst.sh') +
  PATHOPTS(OWRONLY,OCREAT) PATHMODE(SIRUSR,SIWUSR)
 OCOPY INDD(SCRIPT) OUTDD(OUTPUT) TEXT
 ALLOC FILE(ERROUT) +
   PATH('[OSTEMPDIR1]+
#IFNOT [OSTEMPDIR2] #THEN NEXT
  [OSTEMPDIR2]+
#NEXT
#IFNOT [OSTEMPDIR3] #THEN NEXT
  [OSTEMPDIR3]+
#NEXT 
  /[DATETIMEPFX].postinst.sherr') +
  PATHOPTS(OWRONLY,OCREAT) PATHMODE(SIRUSR,SIWUSR)
 OCOPY INDD(DFALTERR) OUTDD(ERROUT) TEXT
/*
//*
//* This job step executes the shell script created by the previous
//* job step. The shell script also creates a CLIST that writes out
//* messages, and is executed by the next job step.
//*
// SET OSTMP1='[OSTEMPDIR1]'
// SET OSTMP2='[OSTEMPDIR2]'      
// SET OSTMP3='[OSTEMPDIR3]'
//SHELLRUN EXEC PGM=BPXBATCH,PARM='SH',COND=(0,LT)
//STDIN  DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].postinst.sh',
//       PATHOPTS=(ORDONLY)
//STDOUT DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].postinst.out',
//       PATHOPTS=(OWRONLY,OCREAT),PATHMODE=(SIRUSR,SIWUSR)
//STDERR DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].postinst.err',
//       PATHOPTS=(OWRONLY,OCREAT),PATHMODE=(SIRUSR,SIWUSR)
//*
//* This job step copies the stdout and stderr files from the
//* previous step into SYSOUT datasets so that they can be retrieved
//* with the rest of the job output. It then executes the CLIST
//* created by the previous job step. The CLIST writes out any
//* error messages that were generated during the execution of
//* the shell script in the previous job step. 
//*
//SHELLOUT EXEC PGM=IKJEFT1B,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=[SYSOUT]
//STDOUT DD SYSOUT=[SYSOUT],DCB=(RECFM=VB,LRECL=1020,BLKSIZE=1024)
//STDERR DD SYSOUT=[SYSOUT],DCB=(RECFM=VB,LRECL=1020,BLKSIZE=1024)
//CLIST DD DISP=(NEW,CATLG),
// DSN=[CUSTPRODQUAL].POSTINST.EXEC,
// UNIT=[DISKUNIT],SPACE=(TRK,(1,1)),
// DCB=(RECFM=VB,LRECL=255,BLKSIZE=6160)
//SYSTSIN DD *
 ALLOCATE FILE(INPUT) PATHOPTS(ORDONLY) +
   PATH('[OSTEMPDIR1]+
#IFNOT [OSTEMPDIR2] #THEN NEXT
  [OSTEMPDIR2]+
#NEXT
#IFNOT [OSTEMPDIR3] #THEN NEXT
  [OSTEMPDIR3]+
#NEXT  
   /[DATETIMEPFX].postinst.out')
 OCOPY INDD(INPUT) OUTDD(STDOUT) TEXT
 FREE FILE(INPUT)
 ALLOCATE FILE(INPUT) PATHOPTS(ORDONLY) +
   PATH('[OSTEMPDIR1]+
#IFNOT [OSTEMPDIR2] #THEN NEXT
  [OSTEMPDIR2]+
#NEXT
#IFNOT [OSTEMPDIR3] #THEN NEXT
  [OSTEMPDIR3]+
#NEXT   
   /[DATETIMEPFX].postinst.err')
 OCOPY INDD(INPUT) OUTDD(STDERR) TEXT
 FREE FILE(INPUT)
 ALLOCATE FILE(INPUT) PATHOPTS(ORDONLY) +
   PATH('[OSTEMPDIR1]+
#IFNOT [OSTEMPDIR2] #THEN NEXT
  [OSTEMPDIR2]+
#NEXT
#IFNOT [OSTEMPDIR3] #THEN NEXT
  [OSTEMPDIR3]+
#NEXT   
  /[DATETIMEPFX].postinst.sherr')
 OCOPY INDD(INPUT) OUTDD(CLIST) TEXT
 EXEC '[CUSTPRODQUAL].POSTINST.EXEC'
/*
//*
//* This job step deletes the shell script file and its output
//* files, along with the temporary CLIST dataset
//*
// SET OSTMP1='[OSTEMPDIR1]'
// SET OSTMP2='[OSTEMPDIR2]'      
// SET OSTMP3='[OSTEMPDIR3]'
//CLEANUP  EXEC PGM=IEFBR14
//DD1 DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].postinst.sh',
//     PATHOPTS=ORDONLY,PATHDISP=DELETE
//DD2 DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].postinst.out',
//     PATHOPTS=ORDONLY,PATHDISP=DELETE
//DD3 DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].postinst.err',
//     PATHOPTS=ORDONLY,PATHDISP=DELETE
//DD4 DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].postinst.sherr',
//     PATHOPTS=ORDONLY,PATHDISP=DELETE
//DD5 DD DISP=(MOD,DELETE,DELETE),
//  DSN=[CUSTPRODQUAL].POSTINST.EXEC,
//  UNIT=[DISKUNIT],SPACE=(TRK,(1)),
//  DCB=(RECFM=VB,LRECL=255,BLKSIZE=6160)
//*
