#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：ＦＴＴＨ通信明細課金可否更新結果集計
#
# 機能          ：可否判定更新によって当日更新された結果をFTTH通信合計に集計する。
#※「FTTH通信量課金可否判定更新」完了後に実行。
#
# コマンド形式  ：EO31G0120J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v5.00           2013/07/05  FJ) 狭間    【TG1-2013-0000657】新規作成
# v5.01           2013/07/20  FJ) 狭間    【TG1-2013-0000710】課金否のみの契約について0Byteで合計データを作成するよう修正
# v5.02           2013/08/09  FJ) 吉田    【IT1-2013-0001571】ログ出力不具合対応
# v5.03           2013/09/07  FJ) 狭間    【OM-2013-0001731】対象キーワークがｅｏ光電話の分と混在して重複してしまう対応
# v5.04           2013/10/09  FJ) 東海林  【ST4-2013-0000583】性能改善 ファイル集計、抽出、ソート処理の並列化
# v6.00           2013/12/05  FJ) 狭間    【OM-2013-0004988】通信明細の集計キーを修正
#v19.00           2015/09/11  FJ) 辰野    【OM-2015-0001847】ＦＴＴＨ通信明細更新キーとのマッチング処理を追加
#v20.00.00        2015/11/12  FJ) 窪田    【OM-2015-0002862】OM-2015-0001847デグレ対応
#v20.00.01        2015/11/27  FJ) 窪田    【OM-2015-0003080】OM-2015-0002862デグレ対応
#v20.00.02        2015/12/01  FJ) 窪田    【OM-2015-0003162】OM-2015-0001847,OM-2015-0002862,OM-2015-0003080 のやり直し
#                                                            資産をOM-2015-0001847改修前に戻し対応
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

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

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

#---システム日時取得
. EOK010410J0.sh "1"
SYSDATE=${RSLT_SYSDATE}

#---マッチング処理でLeftjoinがNULL時に"を付けなくする（マッチング使用時は必須）
export ZTLQUOTES=''

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

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

P1="OPD=,"
P2="SVCCTL=JBSbatMatchServiceControl,"
P3="JOB=EO31G0120J0,"
P4="IND1=ACIFM188.def,"
P5="INF1=${MID_DIR_AC}/ACIFM188002.csv,"
P6="IND2=ACIFM187.def,"
P7="INF2=${MID_DIR_AC}/ACIFM187003.csv,"
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

#
#--- ファイル定義
#
OUTFILE=${MID_DIR_AC}/ACIFM187003.csv
OUTFILE2=${MID_DIR_AC}/ACIFM188002.csv

#--- アンローダー実行時のSQLファイル
SQLFILE_AC0591=${SQL_DIR}/AC_U_AC0591_01.sql
SQLFILE_AC0561=${SQL_DIR}/AC_U_AC0561_04.sql
SQLFILE_AC0601=${SQL_DIR}/AC_U_AC0601_01.sql

#--- アンローダー実行時のSQLワークファイル
SQLFILE_AC0591_WRK=${SQL_DIR}/${JOBNAME}_AC_U_AC0591_01_UNLOADER_WK_1.sql
SQLFILE_AC0591_WRK2=${SQL_DIR}/${JOBNAME}_AC_U_AC0591_01_UNLOADER_WK_2.sql
SQLFILE_AC0561_WRK=${SQL_DIR}/${JOBNAME}_AC_U_AC0561_04_UNLOADER_WK_1.sql
SQLFILE_AC0601_WRK=${SQL_DIR}/${JOBNAME}_AC_U_AC0601_01_UNLOADER_WK_1.sql

