#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：端末補償オプション自動解約対象抽出
#
# 機能          ：機器オプションサービス契約の端末補償オプションのうち、タブレットの課金開始年月日
#                 （タブレットの機器提供サービス契約.保証・補償期間開始日算出基準年月日＋１０日の翌月１日）から
#                 ３年経過しているデータを抽出し、ファイル出力を行う。 
#
# コマンド形式  ：EO2ED0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v9.00.00        2014/04/18  FJ)江藤      新規作成(【ANK-2054-00-00】スマートリンク端末補償)
# v9.00.01        2014/06/04  FJ)谷口      【IT1-2014-0000199】端末保障期間抽出不具合対応
# v29.00.00       2017/02/23  FJ)寺園      【ANK-2253-00-00】スマリン安心保障オプションの自動解約バッチ改修
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

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

# v29.00.00 DEL START
###
###--- アンロード関数
###       p1：テーブル名／クエリファイル名
##EXEC_UNLOAD()
##{
##    # 出力ファイルの初期化
##    cat /dev/null > $2
##    rc=$?
##    if [ $rc -ne 0 ]
##    then
##        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($2:rc=$rc) "
##        echo $JOBNAME " File cat error($2:rc=$rc) "
##        return ${G_RTN_ERROR}
##    fi
##    
##    # unload(KK_T_CRECARD)
##    sh ${G_TOOLSH}/EOKULD02.sh $1 $2
##    
##    rc=$?
##    if [ $rc -ne 0 ]
##    then
##        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload error($2:rc=$rc) "
##        echo $JOBNAME " unload error($2:rc=$rc) "
##        return ${G_RTN_ERROR}
##    fi
##    
##    return ${G_RTN_NORMAL}
##}
##
###--- クエリ編集
###       p1：ＳＱＬ定義ファイル名
###       p2：バインド変数置換文字
##EDIT_ULD_QUERY()
##{
##    SQL_FILE=$1
##    SQL_WORK_FILE=${ULD_WORK_DIR}/${JOBNAME}_QUERY.tmp
##    cat /dev/null > ${SQL_WORK_FILE}
##    
##    # SQL定義ファイルの編集
##    if [ ! -r ${SQL_FILE} ]
##    then
##        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQL_FILE}:rc=$rc) "
##        echo $JOBNAME " File is nonexist(${SQL_FILE}:rc=$rc) "
##        return ${G_RTN_ERROR}
##    fi
##
##    # バインド変数を置き換える
##    cat ${SQL_FILE} > ${SQL_WORK_FILE}
##    
##    for bind in $2
##    do
##        sed -i, -e 0,/?/s/?/"'"$bind"'"/ ${SQL_WORK_FILE}
##    done
##    
##    export SQL_WORK_FILE
##    
##    return ${G_RTN_NORMAL}
##}
##
###
### ファイルの削除
###
##REMOVE_FILE()
##{
##    for FILE in $@
##    do
##        rm ${FILE}
##    done
##}
##
###
###--- タブレット端末補償期間の取得
###
##SQL_FILE_U_KK_U_KK2811_10=${SQL_DIR}/KK_U_KK2811_10.sql
##
##KK2811_OUTFILE=${MID_DIR_KK}/KKIFM59301.txt
##
###--- 自動解約対象のデータ抽出
##EDIT_ULD_QUERY ${SQL_FILE_U_KK_U_KK2811_10} "${RSLT_OPEDATE} ${RSLT_OPEDATE} ${RSLT_OPEDATE}"
##rc=$?
##if [ $rc -ne 0 ]
##then
##    exit ${G_RTN_ERROR}
##fi
##
##EXEC_UNLOAD ${SQL_WORK_FILE} ${KK2811_OUTFILE}
##rc=$?
##if [ $rc -ne 0 ]
##then
##    exit ${G_RTN_ERROR}
##fi
##
###
###--- 一時ファイルの削除
###
##REMOVE_FILE ${ULD_WORK_DIR}/${JOBNAME}*
##
###
###--- ジョブの終了メッセージを出力する
###
##
# v29.00.00 DEL END

