#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：共通制御
#
# シェル名      ：ALTER SEAQUENCE実行処理
#
# 機能          ：ORACLEシーケンスオブジェクトを指定番号まで採番する
#
# コマンド形式  ：EO3ALTRSEAQ.sh
#
# 実行環境      ：.../app/shl
#
# パラメタ      ：$1   シーケンスオブジェクト名
#               ：$2   シーケンスファイル
#               ：$3   JOB名
#               ：$4   採番後のシーケンス値を保存したファイル
#
# 終了ステータス：採番処理失敗
#
# 特記事項      ：
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
#                 2013/01/30  FJ)指原      新規作成
#                 2013/03/09  FJ)後藤      更新数が0の場合、更新しないように修正。
#                 2013/05/27  FJ）黒木     【TAI-2013-0000027】オラクルユーザ変更等
#                 2014/03/29  FJ）小掠     【OM-2014-0001206】シーケンスを進めた後の値をファイルにて出力するように変更
# v54.00.00       2021/07/27  FJ) 寺川      ANK-4069-00-00 バッチ・DBサーバーリプレース対応
##############################################################

#
#---環境変数定義Shell呼び出し
#
. EOK010110J0.sh

#
#---パラメータ
#
SEQ_OBJECT=$1
SEQFILE=$2
JOBID=$3
SEQNOWFILE=$4

#
#---システム日付取得
#
. EOK010410J0.sh "1"
SYSDATE=${RSLT_SYSDATE}

#
#---SQL実行結果ログ
#
SQL_LOG=${SQL_LOADER_LOG_DIR}/${JOBID}_${SYSDATE}.log

#
#---シーケンス更新
#
SEQFILE_WAK=${SEQFILE}_${SYSDATE}

nkf -Lu -s < ${SEQFILE} > ${SEQFILE_WAK}

SEQNUM=`cat ${SEQFILE_WAK}`

#更新数が０の場合、処理を終了する。
if [ ${SEQNUM} -eq 0 ]
then
    #一時ファイル削除
    rm -f ${SEQFILE_WAK}
   
    exit ${G_RTN_NORMAL}
fi

#オラクル接続情報
DBCONNECT=$ORACLEUSER/$ORACLEPASS@$SID_S

#シスログメッセージ出力
msgToSyslog() {
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${JOBNAME} "$1"
        exit ${G_RTN_ERROR}
}

#接続
#RESULT=`sqlplus -s ${DBCONNECT} <<EOF 
RESULT=`sqlplus -s ${DBCONNECT} <<EOF
whenever oserror exit 127;
whenever sqlerror exit 127;
set head off;
set termout off;
set trims on;

EXECUTE CCPL0003('ALTER SEQUENCE ${SEQ_OBJECT} INCREMENT BY ${SEQNUM}');

exit 0;
EOF`

RTNCD=$?

#オラクルエラー発生時
if [ ${RTNCD} -ne 0 ]
then
    #シスログにメッセージを出力し処理終了
    msgToSyslog "シーケンス一括更新 でエラーが発生しました。" 
fi

#接続
#RESULT=`sqlplus -s ${DBCONNECT} <<EOF 
RESULT=`sqlplus -s ${DBCONNECT} <<EOF
whenever oserror exit 127;
whenever sqlerror exit 127;
set head off;
set termout off;
set trims on;

SELECT ${SEQ_OBJECT}.NEXTVAL FROM DUAL;

exit 0;
EOF`

RTNCD=$?

#オラクルエラー発生時
if [ ${RTNCD} -ne 0 ]
then
    #シスログにメッセージを出力し処理終了
    msgToSyslog "シーケンス一括更新 でエラーが発生しました。" 
fi

if [ "${SEQNOWFILE}" != "" ]; then
   echo ${RESULT} > ${SEQNOWFILE}
fi

#接続
#RESULT=`sqlplus -s ${DBCONNECT} <<EOF 
RESULT=`sqlplus -s ${DBCONNECT} <<EOF
whenever oserror exit 127;
whenever sqlerror exit 127;
set head off;
set termout off;
set trims on;

EXECUTE CCPL0003('ALTER SEQUENCE ${SEQ_OBJECT} INCREMENT BY 1');

exit 0;
EOF`

RTNCD=$?

#オラクルエラー発生時
if [ ${RTNCD} -ne 0 ]
then
    #シスログにメッセージを出力し処理終了
    msgToSyslog "シーケンス一括更新 でエラーが発生しました。" 
fi

#一時ファイル削除
rm -f ${SEQFILE_WAK} 

exit ${G_RTN_NORMAL}

