#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：料金計算結果情報マージ・ソート
#
# 機能          ：各料金計算結果情報をマージ、以下のキーでソートする。
#
#ソートキー：結果内容コード＞処理日＞請求契約番号＞サービス契約番号＞料金コースコード＞料金サービスコード＞料金項目コード（昇順）
#
#
#シェル上では、ソートを行った後、先頭の項目を切り落としている。
#
# コマンド形式  ：EO3011580J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.00.00       2012/10/01   FJ)          初期資産登録
# v4.01.00       2012/12/27   FJ)前田     【ST1-2012-0000720】サービス開始前のコンテンツデータが取り込めずABEND
# v4.02.00       2013/06/17   FJ)黒木     【TG1-2013-0000637】投入区分に名称がセットされない
# v5.00.00       2013/09/14   FJ)狭間     【OM-2013-0002081】料金、通信量共に0もしくは料金が0で通信量が空のレコードを除去する
#                                                            除去したレコードは別ファイルに退避させる
# v5.01.00       2013/09/25   FJ)伊藤     【OM-2013-0002482】JAVA返り値に関係なく正常終了値がリターンされていたのを修正
# v8.00.00       2013/12/16   FJ)田内     【ANK-1584-00-00】各入力ファイルにサービス詳細識別番号が追加された事に伴い、キーを変更。
# v8.00.01       2014/02/11   FJ)北端     【IT1-2014-0000059】内部管理102 サービス詳細識別番号追加時の回収漏れ水平展開
# v8.00.02       2014/04/09   FJ)小掠     【OM-2014-0000835】javaの処理を切り離し
##############################################################

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

#
#---ツール格納場所
#
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
OPEDATE=${RSLT_OPEDATE}

#--システム年月日時分秒取得
. EOK010410J0.sh "2"
SYSTIME=${OPEDATE}`echo ${RSLT_SYSDATE} | cut -c 9-`

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

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

#---マッチング処理でLeftjoinがNULL時に"を付けなくする（マッチング使用時は必須）
export ZTLQUOTES=''
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

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

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO3011580J0,"
P4="IND1=,"
P5="INF1=,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=,"
P9="OTF1=,"
P10="OTD2=f,"
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

##############################################################
#--- 共通定義
##############################################################
#--- 1.コード名称管理（ZM_M_CD_NM_KANRI）
SQL_ZM0171_01=${SQL_DIR}/AC_U_ZM0171_01.sql
SQL_ZM0171_01_WRK=${SQL_DIR}/${JOBNAME}_SQL_ZM0171_01_WRK.sql

CSVFILE_ZM0171_01_UNLOAD_WRK=${MID_DIR_AC}/${JOBNAME}_ZM0171_01_UNLOADER_WK1.csv

#--- マッチング定義
DEF_DIR=${G_TOOLSH}/util/def
DEF_AC_CM_0050=${DEF_DIR}/AC_CM_0050.def
CSV_CM0050_MATCHING=${MID_DIR_AC}/${JOBNAME}_CM0050_MATCHING_WK.csv

#--- 料金計算結果情報ファイル
INF_ACIFM097020=${MID_DIR_AC}/ACIFM097020.csv

##############################################################
#--- 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
}
##############################################################
#--- コード名称管理アンロード
##############################################################
ZM_M_CD_NM_KANRI_UNLOAD(){
    CD_SBT_CD='CD00972'
    #SQLパラメータ置き換え
    cp -f ${SQL_ZM0171_01} ${SQL_ZM0171_01_WRK}
    sed -i -e "s%\:CD_SBT_CD%'${CD_SBT_CD}'%"  ${SQL_ZM0171_01_WRK}
    sed -i -e "s%\:OPE_DATE%'${OPEDATE}'%"  ${SQL_ZM0171_01_WRK}
    UNLOAD ${SQL_ZM0171_01_WRK}  ${CSVFILE_ZM0171_01_UNLOAD_WRK} 
}
##############################################################
#
#--- MAIN
#
##############################################################

#
#--- 各ファイルの存在チェックを行う
#
#--- 1.コード名称管理（ZM_M_CD_NM_KANRI）
if [ ! -r ${SQL_ZM0171_01} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQL_ZM0171_01}) "
    echo $JOBNAME " File is nonexist(${SQL_ZM0171_01}) "
    exit ${G_RTN_ERROR}
fi

#
#--- アンロードファイルのクリアを行う
#
cat /dev/null > ${CSVFILE_ZM0171_01_UNLOAD_WRK}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error(${CSVFILE_ZM0171_01_UNLOAD_WRK}:rc=$rc) "
    echo $JOBNAME " File cat error(${CSVFILE_ZM0171_01_UNLOAD_WRK}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#--- コード名称管理アンロード
#
ZM_M_CD_NM_KANRI_UNLOAD 

#
#--- 料金計算結果情報 マージ・ソート
#--- 料金計算結果情報 改行コードをLFに変換する
#
bsortex -sort key=14.99asca \
	-record recform=txtcsv  \
	-input reclen=500 file=${MID_DIR_AC}/ACIFM097001.csv,${MID_DIR_AC}/ACIFM097002.csv,${MID_DIR_AC}/ACIFM097003.csv,${MID_DIR_AC}/ACIFM097004.csv,${MID_DIR_AC}/ACIFM097005.csv,${MID_DIR_AC}/ACIFM097013.csv \
	-output file=${INF_ACIFM097020} \
	linedlmt=lf

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

#
#--- マッチング処理 料金計算結果情報 投入区分名称を設定
#
export INF1=${INF_ACIFM097020}
export INF2=${CSVFILE_ZM0171_01_UNLOAD_WRK}
MATCHING ${DEF_AC_CM_0050} ${CSV_CM0050_MATCHING}

#
#--- 料金計算結果情報 改行コードをCRLFに変換する
#--- ＳＯＲＴ
#
bsortex -sort key=0.99asca,2.99asca,3.99asca,5.99asca,8.99asca,9.99asca,10.99asca \
	-record recform=txtcsv  \
	-input reclen=800 file=${CSV_CM0050_MATCHING} \
	-output file=${MID_DIR_AC}/ACIFM243001.csv \
	linedlmt=crlf

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

exit_rc=$rc

#
#ワーク削除
#
if [ $WK_RM = "true" ]
then
    rm -f ${SQL_ZM0171_01_WRK}
    rm -f ${CSVFILE_ZM0171_01_UNLOAD_WRK}
    rm -f ${CSV_CM0050_MATCHING}
fi

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

exit ${G_RTN_NORMAL}

