#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：回数型施策満了登録
#
# 機能          ：更新対象抽出ファイルを読み込み、対象の割引サービス契約内訳、割引サービス契約を更新する。
#
# コマンド形式  ：EO2FW0510J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v66.00.00       2023/02/20  FJ)吉川      新規作成 【ANK-4307-00-00】【eo定期】プレミアムクラブリニューアル対応  
# v66.00.00       2023/05/18  FJ)吉川     【IT1-2023-0000017】        【eo定期】プレミアムクラブリニューアル対応  

##############################################################

##############################################################
# 環境変数定義
##############################################################


#
#---ツール格納場所
#
G_TOOLSH=.

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

#
#---ＪＯＢ名
#
JOBNAME=`basename $0 | sed -e "s/\.sh//g"`

#
#---サービス（業務プロセス）
#
SVC=$JOBNAME

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx

##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME


#
#---運用日付取得
#
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
   OPD=${RSLT_OPEDATE}
else
   RSLT_OPEDATE=${OPD}
fi

#
#--- ファイル定義
#

#アンロード用SQLファイル
SQLFILE_KK0451=${SQL_DIR}/KK_U_KK0451_13.sql
SQLFILE_KK2361=${SQL_DIR}/KK_U_KK2361_07.sql

#アンロード出力用
SQLOUT_KK0451=${MID_DIR_KK}/EO2FW0510J0_SQLOUT_KK0451.csv
SQLOUT_KK2361=${MID_DIR_KK}/EO2FW0510J0_SQLOUT_KK2361.csv

#ソート結果格納用
KK0451_SORT=${MID_DIR_KK}/EO2FW0510J0_KK0451_SORT.csv
KK2361_SORT=${MID_DIR_KK}/EO2FW0510J0_KK2361_SORT.csv
KK0451_CRNT=${MID_DIR_KK}/EO2FW0510J0_KK0451_CRNT.csv
KK2361_CRNT=${MID_DIR_KK}/EO2FW0510J0_KK2361_CRNT.csv

#defファイル
DEFFILE_001=${G_TOOLSH}/util/def/KK_CM_1046.def
DEFFILE_002=${G_TOOLSH}/util/def/KK_CM_1047.def
TMPDEFFILE_001=${ULD_WORK_DIR}/KK_CM_1046.tmp.${JOBNAME}.def
TMPDEFFILE_002=${ULD_WORK_DIR}/KK_CM_1047.tmp.${JOBNAME}.def


#INFILE関連
INFILE=${MID_DIR_KK}/KKIFM955.csv

#モジュール読み込み用
KK0451_001=${MID_DIR_KK}/EO2FW0510J0_KK0451_001.csv
KK0451_001_SORT=${MID_DIR_KK}/EO2FW0510J0_KK0451_001_SORT.csv
KK0451_001_CRNT=${MID_DIR_KK}/EO2FW0510J0_KK0451_001_CRNT.csv
KK2361_001=${MID_DIR_KK}/EO2FW0510J0_KK2361_001.csv
KK2361_001_SORT=${MID_DIR_KK}/EO2FW0510J0_KK2361_001_SORT.csv
KK2361_001_CRNT=${MID_DIR_KK}/EO2FW0510J0_KK2361_001_CRNT.csv


#
#--- 各ファイルの存在チェック
#

