#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：一時金情報抽出（当日計算分）
#
# 機能          ：課金対象サービス契約情報のインプットと同様の契約情報（契約ＩＦ分＋再計算分）をもとに計算対象の一時金を抽出する。
#
# コマンド形式  ：EO3011070J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.00           2012/12/12  FJ）井上     【ST4-2012-0000098】性能改善（アンローダ化）
# v5.00           2013/02/06  FJ）浜口     【ANK-1420-00-00】にてSQLをEO30110J0J0と共有する為、引数を指定出来るよう修正
# v5.01           2013/03/18  FJ）広野     性能改善: アンロードの参照先スクリプト変更にともなう修正
# v5.02           2013/11/19  FJ）小掠     【ST4-2012-0000580】性能改善: アンロードの処理を２分割し平行処理後マッチングするように修正
##############################################################

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

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

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

#
#---ＪＯＢ名
#
JOBNAME=`basename $0 | sed -e "s/\.sh//g"`
[ $# -eq 2 ] &&JOBNAME=${JOBNAME}"_$2" ;

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

#---ワークファイル削除モード
WK_RM=true

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

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

##############################################################
# 共通
##############################################################
#-マージワーク
OUTFILE_W_1=${MID_DIR_AC}/ACIFM043003_W_1.csv
#-出力ファイル
OUTFILE=${MID_DIR_AC}/ACIFM043003.csv

#---マッチング定義
#-全体を絞り込むマッチング
DEF_DIR=${G_TOOLSH}/util/def
DEF_CM0081=${DEF_DIR}/AC_CM_0081.def

##############################################################
# 一時金
##############################################################
SQLFILE_AC0171=${SQL_DIR}/AC_U_AC0171_02.sql
SQLFILE_AC0171_WK=${SQL_DIR}/${JOBNAME}_AC_U_AC0171_02_WK_1.sql
CSV_AC0171_02=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0171_02_UNLOAD.csv

##############################################################
# 対象キーワーク
##############################################################
SQLFILE_AC0561=${SQL_DIR}/AC_U_AC0561_05.sql
SQLFILE_AC0561_WK=${SQL_DIR}/${JOBNAME}_AC_U_AC0561_05_WK_1.sql
CSV_AC0561_05=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0561_05_UNLOAD.csv

##############################################################
# 年月日関係
##############################################################
#--- イベントコード
EVENT_CD="03"

#- 請求年月取得（料金計算日基準）SEIKY_YM
. EO3SEIKYYM.sh ${EVENT_CD} ${OPEDATE} ${JOBNAME}

#- 業務パラメータＩＤ：対象キーワーク使用機能識別コード＿再計算対象請求先情報
WORK_PARAM_ID="AC_TWK_RE_CL_SKY_NO1"

##############################################################
#
#--- 共通サブルーチン
#
##############################################################
##############################################################
#--- UNLOAD
##############################################################
UNLOAD(){
    sh ${G_TOOLSH}/EOKULD03.sh $1 $2
    rc=$?
    if [ $rc -ne 0 ]
    then
          sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload error($1:rc=$rc) "
          echo $JOBNAME " unload error($1:rc=$rc) "
          exit ${G_RTN_ERROR}
    fi
}
##############################################################
#--- MATCHING
##############################################################
MATCHING(){
    export ZTLOUTFILE=$2
    ${G_TOOLSH}/util/bin/ZTLMAT01 $1
    rc=$?
    if [ $rc -ne 0 ]
    then
          sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " matching error(matching:$1=$rc) "
          echo $JOBNAME " matching error(matching:$1=$rc) "
          exit ${G_RTN_ERROR}
    fi
}
##############################################################
#--- SED
##############################################################
SED(){
    sed -i -e $1 $2
    rc=$?
    if [ $rc -ne 0 ]
    then
          sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " sed error($1 $2:rc=$rc) "
          echo $JOBNAME " sed error($1 $2:rc=$rc) "
          exit ${G_RTN_ERROR}
    fi
}
##############################################################
#--- WAIT
##############################################################
WAIT(){
    wait $1
    rc=$?
    if [ $rc -ne 0 ]
    then
          sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " BackgroundJob error($2:rc=$rc) "
          echo $JOBNAME " BackgroundJob error($2:rc=$rc) "
          exit ${G_RTN_ERROR}
    fi
}
##############################################################
#---  一時金
##############################################################
ICHIKN_UNLOAD(){
    #SQLパラメータ置き換え
    cp -f ${SQLFILE_AC0171} ${SQLFILE_AC0171_WK}
    UNLOAD ${SQLFILE_AC0171_WK} ${CSV_AC0171_02}
}
##############################################################
#--- 対象キーワード
##############################################################
TRGT_KEY_UNLOAD(){
    #SQLパラメータ置き換え
    cp -f ${SQLFILE_AC0561} ${SQLFILE_AC0561_WK}
    SED "s/:SEIKY_YM/'${SEIKY_YM}'/g" ${SQLFILE_AC0561_WK}
    SED "s/:WORK_PARAM_ID/'${WORK_PARAM_ID}'/g" ${SQLFILE_AC0561_WK}
    SED "s/:OPE_DATE/'${OPEDATE}'/g" ${SQLFILE_AC0561_WK}
    UNLOAD ${SQLFILE_AC0561_WK} ${CSV_AC0561_05}
}

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

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO3011070J0,"
P4="IND1=,"
P5="INF1=,"
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="
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

##############################################################
#
#--- MAIN
#
##############################################################

#--- 各ファイルの存在チェックを行う
if [ ! -r $SQLFILE_AC0171 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($SQLFILE_AC0171) "
    echo $JOBNAME " File is nonexist($SQLFILE_AC0171) "
    exit ${G_RTN_ERROR}
fi

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

#--- 一時金アンロード
ICHIKN_UNLOAD &
pidICHIKN_UNLOAD=$!

#--- 対象キーワードアンロード
TRGT_KEY_UNLOAD &
pidTRGT_KEY_UNLOAD=$!

WAIT ${pidICHIKN_UNLOAD}         "ICHIKN_UNLOAD"
WAIT ${pidTRGT_KEY_UNLOAD}       "TRGT_KEY_UNLOAD"

#---絞込みマッチング
export CSVFILE_AC0171=${CSV_AC0171_02}
export CSVFILE_AC0561=${CSV_AC0561_05}
MATCHING ${DEF_CM0081} ${OUTFILE_W_1}

#---#LFをCRLFにする
bsortex \
-sort -record recform=txtflt fldsep=, \
-input reclen=600 file=${OUTFILE_W_1} \
-output linedlmt=crlf file=${OUTFILE}

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

#
#- 一時ファイル削除
#
if [ ${WK_RM} = "true" ] ;then 
    rm -f ${SQLFILE_AC0171_WK}
    rm -f ${CSV_AC0171_02}
    rm -f ${SQLFILE_AC0561_WK}
    rm -f ${CSV_AC0561_05}
    rm -f ${OUTFILE_W_1}
fi ;

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

exit ${G_RTN_NORMAL}