#--- アンローダーの出力結果ファイル
UNLOAD_OUTFILE_AC0591_TMP10=${MID_DIR_AC}/${JOBNAME}_AC0591_UNLOADER_WK_10.csv
UNLOAD_OUTFILE_AC0591_TMP11=${MID_DIR_AC}/${JOBNAME}_AC0591_UNLOADER_WK_11.csv
UNLOAD_OUTFILE_AC0591_1=${MID_DIR_AC}/${JOBNAME}_AC0591_UNLOADER_WK_1.csv
UNLOAD_OUTFILE_AC0591_TMP20=${MID_DIR_AC}/${JOBNAME}_AC0591_UNLOADER_WK_20.csv
UNLOAD_OUTFILE_AC0591_TMP21=${MID_DIR_AC}/${JOBNAME}_AC0591_UNLOADER_WK_21.csv
UNLOAD_OUTFILE_AC0591_2=${MID_DIR_AC}/${JOBNAME}_AC0591_UNLOADER_WK_2.csv
UNLOAD_OUTFILE_AC0591_3=${MID_DIR_AC}/${JOBNAME}_AC0591_UNLOADER_WK_3.csv
UNLOAD_OUTFILE_AC0591_4=${MID_DIR_AC}/${JOBNAME}_AC0591_UNLOADER_WK_4.csv
UNLOAD_OUTFILE_AC0591_5=${MID_DIR_AC}/${JOBNAME}_AC0591_UNLOADER_WK_5.csv
UNLOAD_OUTFILE_AC0561_TMP1=${MID_DIR_AC}/${JOBNAME}_AC0561_UNLOADER_WK_1.csv
UNLOAD_OUTFILE_AC0561_TMP2=${MID_DIR_AC}/${JOBNAME}_AC0561_UNLOADER_WK_2.csv
UNLOAD_OUTFILE_AC0601_TMP1=${MID_DIR_AC}/${JOBNAME}_AC0601_UNLOADER_WK_1.csv

#--- CSVマッチングの出力結果ファイル
MATCHING_OUTFILE_WRK1=${MID_DIR_AC}/${JOBNAME}_AC_CM_0053_MATCHING_WK_1.csv

#--- マッチング定義ファイルの変数置き換え時のワークファイル
MATCHING_DEF=${G_TOOLSH}/util/def/AC_CM_0053.def
DEF_FILE_WK1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0053_MATCHING_WK_1.def
# OM-2015-0003162 ADD START
MATCHING_DEF2=${G_TOOLSH}/util/def/AC_CM_0105.def
DEF_FILE_WK2=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0053_MATCHING_WK_2.def
MATCHING_OUTFILE_WRK2=${MID_DIR_AC}/${JOBNAME}_AC_CM_0053_MATCHING_WK_2.csv
# OM-2015-0003162 ADD END


#
#--- サブルーチン（UNLOAD）
#
UNLOAD(){

#unload
#ダブルコーテーションなしの形式でunload
sh ${G_TOOLSH}/EOKULD03.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) "
      exit ${G_RTN_ERROR}
fi

}