if [ ! -r $INFILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($INFILE) "
    echo $JOBNAME " File is nonexist($INFILE) "
    exit ${G_RTN_ERROR}
fi

if [ ! -r $SQLFILE_KK0451 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($SQLFILE_KK0451) "
    echo $JOBNAME " File is nonexist($SQLFILE_KK0451) "
    exit ${G_RTN_ERROR}
fi

if [ ! -r $SQLFILE_KK2361 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($SQLFILE_KK2361) "
    echo $JOBNAME " File is nonexist($SQLFILE_KK2361) "
    exit ${G_RTN_ERROR}
fi

if [ ! -r $DEFFILE_001 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($DEFFILE_001) "
    echo $JOBNAME " File is nonexist($DEFFILE_001) "
    exit ${G_RTN_ERROR}
fi

if [ ! -r $DEFFILE_002 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($DEFFILE_002) "
    echo $JOBNAME " File is nonexist($DEFFILE_002) "
    exit ${G_RTN_ERROR}
fi


#
#--- 各ファイルのクリア
#

cat /dev/null > $SQLOUT_KK0451

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($SQLOUT_KK0451:rc=$rc) "
    echo $JOBNAME " File cat error($SQLOUT_KK0451:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


cat /dev/null > $SQLOUT_KK2361

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($SQLOUT_KK2361:rc=$rc) "
    echo $JOBNAME " File cat error($SQLOUT_KK2361:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


cat /dev/null > $KK0451_SORT

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK0451_SORT:rc=$rc) "
    echo $JOBNAME " File cat error($KK0451_SORT:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


cat /dev/null > $KK2361_SORT

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK2361_SORT:rc=$rc) "
    echo $JOBNAME " File cat error($SQLOUT_KK2361:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


cat /dev/null > $KK0451_CRNT

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK0451_CRNT:rc=$rc) "
    echo $JOBNAME " File cat error($KK0451_CRNT:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


cat /dev/null > $KK2361_CRNT

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK2361_CRNT:rc=$rc) "
    echo $JOBNAME " File cat error($KK2361_CRNT:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


cat /dev/null > $TMPDEFFILE_001

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($TMPDEFFILE_001:rc=$rc) "
    echo $JOBNAME " File cat error($TMPDEFFILE_001:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


cat /dev/null > $TMPDEFFILE_002

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($TMPDEFFILE_002:rc=$rc) "
    echo $JOBNAME " File cat error($TMPDEFFILE_002:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


cat /dev/null > $KK0451_001

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK0451_001:rc=$rc) "
    echo $JOBNAME " File cat error($KK0451_001:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

cat /dev/null > $KK0451_001_SORT

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK0451_001_SORT:rc=$rc) "
    echo $JOBNAME " File cat error($KK0451_001_SORT:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

cat /dev/null > $KK0451_001_CRNT

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK0451_001_CRNT:rc=$rc) "
    echo $JOBNAME " File cat error($KK0451_001_CRNT:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

cat /dev/null > $KK2361_001

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK2361_001:rc=$rc) "
    echo $JOBNAME " File cat error($KK2361_001:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

cat /dev/null > $KK2361_001_SORT

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK2361_001_SORT:rc=$rc) "
    echo $JOBNAME " File cat error($KK2361_001_SORT:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

cat /dev/null > $KK2361_001_CRNT

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($KK2361_001_CRNT:rc=$rc) "
    echo $JOBNAME " File cat error($KK2361_001_CRNT:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

## IT1-2023-0000017 2023/05/18 ADD START
####################################################

# キー情報ファイル
TMPFILE_WRIB_SVC_KEY_FILE=${MID_DIR_KK}/KKIFM955_KK0451_TMP001.csv
# キー情報（1000件/行）
TMPFILE_WRIB_SVC_KEY_NO_LIST=${MID_DIR_KK}/KKIFM955_KK0451_TMP002.csv

# SQLファイルワーク
SQLFILE_KK0451_WK=${MID_DIR_KK}/KKIFM955_KK0451_SQL_WK.sql
SQLFILE_KK2361_WK=${MID_DIR_KK}/KKIFM955_KK2361_SQL_WK.sql

# アンロードワーク
ULD_FILE_KK0451_TMP=${MID_DIR_KK}/KKIFM955_KK0451_UNLOAD_TMP.csv
ULD_FILE_KK2361_TMP=${MID_DIR_KK}/KKIFM955_KK2361_UNLOAD_TMP.csv

#
##### 割引サービス契約内訳番号を1000単位で１行に集約する。（検索キー）
#
cat ${INFILE} | cut -d , -f 1 > ${TMPFILE_WRIB_SVC_KEY_FILE}

ROWS=`wc -l ${TMPFILE_WRIB_SVC_KEY_FILE} | cut -d " " -f 1`
awk -F, 'gsub("\"", "'"'"'") {if(NR%1000 == 0 || NR == '${ROWS}'){ORS="\n";}else{ORS=",";} print $1}' ${TMPFILE_WRIB_SVC_KEY_FILE} > ${TMPFILE_WRIB_SVC_KEY_NO_LIST}

