#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：料金グループ割当（工事遅延）
#
# 機能          ：請求契約番号単位に契約の状態を確認し、契約中の料金グループの中から、
#会計計上先優先順位に従い、料金グループコードを取得し料金グループコードを付与し、
#利用料金情報（料金グループ割当）へ編集出力する。
#※ACPRC2603_会計用計上先料金グループ割当と同処理
#
#
# コマンド形式  ：EO3014320J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.00           2013/03/19  FJ) 後藤    【ST4-2013-0000211】性能改善
# v4.01           2013/03/18  FJ）広野     性能改善: ワークファイルの取り扱い方法を揃える修正
# v4.02           2013/04/08  FJ) 狭間    【ST4-2013-0000286】性能改善の為、アンロード並列化及び処理見直しと水平展開
# v4.03           2013/04/15  FJ) 早崎    【TG1-2013-0000161】
# v6.00           2013/11/28  FJ) 伊藤    【OM-2013-0004274】サービス契約が取得できなかった場合、課金先適用終了しているサービス契約からコードを取得するよう変更。
# v7.00           2014/02/20  FJ) 伊藤    【OM-2014-0000518】課金先適用中かつ、サービス解約済みのレコードからもコードを取得するよう変更。
# v47.00          2019/12/10  FJ) 大崎    【ANK-3674-00-00】請求書発行手数料の料金集計先の優先順変更
##############################################################

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

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

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

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

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

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

#
#---ファイルから運用日を取得
#
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

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

P1="OPD=${OPD},"
P2="SVCCTL=JBSbatMatchServiceControl,"
P3="JOB=EO3014320J0,"
P4="IND1=ACIFI016.def,"
P5="INF1=${MID_DIR_AC}/ACIFI016081.csv,"
P6="IND2=ACIFM198.def,"
P7="INF2=${MID_DIR_AC}/ACIFM198002.csv,"
P8="OTD1=ACIFI016.def,"
P9="OTF1=${MID_DIR_AC}/ACIFI016083.csv,"
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

#
#--- ファイル定義
#
# 料金集計先
CH_M_PRC_SHUK_SK_ULD=${SQL_DIR}/AC_U_CH0701_01.sql

# 課金先
KK_T_KAKINS_ULD=${SQL_DIR}/AC_U_KK0321_04.sql
KK_T_KAKINS_ULD_2=${SQL_DIR}/AC_U_KK0321_11.sql

# サービス契約
KK_T_SVC_KEI_ULD=${SQL_DIR}/AC_U_KK0081_08.sql

# 料金スケジュール定義
CH_M_PRC_SCHDL_TEIGI_ULD=${SQL_DIR}/AC_U_CH0501_04.sql

# マッチング用def
AC_CM_0029=${G_TOOLSH}/util/def/AC_CM_0029.def
# v47.00.00 ANK-3674 ADD START
AC_CM_0167=${G_TOOLSH}/util/def/AC_CM_0167.def
# v47.00.00 ANK-3674 ADD END

# 入力ファイル
INFILE=${MID_DIR_AC}/ACIFM198002.csv

# ワークファイル
CH_M_PRC_SHUK_SK_ULD_WRK=${SQL_DIR}/${JOBNAME}_AC_U_CH0701_01_UNLOADER_WK_1$TAJUKIDO.sql
KK_T_KAKINS_ULD_WRK=${SQL_DIR}/${JOBNAME}_AC_U_KK0321_04_UNLOADER_WK_1$TAJUKIDO.sql
KK_T_KAKINS_ULD_2_WRK=${SQL_DIR}/${JOBNAME}_AC_U_KK0321_11_UNLOADER_WK_1$TAJUKIDO.sql
CH_M_PRC_SCHDL_TEIGI_ULD_WRK=${SQL_DIR}/${JOBNAME}_AC_U_CH0501_04_UNLOADER_WK_1$TAJUKIDO.sql
CH_M_PRC_SCHDL_TEIGI_ULD_WRK_2=${SQL_DIR}/${JOBNAME}_AC_U_CH0501_04_UNLOADER_WK_2$TAJUKIDO.sql

AC_CM_0029_WRK=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0029_MATCHING_WK_1$TAJUKIDO.def
AC_CM_0029_WRK2=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0029_MATCHING_WK_2$TAJUKIDO.def
AC_CM_0029_WRK3=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0029_MATCHING_WK_3$TAJUKIDO.def
# v47.00.00 ANK-3674 ADD START
AC_CM_0167_WRK=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0167_MATCHING_WK$TAJUKIDO.def
# v47.00.00 ANK-3674 ADD END

