#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：ｅｏ光電話合計抽出
#
# 機能          ：eo光電話通話明細テーブルからeo光電話利用情報作成する。
#
#SQLPARAM
#1つ目（イベントコード：料金計算日）
#2つ目（イベント年月日：バッチ運用日）
#3つ目（業務パラメータＩＤ：対象キーワーク使用機能識別コード＿再計算対象請求先番号（当月））
#4つ目（業務パラメータ適用開始年月日：バッチ運用日）
#5つ目（業務パラメータ適用終了年月日：バッチ運用日）
#6つ目（課金可否：課金可）
#
#FREE
#1：（javaで）料金を100で割って小数点以下を切り捨てる。／0：料金をそのまま使用する。
#
# コマンド形式  ：EO3090210J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.01           2013/03/18  FJ）広野     性能改善: アンロードの参照先スクリプト変更にともなう修正
# v4.01.01        2013/04/08  FJ) 狭間     【ST4-2013-0000286】性能改善の為、アンロード並列化及び処理見直しと水平展開
# v5.00.00        2013/07/20  FJ) 後藤     【TG1-2013-0000710】サービス開始日未設定も処理対象になるように修正
# v5.00.01        2013/10/20  FJ) 前田     【ST4-2013-0000589】SQL不備。請求年月にシングルクォートをつけるように修正
# v6.00.00        2013/12/17  FJ) 狭間     【ST4-2013-0000582】性能改善の為、アンロードを分割
# v6.00.01        2014/01/08  FJ) 狭間     【OM-2013-0004533】電話のコース変更時に明細と合計が紐付かない修正
# v8.00.00        2014/05/29  FJ) 狭間     【OM-2014-0001833】遡及番号解約時、通話料金のみ料金コース泣き別れ請求表示
# v8.00.01        2014/06/03  FJ) 狭間     【OM-2014-0001799】通話料金がサービス契約内訳番号で泣き別れ
# v8.00.02        2014/06/16  FJ) 狭間     【OM-2014-0001799】従量サービス契約情報をeo光電話通話明細と請求契約番号、サービス契約番号、
#                                                             サービス契約内訳番号、課金先電話番号で結合できるレコードのみに絞る（追加修正）
# v8.00.03        2014/06/24  FJ) 狭間     【OM-2014-0001833】(追加修正)料金グループ、コース、サービスをサービス契約蓄積から取得するよう修正
# v8.00.04        2014/06/30  FJ) 狭間     【OM-2014-0001833】(追加修正)サービス契約蓄積を料金サービス管理（料金サービス識別コード＝'1'）で絞り込むよう修正
# v8.00.05        2014/07/04  FJ) 狭間     【OM-2014-0001833】(追加修正)前回の修正で従量サービス契約情報とeo光電話通話明細の結合から請求年月を外した修正を戻す
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#---ワークファイル削除モード
WK_RM=true ;

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

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

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

# eo光電話通話明細アンロード定義ファイル
# ※bsortexでサマリする為に料金（小数点下2桁）を100倍して整数化している
UL_AC_U_AC0391_04_DEF=${SQL_DIR}/AC_U_AC0391_04.sql
UL_AC_U_AC0391_04_DEF_WK1=${SQL_DIR}/${JOBNAME}_AC_U_AC0391_04_UNLOADER_WK_1.sql

# eo光電話通話明細アンロードファイル
UL_AC_U_AC0391_04_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0391_04_UNLOAD_WK_1.csv
BS_AC_U_AC0391_04_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0391_04_BSORT_WK_1.csv

# 対象キーワークアンロード定義ファイル
UL_AC_U_AC0561_06_DEF=${SQL_DIR}/AC_U_AC0561_06.sql
UL_AC_U_AC0561_06_DEF_WK1=${SQL_DIR}/${JOBNAME}_AC_U_AC0561_06_UNLOADER_WK_1.sql

# 対象キーワークアンロードファイル
UL_AC_U_AC0561_06_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0561_06_UNLOAD_WK_1.csv

# 従量サービス契約情報アンロード定義ファイル
UL_AC_U_AC0551_01_DEF=${SQL_DIR}/AC_U_AC0551_01.sql
UL_AC_U_AC0551_01_DEF_WK1=${SQL_DIR}/${JOBNAME}_AC_U_AC0551_01_UNLOADER_WK_1.sql

