#BEGINBUCKET UNLOADUSS
#/ ----------------------------------------------------------------------
#/ This template provides a single TSO batch execution to unload all USS
#/ content into SASHOME. 
#/ ----------------------------------------------------------------------
#/ ------------------------------------------------------------------
#BEGINDEFS
#/ ------------------------------------------------------------------
#/EXCEPTIONFORMISSINGSYMBOL
#SYMBOLCALLS SYSOUT;SSDDIR1;SSDDIR2;SSDDIR3;CUSTPRODQUAL;STAGEQUAL;
#/ -------------------------------------------------
#BEGININSTANCEQUALIFIERS
#/ -------------------------------------------------
#IFEQ {ENCODE} [ORDERENCODING] #THEN PASSESENCODE
#IF [INSTALLENCODEDONLY] #THEN DOESNOTQUALIFY
#IFNOTEQ {ENCODE} NE #THEN DOESNOTQUALIFY
#PASSESENCODE
#IFEQ {ARTIFACTTYPE} DIR #CREATEINSTANCEFROMENTRY
#DOESNOTQUALIFY
#ENDQUALIFIERS
#/ -------------------------------------------------------------------
#/ Prefix invokes SAS from the targeted SAS installation. The first
#/ step allocates the CNTLDSN as OLD, because the installation requires
#/ exclusive access to that dataset. If the user is using ISPF edit mode
#/ to submit the install job, this will cause the job to wait until the
#/ user has exited ISPF edit mode on the dataset.
#/ -------------------------------------------------------------------
#BEGINPREFIX
//INSTCTL EXEC PGM=IEFBR14
//CHGDISP DD DSN=[CNTLDSN],
//      DISP=OLD
//*
//UNLDUSS EXEC PGM=IKJEFT1B,DYNAMNBR=20,COND=(0,LT)
//SYSTSPRT DD SYSOUT=[SYSOUT]
//SCRIPT DD *
#! /bin/sh      #/ force default shell
PATH=$PATH:/bin:/usr/bin
export PATH
SASHOMEDIR='[SASHOME]'
export SASHOMEDIR
OSTMPDIR1=[OSTEMPDIR1]
export OSTMPDIR1
OSTMPDIR2=[OSTEMPDIR2]
export OSTMPDIR2
OSTMPDIR3=[OSTEMPDIR3]
export OSTMPDIR3
OSTEMPDIR=$OSTMPDIR1$OSTMPDIR2$OSTMPDIR3
export OSTEMPDIR
VER='9.4'
export VER
LVER='94'
export LVER
umask 0022
msg="Beginning installation of SAS USS components."
echo $msg
rm -f $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
echo "CONTROL ASIS" > $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr

if test ! -d $SASHOMEDIR
then
 mkdir -p $SASHOMEDIR
 rc=$?
 if test ! "$rc" = 0
 then
  msg="Unable to make the directory $SASHOMEDIR"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
 fi
fi

cd $SASHOMEDIR
rc=$?
if test ! "$rc" = "0"
then
 msg="Unable to change directory to $SASHOMEDIR"
 echo $msg
 echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
 echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
 exit 12
fi

if test ! -d SASVersionedJarRepository/
then
 mkdir -p SASVersionedJarRepository/
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to mkdir SASVersionedJarRepository/"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -d SASGraphJavaApplets/$VER/
then
 mkdir -p SASGraphJavaApplets/$VER/
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to mkdir SASGraphJavaApplets/$VER/"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -d SASSQLLibraryForC/$VER/
then
 mkdir -p SASSQLLibraryForC/$VER/
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to mkdir SASSQLLibraryForC/$VER/"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -d CGIToolsForTheWebServer/$VER/
then
 mkdir -p CGIToolsForTheWebServer/$VER/
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to mkdir CGIToolsForTheWebServer/$VER/"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -d SASFoundation/$VER/
then
 mkdir -p SASFoundation/$VER/
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to makedir SASFoundation/$VER/"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -d SASFoundation/$VER/core/sasext/
then
 mkdir -p SASFoundation/$VER/core/sasext/
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to mkdir SASFoundation/$VER/core/sasext/"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -d SASSecurityCertificateFramework/
then
 mkdir -p SASSecurityCertificateFramework/
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to mkdir SASSecurityCertificateFramework/"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -L SVJR
then
 ln -s SASVersionedJarRepository/ SVJR
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to establish link SVJR"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -L SGJA$LVER
then
 ln -s SASGraphJavaApplets/$VER/ SGJA$LVER
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to establish link SGJA$LVER"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -L SQLC$LVER
then
 ln -s SASSQLLibraryForC/$VER/ SQLC$LVER
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to establish link SQLC$LVER"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -L SCGI$LVER
then
 ln -s CGIToolsForTheWebServer/$VER/ SCGI$LVER
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to establish link SCGI$LVER"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

