#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：ｅｏ光電話合計抽出（工事遅延）
#
# 機能          ：eo光電話通話明細テーブルからeo光電話利用情報作成する。
#
#SQLPARAM
#1つ目（イベントコード：料金計算日）
#2つ目（イベント年月日：前月末日）
#3つ目（業務パラメータＩＤ：対象キーワーク使用機能識別コード＿再計算対象請求先番号（前月））
#4つ目（業務パラメータ適用開始年月日：前月末日）
#5つ目（業務パラメータ適用終了年月日：前月末日）
#6つ目（課金可否：課金可）
#
#FREE
#1：（javaで）料金を100で割って小数点以下を切り捨てる。／0：料金をそのまま使用する。
#
# コマンド形式  ：EO3090410J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.00           2013/03/18  FJ）広野     性能改善: アンロードの参照先スクリプト変更にともなう修正
# v4.00.01        2013/04/08  FJ) 狭間     【ST4-2013-0000286】性能改善の為、アンロード並列化及び処理見直しと水平展開
# v5.00.00        2013/07/20  FJ) 後藤     【TG1-2013-0000710】サービス開始日未設定も処理対象になるように修正
# v6.00.00        2013/12/18  FJ) 狭間     【ST4-2013-0000582】EO3090210J0の性能改善に伴い、javaにパラメータを追加（EO3090410J0の性能改善は行わない）
# 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光電話通話明細の結合から請求年月を外した修正を戻す
# v9.00.00        2014/07/10  FJ) 江森     【OM-2014-0001833】(追加修正)バッチ運用日によって紐付けるサービス契約蓄積アンロードファイルを変更するように修正
# v11.00.00       2014/12/02  FJ) 山下     【OM-2014-0003623】
##############################################################

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

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

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

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

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

#
#---OPD
#
#OPD=$1

##OM-2014-0001833 ADD 20140710 START
#---運用日付取得
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
else
   RSLT_OPEDATE="${OPD}"
fi
##OM-2014-0001833 ADD 20140710 END

#
#---ファイルから運用日を取得
#
read OPD <${MID_DIR_AC}/ACIFM037001.csv