# 従量サービス契約情報アンロードファイル
UL_AC_U_AC0551_01_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0551_01_UNLOAD_WK_1.csv
MT_AC_U_AC0551_01_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0551_01_MATCHING_WK_1.csv
BS_AC_U_AC0551_01_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0551_01_BSORT_WK_1.csv
BS_AC_U_AC0551_01_CSV_WK2=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0551_01_BSORT_WK_2.csv
BS_AC_U_AC0551_01_CSV_WK3=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0551_01_BSORT_WK_3.csv
BS_AC_U_AC0551_01_CSV_WK4=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0551_01_BSORT_WK_4.csv
BS_AC_U_AC0551_01_CSV_WK5=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0551_01_BSORT_WK_5.csv

# サービス契約蓄積アンロードファイル（EO31J0110J0で作成済みのファイルを共用）
UL_AC_U_AC0461_TOU_CSV=${MID_DIR_AC}/ACIFM217001.csv
MT_AC_U_AC0461_TOU_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFM217001_MATCHING_WK_1.csv
BS_AC_U_AC0461_TOU_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFM217001_BSORT_WK_1.csv
BS_AC_U_AC0461_TOU_CSV_WK2=${MID_DIR_AC}/${JOBNAME}_ACIFM217001_BSORT_WK_2.csv
BS_AC_U_AC0461_TOU_CSV_WK3=${MID_DIR_AC}/${JOBNAME}_ACIFM217001_BSORT_WK_3.csv
BS_AC_U_AC0461_TOU_CSV_WK4=${MID_DIR_AC}/${JOBNAME}_ACIFM217001_BSORT_WK_4.csv
BS_AC_U_AC0461_TOU_CSV_WK5=${MID_DIR_AC}/${JOBNAME}_ACIFM217001_BSORT_WK_5.csv

# 料金サービス管理アンロードファイル
UL_AC_U_AC0181_03_DEF=${SQL_DIR}/AC_U_AC0181_03.sql
UL_AC_U_AC0181_03_DEF_WK1=${SQL_DIR}/${JOBNAME}_AC_U_AC0181_03_UNLOADER_WK_1.sql
UL_AC_U_AC0181_03_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0181_03_UNLOAD_WK_1.csv

# マッチング定義ファイル（従量サービス契約情報抽出）
MC_AC_CM_0095_DEF=${G_TOOLSH}/util/def/AC_CM_0095.def
MC_AC_CM_0095_DEF_WK1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0095_MATCHING_WK_1.def

# マッチング定義ファイル（eo光電話通話明細集計情報（再計算対象））
MC_AC_CM_0082_DEF=${G_TOOLSH}/util/def/AC_CM_0082.def
MC_AC_CM_0082_DEF_WK1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0082_MATCHING_WK_1.def

# マッチング定義ファイル（料金サービス管理サービス契約蓄積）
MC_AC_CM_0096_DEF=${G_TOOLSH}/util/def/AC_CM_0096.def
MC_AC_CM_0096_DEF_WK1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0096_MATCHING_WK_1.def

# マッチングファイル（eo光電話通話明細集計情報（再計算対象））
MC_AC_CM_0082_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_AC_CM_0082_MATCHING_WK_1.csv
BS_AC_CM_0082_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_AC_CM_0082_BSORT_WK_1.csv

# マッチング定義ファイル（最終）
MC_AC_CM_0011_DEF=${G_TOOLSH}/util/def/AC_CM_0011.def
MC_AC_CM_0011_DEF_WK1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0011_MATCHING_WK_1.def

# 出力ファイル
OUT_FILE1=${MID_DIR_AC}/ACIFM203001.csv
OUT_FILE1_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFM203001_OUT_WK_1.csv

#
#--- 変数定義
#

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

#- バッチ運用日
OPEDATE="${RSLT_OPEDATE}"

#- イベントコード（料金計算日）
EVENT_CD="03"

#- イベントコード（利用開始日）
EVENT_CD_USE_STAYMD="01"

#- イベントコード（利用終了日）
EVENT_CD_USE_ENDYMD="02"

#- 請求年月取得
. EO3SEIKYYM.sh ${EVENT_CD} ${OPEDATE} ${JOBNAME}