CH_M_PRC_SHUK_SK_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_CH0701_01_UNLOADER_WK_1$TAJUKIDO.csv
KK_T_KAKINS_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0321_04_UNLOADER_WK_1$TAJUKIDO.csv
KK_T_KAKINS_ULD_FILE_WK=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0321_04_UNLOADER_WK_2$TAJUKIDO.csv
KK_T_KAKINS_ULD_2_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0321_11_UNLOADER_WK_1$TAJUKIDO.csv
KK_T_KAKINS_ULD_2_FILE_WK=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0321_11_UNLOADER_WK_2$TAJUKIDO.csv
KK_T_SVC_KEI_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0081_UNLOADER_WK_1$TAJUKIDO.csv
KK_T_SVC_KEI_ULD_FILE_WK=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0081_UNLOADER_WK_2$TAJUKIDO.csv
KK_T_SVC_KEI_ULD_FILE_WK_2=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0081_UNLOADER_WK_3$TAJUKIDO.csv
KK_T_SVC_KEI_ULD_FILE_WK_3=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0081_UNLOADER_WK_4$TAJUKIDO.csv
CH_M_PRC_SCHDL_TEIGI_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_CH0501_04_UNLOADER_WK_1$TAJUKIDO.csv
CH_M_PRC_SCHDL_TEIGI_ULD_FILE_2=${MID_DIR_AC}/${JOBNAME}_AC_U_CH0501_04_UNLOADER_WK_2$TAJUKIDO.csv

INFILE_WRK=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_1$TAJUKIDO.csv
INFILE_WRK2=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_2$TAJUKIDO.csv
INFILE_WRK3=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_3$TAJUKIDO.csv
INFILE_WRK4=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_4$TAJUKIDO.csv
INFILE_WRK5=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_5$TAJUKIDO.csv
INFILE_WRK6=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_6$TAJUKIDO.csv
INFILE_WRK7=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_7$TAJUKIDO.csv
# v47.00.00 ANK-3674 ADD START
INFILE_WRK8=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_8$TAJUKIDO.csv
INFILE_WRK9=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_9$TAJUKIDO.csv
INFILE_WRK10=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_10$TAJUKIDO.csv
INFILE_WRK11=${MID_DIR_AC}/${JOBNAME}_AC_CM_0029_MATCHING_WK_11$TAJUKIDO.csv
# v47.00.00 ANK-3674 ADD END

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

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

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

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

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

#
#--- 請求年月取得
#
EVENT_CD_01="03"
. EO3SEIKYYM.sh ${EVENT_CD_01} ${OPD} ${JOBNAME}

##############################################################
#--- バインド置換
##############################################################
#１．請求年月：請求年月
#　　SEIKY_YM="${SEIKY_YM}"
#２．イベントコード２：利用終了日
#　　EVENT_CD="02"
#３．バッチ運用日：バッチ運用日
#　　OPEDATE="${OPD}"
#４．イベントコード１：利用開始日
#　　EVENT_CD_2="01"
#

SEIKY_YM="'${SEIKY_YM}'"
EVENT_CD="'02'"
EVENT_CD_2="'01'"
OPEDATE="'${OPD}'"

cp -f ${CH_M_PRC_SHUK_SK_ULD} ${CH_M_PRC_SHUK_SK_ULD_WRK}
sed -i -e "s/:OPEDATE/${OPEDATE}/"     ${CH_M_PRC_SHUK_SK_ULD_WRK}

cp -f ${KK_T_KAKINS_ULD} ${KK_T_KAKINS_ULD_WRK}
sed -i -e "s/:OPEDATE/${OPEDATE}/"     ${KK_T_KAKINS_ULD_WRK}

cp -f ${KK_T_KAKINS_ULD_2} ${KK_T_KAKINS_ULD_2_WRK}
sed -i -e "s/:OPEDATE/${OPEDATE}/"     ${KK_T_KAKINS_ULD_2_WRK}

cp -f ${CH_M_PRC_SCHDL_TEIGI_ULD} ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK}
sed -i -e "s/:SEIKY_YM/${SEIKY_YM}/"   ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK}
sed -i -e "s/:EVENT_CD/${EVENT_CD}/"   ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK}

cp -f ${CH_M_PRC_SCHDL_TEIGI_ULD} ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK_2}
sed -i -e "s/:SEIKY_YM/${SEIKY_YM}/"   ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK_2}
sed -i -e "s/:EVENT_CD/${EVENT_CD_2}/" ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK_2}