#
#--- 各ファイルの存在チェックを行う
#
if [ ! -r $SQLFILE_AC0591 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($SQLFILE_AC0591) "
    echo $JOBNAME " File is nonexist($SQLFILE_AC0591) "
    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

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

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

#
#--- 【SQLPARAM】
#１．業務パラメータＩＤ：対象キーワーク使用機能識別コード＿再集計対象情報（当月）
#２．バッチ運用日：バッチ運用日
#３．課金可否：課金可
#４．請求年月（当月）：バッチ運用年月
#５．請求年月（前月）：バッチ運用年月
#
OPE_DATE="${RSLT_OPEDATE}"
CHRG_KH="1"
OPE_Y=`expr $RSLT_OPEDATE / 10000`
OPE_M=`expr $RSLT_OPEDATE / 100 - $RSLT_OPEDATE / 10000 \* 100`
if [ $OPE_M -lt 10 ];
then
  OPE_YM="$OPE_Y"0"$OPE_M"
else
  OPE_YM="$OPE_Y$OPE_M"
fi

if [ $OPE_M -eq 1 ];
then
  PRE_Y=`expr $OPE_Y - 1`
  PRE_M=12
else
  PRE_Y=$OPE_Y
  PRE_M=`expr $OPE_M - 1`
fi

if [ $PRE_M -lt 10 ];
then
  PRE_YM="$PRE_Y"0"$PRE_M"
else
  PRE_YM="$PRE_Y$PRE_M"
fi

#----------------------------------------------------------------------------------------------------
#--- UNLOAD処理(FTTH通信明細【前月分】)
#----------------------------------------------------------------------------------------------------
(
    #--- アンロードファイルのクリアを行う
    #
    cat /dev/null > ${UNLOAD_OUTFILE_AC0591_TMP10}

    #--- SQLパラメータセット
    cp -f ${SQLFILE_AC0591} ${SQLFILE_AC0591_WRK}
    sed -i -e "s%\:SEIKY_YM%'${PRE_YM}'%" ${SQLFILE_AC0591_WRK}

    #
    #--- UNLOAD処理(FTTH通信明細【前月分】)
    #
    UNLOAD ${SQLFILE_AC0591_WRK} ${UNLOAD_OUTFILE_AC0591_TMP10}

    #
    #--- 課金可のレコードだけ抽出
    #
    bsortex -copy \
        -record recform=txtcsv \
        -input reclen=100 file=${UNLOAD_OUTFILE_AC0591_TMP10} \
        -output file=${UNLOAD_OUTFILE_AC0591_TMP11} \
         include="7.1asc.eq.'1'" \
         reconst=0.6,1.10,2.10,3.3,4.12,5.6,6.12
) &
pidUNLOAD_AC0591_1=$!

#----------------------------------------------------------------------------------------------------
#--- UNLOAD処理(FTTH通信明細【当月分】)
#----------------------------------------------------------------------------------------------------
(
    #--- アンロードファイルのクリアを行う
    #
    cat /dev/null > ${UNLOAD_OUTFILE_AC0591_TMP20}

    #--- SQLパラメータセット
    cp -f ${SQLFILE_AC0591} ${SQLFILE_AC0591_WRK2}
    sed -i -e "s%\:SEIKY_YM%'${OPE_YM}'%" ${SQLFILE_AC0591_WRK2}
    sed -i -e "s%\:CHRG_KH%'${CHRG_KH}'%" ${SQLFILE_AC0591_WRK2}

    #
    #--- UNLOAD処理(FTTH通信明細【当月分】)
    #
    UNLOAD ${SQLFILE_AC0591_WRK2} ${UNLOAD_OUTFILE_AC0591_TMP20}

    #
    #--- 課金可のレコードだけ抽出
    #
    bsortex -copy \
        -record recform=txtcsv \
        -input reclen=100 file=${UNLOAD_OUTFILE_AC0591_TMP20} \
        -output file=${UNLOAD_OUTFILE_AC0591_TMP21} \
         include="7.1asc.eq.'1'" \
         reconst=0.6,1.10,2.10,3.3,4.12,5.6,6.12
) &
pidUNLOAD_AC0591_2=$!

#----------------------------------------------------------------------------------------------------
#--- UNLOAD処理(対象キーワーク)
#----------------------------------------------------------------------------------------------------
(
    #--- アンロードファイルのクリアを行う
    #
    cat /dev/null > $UNLOAD_OUTFILE_AC0561_TMP1

    #--- SQLパラメータセット
    cp -f ${SQLFILE_AC0561} ${SQLFILE_AC0561_WRK}
    sed -i -e "s%\:OPEDATE%'${OPE_DATE}'%" ${SQLFILE_AC0561_WRK}

    #
    #--- UNLOAD処理(対象キーワーク)
    #
    UNLOAD ${SQLFILE_AC0561_WRK} ${UNLOAD_OUTFILE_AC0561_TMP1}

    #
    #--- キー４が''（空）のレコードだけ抽出し、キー１・キー２でサマリ
    #
    bsortex -sort key=0.20asca,1.20asca \
        -record recform=txtcsv \
        -input reclen=100 file=${UNLOAD_OUTFILE_AC0561_TMP1} \
        -output file=${UNLOAD_OUTFILE_AC0561_TMP2} \
         include="3.20asc.lt.' '" \
        -summary suppress first
) &
pidUNLOAD_AC0561=$!

#----------------------------------------------------------------------------------------------------
#--- UNLOAD処理(FTTH通信合計)
#----------------------------------------------------------------------------------------------------
(
    #--- アンロードファイルのクリアを行う
    #
    cat /dev/null > $UNLOAD_OUTFILE_AC0601_TMP1

    #--- SQLパラメータセット
    cp -f ${SQLFILE_AC0601} ${SQLFILE_AC0601_WRK}
    sed -i -e "s%\:OPE_YM%'${OPE_YM}'%" ${SQLFILE_AC0601_WRK}
    sed -i -e "s%\:PRE_YM%'${PRE_YM}'%" ${SQLFILE_AC0601_WRK}

    #
    #--- UNLOAD処理(FTTH通信合計)
    #
    UNLOAD ${SQLFILE_AC0601_WRK} ${UNLOAD_OUTFILE_AC0601_TMP1}

    #----------------------------------------------------------------------------------------------------
    #--- FTTH通信合計のアンロード結果ファイルをソート、改行コードをwindows (CRLF)に変換する
    #--- ソートキー
    #--- 1.サービス契約番号 2.料金コースコード 3.料金サービスコード 4.請求契約番号 5.請求年月 6.利用年月
    #----------------------------------------------------------------------------------------------------
    bsortex \
        -sort key=0.10asca,1.3asca,2.12asca,3.10asca,4.6asca,5.6asca \
        -record recform=txtcsv \
        -input reclen=100 file=${UNLOAD_OUTFILE_AC0601_TMP1} \
        -output file=${OUTFILE2} \
         linedlmt=crlf
) &
pidUNLOAD_AC0601=$!

# すべての抽出が終了するのを待つ
wait ${pidUNLOAD_AC0591_1}
rc_UNLOAD_AC0591_1=$?
wait ${pidUNLOAD_AC0591_2}
rc_UNLOAD_AC0591_2=$?
wait ${pidUNLOAD_AC0561}
rc_UNLOAD_AC0561=$?

# エラー処理
# OM-2015-0003162 MOD START
#if [ ${rc_UNLOAD_AC0591_1} -ne 0 ] || [ ${rc_UNLOAD_AC0591_2} -ne 0 ] || [ ${rc_UNLOAD_AC0561} -ne 0 ] || [ ${rc_UNLOAD_AC0601} -ne 0 ] ]
if [ ${rc_UNLOAD_AC0591_1} -ne 0 ] || [ ${rc_UNLOAD_AC0591_2} -ne 0 ] || [ ${rc_UNLOAD_AC0561} -ne 0 ]
# OM-2015-0003162 MOD END
then
    #- エラーメッセージ出力
    if [ ${rc_UNLOAD_AC0591_1} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidUNLOAD_AC0591_1 Error(rc=${rc_UNLOAD_AC0591_1}) "
        echo $JOBNAME " pidUNLOAD_AC0591_1 Error(rc=${rc_UNLOAD_AC0591_1}) "
    fi
    if [ ${rc_UNLOAD_AC0591_2} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidUNLOAD_AC0591_2 Error(rc=${rc_UNLOAD_AC0591_2}) "
        echo $JOBNAME " pidUNLOAD_AC0591_2 Error(rc=${rc_UNLOAD_AC0591_2}) "
    fi
    if [ ${rc_UNLOAD_AC0561} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidUNLOAD_AC0561 Error(rc=${rc_UNLOAD_AC0561}) "
        echo $JOBNAME " pidUNLOAD_AC0561 Error(rc=${rc_UNLOAD_AC0561}) "
    fi
    #- 異常終了
    exit ${G_RTN_ERROR}
fi


#----------------------------------------------------------------------------------------------------
#--- FTTH通信明細【前月分】ファイルをソートして集計する。
#  集計キー
#    2.サービス契約番号 3.料金コースコード 4.料金サービスコード 0.請求年月 5.利用年月
#  集計項目
#    6.使用通信量
#----------------------------------------------------------------------------------------------------
(
    bsortex -sort key=2.10asca,3.3asca,4.12asca,0.6asca,5.6asca \
        -record recform=txtflt fldsep=, -summary field=6.12ascud \
        -input reclen=100 file=${UNLOAD_OUTFILE_AC0591_TMP11} \
        -output file=${UNLOAD_OUTFILE_AC0591_1}
) &
pidSORT_AC0591_1=$!

#----------------------------------------------------------------------------------------------------
#--- FTTH通信明細【当月分】ファイルをソートして集計する。
#  集計キー
#    2.サービス契約番号 3.料金コースコード 4.料金サービスコード 0.請求年月 5.利用年月
#  集計項目
#    6.使用通信量
#----------------------------------------------------------------------------------------------------
(
    bsortex -sort key=2.10asca,3.3asca,4.12asca,0.6asca,5.6asca \
        -record recform=txtflt fldsep=, -summary field=6.12ascud \
        -input reclen=100 file=${UNLOAD_OUTFILE_AC0591_TMP21} \
        -output file=${UNLOAD_OUTFILE_AC0591_2}
) &
pidSORT_AC0591_2=$!

#----------------------------------------------------------------------------------------------------
#--- FTTH通信明細【前月分】ファイルから課金否しかない契約（※１）を通信量0byteにして抽出する。
#--- ※１、契約の集計単位は請求年月、サービス契約番号、料金コースコード、料金サービスコードとする。
#--- 処理説明）以下の手順で課金否しかない契約を抽出
# １．サービス契約番号（降順）、料金コースコード（降順）、料金サービスコード（降順）、
# 課金可否フラグ（0：否／1：可）（降順）でソートする。※請求年月は全て同じなので省略
# ２．サービス契約番号、料金コースコード、料金サービスコード単位で一番最初のレコードに絞込む。
# ３．絞り込んだ結果の課金可否フラグが0のレコードだけを抽出する。※その際に今後不要な課金可否フラグは捨てる
#----------------------------------------------------------------------------------------------------
(
    bsortex -sort key=2.10asca,3.3asca,4.12asca,7.1ascr \
        -input reclen=100 file=${UNLOAD_OUTFILE_AC0591_TMP10} \
        -record recform=txtcsv \
    |bsortex -merge key=2.10asca,3.3asca,4.12asca \
        -input reclen=100 \
        -record recform=txtcsv \
        -summary suppress first \
        -output file=${UNLOAD_OUTFILE_AC0591_4} \
         include="7.1asc.eq.'0'" \
         reconst="0.6,1.10,2.10,3.3,4.12,5.6,'0'.1asc"
) &
pidSORT_AC0591_4=$!

#----------------------------------------------------------------------------------------------------
#--- FTTH通信明細【当月分】ファイルから課金否しかない契約（※１）を通信量0byteにして抽出する。
#--- ※１、契約の集計単位は請求年月、サービス契約番号、料金コースコード、料金サービスコードとする。
#--- 処理説明）上記【前月分】と同じ要領
#----------------------------------------------------------------------------------------------------
(
    bsortex -sort key=2.10asca,3.3asca,4.12asca,7.1ascr \
        -input reclen=100 file=${UNLOAD_OUTFILE_AC0591_TMP20} \
        -record recform=txtcsv \
    |bsortex -merge key=2.10asca,3.3asca,4.12asca \
        -input reclen=100 \
        -record recform=txtcsv \
        -summary suppress first \
        -output file=${UNLOAD_OUTFILE_AC0591_5} \
         include="7.1asc.eq.'0'" \
         reconst="0.6,1.10,2.10,3.3,4.12,5.6,'0'.1asc"
) &
pidSORT_AC0591_5=$!


# ファイル集計、抽出処理の待ち受け
wait ${pidSORT_AC0591_1}
rc_SORT_AC0591_1=$?
wait ${pidSORT_AC0591_2}
rc_SORT_AC0591_2=$?
wait ${pidSORT_AC0591_4}
rc_SORT_AC0591_4=$?
wait ${pidSORT_AC0591_5}
rc_SORT_AC0591_5=$?

# エラー処理
# OM-2015-0003162 MOD START
#if [ ${rc_SORT_AC0591_1} -ne 0 ] || [ ${rc_SORT_AC0591_2} -ne 0 ] || [ ${rc_SORT_AC0591_4} -ne 0 ] || [ ${rc_SORT_AC0591_5} -ne 0 ] ]
if [ ${rc_SORT_AC0591_1} -ne 0 ] || [ ${rc_SORT_AC0591_2} -ne 0 ] || [ ${rc_SORT_AC0591_4} -ne 0 ] || [ ${rc_SORT_AC0591_5} -ne 0 ]
# OM-2015-0003162 MOD START
then
    #- エラーメッセージ出力
    if [ ${rc_UNLOAD_AC0591_1} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidSORT_AC0591_1 Error(rc=${rc_SORT_AC0591_1}) "
        echo $JOBNAME " pidSORT_AC0591_1 Error(rc=${rc_SORT_AC0591_1}) "
    fi
    if [ ${rc_UNLOAD_AC0591_2} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidSORT_AC0591_2 Error(rc=${rc_SORT_AC0591_2}) "
        echo $JOBNAME " pidSORT_AC0591_2 Error(rc=${rc_SORT_AC0591_2}) "
    fi
    # OM-2015-0003162 ADD START
    if [ ${rc_UNLOAD_AC0591_4} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidSORT_AC0591_4 Error(rc=${rc_SORT_AC0591_4}) "
        echo $JOBNAME " pidSORT_AC0591_4 Error(rc=${rc_SORT_AC0591_4}) "
    fi
    if [ ${rc_UNLOAD_AC0591_5} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidSORT_AC0591_5 Error(rc=${rc_SORT_AC0591_5}) "
        echo $JOBNAME " pidSORT_AC0591_5 Error(rc=${rc_SORT_AC0591_5}) "
    fi
    # OM-2015-0003162 ADD END
    # OM-2015-0003162 DEL START
    #if [ ${rc_UNLOAD_AC0561} -ne 0 ]
    #then
    #    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidSORT_AC0591_4 Error(rc=${rc_SORT_AC0591_4}) "
    #    echo $JOBNAME " pidSORT_AC0591_4 Error(rc=${rc_SORT_AC0591_4}) "
    #fi
    #if [ ${rc_UNLOAD_AC0601} -ne 0 ]
    #then
    #    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidSORT_AC0591_5 Error(rc=${rc_SORT_AC0591_5}) "
    #    echo $JOBNAME " pidSORT_AC0591_5 Error(rc=${rc_SORT_AC0591_5}) "
    #fi
    # OM-2015-0003162 DEL END
    #- 異常終了
    exit ${G_RTN_ERROR}
fi


#----------------------------------------------------------------------------------------------------
#--- FTTH通信明細【前月分】、FTTH通信明細【当月分】、FTTH通信明細【前月分】課金否、FTTH通信明細【当月分】課金否をマージ
#----------------------------------------------------------------------------------------------------
cat ${UNLOAD_OUTFILE_AC0591_1} ${UNLOAD_OUTFILE_AC0591_2} ${UNLOAD_OUTFILE_AC0591_4} ${UNLOAD_OUTFILE_AC0591_5} > ${UNLOAD_OUTFILE_AC0591_3}

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

#----------------------------------------------------------------------------------------------------
#- UNLOADファイル(FTTH通話明細、対象キーワーク)のマッチング処理。
#----------------------------------------------------------------------------------------------------
#
#- マッチング用のdefファイルのファイル名変数を実ファイル名に置き換える。
#
cp ${MATCHING_DEF} ${DEF_FILE_WK1}

sed -i -e "s%:AC_T_FTTH_TUSHIN_DTL%${UNLOAD_OUTFILE_AC0591_3}%" ${DEF_FILE_WK1}
sed -i -e "s%:AC_T_TRGT_KEY_WK%${UNLOAD_OUTFILE_AC0561_TMP2}%" ${DEF_FILE_WK1}

#
#- UNLOADファイル(FTTH通話明細、対象キーワーク)をマッチングする。
#
export ZTLOUTFILE=${MATCHING_OUTFILE_WRK1}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEF_FILE_WK1}

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

# OM-2015-0003162 ADD START
#----------------------------------------------------------------------------------------------------
#- FTTH通信量集計データ、FTTH通信明細更新対象キー情報のマッチング処理。
#----------------------------------------------------------------------------------------------------
# 重複削除
#  ACIFM276001.csv(FTTH通信明細更新対象キー情報)はFTTH通信明細行(日別)の情報が入っている為
#  FTTH通信明細更新対象キー情報から日の情報を削除したファイルを作成し、重複データを削除する。
cat ${MID_DIR_AC}/ACIFM276001.csv | cut -d',' -f1,2,3,4,6 | \
    bsortex -merge key="0.12asc,1.12asc,2.12asc,3.12asc,4.12asc" -record recform=txtcsv \
            -input reclen=200 -summary suppress last \
            -output file=${MID_DIR_AC}/ACIFM276002.csv
#
#- マッチング用のdefファイルのファイル名変数を実ファイル名に置き換える。
#
cp ${MATCHING_DEF2} ${DEF_FILE_WK2}

sed -i -e "s%:ACIFM187%${MATCHING_OUTFILE_WRK1}%" ${DEF_FILE_WK2}
sed -i -e "s%:ACIFM276%${MID_DIR_AC}/ACIFM276002.csv%" ${DEF_FILE_WK2}

#
#- FTTH通信量集計データファイル、FTTH通信明細更新対象キー情報をマッチングする。
#
export ZTLOUTFILE=${MATCHING_OUTFILE_WRK2}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEF_FILE_WK2}

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MATCHING_ZEN Error($SVC mv:rc=$rc) "
    echo $JOBNAME " MATCHING Error($SVC mv:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
# OM-2015-0003162 ADD END

#----------------------------------------------------------------------------------------------------
#--- FTTH通信明細のマッチング結果ファイルをソート、改行コードをwindows (CRLF)に変換する
#--- ソートキー
#--- 1.サービス契約番号 2.料金コースコード 3.料金サービスコード 4.請求契約番号 5.請求年月 6.利用年月
#----------------------------------------------------------------------------------------------------
# OM-2015-0003162 MOD START
#bsortex \
#    -sort key=0.10asca,1.3asca,2.12asca,3.10asca,4.6asca,5.6asca \
#    -record recform=txtcsv \
#    -input reclen=100 file=${MATCHING_OUTFILE_WRK1} \
#    -output file=${OUTFILE} \
#     reconst="0.END,EMPTY" linedlmt=crlf
bsortex \
    -sort key=0.10asca,1.3asca,2.12asca,3.10asca,4.6asca,5.6asca \
    -record recform=txtcsv \
    -input reclen=100 file=${MATCHING_OUTFILE_WRK2} \
    -output file=${OUTFILE} \
     reconst="0.END,EMPTY" linedlmt=crlf
# OM-2015-0003162 MOD END
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${OUTFILE}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${OUTFILE}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# Java入力ファイルの作成待ち受け（FTTH通信合計）
wait ${pidUNLOAD_AC0601}
rc_UNLOAD_AC0601=$?

# エラー処理
if [ ${rc_UNLOAD_AC0601} -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pidUNLOAD_AC0601 Error(rc=${rc_UNLOAD_AC0601}) "
    echo $JOBNAME " pidUNLOAD_AC0601 Error(rc=${rc_UNLOAD_AC0601}) "
    exit ${G_RTN_ERROR}
fi


#
#---ＡＰＬ起動
#

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
exit_rc=$rc

#ワーク削除
if [ $WK_RM = "true" ]
then
    rm -f ${SQLFILE_AC0591_WRK}
    rm -f ${SQLFILE_AC0591_WRK2}
    rm -f ${SQLFILE_AC0561_WRK}
    rm -f ${SQLFILE_AC0601_WRK}
    rm -f ${SQLFILE_AC0601D_WRK}
    rm -f ${UNLOAD_OUTFILE_AC0591_TMP10}
    rm -f ${UNLOAD_OUTFILE_AC0591_TMP11}
    rm -f ${UNLOAD_OUTFILE_AC0591_TMP20}
    rm -f ${UNLOAD_OUTFILE_AC0591_TMP21}
    rm -f ${UNLOAD_OUTFILE_AC0561_TMP1}
    rm -f ${UNLOAD_OUTFILE_AC0561_TMP2}
    rm -f ${UNLOAD_OUTFILE_AC0601_TMP1}
    rm -f ${UNLOAD_OUTFILE_AC0591_1}
    rm -f ${UNLOAD_OUTFILE_AC0591_2}
    rm -f ${UNLOAD_OUTFILE_AC0591_3}
    rm -f ${UNLOAD_OUTFILE_AC0591_4}
    rm -f ${UNLOAD_OUTFILE_AC0591_5}
    rm -f ${MATCHING_OUTFILE_WRK1}
    rm -f ${DEF_FILE_WK1}
    # OM-2015-0003162 ADD START
    rm -f ${DEF_FILE_WK2}
    rm -f ${MATCHING_OUTFILE_WRK2}
    # OM-2015-0003162 ADD END
fi

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

exit $exit_rc