#- 請求年月末日取得
. EO3EVENTYMD.sh ${EVENT_CD_USE_ENDYMD} ${SEIKY_YM} ${JOBNAME}
SEIKY_YM_END_YMD=${EVENT_YMD}

#- 翌月取得
TARGET_DATE=${SEIKY_YM}01
YOKUGETSU=$(date +%Y%m --date "${TARGET_DATE} 1 month")

#- 翌月初日取得
. EO3EVENTYMD.sh ${EVENT_CD_USE_STAYMD} ${YOKUGETSU} ${JOBNAME}
YOKUGETSU_YM_STA_YMD=${EVENT_YMD}

#- 業務パラメータID
WORK_PARAM_ID="AC_TWK_RE_CL_SKY_NO1"

#- 課金可否：1(可)
CHRG_KH="1"

#
#--- SQLバインド変数マッピング
#

#- eo光電話通話明細
cp -f ${UL_AC_U_AC0391_04_DEF} ${UL_AC_U_AC0391_04_DEF_WK1}
sed -i -e "s/:SEIKY_YM/'${SEIKY_YM}'/"           ${UL_AC_U_AC0391_04_DEF_WK1} 
sed -i -e "s/:CHRG_KH/'${CHRG_KH}'/"             ${UL_AC_U_AC0391_04_DEF_WK1} 

#- 対象キーワーク
cp -f ${UL_AC_U_AC0561_06_DEF} ${UL_AC_U_AC0561_06_DEF_WK1}
sed -i -e "s/:OPEDATE/'${OPEDATE}'/"             ${UL_AC_U_AC0561_06_DEF_WK1} 
sed -i -e "s/:WORK_PARAM_ID/'${WORK_PARAM_ID}'/" ${UL_AC_U_AC0561_06_DEF_WK1} 

#- 課金対象従量サービス契約蓄積
cp -f ${UL_AC_U_AC0551_01_DEF} ${UL_AC_U_AC0551_01_DEF_WK1}

#- 料金サービス管理
cp -f ${UL_AC_U_AC0181_03_DEF} ${UL_AC_U_AC0181_03_DEF_WK1}
sed -i -e "s/\:OPE_DATE/${OPEDATE}/" ${UL_AC_U_AC0181_03_DEF_WK1}

#-------------------------------------------------------------------------------
#--- UNLOAD処理
#-------------------------------------------------------------------------------

#- eo光電話通話明細
sh ${G_TOOLSH}/EOKULD03.sh ${UL_AC_U_AC0391_04_DEF_WK1} ${UL_AC_U_AC0391_04_CSV_WK1} &
AC0391_04pid=$!

#- 対象キーワーク
sh ${G_TOOLSH}/EOKULD03.sh ${UL_AC_U_AC0561_06_DEF_WK1} ${UL_AC_U_AC0561_06_CSV_WK1} &
AC0561_06pid=$!

#- 従量サービス契約情報（最新全件）
sh ${G_TOOLSH}/EOKULD03.sh ${UL_AC_U_AC0551_01_DEF_WK1} ${UL_AC_U_AC0551_01_CSV_WK1} &
AC0551_01pid=$!

#- 料金サービス管理
sh ${G_TOOLSH}/EOKULD03.sh ${UL_AC_U_AC0181_03_DEF_WK1} ${UL_AC_U_AC0181_03_CSV_WK1} &
AC0181_03_1pid=$!

# すべての抽出が終了するのを待つ
wait ${AC0391_04pid}
AC0391_04rc=$?

wait ${AC0561_06pid}
AC0561_06rc=$?

wait ${AC0551_01pid}
AC0551_01rc=$?

wait ${AC0181_03_1pid}
AC0181_03_1rc=$?