cp -f ${AC_CM_0029} ${AC_CM_0029_WRK}
sed -i -e "s%:KK0081%${KK_T_SVC_KEI_ULD_FILE_WK}%"     ${AC_CM_0029_WRK}
sed -i -e "s%:KK0321%${KK_T_KAKINS_ULD_FILE_WK}%"      ${AC_CM_0029_WRK}
sed -i -e "s%:CH0701%${CH_M_PRC_SHUK_SK_ULD_FILE}%"    ${AC_CM_0029_WRK}

cp -f ${AC_CM_0029} ${AC_CM_0029_WRK2}
sed -i -e "s%:KK0081%${KK_T_SVC_KEI_ULD_FILE_WK_2}%"   ${AC_CM_0029_WRK2}
sed -i -e "s%:KK0321%${KK_T_KAKINS_ULD_FILE_WK}%"      ${AC_CM_0029_WRK2}
sed -i -e "s%:CH0701%${CH_M_PRC_SHUK_SK_ULD_FILE}%"    ${AC_CM_0029_WRK2}

cp -f ${AC_CM_0029} ${AC_CM_0029_WRK3}
sed -i -e "s%:KK0081%${KK_T_SVC_KEI_ULD_FILE_WK_3}%"   ${AC_CM_0029_WRK3}
sed -i -e "s%:KK0321%${KK_T_KAKINS_ULD_2_FILE_WK}%"    ${AC_CM_0029_WRK3}
sed -i -e "s%:CH0701%${CH_M_PRC_SHUK_SK_ULD_FILE}%"    ${AC_CM_0029_WRK3}

# v47.00.00 ANK-3674 ADD START
cp -f ${AC_CM_0167} ${AC_CM_0167_WRK}
sed -i -e "s%:MASTER%${INFILE_WRK8}%"   ${AC_CM_0167_WRK}
sed -i -e "s%:TRAN%${INFILE_WRK9}%"     ${AC_CM_0167_WRK}

# v47.00.00 ANK-3674 ADD END

##############################################################
#--- サブルーチン（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($1:rc=$rc) "
      echo $JOBNAME " unload error($1:rc=$rc) "
      exit ${G_RTN_ERROR}
fi
}

############################################################################################
#--- サブルーチン（KK_T_SVC_KEI_SORT）
############################################################################################
KK_T_SVC_KEI_SORT(){
# サービス契約取得結果から、世代最新を抽出する。
bsortex \
	-sort key="0.10asc,1.8asc,2.17asc" \
	-input reclen=100 file=${KK_T_SVC_KEI_ULD_FILE} \
	-record recform=txtcsv \
	-output include="1.8asc.le.'${OPD}'.and.3.1asc.eq.'2'" \
| bsortex \
	-merge key="0.10asc" \
	-input reclen=100 \
	-record recform=txtcsv \
	-summary suppress last \
	-output reconst=0.10,4.8,7.2,9.8 \
| bsortex \
	-copy \
	-input reclen=100 \
	-record recform=txtcsv \
	-output include="1.8asc.le.'${YMD}'" reconst=0.10,2.2,3.8 \
| bsortex \
	-copy -record recform=txtcsv \
	-input reclen=100 \
	-output case="2.8asc.gt.'${YMD_2}'.or.2.8asc.lt.'0'" reconst=0.10,1.2 file=${KK_T_SVC_KEI_ULD_FILE_WK} \
	-output case=other reconst=0.10,1.2 file=${KK_T_SVC_KEI_ULD_FILE_WK_2}
}

############################################################################################
#--- サブルーチン（KK_T_SVC_KEI_SORT2）
############################################################################################
KK_T_SVC_KEI_SORT2(){
# サービス契約取得結果から、サービス契約番号と料金グループコードに絞り込む。
bsortex \
	-sort key="0.10asc,7.2asc" \
	-input reclen=100 file=${KK_T_SVC_KEI_ULD_FILE} \
	-record recform=txtcsv \
	-output reconst=0.10,7.2 \
			file=${KK_T_SVC_KEI_ULD_FILE_WK_3}
}

############################################################################################
#--- サブルーチン（KK_T_KAKINS_SORT）
############################################################################################
KK_T_KAKINS_SORT(){
# 課金先取得結果から、有効なレコードを抽出する。
bsortex \
	-copy\
	-input reclen=100 file=$1 \
	-record recform=txtcsv \
	-output include="1.8asc.gt.'0'" \
			file=$2
}