# v29.00.00 ADD START
#
#--- ファイル定義
DEFFILE1=${G_TOOLSH}/util/def/KK_CM_0610.def
DEFFILE2=${G_TOOLSH}/util/def/KK_CM_0611.def
DEFFILE3=${G_TOOLSH}/util/def/KK_CM_0612.def
TMPDEFFILE1=${ULD_WORK_DIR}/KK_CM_0610_tmp.def
TMPDEFFILE2=${ULD_WORK_DIR}/KK_CM_0611_tmp.def
TMPDEFFILE3=${ULD_WORK_DIR}/KK_CM_0612_tmp.def
OUTFILE1=${MID_DIR_KK}/EO2ED0110J0_MATCHING_OUT1.csv
OUTFILE1_SORT=${MID_DIR_KK}/EO2ED0110J0_MATCHING_OUT1_SORT.csv
OUTFILE2=${MID_DIR_KK}/EO2ED0110J0_MATCHING_OUT2.csv
OUTFILE2_SORT=${MID_DIR_KK}/EO2ED0110J0_MATCHING_OUT2_SORT.csv
OUTFILE3=${MID_DIR_KK}/EO2ED0110J0_MATCHING_OUT3.csv
OUTFILE3_SORT=${MID_DIR_KK}/KKIFM72701.csv
#機器オプションサービス契約(カレント)
COMULD2_KK2811_CUR=${MID_DIR_CC}/CCIFM033002.csv
COMULD2_KK2811_SORT=${MID_DIR_KK}/EO2ED0110J0_KK2811_SORT.csv
#割賦契約(全件)
COMULD2_KK2541_ALL=${MID_DIR_CC}/CCIFM032001.csv
COMULD2_KK2541_SORT=${MID_DIR_KK}/EO2ED0110J0_CCIFM032001_SORT.csv
COMULD2_KK2541_SORT1=${MID_DIR_KK}/EO2ED0110J0_CCIFM032001_SORT1.csv
COMULD2_KK2541_CUR=${MID_DIR_KK}/EO2ED0110J0_CCIFM032001_CUR.csv
#宅内機器型式
SQLFILE_01=${SQL_DIR}/ZM_U_ZM0411_01.sql
COMULD2_ZM0411_UNLD=${MID_DIR_KK}/EO2ED0110J0_ZM0411_UNLD.csv

#
#---キー項目でソート（機器オプションサービス契約(カレント)）
#   ソートＫＥＹ
#   6.12    機器提供サービス契約番号
#   29.10   SYSID
#   0.12    機器オプションサービス契約番号
#   出力項目
#   6.12    機器提供サービス契約番号
#   0.12    機器オプションサービス契約番号
#   29.10   SYSID
bsortex -sort key="0.12asc,1.12asc,2.10asc" -record recform=txtcsv -input file=${COMULD2_KK2811_CUR} reclen=${ULD2_REC_LEN_KK2811} reconst="6.12,0.12,29.10" \
         include="2.3asc.lt.'910',3.3asc.eq.'G03',4.3asc.eq.'G05'" \
  -output file=${COMULD2_KK2811_SORT}

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

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

#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE1} > ${TMPDEFFILE1}

sed -i -e s@'${MID_DIR_CC}'@${MID_DIR_CC}@g ${TMPDEFFILE1}
sed -i -e s@'${MID_DIR_KK}'@${MID_DIR_KK}@g ${TMPDEFFILE1}


#
#--- ファイルマッチング処理　
#     ・機器提供サービス契約
#     ・機器オプションサービス契約
#
${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEFFILE1}

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

#
#--- キー項目(サービス契約番号)でソート
#
bsortex -sort key=1.10asc -record recform=txtcsv -input file=${OUTFILE1} reclen=120 -output file=${OUTFILE1_SORT}

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

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

#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE2} > ${TMPDEFFILE2}

sed -i -e s@'${MID_DIR_CC}'@${MID_DIR_CC}@g ${TMPDEFFILE2}
sed -i -e s@'${MID_DIR_KK}'@${MID_DIR_KK}@g ${TMPDEFFILE2}