if test ! -L SF$LVER
then
 ln -s SASFoundation/$VER/ SF$LVER
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to establish link SF$LVER"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

 if test ! -L SSCF
then
 ln -s SASSecurityCertificateFramework/ SSCF
rc=$?
 if test ! "$rc" = "0"
 then
  msg="Unable to establish link SSCF"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
  fi
 fi

#/ -------------------------------------------------------------------
#BEGININSTANCE    #/ use internal SAS fastcopy procedure to copy source lib to target lib
#/ -------------------------------------------------------------------
PRODHOME="SASFoundation/$VER/"
#IFEQ {PRODUCT} sqllibc #:PRODHOME="SASSQLLibraryForC/$VER/"
#IFEQ {PRODUCT} cgitools #:PRODHOME="CGIToolsForTheWebServer/$VER/"
#IFEQ {ARTIFACTNAME} vjr.dir #:PRODHOME="SASVersionedJarRepository/"
#IFNOTEQ {PRODUCT} graph #THEN NEXT
#IFEQ {ARTIFACTNAME} applets.dir #:PRODHOME="SASGraphJavaApplets/$VER/"
#NEXT
export PRODHOME
ssddir1='[SSDDIR1]'
ssddir2='[SSDDIR2]'
ssddir3='[SSDDIR3]'
ssddir4='[SSDDIR4]'
cntnam='/{LANG}/{ARTIFACTNAME}'
cd $ssddir1$ssddir2$ssddir3$ssddir4$cntnam
cp -R -v -f * $SASHOMEDIR/$PRODHOME
rc=$?
if test ! "$rc" = "0"
then
  msg="Exceptions extracting $ssddir1$ssddir2$ssddir3$ssddir4$cntnam"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE($rc)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit $rc
fi
find $SASHOMEDIR/$PRODHOME -name "*.groovy" -print | 
while read gfile ; do
dd if="$gfile" bs=512 count=1 2> /dev/null | od -h | 
grep ' 0A' > /dev/null && ( 
iconv -f ISO8859-1 -t IBM-1047 "$gfile" > "$gfile"ebcdic
rc1=$?
mv "$gfile"ebcdic "$gfile"
rc2=$?
if test "$rc1" != "0" -o "$rc2" != "0"
then
  msg="Exceptions converting $gfile from ascii to ebcdic"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE($rc1, $rc2)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
fi
) done
#/ -------------------------------------------------
#BEGINSUFFIX
#/ -------------------------------------------------
#/ Create a shell script for running SAS (sas.sh). This is needed
#/ only for 31-bit z/OS, and is skipped for 64-bit z/OS.

#IFEQ [HOST] z64 #THEN NOSASSH
SASRX='[CUSTPRODQUAL].[RX:LOQUAL]'
export SASRX
echo "#!/bin/sh" > $SASHOMEDIR/$PRODHOME/sas.sh
echo "export SYSPROC=$SASRX" >> $SASHOMEDIR/$PRODHOME/sas.sh
echo "/bin/tso %REXX[LANGCODE][ORDERENCODING] \$@" >> $SASHOMEDIR/$PRODHOME/sas.sh
if test ! -f $SASHOMEDIR/$PRODHOME/sas.sh
then
  msg="Unable to create $SASHOMEDIR/$PRODHOME/sas.sh"
  echo $msg
  echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
  exit 12
fi
#NOSASSH
#IFEQ [UPDATEMODE] TRUE #THEN SKIPSI
SI1='[SETINIT_LOCATION1]'
export SI1
SI2='[SETINIT_LOCATION2]'
export SI2
SI3='[SETINIT_LOCATION3]'
export SI3
SI=$SI1$SI2$SI3
export SI
SIOUT="$SASHOMEDIR/$PRODHOME/setinit.sas"
export SIOUT
cat $SI | awk '/^(PROC *SETINIT *RELEASE| )/ {print} ' > $SIOUT
rc=$?
if test ! "$rc" = "0"
then
 msg="Unable to create $SIOUT"
 echo $msg
 echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
 echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
 exit 12