############################################################################################
#--- MAIN
############################################################################################
UNLOAD ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK} ${CH_M_PRC_SCHDL_TEIGI_ULD_FILE} &
UNLOAD ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK_2} ${CH_M_PRC_SCHDL_TEIGI_ULD_FILE_2} &
UNLOAD ${KK_T_SVC_KEI_ULD} ${KK_T_SVC_KEI_ULD_FILE}

wait
# 月末日
eval YMD=`cat ${CH_M_PRC_SCHDL_TEIGI_ULD_FILE}`
# 月初日
eval YMD_2=`cat ${CH_M_PRC_SCHDL_TEIGI_ULD_FILE_2}`

KK_T_SVC_KEI_SORT &
KK_T_SVC_KEI_SORT2 &

UNLOAD ${KK_T_KAKINS_ULD_WRK}   ${KK_T_KAKINS_ULD_FILE}
UNLOAD ${KK_T_KAKINS_ULD_2_WRK} ${KK_T_KAKINS_ULD_2_FILE}

wait

KK_T_KAKINS_SORT ${KK_T_KAKINS_ULD_FILE} ${KK_T_KAKINS_ULD_FILE_WK} &
KK_T_KAKINS_SORT ${KK_T_KAKINS_ULD_2_FILE} ${KK_T_KAKINS_ULD_2_FILE_WK} &
UNLOAD ${CH_M_PRC_SHUK_SK_ULD_WRK} ${CH_M_PRC_SHUK_SK_ULD_FILE}

wait

(export ZTLOUTFILE=${INFILE_WRK}
${G_TOOLSH}/util/bin/ZTLMAT01 ${AC_CM_0029_WRK})
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    echo $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

(export ZTLOUTFILE=${INFILE_WRK2}
${G_TOOLSH}/util/bin/ZTLMAT01 ${AC_CM_0029_WRK2})
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    echo $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

(export ZTLOUTFILE=${INFILE_WRK3}
${G_TOOLSH}/util/bin/ZTLMAT01 ${AC_CM_0029_WRK3})
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    echo $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#- 請求契約番号単位に、優先順位が最高のレコードのみ抽出する。
#
 bsortex -sort key=0.10asca,1.3ascaN -record recform=txtcsv -input reclen=30 file=${INFILE_WRK} \
 | bsortex -sort key=0.10asca -summary suppress first -record recform=txtcsv -input reclen=30 -output reconst="0.END,'1'.1asc" file=${INFILE_WRK4}

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

 bsortex -sort key=0.10asca,1.3ascaN -record recform=txtcsv -input reclen=30 file=${INFILE_WRK2} \
 | bsortex -sort key=0.10asca -summary suppress first -record recform=txtcsv -input reclen=30 -output reconst="0.END,'2'.1asc" file=${INFILE_WRK5}

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

 bsortex -sort key=0.10asca,1.3ascaN -record recform=txtcsv -input reclen=30 file=${INFILE_WRK3} \
 | bsortex -sort key=0.10asca -summary suppress first -record recform=txtcsv -input reclen=30 -output reconst="0.END,'3'.1asc" file=${INFILE_WRK6}

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

#
#- 請求契約番号単位に、取得優先順位・課金先適用終了年月日が最高のレコードのみ抽出する。
#- また取得優先順位が"2"かつ会計計上先優先順位が"999"（廃止サービス）を別ファイルへ出力する。
#
# v47.00.00 ANK-3674 MOD START
# bsortex -sort key=4.1asca,0.10asca,3.8ascr -record recform=txtflt fldsep=, -input reclen=30 file=${INFILE_WRK4},${INFILE_WRK5},${INFILE_WRK6} \
# | bsortex -sort key=0.10asca -summary suppress first -record recform=txtflt fldsep=, -input reclen=30 -output reconst=0.10,1.3,2.2 file=${INFILE}
 bsortex -sort key=4.1asca,0.10asca,3.8ascr -record recform=txtflt fldsep=, -input reclen=30 file=${INFILE_WRK4},${INFILE_WRK5},${INFILE_WRK6} \
 | bsortex -sort key=0.10asca -summary suppress first -record recform=txtflt fldsep=, -input reclen=30 \
  -output reconst=0.10,1.3,2.2 file=${INFILE_WRK8} case="4.1asc.eq.'2'.and.1.3asc.eq.'999'" \
  -output reconst=0.10,1.3,2.2 file=${INFILE_WRK7} case=other