#
#--- ファイルマッチング処理　
#     ・端末補償オプション自動解約対象抽出データ
#     ・サービス契約
#
${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEFFILE2}

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

#
#--- キー項目(機器提供サービス契約番号)でソート
#
bsortex -sort key=0.12asc -record recform=txtcsv -input file=${OUTFILE2} reclen=150 -output file=${OUTFILE2_SORT}

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

#
#--- 割賦契約をソートする
#

#
#--- キー項目毎に予約適用年月日、世代登録年月日時分秒でソート
#
bsortex -sort key=0.12asc,5.8asc,1.17asc -record recform=txtcsv \
  -input file=${COMULD2_KK2541_ALL} reclen=${ULD2_REC_LEN_KK2541} \
   include="6.1asc.eq.'2',5.8asc.gt.' ',5.8asc.le.'${RSLT_OPEDATE}'" \
  -output file=${COMULD2_KK2541_SORT1}

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

#
#--- マージ（各キー項目毎のカレントレコードのみを残す）
#
bsortex -merge key=0.12asc -record recform=txtcsv -input file=${COMULD2_KK2541_SORT1} reclen=${ULD2_REC_LEN_KK2541} -summary suppress last -output file=${COMULD2_KK2541_CUR}

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

#
#---キー項目でソート（割賦契約）
#   ソートＫＥＹ
#   3.12    機器提供サービス契約番号
#   出力項目
#   3.12    機器提供サービス契約番号
#   20.12   引継元割賦契約番号
bsortex -sort key="0.12asc" -record recform=txtcsv -input file=${COMULD2_KK2541_CUR} reclen=${ULD2_REC_LEN_KK2541} reconst="3.12,20.12" \
         include="20.12asc.ge.' '" \
  -output file=${COMULD2_KK2541_SORT}

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

#
#--- UNLOAD処理(宅内機器型式)
#
sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE_01 $COMULD2_ZM0411_UNLD

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error($SVC unload:rc=$rc) " 
    echo $JOBNAME " UNLOAD Error($SVC unload:rc=$rc) "
	#
	#--- ジョブの終了メッセージを出力する
	#
	sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
	sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

    exit ${G_RTN_ERROR}
fi

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

#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE3} > ${TMPDEFFILE3}

sed -i -e s@'${MID_DIR_KK}'@${MID_DIR_KK}@g ${TMPDEFFILE3}


#
#--- ファイルマッチング処理　
#     ・端末補償オプション自動解約対象抽出データ
#     ・割賦契約
#     ・宅内機器型式アンロードファイル
#
${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEFFILE3}

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

#
#--- 端末補償オプション自動解約対象抽出データをソートする
#

#
#--- SYSID、サービス契約番号、機器提供サービス契約番号、機器オプションサービス契約番号でソート
#
bsortex -sort key=7.10asc,1.10asc,0.12asc,6.12asc -record recform=txtcsv \
  -input file=${OUTFILE3} reclen=150 \
  -output file=${OUTFILE3_SORT}

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

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

P1="OPD=$OPD,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO2ED0110J0,"
P4="IND1=KKIFM727.def,"
P5="INF1=${MID_DIR_KK}/KKIFM72701.csv,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=KKIFM593.def,"
P9="OTF1=${MID_DIR_KK}/KKIFM59301.txt,"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE="
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

#
#---ＡＰＬ起動
#

java ${JAVA_OPTION} -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

#ワーク削除
rm -f ${OUTFILE1}
rm -f ${OUTFILE1_SORT}
rm -f ${OUTFILE2}
rm -f ${OUTFILE2_SORT}
rm -f ${OUTFILE3}
rm -f ${OUTFILE3_SORT}
rm -f ${COMULD2_KK2811_SORT}
rm -f ${COMULD2_KK2541_SORT}
rm -f ${COMULD2_KK2541_SORT1}
rm -f ${COMULD2_KK2541_CUR}
rm -f ${COMULD2_ZM0411_UNLD}

## v29.00.00 ADD END

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

exit $exit_rc

