#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：当月請求情報抽出
#
# 機能          ：当月の請求情報を抽出する。
#
#アンロード処理については、シェルの起動となる。
#EOKULD03.sh ${SQL_DIR}/CH_U_CH0051_04_WRK.sql ${MID_DIR_CH}/CHIFM059001_WRK.csv EO6020110J0
#
#{SQL_DIR}/CH_U_CH0051_04.sqlを、${SQL_DIR}/CH_U_CH0051_04_WRK.sqlにコピーし、SQL文の生成を行う。${SQL_DIR}/CH_U_CH0051_04_WRK.sqlに対し、バインド変数箇所に業務日付を設定し、アンロード処理（EOKULD03.sh）の起動を行う。
#
#【出力ファイル項目定義】
#[CHIFM059]当月請求情報 参照
#
#
# コマンド形式  ：EO6250105J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.00           2013/01/31  FJ）後藤     【ST4-2012-0000377】新規作成
# v4.01           2013/03/18  FJ）広野     性能改善: アンロードの参照先スクリプト変更にともなう修正
# v5.00           2013/06/28  FJ）藤田     【ST4-2013-0000479】性能改善: nkfの使用を廃止する。
# v6.00           2013/11/26  FJ）柴田     【ST4-2013-0000578】性能改善: アンロード処理を2つに分ける。
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
[ $# -eq 2 ] &&TAJUKIDO="_$2" ;
#---ワークファイル削除モード
WK_RM=true

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

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

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO6250105J0,"
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

#
#--- ファイル定義
#
SQLFILE=${SQL_DIR}/CH_U_CH0051_04.sql
SQLFILE2=${SQL_DIR}/CH_U_CH0101_13.sql
OUTFILE=${MID_DIR_CH}/CHIFM059001.csv

SQLFILE_WRK=${SQL_DIR}/${JOBNAME}_CH_U_CH0051_04_UNLOADER_WK_1$TAJUKIDO.sql
SQLFILE_WRK2=${SQL_DIR}/${JOBNAME}_CH_U_CH0101_13_UNLOADER_WK_1$TAJUKIDO.sql
MATCHING_WRK=${MID_DIR_CH}/${JOBNAME}_CH_U_CH0051_04_MATCHING_WK_1$TAJUKIDO.csv
MATCHING_WRK2=${MID_DIR_CH}/${JOBNAME}_CH_U_CH0101_13_MATCHING_WK_1$TAJUKIDO.csv
OUTFILE_WRK=${MID_DIR_CH}/${JOBNAME}_CHIFM059001_WK_1$TAJUKIDO.csv

DEFFILE=${G_TOOLSH}/util/def/CH_CM_0114.def
DEFFILE_WRK=${G_TOOLSH}/util/def/${JOBNAME}_CH_CM_0114_MATCHIG_WK_1$TAJUKIDO.def


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

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

#- 請求年月取得（SEIKY_YM）
. EO3SEIKYYM.sh '04' ${RSLT_OPEDATE} ${JOBNAME}
SEIKY_YM2="'${SEIKY_YM}'"

#
#--- 【SQLPARAM】
#１．システムコード：CH
#　　SYS_CD="CH"
#２．業務パラメータID：請求作成（請求額合計）
#　　WORK_PARAM_ID="CH_WKS_SIKY_SAKUSEI"
#３．バッチ運用日：バッチ運用日
#　　OPEDATE="${RSLT_OPEDATE}"
#４．抽出変換コード：1（抽出のみ）
#　　CHSHT_CHG_CD="1"
#５．請求ステータス：010（仮確定）
#　　SEIKY_STAT="010"
SYS_CD="'CH'"
WORK_PARAM_ID="'CH_WKS_SIKY_SAKUSEI'"
OPEDATE="'${RSLT_OPEDATE}'"
CHSHT_CHG_CD="'1'"
SEIKY_STAT="'010'"

cp -f ${SQLFILE} ${SQLFILE_WRK}
sed -i -e "s/:SEIKY_YM/${SEIKY_YM2}/"          ${SQLFILE_WRK}
sed -i -e "s/:SEIKY_STAT/${SEIKY_STAT}/"       ${SQLFILE_WRK}

cp -f ${SQLFILE2} ${SQLFILE_WRK2}
sed -i -e "s/:SEIKY_YM/${SEIKY_YM2}/"          ${SQLFILE_WRK2}
sed -i -e "s/:SYS_CD/${SYS_CD}/"               ${SQLFILE_WRK2}
sed -i -e "s/:WORK_PARAM_ID/${WORK_PARAM_ID}/" ${SQLFILE_WRK2}
sed -i -e "s/:OPEDATE/${OPEDATE}/"             ${SQLFILE_WRK2}
sed -i -e "s/:CHSHT_CHG_CD/${CHSHT_CHG_CD}/"   ${SQLFILE_WRK2}

cp -f ${DEFFILE} ${DEFFILE_WRK}
sed -i -e "s%\:CH0051_04_WK%${MATCHING_WRK}%"           ${DEFFILE_WRK}
sed -i -e "s%\:CH0101_13_WK%${MATCHING_WRK2}%"          ${DEFFILE_WRK}


#
#--- アンロードファイルのクリアを行う
#
cat /dev/null > $MATCHING_WRK
cat /dev/null > $MATCHING_WRK2
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

#
#--- UNLOAD処理
#

#①CH_U_CH0051_04
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_WRK} ${MATCHING_WRK}

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) "
    exit ${G_RTN_ERROR}
fi


#②CH_U_CH0101_13
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_WRK2} ${MATCHING_WRK2}

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) "
    exit ${G_RTN_ERROR}
fi


#①②をマッチング
export ZTLQUOTES=''
export ZTLOUTFILE=${OUTFILE_WRK}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_WRK}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " マッチング処理 Error($SVC ZTLOUTFILE:rc=$rc) "
    echo $JOBNAME " マッチング処理 Error($SVC ZTLOUTFILE:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


#改行コード変換
bsortex \
  -copy \
  -record recform=txtcsv \
  -input  file=${OUTFILE_WRK} \
          reclen=100 \
  -output file=${OUTFILE} \
          linedlmt=crlf ;
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC bsortex:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC bsortex:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#--- ワーク削除
if [ $WK_RM = "true" ]
then
    rm -f ${SQLFILE_WRK}
    rm -f ${SQLFILE_WRK2}
    rm -f ${MATCHING_WRK}
    rm -f ${MATCHING_WRK2}
    rm -f ${OUTFILE_WRK}
    rm -f ${DEFFILE_WRK}
fi

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

exit ${G_RTN_NORMAL}