if [ ${AC0391_04rc} -ne 0 ] || [ ${AC0561_06rc} -ne 0 ] || [ ${AC0551_01rc} -ne 0 ] || [ ${AC0181_03_1rc} -ne 0 ]
then
    if [ ${AC0391_04rc} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " AC0391_04_UNLOAD Error($SVC AC0391_04_UNLOAD:rc=${AC0391_04rc}) " 
        echo $JOBNAME " AC0391_04_UNLOAD Error($SVC AC0391_04_UNLOAD:rc=${AC0391_04rc}) "
    fi
    if [ ${AC0561_06rc} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " AC0561_06_UNLOAD Error($SVC AC0561_06_UNLOAD:rc=${AC0561_06rc}) " 
        echo $JOBNAME " AC0561_06_UNLOAD Error($SVC AC0561_06_UNLOAD:rc=${AC0561_06rc}) "
    fi
    if [ ${AC0551_01rc} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " AC0551_01_UNLOAD Error($SVC AC0551_01_UNLOAD:rc=${AC0551_01rc}) " 
        echo $JOBNAME " AC0551_01_UNLOAD Error($SVC AC0551_01_UNLOAD:rc=${AC0551_01rc}) "
    fi
    if [ ${AC0181_03_1rc} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " AC0181_UNLOAD Error($SVC AC0181_unload1:rc=${AC0181_03_1rc}) " 
        echo $JOBNAME " AC0181_UNLOAD Error($SVC AC0181_unload1:rc=${AC0181_03_1rc}) "
    fi
    exit ${G_RTN_ERROR}
fi

#-------------------------------------------------------------------------------
#- マッチングで従量サービス契約情報（最新）の作成
#-------------------------------------------------------------------------------
(
# eo光電話通話明細を従量サービス契約情報との結合キーで集約する
# 集計単位：サービス契約番号、請求契約番号、課金先電話番号、請求年月、サービス契約内訳番号
bsortex \
    -sort key="0.10asca,1.10asca,2.12asca,3.6asca,7.12ascr" \
    -input reclen=300 file=${UL_AC_U_AC0391_04_CSV_WK1} \
    -record recform=txtcsv \
    -summary suppress first \
    -output file=${BS_AC_U_AC0391_04_CSV_WK1}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${UL_AC_U_AC0391_04_CSV_WK1}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${UL_AC_U_AC0391_04_CSV_WK1}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#- マッチング定義更新
cp -f ${MC_AC_CM_0095_DEF} ${MC_AC_CM_0095_DEF_WK1}
sed -i -e "s%:AC_U_AC0551_01%${UL_AC_U_AC0551_01_CSV_WK1}%" ${MC_AC_CM_0095_DEF_WK1}
sed -i -e "s%:AC_U_AC0391_04%${BS_AC_U_AC0391_04_CSV_WK1}%" ${MC_AC_CM_0095_DEF_WK1}

#
#- マッチング
#
ZTLOUTFILE=${MT_AC_U_AC0551_01_CSV_WK1}
export ZTLOUTFILE
${G_TOOLSH}/util/bin/ZTLMAT01 ${MC_AC_CM_0095_DEF_WK1}

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

# 課金開始年月日≦請求年月末日（１－１）と課金開始年月日≧翌月月初日（２－１）に分ける
bsortex \
    -copy \
    -input reclen=300 file=${MT_AC_U_AC0551_01_CSV_WK1} \
    -record recform=txtcsv \
    -output file=${BS_AC_U_AC0551_01_CSV_WK1} case="22.8asc.le.'${SEIKY_YM_END_YMD}'" \
    -output file=${BS_AC_U_AC0551_01_CSV_WK2} case="22.8asc.ge.'${YOKUGETSU_YM_STA_YMD}'" 
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0551_01_CSV_WK1}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0551_01_CSV_WK1}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# 課金開始年月日≦請求年月末日のレコードから課金開始年月日が最新（最大）、請求年月（最大）のレコードのみ抽出する（１－２）
# 集計単位：サービス契約番号、請求契約番号、請求年月、電話番号
bsortex \
    -sort key="0.10asca,1.10asca,3.6asca,2.11asca,22.8ascr" \
    -input reclen=300 file=${BS_AC_U_AC0551_01_CSV_WK1} \
    -record recform=txtcsv \
| bsortex \
    -merge key="0.10asc,1.10asc,3.6asc,2.11asc" \
    -input reclen=300 \
    -record recform=txtcsv \
    -summary suppress first \
    -output file=${BS_AC_U_AC0551_01_CSV_WK3}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0551_01_CSV_WK3}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0551_01_CSV_WK3}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# 課金開始年月日≧翌月月初日のレコードから課金開始年月日が最古（最小）、請求年月（最大）のレコードのみ抽出する（２－２）
# 集計単位：サービス契約番号、請求契約番号、請求年月、電話番号
bsortex \
    -sort key="0.10asca,1.10asca,3.6asca,2.11asca,22.8asca" \
    -input reclen=300 file=${BS_AC_U_AC0551_01_CSV_WK2} \
    -record recform=txtcsv \
| bsortex \
    -merge key="0.10asc,1.10asc,3.6asc,2.11asc" \
    -input reclen=300 \
    -record recform=txtcsv \
    -summary suppress first \
    -output file=${BS_AC_U_AC0551_01_CSV_WK4}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0551_01_CSV_WK4}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0551_01_CSV_WK4}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# １－２と２－２をマージして課金開始年月日が最古（最小）のレコードのみ抽出する