for PARAMS in `cat ${TMPFILE_WRIB_SVC_KEY_NO_LIST}`
do
    # SQLの条件を保管してファイルをワークにコピー
    cat ${SQLFILE_KK0451} > ${SQLFILE_KK0451_WK}
    echo " WHERE KK0451.WRIB_SVC_KEI_NO in (" ${PARAMS} ") " >> ${SQLFILE_KK0451_WK}

    cat ${SQLFILE_KK2361} > ${SQLFILE_KK2361_WK}
    echo " WHERE KK2361.WRIB_SVC_KEI_NO in (" ${PARAMS} ") " >> ${SQLFILE_KK2361_WK}

    # アンロード結果ファイルを念のため空にする
    cat /dev/null > ${ULD_FILE_KK0451_TMP}
    cat /dev/null > ${ULD_FILE_KK2361_TMP}
    
    # アンロード呼出し(KK0451)
    sh ${G_TOOLSH}/EOKULD02.sh ${SQLFILE_KK0451_WK} ${ULD_FILE_KK0451_TMP} $JOBNAME
    rc=$?
    if [ $rc -ne 0 ]
    then
        UNLOAD_ERROR $rc ${ULD_FILE_KK0451_TMP}
    fi
    
    # アンロード呼出し(KK2361)
    sh ${G_TOOLSH}/EOKULD02.sh ${SQLFILE_KK2361_WK} ${ULD_FILE_KK2361_TMP} $JOBNAME
    rc=$?
    if [ $rc -ne 0 ]
    then
        UNLOAD_ERROR $rc ${ULD_FILE_KK2361_TMP}
    fi

    # アンロード用メインファイルへアンロード結果を追記
    cat ${ULD_FILE_KK0451_TMP} >> ${SQLOUT_KK0451}
    cat ${ULD_FILE_KK2361_TMP} >> ${SQLOUT_KK2361}
done

####################################################
## IT1-2023-0000017 2023/05/18 ADD END

#
#--- UNLOAD処理(KK0451)
#
## IT1-2023-0000017 2023/05/18 MOD START
#sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE_KK0451 $SQLOUT_KK0451 $JOBNAME
## IT1-2023-0000017 2023/05/18 MOD END

#
#--- キー項目(割引サービス契約番号,予約適用年月日,世代登録年月日時分秒)でソート後にデータを抽出
# 抽出条件
#    無効フラグ = '0'
#    予約適用コード = '2'
#    予約適用年月日 <= 処理日
#
bsortex -sort key=0.12asc,12.8asc,1.17asc -record recform=txtcsv -input file=${SQLOUT_KK0451} reclen=2000 include="55.1asc.eq.'0',14.1asc.eq.'2',12.8asc.le.'${RSLT_OPEDATE}'" -output file=${KK0451_SORT}

#
#--- マージ（キー項目[割引サービス契約番号,予約適用年月日,世代登録年月日時分秒]のカレントレコード（一番下のレコード）のみを残す）
#
bsortex -merge key=0.12asc -record recform=txtcsv -input file=${KK0451_SORT} reclen=2000 -summary suppress last -output file=${KK0451_CRNT}


#
#--- UNLOAD処理(KK2361)
#
## IT1-2023-0000017 2023/05/18 MOD START
#sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE_KK2361 $SQLOUT_KK2361 $JOBNAME
## IT1-2023-0000017 2023/05/18 MOD END

#
#--- キー項目(割引サービス契約番号,割引サービス契約内訳番号,世代登録年月日時分秒)でソート後にデータを抽出
# 抽出条件
#    無効フラグ = '0'
#
bsortex -sort key=0.12asc,1.12asc,2.17asc -record recform=txtcsv -input file=${SQLOUT_KK2361} reclen=2000 include="16.1asc.eq.'0'" -output file=${KK2361_SORT}

#
#--- マージ（キー項目[割引サービス契約番号,割引サービス契約内訳番号,世代登録年月日時分秒]のカレントレコード（一番下のレコード）のみを残す）
#
bsortex -merge key=0.12asc,1.12asc -record recform=txtcsv -input file=${KK2361_SORT} reclen=2000 -summary suppress last -output file=${KK2361_CRNT}


#
#--- 環境変数の設定を行う（出力ファイル情報の設定）
#
export ZTLTMPDIR=${ULD_WORK_DIR}
export ZTLOUTFILE=${KK0451_001}