#
#---業務で必要な変数定義
#
[ $# -eq 2 ] &&TAJUKIDO="_$2" ;

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

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

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

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

# eo光電話通話明細集計情報アンロード定義ファイル
UL_FILE1_DEF=${SQL_DIR}/AC_U_AC0391_06.sql
UL_FILE1_DEF_WK1=${SQL_DIR}/${JOBNAME}_AC_U_AC0391_06_UNLOADER_WK_1$TAJUKIDO.sql

# eo光電話通話明細集計情報アンロードファイル
UL_FILE1=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0391_06_BSORT_WK_1$TAJUKIDO.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

# eo光電話通話明細アンロード定義ファイル
# ※従量サービス契約情報の絞り込みに使用
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

# サービス契約蓄積アンロードファイル（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

# マッチング定義ファイル
MATCHING_DEF1=${G_TOOLSH}/util/def/AC_CM_0011.def
MATCHING_DEF1_WK1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0011_MATCHING_WK_1$TAJUKIDO.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

# 出力ファイル
OUT_FILE1=${MID_DIR_AC}/ACIFM203002.csv
OUT_FILE1_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFM203002_OUT_WK_1$TAJUKIDO.csv

#
#--- 変数定義
#

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

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

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

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

##OM-2014-0001833 ADD 20140710 START
#- イベントコード（継続契約料金計算開始日）
EVENT_CD_KIZK_KIYK_PRC_CAL_STAYMD="71"

#- 請求年月取得(継続契約料金計算開始日取得用）
. EO3SEIKYYM.sh ${EVENT_CD} ${RSLT_OPEDATE} ${JOBNAME}

#- 継続契約料金計算開始日取得
. EO3EVENTYMD.sh ${EVENT_CD_KIZK_KIYK_PRC_CAL_STAYMD} ${SEIKY_YM} ${JOBNAME}
KIZK_KIYK_PRC_CAL_STAYMD=${EVENT_YMD}
##OM-2014-0001833 ADD 20140710 END

#- 請求年月取得
. 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_NO2"

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

##OM-2014-0001833 ADD 20140710 START
# OM-2014-0003623 MOD START
# サービス契約蓄積アンロードファイルを選択
#バッチ運用日＜継続契約料金計算開始日の場合、
#異動契約情報（ACIFI001006.csv）よりサービス契約蓄積アンロードファイル（ACIFM217003.csv）を作成する。
#※ここでのバッチ運用日はACIFM037001.csvより取得された運用日ではなく、実際のバッチ運用日のことを指す。
#if [ ${RSLT_OPEDATE} -ge ${KIZK_KIYK_PRC_CAL_STAYMD} ]; then
if [ ${RSLT_OPEDATE} -lt ${KIZK_KIYK_PRC_CAL_STAYMD} ]; then
   # UL_AC_U_AC0461_TOU_CSV=${MID_DIR_AC}/ACIFM217002.csv
   UL_AC_U_AC0461_TOU_CSV=${MID_DIR_AC}/ACIFM217003.csv
   UL_AC_U_AC0461_TOU_CSV_INFILE=${MID_DIR_AC}/ACIFI001006.csv
   #- ワークファイル
   UL_AC_U_AC0461_TOU_CSV_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFM217003_WK_1.csv
   UL_AC_U_AC0461_TOU_CSV_WK2=${MID_DIR_AC}/${JOBNAME}_ACIFM217003_WK_2.csv
   
   #- ACIFI001006.csvをACIFM217003.csvに変換
   #- 回復年月日＝null の場合、"NL"を設定
   bsortex \
     -copy \
     -record recform=txtcsv \
     -input reclen=600 file=${UL_AC_U_AC0461_TOU_CSV_INFILE} \
     -output file=${UL_AC_U_AC0461_TOU_CSV_WK1} case="11.1asc.lt.'0'" \
      reconst="6.10,4.20,0.2,1.3,2.12,17.8,19.8,10.4,8.8,'NL'.2asc" \
     -output file=${UL_AC_U_AC0461_TOU_CSV_WK2} case=other \
      reconst="6.10,4.20,0.2,1.3,2.12,17.8,19.8,10.4,8.8,11.8" \
   
   rc=$?
   if [ $rc -ne 0 ]
   then
         sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsort error(bsort:rc=$rc) "
         echo $JOBNAME " bsort error(bsort:rc=$rc) "
         exit ${G_RTN_ERROR}
   fi
   
   #- マージ
   cat ${UL_AC_U_AC0461_TOU_CSV_WK1} ${UL_AC_U_AC0461_TOU_CSV_WK2} > ${UL_AC_U_AC0461_TOU_CSV}
   
   rc=$?
   if [ $rc -ne 0 ]
   then
         sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " cat error(cat:rc=$rc) "
         echo $JOBNAME " cat error(cat:rc=$rc) "
         exit ${G_RTN_ERROR}
   fi
   
   #- ワークファイル削除
   if [ ${WK_RM} = "true" ]
   then
       rm -f ${UL_AC_U_AC0461_TOU_CSV_WK1}
       rm -f ${UL_AC_U_AC0461_TOU_CSV_WK2}
   fi
# OM-2014-0003623 MOD END
fi
##OM-2014-0001833 ADD 20140710 END

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

#- eo光電話通話明細集計情報
cp -f ${UL_FILE1_DEF} ${UL_FILE1_DEF_WK1}
sed -i -e "s/:OPEDATE/'${OPEDATE}'/"             ${UL_FILE1_DEF_WK1} 
sed -i -e "s/:SEIKY_YM/'${SEIKY_YM}'/"           ${UL_FILE1_DEF_WK1} 
sed -i -e "s/:WORK_PARAM_ID/'${WORK_PARAM_ID}'/" ${UL_FILE1_DEF_WK1} 
sed -i -e "s/:CHRG_KH/'${CHRG_KH}'/"             ${UL_FILE1_DEF_WK1} 

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

#- 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_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_FILE1_DEF_WK1} ${UL_FILE1} &
AC0391pid=$!

#- 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_AC0551_01_DEF_WK1} ${UL_AC_U_AC0551_01_CSV_WK1} &
AC0551pid=$!

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

# すべての抽出が終了するのを待つ
wait ${AC0391pid}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " AC0391_UNLOAD Error($SVC AC0391_unload:rc=$rc) " 
    echo $JOBNAME " AC0391_UNLOAD Error($SVC AC0391_unload:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

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

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

wait ${AC0181_03_1pid}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " AC0181_03_UNLOAD Error($SVC AC0181_03_unload:rc=$rc) " 
    echo $JOBNAME " AC0181_03_UNLOAD Error($SVC AC0181_03_unload:rc=$rc) "
    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=$!

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

wait ${bsortex_2pid}
bsortex_2rc=$?

if [ ${bsortex_1rc} -ne 0 ] || [ ${bsortex_2rc} -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
    exit ${G_RTN_ERROR}
fi

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

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

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

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching1 Error($SVC matching1:rc=$rc) "
    echo $JOBNAME " Matching1 Error($SVC matching1: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=${OPD},"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO3090410J0,"
P4="IND1=ACIFM203.def,"
P5="INF1=${MID_DIR_AC}/ACIFM203002.csv,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=ACIFM084.def,"
P9="OTF1=${MID_DIR_AC}/ACIFM084047.csv,"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE=0"
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_FILE1_DEF_WK1}
    rm -f ${UL_FILE1}
    rm -f ${BS_AC_U_AC0391_04_CSV_WK1}
    rm -f ${UL_AC_U_AC0391_04_CSV_WK1}
    rm -f ${UL_AC_U_AC0551_01_DEF_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 ${MATCHING_DEF1_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