# ※１－２が優先の為
bsortex \
    -sort key="0.10asca,1.10asca,3.6asca,2.11asca,22.8asca" \
    -input reclen=300 file=${BS_AC_U_AC0551_01_CSV_WK3},${BS_AC_U_AC0551_01_CSV_WK4} \
    -record recform=txtcsv \
| bsortex \
    -merge key="0.10asc,1.10asc,3.6asc,2.11asc" \
    -input reclen=300 \
    -record recform=txtcsv \
    -summary suppress first \
    -output file=${BS_AC_U_AC0551_01_CSV_WK5}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0551_01_CSV_WK5}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0551_01_CSV_WK5}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
) &
bsortex_1pid=$!

#-------------------------------------------------------------------------------
#- サービス契約蓄積（当月）の最新レコードを取得する
#- 集計単位：サービス契約番号
#-------------------------------------------------------------------------------
(
# 料金サービス管理をマッチングしてサービス契約蓄積を絞り込む
# 結合キー：料金コースコード、料金サービスコード

#- マッチング定義更新
cp -f ${MC_AC_CM_0096_DEF} ${MC_AC_CM_0096_DEF_WK1}
sed -i -e "s%:CSVFILE_AC0461%${UL_AC_U_AC0461_TOU_CSV}%"       ${MC_AC_CM_0096_DEF_WK1}
sed -i -e "s%:CSVFILE_AC0181_03%${UL_AC_U_AC0181_03_CSV_WK1}%" ${MC_AC_CM_0096_DEF_WK1}

#- マッチング
ZTLOUTFILE=${MT_AC_U_AC0461_TOU_CSV_WK1}
export ZTLOUTFILE
${G_TOOLSH}/util/bin/ZTLMAT01 ${MC_AC_CM_0096_DEF_WK1}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching_AC_CM_0096 Error($SVC matching_AC_CM_0096:rc=$rc) "
    echo $JOBNAME " Matching_AC_CM_0096 Error($SVC matching_AC_CM_0096:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# 課金開始年月日≦請求年月末日（１－１）と課金開始年月日≧翌月月初日（２－１）に分ける
# その際、項目再編集を行う
# 出力項目：サービス契約番号、請求年月、料金グループコード、料金コースコード、料金サービスコード、課金開始年月日、課金終了年月日
bsortex \
    -copy \
    -input reclen=300 file=${MT_AC_U_AC0461_TOU_CSV_WK1} \
    -record recform=txtcsv \
    -output file=${BS_AC_U_AC0461_TOU_CSV_WK1} case="5.8asc.le.'${SEIKY_YM_END_YMD}'" \
     reconst="1.20,'${SEIKY_YM}'.6asc,2.2,3.3,4.12,5.8,6.8" linedlmt=lf \
    -output file=${BS_AC_U_AC0461_TOU_CSV_WK2} case="5.8asc.ge.'${YOKUGETSU_YM_STA_YMD}'" \
     reconst="1.20,'${SEIKY_YM}'.6asc,2.2,3.3,4.12,5.8,6.8" linedlmt=lf
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0461_TOU_CSV_WK1}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0461_TOU_CSV_WK1}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# 課金開始年月日≦請求年月末日のレコードから課金開始年月日が最新（最大）、課金終了年月日（最大）のレコードのみ抽出する（１－２）
# 集計単位：サービス契約番号、請求年月（実質、同一なので見ない）
bsortex \
    -sort key="0.20asca,5.8ascr,6.8ascr" \
    -input reclen=300 file=${BS_AC_U_AC0461_TOU_CSV_WK1} \
    -record recform=txtcsv \
| bsortex \
    -merge key="0.20asca" \
    -input reclen=300 \
    -record recform=txtcsv \
    -summary suppress first \
    -output file=${BS_AC_U_AC0461_TOU_CSV_WK3}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0461_TOU_CSV_WK3}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0461_TOU_CSV_WK3}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# 課金開始年月日≧翌月月初日のレコードから課金開始年月日が最古（最小）、課金終了年月日（最大）のレコードのみ抽出する（２－２）
