#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：対象サービス契約取得
#
# 機能          ：割引サービス対象契約抽出(割引)ファイルに設定されている割引サービス契約番号から割引サービス対象契約のカレントを検索し、サービス契約番号を抽出する。
#抽出したサービス契約番号でサービス契約のカレントを取得し、相関ルール判定に必要な情報を取得し、割引サービス契約サービス課金開始日判定用ファイル に出力する。
#出力対象とするサービス契約が複数存在する場合（割引サービス契約の適用元となるサービス契約が複数サービスとなる場合）、同一割引サービス契約番号-割引サービス契約内訳番号で複数行出力する。
#
#
# コマンド形式  ：EO2091810J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v6.00          2013/12/22   FJ)山裾     【ST4-2013-0000604】性能改善対応
#
##############################################################

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

#
#---ツール格納場所
#
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

#2013/12/22 ST4-2013-0000604 Mod Start

##
##--- ファイルの存在チェックを行う
##
#INFILE=${MID_DIR_KK}/KKIFM384001.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
#
##
##---パラメタ定義
##
#
#P1="OPD=,"
#P2="SVCCTL=JBSbatMultiServiceControl,"
#P3="JOB=EO2091810J0,"
#P4="IND1=KKIFM384.def,"
#P5="INF1=${MID_DIR_KK}/KKIFM384001.csv,"
#P6="IND2=,"
#P7="INF2=,"
#P8="OTD1=KKIFM385.def,"
#P9="OTF1=${MID_DIR_KK}/KKIFM385001.csv,"
#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

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

#入力ファイル
INFILE=${MID_DIR_KK}/KKIFM384001.csv
INFILE_TMP=${MID_DIR_KK}/KKIFM384001_TMP.csv
KK0481=${MID_DIR_KK}/EO2091810J0_KK0481.csv
KK0451=${MID_DIR_KK}/EO2091810J0_KK0451.csv
KK0081=${MID_DIR_KK}/EO2091810J0_KK0081.csv

#defファイル
DEFFILE_001=${G_TOOLSH}/util/def/KK_CM_0389.def
TMPDEFFILE_001=${ULD_WORK_DIR}/KK_CM_0389.tmp.${JOBNAME}.def

#ソート結果格納用
MATCHING_SORT=${MID_DIR_KK}/EO2091810J0_MATCHING_SORT.csv

#マッチング出力用
OUTFILE_MATCHING=${MID_DIR_KK}/EO2091810J0_MATCHING_OUT.csv
OUTFILE_TMP=${MID_DIR_KK}/KKIFM385001_TMP.csv
OUTFILE_LF=${MID_DIR_KK}/KKIFM385001_LF.csv
OUTFILE=${MID_DIR_KK}/KKIFM385001.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 $KK0481 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($KK0481) "
    echo $JOBNAME " File is nonexist($KK0481) "
    exit ${G_RTN_ERROR}
fi

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

if [ ! -r $KK0081 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($KK0081) "
    echo $JOBNAME " File is nonexist($KK0081) "
    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

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

cat /dev/null > $OUTFILE_MATCHING

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

cat /dev/null > $OUTFILE

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($OUTFILE:rc=$rc) "
    echo $JOBNAME " File cat error($OUTFILE: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 > $INFILE_TMP

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

cat /dev/null > $OUTFILE_TMP

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

cat /dev/null > $OUTFILE_LF

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

cat /dev/null > $OUTFILE

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

#-- 改行コードをLFにする。
nkf -Lu ${INFILE} > ${INFILE_TMP}

#
#--- 入力ファイルにダブルクォーテーションを付加
#
sed -i -e "s/,/\",\"/g" ${INFILE_TMP}
sed -i -e "s/^/\"/" ${INFILE_TMP}
sed -i -e "s/$/\"/" ${INFILE_TMP}

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

#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE_001} > ${TMPDEFFILE_001}
sed -i -e s@'${KKIFM384_INFILE}'@${INFILE_TMP}@g ${TMPDEFFILE_001}
sed -i -e s@'${KK0481}'@${KK0481}@g ${TMPDEFFILE_001}
sed -i -e s@'${KK0451}'@${KK0451}@g ${TMPDEFFILE_001}
sed -i -e s@'${KK0081}'@${KK0081}@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

#
#--- 出力ファイルからダブルクォーテーションを除去
#
cat ${OUTFILE_TMP} > ${OUTFILE_LF}
sed -i -e "s/\"//g" ${OUTFILE_LF}

#-- 改行コードをCR+LFにする。
nkf -Lw ${OUTFILE_LF} > ${OUTFILE}

#2013/12/22 ST4-2013-0000604 Mod End

exit_rc=$rc

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

exit $exit_rc
