Code:
#!/bin/bash
#::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#::-- Script Name: CS_Subvar_Advancement.sh --::
#:: --::
#::-- Description: Allows functionality to advance & update Essbase Subvars --::
#:: --::
#:: --::
#::-- Calls: _env.sh --::
#::-- Called By: N/A --::
#:: --::
#::-- Parameters: Not Applicable --::
#:: --::
#::-- Author: Name (Company) --::
#::-- Date: --::
#:: --::
#::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
source /home/oracle/Hyperion_Batch/Scripts/Batch/_env.sh
#::-- Set Log & Error subdirectories pertaining to the specific process --::#
_PLOGPATH=Subvar_Logs/
_PERRORPATH=Subvar_Errors/
#::-- Establish STDOUT and STDERROR repositories --::
_INTRAPATH=${_MAINPATH}${_LOGPATH}${_PLOGPATH}${_YEAR}_${_MONTH}${_DAY}
_ERRORINTRAPATH=${_MAINPATH}${_ERRORPATH}${_PERRORPATH}${_YEAR}_${_MONTH}${_DAY}
mkdir -p ${_INTRAPATH}
mkdir -p ${_ERRORINTRAPATH}
#::-- Prepare File Name Format --::#
#:: _SN = Script Name with extension
#:: ${_SN%%.sh*} = Script name without extension
#:: _FN = File Name
_SN=${0##*/}
_FN=${_DATESTAMP}_${_TIME}_${_SN%%.sh*}
#::-- Establish STDOUT and STDERROR files --::#
_LOGFILE=${_INTRAPATH}/${_FN}.log
_ERRORFILE=${_ERRORINTRAPATH}/${_FN}.err
_MAXLLOGFILE=${_INTRAPATH}/${_FN}_MAXL.log
#::-- Direct STDOUT and STDERROR to repositories --::#
exec 2>${_ERRORFILE} > ${_LOGFILE}
#::-- If empty, delete YYYY_MMDD error file subdirectory --::
trap "[ -s ${_ERRORFILE} ] || rm -f ${_ERRORFILE} && rmdir ${_ERRORINTRAPATH}" EXIT
#::-- Begin Script Processing --::#
PrepSubvars () {
mkdir -p ${_SUBVARPATH}${_YEAR}_${_MONTH}${_DAY}
if [ "${_QUARTER}" == 1 ]
then
GetFirstLastWeek 01 03
_CH=1
_PQ=4
_PQM1=OCT
_PQM2=NOV
_PQM3=DEC
_SVYEARL=$(date +%Y --date="1 year ago")
_SVYEARS=$(date +%y --date="1 year ago")
elif [ "${_QUARTER}" == 2 ]
then
GetFirstLastWeek 04 06
_CH=1
_PQM1=JAN
_PQM2=FEB
_PQM3=MAR
_PQ=1
_SVYEARL=$(date +%Y)
_SVYEARS=$(date +%y)
elif [ "${_QUARTER}" == 3 ]
then
GetFirstLastWeek 07 09
_CH=2
_PQM1=APR
_PQM2=MAY
_PQM3=JUN
_PQ=2
_SVYEARL=$(date +%Y)
_SVYEARS=$(date +%y)
elif [ "${_QUARTER}" == 4 ]
then
GetFirstLastWeek 10 12
_CH=2
_PQM1=JUL
_PQM2=AUG
_PQM3=SEP
_PQ=3
_SVYEARL=$(date +%Y)
_SVYEARS=$(date +%y)
fi
}
GetFirstLastWeek () {
#::-- Get first Saturday of the first week of the quarter --::#
DAY_OF_WEEK=6 # 1=Monday, ..., 7=Sunday
THE_YEAR=${_YEAR}
THE_MONTH="$1"
RESULT_DAY=0
YEAR_MONTH_STR=${THE_YEAR}"-"${THE_MONTH} # Example value: "2017-06"
for DAYNO in 1 2 3 4 5 6 7
do
DATE_TO_CHECK=${YEAR_MONTH_STR}"-"${DAYNO}
DATE_RESULT=$(date --date=$DATE_TO_CHECK '+%u')
if [ $? -eq 0 ]
then
if [ $DATE_RESULT -eq $DAY_OF_WEEK ]
then
RESULT_DAY=$DAYNO
fi
fi
done
RESULT_DATE_COMPLETE1=${YEAR_MONTH_STR}"-"${RESULT_DAY}
if [ $RESULT_DAY -ge 2 ]
then
_FQW=$(date --date="$RESULT_DATE_COMPLETE1 - 7 days" +FirstQtrWeek,\'\\%m/%d/%Y'\'\')
else
_FQW=$(date --date=$RESULT_DATE_COMPLETE1 +FirstQtrWeek,\'\\%m/%d/%Y'\'\')
fi
#::-- Get last Saturday of the last week of the quarter --::#
DAY_OF_WEEK=6 # 1=Monday,..., 7=Sunday
THE_YEAR=${_YEAR}
THE_MONTH="$2"
RESULT_DAY=0
YEAR_MONTH_STR=${THE_YEAR}"-"${THE_MONTH} # Example value: "2017-06"
for DAYNO in 22 23 24 25 26 27 28 29 30 31
do
DATE_TO_CHECK=${YEAR_MONTH_STR}"-"${DAYNO}
DATE_RESULT=$(date --date=$DATE_TO_CHECK '+%u')
if [ $? -eq 0 ]
then
if [ $DATE_RESULT -eq $DAY_OF_WEEK ]
then
RESULT_DAY=$DAYNO
fi
fi
done
RESULT_DATE_COMPLETE=${YEAR_MONTH_STR}"-"${RESULT_DAY}
}
AdvanceSubvars () {
echo $(date +CurrentWeek,\'\\%m/%d/%y'\'\')
echo $(date +CurrentWeekq,\'\\\"%m/%d/%y'\''"'\')
echo $(date +CurrentPeriod,%^b%y)
echo $(date +CurrentPeriodq,\'\\\"%^b%y'\''"'\')
echo $(date +'"1PeriodPrior"',%^b%y --date='1 month ago')
echo $(date +'"1PeriodPriorq"',\'\\\"%^b%y'\''"'\' --date='1 month ago')
echo $(date +'"2PeriodPrior"',%^b%y --date='2 months ago')
echo $(date +'"2PeriodPriorq"',\'\\\"%^b%y'\''"'\' --date='2 months ago')
echo $(date +CurrentQuarter,\'\\"FY $(expr $(expr $(date -d '-1 month' +%m) - 1) / 3 + 1)Q%Y"'\'\')
echo $(date +CurrentQuarterq,\'\\\""FY $(expr $(expr $(date -d '-1 month' +%m) - 1) / 3 + 1)Q%Y"'\''"'\')
echo $(date +CurrentHalfq,\'\\\""FY ${_CH}H%Y"'\''"'\')
echo $(date +CurrentPlanYear,\'\\"FY %Y"'\'\')
echo $(date +CurrentPlanYearq,\'\\\""FY %Y"'\''"'\')
echo $(date +CurrentYear,\'\\"FY %Y"'\'\')
echo $(date +CurrentYearq,\'\\\""FY %Y"'\''"'\')
echo $(date +PriorQuarterAD,\'\\"AD${_PQ}-${_SVYEARS}"'\'\')
echo $(date +PriorQuarterADq,\'\\\""AD${_PQ}-${_SVYEARS}"'\''"'\')
echo $(date +PriorQuarterMnth1,"${_PQM1}${_SVYEARS}")
echo $(date +PriorQuarterMnth2,"${_PQM2}${_SVYEARS}")
echo $(date +PriorQuarterMnth3,"${_PQM3}${_SVYEARS}")
echo $(date +PriorQuarterMnth1q,\'\\\""${_PQM1}${_SVYEARS}"'\''"'\')
echo $(date +PriorQuarterMnth2q,\'\\\""${_PQM2}${_SVYEARS}"'\''"'\')
echo $(date +PriorQuarterMnth3q,\'\\\""${_PQM3}${_SVYEARS}"'\''"'\')
echo $(date +PriorQuarter,\'\\"FY ${_PQ}Q${_SVYEARL}"'\'\')
echo $(date +PriorQuarterq,\'\\\""FY ${_PQ}Q${_SVYEARL}"'\''"'\')
echo $(date +CurrentQtrInput,\'\\"FY $(expr $(expr $(date -d '-1 month' +%m) - 1) / 3 + 1)Q%Y_input"'\'\')
echo $(date +CurrentQtrInputq,\'\\\""FY $(expr $(expr $(date -d '-1 month' +%m) - 1) / 3 + 1)Q%Y_input"'\''"'\')
echo $(date +PriorQtrInput,\'\\"FY ${_PQ}Q${_SVYEARL}_input"'\'\')
echo $(date +ALLC_CurrentWeek,\'\\%m/%d/%y'\'\')
echo $(date +ALLC_CurrentWeekq,\'\\\"%m/%d/%y'\''"'\')
echo $(date +ALLC_CurrentPeriod,%^b%y)
echo $(date +ALLC_CurrentPeriodq,\'\\\"%^b%y'\''"'\')
echo $_FQW
echo $(date --date=$RESULT_DATE_COMPLETE +LastQtrWeek,\'\\%m/%d/%Y'\'\')
#::-- VARIABLES REQUIRING MANUAL SETTING TWICE A YEAR BELOW --::#
echo ES3CurrentSeedPlanq,\'\\\"Budget Base'\''"'\'
echo CurrentPlan,'\"Q3 Forecast\"'
echo CurrentPlanq,\'\\\"Q3 Forecast'\''"'\'
echo CurrentSeedPlanq,\'\\\"Budget Base'\''"'\'
} > ${_SUBVARPATH}${_YEAR}_${_MONTH}${_DAY}/Subvar_List.txt
echo ---------------------------------------------------------
echo "${_SN} beginning at ${_TIME}"
echo ---------------------------------------------------------
echo ---------------------------------------------------------
echo "Prepare Subvars"
echo ---------------------------------------------------------
PrepSubvars
_RVAL=$?
if [ $_RVAL -eq 0 ]
then
echo ---------------------------------------------------------
echo "Prepare Subvars : Successful"
echo ---------------------------------------------------------
else
echo ---------------------------------------------------------
echo "Prepare Subvars : Unsuccessful"
echo ---------------------------------------------------------
exit 1
fi
echo ---------------------------------------------------------
echo "Advance Subvar Values"
echo ---------------------------------------------------------
AdvanceSubvars
_RVAL=$?
if [ $_RVAL -eq 0 ]
then
echo ---------------------------------------------------------
echo "Advance Subvar Values : Successful"
echo ---------------------------------------------------------
else
echo ---------------------------------------------------------
echo "Advance Subvar Values : Unsuccessful"
echo ---------------------------------------------------------
exit 1
fi
echo ---------------------------------------------------------
echo "Update Subvars on ${_ESSB_SRVR}"
echo ---------------------------------------------------------
#::-- Save of previous Subvar file for records --::#
pushd ${_SUBVARPATH}${_YEAR}_${_MONTH}${_DAY}
cp Subvar_List.txt ${_TIME}_Subvar_List.txt
popd
#::-- Read file contents into variables and pass to MaxL --::#
while IFS=',' read col1 col2
do
export subvar=$col2
_MAXLLOGFILE=${_INTRAPATH}/${_FN}_${col1}_MAXL.log
. ${_STARTMAXLPATH} ${_MAXLSCRIPTPATH}Update_Subvars.mxl ${_ESSB_USER} ${_ESSB_PSWD} ${_ESSB_SRVR} ${_MAXLLOGFILE} $col1 $subvar
done < ${_SUBVARPATH}${_YEAR}_${_MONTH}${_DAY}/Subvar_List.txt
_RVAL=$?
if [ $_RVAL -eq 0 ]
then
echo ---------------------------------------------------------
echo "Update Subvars on ${_ESSB_SRVR} : Successful"
echo ---------------------------------------------------------
else
echo ---------------------------------------------------------
echo "Update Subvars on ${_ESSB_SRVR} : Unsuccessful"
echo ---------------------------------------------------------
exit 1
fi
echo
echo ---------------------------------------------------------
echo "${_SN} - Completed Successfully"
echo
echo "Normal Exit"
echo ---------------------------------------------------------
exit 0