# 集計単位：サービス契約番号、請求年月（実質、同一なので見ない）
bsortex \
    -sort key="0.20asca,5.8asca,6.8ascr" \
    -input reclen=300 file=${BS_AC_U_AC0461_TOU_CSV_WK2} \
    -record recform=txtcsv \
| bsortex \
    -merge key="0.20asca" \
    -input reclen=300 \
    -record recform=txtcsv \
    -summary suppress first \
    -output file=${BS_AC_U_AC0461_TOU_CSV_WK4}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0461_TOU_CSV_WK4}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0461_TOU_CSV_WK4}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# １－２と２－２をマージして課金開始年月日が最古（最小）のレコードのみ抽出する
# ※１－２が優先の為
bsortex \
    -sort key="0.20asca,5.8asca" \
    -input reclen=300 file=${BS_AC_U_AC0461_TOU_CSV_WK3},${BS_AC_U_AC0461_TOU_CSV_WK4} \
    -record recform=txtcsv \
| bsortex \
    -merge key="0.20asca" \
    -input reclen=300 \
    -record recform=txtcsv \
    -summary suppress first \
    -output file=${BS_AC_U_AC0461_TOU_CSV_WK5}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0461_TOU_CSV_WK5}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${BS_AC_U_AC0461_TOU_CSV_WK5}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
) &
bsortex_2pid=$!

#-------------------------------------------------------------------------------
#- マッチングでeo光電話通話明細集計情報（再計算対象）の作成
#-------------------------------------------------------------------------------
(
#- マッチング定義更新
cp -f ${MC_AC_CM_0082_DEF} ${MC_AC_CM_0082_DEF_WK1}
sed -i -e "s%:CSVFILE_AC0391_04%${UL_AC_U_AC0391_04_CSV_WK1}%" ${MC_AC_CM_0082_DEF_WK1}
sed -i -e "s%:CSVFILE_AC0561_06%${UL_AC_U_AC0561_06_CSV_WK1}%" ${MC_AC_CM_0082_DEF_WK1}

#
#- マッチング
#
ZTLOUTFILE=${MC_AC_CM_0082_CSV_WK1}
export ZTLOUTFILE
${G_TOOLSH}/util/bin/ZTLMAT01 ${MC_AC_CM_0082_DEF_WK1}

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

# SVC_KEI_NO、SEIKY_KEI_NO、KAKINS_TELNO、SEIKY_YM、PRC_KMK_CD、KAZEI_HIKAZEI_CDをキーにして
# PCALL_PRCをサマリ
# ※bsorteでは小数点付では計算できない為、100倍して見た目整数にしている
bsortex \
    -sort key="0.10asca,1.10asca,2.12asca,3.6asca,4.11asca,6.1asca" \
    -input reclen=100 file=${MC_AC_CM_0082_CSV_WK1} \
    -record recform=txtcsv \
    -summary field=5.13asc \
    -output file=${BS_AC_CM_0082_CSV_WK1}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC ${BS_AC_CM_0082_CSV_WK1}:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC ${BS_AC_CM_0082_CSV_WK1}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
) &
matching_1pid=$!

# すべての抽出が終了するのを待つ
wait ${bsortex_1pid}
bsortex_1rc=$?

wait ${bsortex_2pid}
bsortex_2rc=$?

wait ${matching_1pid}
matching_1rc=$?