# v47.00.00 ANK-3674 MOD END

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

# v47.00.00 ANK-3674 ADD START
#
#- 取得優先順位が"3"（紐づきがないサービス）から会計計上先優先順位が"999"を除外する。
#
bsortex -copy -record recform=txtflt fldsep=, -input reclen=30 file=${INFILE_WRK6} include="1.3asc.ne.'999'" \
 -output reconst=0.10,1.3,2.2 file=${INFILE_WRK9}

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex error(input file=${INFILE_WRK6}:rc=$1) "
    echo $JOBNAME " bsortex error(input file=${INFILE_WRK6}:rc=$1) "
    exit ${G_RTN_ERROR}
fi

#
#- 取得優先順位が"3"から取得優先順位が"2"かつ会計計上先優先順位が"999"に紐づくレコードを抽出する。
#
(export ZTLOUTFILE=${INFILE_WRK10}
${G_TOOLSH}/util/bin/ZTLMAT01 ${AC_CM_0167_WRK})
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    echo $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#- 取得優先順位が"2"かつ会計計上先優先順位が"999"と取得優先順位が"3"から再取得したレコードをソート・マージ
#
bsortex -sort key=0.10asca,1.3ascaN -record recform=txtflt fldsep=, -input reclen=30 file=${INFILE_WRK8},${INFILE_WRK10} \
 | bsortex -sort key=0.10asca -summary suppress first -record recform=txtflt fldsep=, -input reclen=30 \
    -output file=${INFILE_WRK11}

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex error(input file=${INFILE_WRK8},${INFILE_WRK10}:rc=$1) "
    echo $JOBNAME " bsortex error(input file=${INFILE_WRK8},${INFILE_WRK10}:rc=$1) "
    exit ${G_RTN_ERROR}
fi

#
#- 「請求契約番号単位に、取得優先順位・課金先適用終了年月日が最高のレコード」
#- へマージする。
#
bsortex -sort key=0.10asca -record recform=txtflt fldsep=, -input reclen=30 file=${INFILE_WRK7},${INFILE_WRK11} \
 -output file=${INFILE}

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex error(input file=${INFILE_WRK7},${INFILE_WRK11}:rc=$1) "
    echo $JOBNAME " bsortex error(input file=${INFILE_WRK7},${INFILE_WRK11}:rc=$1) "
    exit ${G_RTN_ERROR}
fi

# v47.00.00 ANK-3674 ADD END

#
#---ＡＰＬ起動
#

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 ${CH_M_PRC_SHUK_SK_ULD_WRK}
    rm -f ${KK_T_KAKINS_ULD_WRK}
    rm -f ${KK_T_KAKINS_ULD_2_WRK}
    rm -f ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK}
    rm -f ${CH_M_PRC_SCHDL_TEIGI_ULD_WRK_2}
    rm -f ${AC_CM_0029_WRK}
    rm -f ${AC_CM_0029_WRK2}
    rm -f ${CH_M_PRC_SHUK_SK_ULD_FILE}
    rm -f ${KK_T_KAKINS_ULD_FILE}
    rm -f ${KK_T_KAKINS_ULD_FILE_WK}
    rm -f ${KK_T_KAKINS_ULD_2_FILE}
    rm -f ${KK_T_KAKINS_ULD_2_FILE_WK}
    rm -f ${KK_T_SVC_KEI_ULD_FILE}
    rm -f ${KK_T_SVC_KEI_ULD_FILE_WK}
    rm -f ${KK_T_SVC_KEI_ULD_FILE_WK_2}
    rm -f ${KK_T_SVC_KEI_ULD_FILE_WK_3}
    rm -f ${CH_M_PRC_SCHDL_TEIGI_ULD_FILE}
    rm -f ${CH_M_PRC_SCHDL_TEIGI_ULD_FILE_2}
    rm -f ${INFILE_WRK}
    rm -f ${INFILE_WRK2}
    rm -f ${INFILE_WRK3}
    rm -f ${INFILE_WRK4}
    rm -f ${INFILE_WRK5}
    rm -f ${INFILE_WRK6}
    rm -f ${INFILE_WRK7}
# v47.00.00 ANK-3674 ADD START
    rm -f ${INFILE_WRK8}
    rm -f ${INFILE_WRK9}
    rm -f ${INFILE_WRK10}
    rm -f ${INFILE_WRK11}
# v47.00.00 ANK-3674 ADD END
fi

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

exit $exit_rc