fi

sleep 1

cp $SIOUT "//'[CNTLDSN](RENEWPRM)'"
rc=$?
if test ! "$rc" = "0"
then
 msg="Unable to create [CNTLDSN](RENEWPRM)"
 echo $msg
 echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
 echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
 exit 12
fi
#SKIPSI
#IFEQ [HOST] z64 #THEN USEZE
#TABLEFIX LD  #/ Load Library
#THEN NEXT
#USEZE
#TABLEFIX ZE  #/ 64-bit Load Library
#NEXT
JPROXYDIR=$SASHOMEDIR/$PRODHOME/core/sasext
export JPROXYDIR
cp -X "//'[CUSTPRODQUAL].[LOQUAL](JPROXY)'" $JPROXYDIR/jproxy
rc=$?
if test ! "$rc" = "0"
then
 msg="Unable to create $JPROXYDIR/jproxy"
 echo $msg
 echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
 echo "EXIT CODE(12)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
 exit 12
fi

sasaid=`id -un`
sasagrp=`id -gn`
chown -fR $sasaid .
chgrp -fR $sasagrp .
#IFEQ [HOST] z64 #THEN NOSASSH
chmod -f a+x $SASHOMEDIR/$PRODHOME/sas.sh
#NOSASSH
chmod -f a+x $SASHOMEDIR/$PRODHOME/setinit.sas
chmod -f og-w,a+x $JPROXYDIR/jproxy

msg="Successfully completed installation of SAS USS components."
echo $msg
echo "WRITE $msg" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr
echo "EXIT CODE(0)" >> $OSTEMPDIR/[DATETIMEPFX].unlduss.sherr

exit 0
/*
//DFALTERR DD *
CONTROL ASIS
WRITE Installation of SAS OpenEdition components failed.
EXIT CODE(16)
//SYSTSIN DD *
 ALLOC FILE(OUTPUT) +
  PATH('[OSTEMPDIR1]+
#IFNOT  [OSTEMPDIR2] #THEN NEXT
  [OSTEMPDIR2]+
#NEXT
#IFNOT [OSTEMPDIR3] #THEN NEXT
  [OSTEMPDIR3]+
#NEXT
  /[DATETIMEPFX].unlduss.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].unlduss.sherr') +
  PATHOPTS(OWRONLY,OCREAT) PATHMODE(SIRUSR,SIWUSR)
 OCOPY INDD(DFALTERR) OUTDD(ERROUT) TEXT
/*
//*
// 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].unlduss.sh',
//       PATHOPTS=(ORDONLY)
//STDOUT DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].unlduss.out',
//       PATHOPTS=(OWRONLY,OCREAT),PATHMODE=(SIRUSR,SIWUSR)
//STDERR DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].unlduss.err',
//       PATHOPTS=(OWRONLY,OCREAT),PATHMODE=(SIRUSR,SIWUSR)
//*
//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].[ORDERENCODING].UNLDUSS.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].unlduss.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].unlduss.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].unlduss.sherr')
 OCOPY INDD(INPUT) OUTDD(CLIST) TEXT
 EXEC '[CUSTPRODQUAL].[ORDERENCODING].UNLDUSS.EXEC'
/*
//*
// SET OSTMP1='[OSTEMPDIR1]'
// SET OSTMP2='[OSTEMPDIR2]'
// SET OSTMP3='[OSTEMPDIR3]'
//CLEANUP  EXEC PGM=IEFBR14
//DD1 DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].unlduss.sh',
//     PATHOPTS=ORDONLY,PATHDISP=DELETE
//DD2 DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].unlduss.out',
//     PATHOPTS=ORDONLY,PATHDISP=DELETE
//DD3 DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].unlduss.err',
//     PATHOPTS=ORDONLY,PATHDISP=DELETE
//DD4 DD PATH='&OSTMP1&OSTMP2&OSTMP3/[DATETIMEPFX].unlduss.sherr',
//     PATHOPTS=ORDONLY,PATHDISP=DELETE
//DD5 DD DISP=(MOD,DELETE,DELETE),
//  DSN=[CUSTPRODQUAL].[ORDERENCODING].UNLDUSS.EXEC,
//  UNIT=[DISKUNIT],SPACE=(TRK,(1)),
//  DCB=(RECFM=VB,LRECL=255,BLKSIZE=6160)
//*
#/ ---------------------------------------------------------------
#ENDBUCKET