if [ ${bsortex_1rc} -ne 0 ] || [ ${bsortex_2rc} -ne 0 ] || [ ${matching_1rc} -ne 0 ]
then
    if [ ${bsortex_1rc} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " AC0551_bsortex Error($SVC AC0551_bsortex:rc=${bsortex_1rc}) " 
        echo $JOBNAME " AC0551_bsortex Error($SVC AC0551_bsortex:rc=${bsortex_1rc}) "
    fi
    if [ ${bsortex_2rc} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " AC0461_bsortex1 Error($SVC AC0461_bsortex1:rc=${bsortex_2rc}) " 
        echo $JOBNAME " AC0461_bsortex1 Error($SVC AC0461_bsortex1:rc=${bsortex_2rc}) "
    fi
    if [ ${matching_1rc} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " matching_AC_CM_0082 Error($SVC matching_AC_CM_0082:rc=${bsortex_3rc}) " 
        echo $JOBNAME " matching_AC_CM_0082 Error($SVC matching_AC_CM_0082:rc=${bsortex_3rc}) "
    fi
    exit ${G_RTN_ERROR}
fi

#-------------------------------------------------------------------------------
#- eo光電話通話明細集計情報と従量サービス契約情報のマッチング
#-------------------------------------------------------------------------------

#- マッチング定義更新
cp -f ${MC_AC_CM_0011_DEF} ${MC_AC_CM_0011_DEF_WK1}
sed -i -e "s%:AC_U_AC0391_04%${BS_AC_CM_0082_CSV_WK1}%"     ${MC_AC_CM_0011_DEF_WK1}
sed -i -e "s%:AC_U_AC0551_01%${BS_AC_U_AC0551_01_CSV_WK5}%" ${MC_AC_CM_0011_DEF_WK1}
sed -i -e "s%:AC_U_AC0461%${BS_AC_U_AC0461_TOU_CSV_WK5}%"   ${MC_AC_CM_0011_DEF_WK1}

#
#- マッチング
#
ZTLOUTFILE=${OUT_FILE1_WK1}
export ZTLOUTFILE
${G_TOOLSH}/util/bin/ZTLMAT01 ${MC_AC_CM_0011_DEF_WK1}

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

# ソート（改行コードをCRLFに変換する）
bsortex -sort key=4.10asca,0.10asca,1.6asca,10.11asca \
    -record recform=txtcsv \
    -input reclen=200 file=${OUT_FILE1_WK1} \
    -output file=${OUT_FILE1}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    echo $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

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

P1="OPD=,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO3090210J0,"
P4="IND1=ACIFM203.def,"
P5="INF1=${MID_DIR_AC}/ACIFM203001.csv,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=ACIFM084.def,"
P9="OTF1=${MID_DIR_AC}/ACIFM084045.csv,"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE=1"
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

exit_rc=$rc

# ワーク削除
if [ ${WK_RM} = "true" ] ;then 
    rm -f ${UL_AC_U_AC0391_04_DEF_WK1}
    rm -f ${UL_AC_U_AC0561_06_DEF_WK1}
    rm -f ${UL_AC_U_AC0551_01_DEF_WK1}
    rm -f ${BS_AC_U_AC0391_04_CSV_WK1}
    rm -f ${UL_AC_U_AC0391_04_CSV_WK1}
    rm -f ${UL_AC_U_AC0561_06_CSV_WK1}
    rm -f ${UL_AC_U_AC0551_01_CSV_WK1}
    rm -f ${MT_AC_U_AC0551_01_CSV_WK1}
    rm -f ${BS_AC_U_AC0551_01_CSV_WK1}
    rm -f ${BS_AC_U_AC0551_01_CSV_WK2}
    rm -f ${BS_AC_U_AC0551_01_CSV_WK3}
    rm -f ${BS_AC_U_AC0551_01_CSV_WK4}
    rm -f ${BS_AC_U_AC0551_01_CSV_WK5}
    rm -f ${BS_AC_U_AC0461_TOU_CSV_WK1}
    rm -f ${BS_AC_U_AC0461_TOU_CSV_WK2}
    rm -f ${BS_AC_U_AC0461_TOU_CSV_WK3}
    rm -f ${BS_AC_U_AC0461_TOU_CSV_WK4}
    rm -f ${BS_AC_U_AC0461_TOU_CSV_WK5}
    rm -f ${MC_AC_CM_0095_DEF_WK1}
    rm -f ${MC_AC_CM_0011_DEF_WK1}
    rm -f ${MC_AC_CM_0082_DEF_WK1}
    rm -f ${MC_AC_CM_0082_CSV_WK1}
    rm -f ${BS_AC_CM_0082_CSV_WK1}
    rm -f ${OUT_FILE1_WK1}
    rm -f ${MT_AC_U_AC0461_TOU_CSV_WK1}
    rm -f ${UL_AC_U_AC0181_03_DEF_WK1}
    rm -f ${UL_AC_U_AC0181_03_CSV_WK1}
    rm -f ${MC_AC_CM_0096_DEF_WK1}
fi

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

exit $exit_rc