#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE_001} > ${TMPDEFFILE_001}
sed -i -e s@'${KKIFM955_INFILE}'@${INFILE}@g ${TMPDEFFILE_001}
sed -i -e s@'${KK0451}'@${KK0451_CRNT}@g ${TMPDEFFILE_001}

#
#--- ファイルマッチング処理　※元のＳＱＬのＪＯＩＮ
#
${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEFFILE_001}

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MATCHING UTIL Error($SVC util:rc=$rc) " 
    echo $JOBNAME " MATCHING UTIL Error($SVC util:rc=$rc) "
    sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
    sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME
    exit ${G_RTN_ERROR}
fi

#
#--- キー項目(割引サービス契約番号)でソート
#
bsortex -sort key=0.12asc -record recform=txtcsv -input file=${KK0451_001} reclen=2000 -output file=${KK0451_001_SORT}

#
#--- マージ（キー項目[割引サービス契約番号]のカレントレコード（一番下のレコード）のみを残す）
#
bsortex -merge key=0.12asc -record recform=txtcsv -input file=${KK0451_001_SORT} reclen=2000 -summary suppress last -output file=${KK0451_001_CRNT}


#
#--- 環境変数の設定を行う（出力ファイル情報の設定）
#
export ZTLTMPDIR=${ULD_WORK_DIR}
export ZTLOUTFILE=${KK2361_001}

#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE_002} > ${TMPDEFFILE_002}
sed -i -e s@'${KKIFM955_INFILE}'@${INFILE}@g ${TMPDEFFILE_002}
sed -i -e s@'${KK2361}'@${KK2361_CRNT}@g ${TMPDEFFILE_002}

#
#--- ファイルマッチング処理　※元のＳＱＬのＪＯＩＮ
#
${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEFFILE_002}

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MATCHING UTIL Error($SVC util:rc=$rc) " 
    echo $JOBNAME " MATCHING UTIL Error($SVC util:rc=$rc) "
    sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
    sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME
    exit ${G_RTN_ERROR}
fi

#
#--- キー項目(割引サービス契約内訳番号)でソート
#
bsortex -sort key=1.12asc -record recform=txtcsv -input file=${KK2361_001} reclen=2000 -output file=${KK2361_001_SORT}

#
#--- マージ（キー項目[割引サービス契約内訳番号]のカレントレコード（一番下のレコード）のみを残す）
#
bsortex -merge key=1.12asc -record recform=txtcsv -input file=${KK2361_001_SORT} reclen=2000 -summary suppress last -output file=${KK2361_001_CRNT}


#
#---パラメタ定義
#

P1="OPD=$OPD,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO2FW0510J0,"
P4="IND1=KKIFM955.def,"
P5="INF1=${MID_DIR_KK}/KKIFM955.csv,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=,"
P9="OTF1=,"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE=${KK0451_001_CRNT};${KK2361_001_CRNT}"
PARA="$P1$P2$P3$P4$P5$P6$P7$P8$P9$P10$P11$P12$P13$P14$P15$P16$P17$P18"

sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $JOBNAME



rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    echo $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#---ＡＰＬ起動
#


java ${JAVA_OPTION_16384} -jar ${JAR_DIR}/koptBatch.jar $PARA

rc=$?
ERR_FLG=0
if [ $rc -ne 0 ]
then
   if [ $rc -ne 4 ]
   then
       if [ $rc -ne 8 ]
       then
           if [ $rc -ne 127 ]
           then
              sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              echo $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              exit ${G_RTN_ERROR}
           fi
       fi
    fi
    ERR_FLG=1
fi

exit_rc=$rc

## IT1-2023-0000017 2023/05/18 ADD START
# 一時ファイル削除
rm -f ${TMPFILE_WRIB_SVC_KEY_FILE}
rm -f ${TMPFILE_WRIB_SVC_KEY_NO_LIST}
rm -f ${SQLFILE_KK0451_WK}
rm -f ${SQLFILE_KK2361_WK}
rm -f ${ULD_FILE_KK0451_TMP}
rm -f ${ULD_FILE_KK2361_TMP}
## IT1-2023-0000017 2023/05/18 ADD END

#
#--- ジョブの終了メッセージを出力する
#
sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME


exit $exit_rc
