#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：コンテンツ事業者間精算情報作成
#
# 機能          ：コンテンツ事業者間精算情報を作成する。
#
# コマンド形式  ：EO31K0130J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v20.00.00       2015/11/25  FJ）窪田     【OM-2015-0002625】性能障害(新規作成)
# v20.00.01       2015/12/17  FJ）窪田     【OM-2015-0002625】性能障害(新規作成)【再】
# v20.00.02       2016/02/04  FJ）味岡     【OM-2015-0002625】割引サービス契約データで同一サービス契約番号が複数存在すると帳票データが複数件できる事象の改修
# v36.00.00       2018/05/01  FJ）大崎     【ANK-3394-00-00】ＭＶＮＯ案件(５下)：オプション拡充対応他
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#---システム日時取得
. EOK010410J0.sh "2"
SYSDATE=${RSLT_SYSDATE}

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

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

#--- 依頼ファイル
REQ_FILE=$2

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

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

#
#--- 画面依頼ファイル情報抽出
#
# コンテンツ事業者間精算依頼ファイルが無い場合は処理終了
if [ ! -s $REQ_FILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME
    exit ${G_RTN_NORMAL}
fi

# コンテンツ事業者間精算依頼ファイルの内容を取得
REQ_PARAM=`nkf -x -w -w80 $REQ_FILE | tr -d '\r\n'`

CONT_SVC_CD_LIST=`echo $REQ_PARAM | awk -F, '{print $2}' | sed s/\;/\',\'/g`
CONT_SVC_NM=`echo $REQ_PARAM | awk -F, '{print $3}'`
TRGT_PRD_STAYMD=`echo $REQ_PARAM | awk -F, '{print $4}'`
TRGT_PRD_ENDYMD=`echo $REQ_PARAM | awk -F, '{print $5}'`

if [ ${CONT_SVC_CD_LIST} = "" ] || [ ${TRGT_PRD_STAYMD} = "" ] || [ ${TRGT_PRD_ENDYMD} = "" ]
then
    # エラーメッセージ出力
    if [ ${CONT_SVC_CD_LIST} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Reqest Parameter Error(CONT_SVC_CD_LIST:=${CONT_SVC_CD_LIST}) "
        echo $JOBNAME " Reqest Parameter Error(CONT_SVC_CD_LIST:=${CONT_SVC_CD_LIST}) "
    fi
    if [ ${TRGT_PRD_STAYMD} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Reqest Parameter Error(TRGT_PRD_STAYMD:=${TRGT_PRD_STAYMD}) "
        echo $JOBNAME " Reqest Parameter Error(TRGT_PRD_STAYMD:=${TRGT_PRD_STAYMD}) "
    fi
    if [ ${TRGT_PRD_ENDYMD} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Reqest Parameter Error(TRGT_PRD_ENDYMD:=${TRGT_PRD_ENDYMD}) "
        echo $JOBNAME " Reqest Parameter Error(TRGT_PRD_ENDYMD:=${TRGT_PRD_ENDYMD}) "
    fi
    #- 異常終了
    exit ${G_RTN_ERROR}
fi

# 出力ファイル
OUTFILE_ZIP=コンテンツ事業者間精算明細データ_${SYSDATE}.zip
OUTFILE_NM=コンテンツ事業者間精算明細データ_${SYSDATE}.csv
OUTFILE=${MID_DIR_AC}/${OUTFILE_NM}
OUTFILE_WK1=${MID_DIR_AC}/ACIFM241001.csv
OUTFILE_WK2=${MID_DIR_AC}/ACIFM241002.csv
OUTFILE_WK3=${MID_DIR_AC}/ACIFM241003.csv

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

P1="OPD=,"
P2="SVCCTL=JBSbatUnitServiceControl,"
P3="JOB=EO31K0130J0,"
P4="IND1=,"
P5="INF1=,"
P6="IND2=,"
P7="INF2=,"
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"

##############################################################
#--- ファイル定義
##############################################################
#-- UNLOAD用SQL
# コンテンツISP課金
CN0081_ULD=${SQL_DIR}/AC_U_CN0081_02.sql
# コンテンツクレカ課金
CN0071_ULD=${SQL_DIR}/AC_U_CN0071_02.sql
# 課金先
KK0321_ULD=${SQL_DIR}/AC_U_KK0321_09.sql
# 割引サービス対象契約
KK0481_ULD=${SQL_DIR}/AC_U_KK0481_03.sql
# 割引サービス契約
KK0451_ULD=${SQL_DIR}/AC_U_KK0451_03.sql
# サービス契約
KK0081_ULD=${SQL_DIR}/AC_U_KK0081_19.sql
# お客様
CK0011_ULD=${SQL_DIR}/AC_U_CK0011_05.sql
# コンテンツ契約付加
CN0031_ULD=${SQL_DIR}/AC_U_CN0031_01.sql
# コンテンツサービス
CN0041_ULD=${SQL_DIR}/AC_U_CN0041_02.sql
# クレジットカード会社
KK0531_ULD=${SQL_DIR}/AC_U_KK0531_01.sql
#--- v36.00.00 2018/05/01 ADD START
# 業務パラメータ管理
ZM0321_ULD=${SQL_DIR}/AC_U_ZM0321_03.sql
#--- v36.00.00 2018/05/01 ADD END

#-- マッチング用def
AC_CM_0065=${G_TOOLSH}/util/def/AC_CM_0065.def
AC_CM_0108=${G_TOOLSH}/util/def/AC_CM_0108.def
AC_CM_0109=${G_TOOLSH}/util/def/AC_CM_0109.def

#-- ワークファイル
#- UNLOAD用SQLバインド変数設定後
# コンテンツISP課金
CN0081_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_CN0081_02_WK_1.sql
# コンテンツクレカ課金
CN0071_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_CN0071_02_WK_1.sql
# 課金先
KK0321_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_KK0321_09_WK_1.sql
# 割引サービス対象契約
KK0481_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_KK0481_02_WK_1.sql
# 割引サービス契約
KK0451_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_KK0451_02_WK_1.sql
# サービス契約
KK0081_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_KK0081_12_WK_1.sql
# お客様
CK0011_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_CK0011_04_WK_1.sql
# コンテンツサービス
CN0041_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_CN0041_01_WK_1.sql
# クレジットカード会社
KK0531_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_KK0531_01_WK_1.sql
#--- v36.00.00 2018/05/01 ADD START
# 業務パラメータ管理
ZM0321_ULD_WK_1=${SQL_DIR}/${JOBNAME}_AC_U_ZM0321_01_WK_1.sql
#--- v36.00.00 2018/05/01 ADD END

# マッチング用def変数置換後
AC_CM_0065_WK_1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0065_WK_1.def
AC_CM_0108_WK_1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0108_WK_1.def
AC_CM_0109_WK_1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0109_WK_1.def


# アンロードファイル
CN0081_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_CN0081.csv
CN0071_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_CN0071.csv
KK0321_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0321.csv
KK0481_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0481.csv
KK0451_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0451.csv
KK0081_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0081.csv
CK0011_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_CK0011.csv
CN0031_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_CN0031.csv
CN0041_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_CN0041.csv
KK0531_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_KK0531.csv
#--- v36.00.00 2018/05/01 ADD START
ZM0321_ULD_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_ZM0321.csv
#--- v36.00.00 2018/05/01 ADD END

# マッチング出力ファイル
MATCHING_0065_OUT=${MID_DIR_AC}/${JOBNAME}_MATCHING_0065_OUT_01.csv
MATCHING_0108_OUT=${MID_DIR_AC}/${JOBNAME}_MATCHING_0108_OUT_01.csv
MATCHING_0109_OUT=${MID_DIR_AC}/${JOBNAME}_MATCHING_0109_OUT_01.csv

# KK0321_bsort出力ファイル
KK0321_BSORT_01=${MID_DIR_AC}/${JOBNAME}_KK0321_BSORT_01.csv

# その他ワークファイル
TONT_CHRG_FILE_01=${MID_DIR_AC}/${JOBNAME}_TONT_CHRG_01.csv
TONT_CHRG_FILE_02=${MID_DIR_AC}/${JOBNAME}_TONT_CHRG_02.csv
WRIB_SVC_FILE_01=${MID_DIR_AC}/${JOBNAME}_WRIB_SVC_FILE_01.csv
WRIB_SVC_FILE_02=${MID_DIR_AC}/${JOBNAME}_WRIB_SVC_FILE_02.csv
CN0041_ULD_FILE_02=${MID_DIR_AC}/${JOBNAME}_AC_U_CN0041_02.csv
MATCHING_0065_OUT_MID_01=${MID_DIR_AC}/${JOBNAME}_MATCHING_0065_OUT_MID_01.csv
MATCHING_0065_OUT_MID_02=${MID_DIR_AC}/${JOBNAME}_MATCHING_0065_OUT_MID_02.csv
#--- v36.00.00 2018/05/01 ADD START
ZM0321_WORK_FILE=${MID_DIR_AC}/${JOBNAME}_ZM0321_WORK.csv
HANYO_WORK_FILE_01=${MID_DIR_AC}/${JOBNAME}_HANYO_WORK_01.csv
HANYO_WORK_FILE_02=${MID_DIR_AC}/${JOBNAME}_HANYO_WORK_02.csv
HANYO_WORK_FILE_03=${MID_DIR_AC}/${JOBNAME}_HANYO_WORK_03.csv
SORT_0109_INFILE=${MID_DIR_AC}/${JOBNAME}_SORT_0109_IN.csv
SORT_0109_OUTFILE=${MID_DIR_AC}/${JOBNAME}_SORT_0109_OUT.csv
#--- v36.00.00 2018/05/01 ADD END

# java入力ファイル
JAVA_INFILE=${MID_DIR_AC}/ACIFM247001.csv

##############################################################
#--- バインド変数設定
##############################################################
# コンテンツISP課金
sed -e "s/:CONT_SVC_CD_LIST/'${CONT_SVC_CD_LIST}'/"      ${CN0081_ULD} > ${CN0081_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_STAYMD/'${TRGT_PRD_STAYMD}'/"     ${CN0081_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_ENDYMD/'${TRGT_PRD_ENDYMD}'/"     ${CN0081_ULD_WK_1}

# コンテンツクレカ課金
sed -e "s/:CONT_SVC_CD_LIST/'${CONT_SVC_CD_LIST}'/"      ${CN0071_ULD} > ${CN0071_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_STAYMD/'${TRGT_PRD_STAYMD}'/"     ${CN0071_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_ENDYMD/'${TRGT_PRD_ENDYMD}'/"     ${CN0071_ULD_WK_1}

# 課金先
sed -e "s/:OPEDATE/'${TRGT_PRD_ENDYMD}'/"        ${KK0321_ULD} > ${KK0321_ULD_WK_1}

# 割引サービス対象契約
sed -e "s/:OPEDATE/'${TRGT_PRD_ENDYMD}'/"        ${KK0481_ULD} > ${KK0481_ULD_WK_1}

# 割引サービス契約
sed -e "s/:OPEDATE/'${TRGT_PRD_ENDYMD}'/"        ${KK0451_ULD} > ${KK0451_ULD_WK_1}
sed -i -e "s/:CONT_SVC_CD_LIST/'${CONT_SVC_CD_LIST}'/"   ${KK0451_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_STAYMD/'${TRGT_PRD_STAYMD}'/"     ${KK0451_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_ENDYMD/'${TRGT_PRD_ENDYMD}'/"     ${KK0451_ULD_WK_1}

# サービス契約
sed -e "s/:OPEDATE/'${TRGT_PRD_ENDYMD}'/"        ${KK0081_ULD} > ${KK0081_ULD_WK_1}
sed -i -e "s/:CONT_SVC_CD_LIST/'${CONT_SVC_CD_LIST}'/"   ${KK0081_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_STAYMD/'${TRGT_PRD_STAYMD}'/"     ${KK0081_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_ENDYMD/'${TRGT_PRD_ENDYMD}'/"     ${KK0081_ULD_WK_1}

# お客様
sed -e "s/:OPEDATE/'${TRGT_PRD_ENDYMD}'/"        ${CK0011_ULD} > ${CK0011_ULD_WK_1}
sed -i -e "s/:CONT_SVC_CD_LIST/'${CONT_SVC_CD_LIST}'/"   ${CK0011_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_STAYMD/'${TRGT_PRD_STAYMD}'/"     ${CK0011_ULD_WK_1}
sed -i -e "s/:TRGT_PRD_ENDYMD/'${TRGT_PRD_ENDYMD}'/"     ${CK0011_ULD_WK_1}

# コンテンツサービス契約
sed -e "s/:OPEDATE/'${TRGT_PRD_ENDYMD}'/"        ${CN0041_ULD} > ${CN0041_ULD_WK_1}

# クレジットカード会社
sed -e "s/:OPEDATE/'${TRGT_PRD_ENDYMD}'/"        ${KK0531_ULD} > ${KK0531_ULD_WK_1}

#--- v36.00 2018/05/01 ADD START
# 業務パラメータ管理
sed -e "s/:OPEDATE/'${TRGT_PRD_ENDYMD}'/"        ${ZM0321_ULD} > ${ZM0321_ULD_WK_1}
#--- v36.00 2018/05/01 ADD END

# マッチングdef_0065
sed -e    "s%:KK0481%${KK0481_ULD_FILE}%"    ${AC_CM_0065} > ${AC_CM_0065_WK_1}
sed -i -e "s%:KK0451%${KK0451_ULD_FILE}%"    ${AC_CM_0065_WK_1}

# マッチングdef_0108
sed -e    "s%:CN0071%${CN0071_ULD_FILE}%"    ${AC_CM_0108} > ${AC_CM_0108_WK_1}
sed -i -e "s%:KK0531%${KK0531_ULD_FILE}%"    ${AC_CM_0108_WK_1}

# マッチングdef_0109
sed -e    "s%:TONT_CHRG%${TONT_CHRG_FILE_02}%"  ${AC_CM_0109} > ${AC_CM_0109_WK_1}
sed -i -e "s%:CK0011%${CK0011_ULD_FILE}%"    ${AC_CM_0109_WK_1}
sed -i -e "s%:CN0041%${CN0041_ULD_FILE_02}%" ${AC_CM_0109_WK_1}
sed -i -e "s%:KK0321%${KK0321_BSORT_01}%"    ${AC_CM_0109_WK_1}
sed -i -e "s%:CN0031%${CN0031_ULD_FILE}%"    ${AC_CM_0109_WK_1}
sed -i -e "s%:KK0451%${MATCHING_0065_OUT}%"  ${AC_CM_0109_WK_1}
sed -i -e "s%:KK0081%${KK0081_ULD_FILE}%"    ${AC_CM_0109_WK_1}

##############################################################
#--- サブルーチン（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
}

##############################################################
#--- サブルーチン（MATCHING）
##############################################################
MATCHING(){
export ZTLOUTFILE=$1
${G_TOOLSH}/util/bin/ZTLMAT01 $2
rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " matching2 error(matching:$2=$rc) "
      echo $JOBNAME " matching error(matching:$2=$rc) "
      exit ${G_RTN_ERROR}
fi
}

##############################################################
#--- UNLOAD（第一弾）
##############################################################
# 割引サービス対象契約
UNLOAD ${KK0481_ULD_WK_1} ${KK0481_ULD_FILE} &
pid_ULD_KK0481=$!

# 割引サービス契約
UNLOAD ${KK0451_ULD_WK_1} ${KK0451_ULD_FILE} &
pid_ULD_KK0451=$!

# コンテンツISP課金
UNLOAD ${CN0081_ULD_WK_1} ${CN0081_ULD_FILE} &
pid_ULD_CN0081=$!

# コンテンツクレカ課金
UNLOAD ${CN0071_ULD_WK_1} ${CN0071_ULD_FILE} &
pid_ULD_CN0071=$!

# 課金先
UNLOAD ${KK0321_ULD_WK_1} ${KK0321_ULD_FILE} &
pid_ULD_KK0321=$!

# サービス契約
UNLOAD ${KK0081_ULD_WK_1} ${KK0081_ULD_FILE} &
pid_ULD_KK0081=$!

# クレジットカード会社
UNLOAD ${KK0531_ULD_WK_1} ${KK0531_ULD_FILE} &
pid_ULD_KK0531=$!

# コンテンツ契約付加
UNLOAD ${CN0031_ULD}      ${CN0031_ULD_FILE} &
pid_ULD_CN0031=$!

# コンテンツサービス
UNLOAD ${CN0041_ULD_WK_1} ${CN0041_ULD_FILE} &
pid_ULD_CN0041=$!

# お客さま
UNLOAD ${CK0011_ULD_WK_1} ${CK0011_ULD_FILE} &
pid_ULD_CK0011=$!

#--- v36.00.00 2018/05/01 ADD START
UNLOAD ${ZM0321_ULD_WK_1} ${ZM0321_ULD_FILE} &
pid_ULD_ZM0321=$!
#--- v36.00.00 2018/05/01 ADD END


# UNLOAD処理待ち受け
wait ${pid_ULD_CN0081}
rc_ULD_CN0081=$?
wait ${pid_ULD_CN0071}
rc_ULD_CN0071=$?
wait ${pid_ULD_KK0321}
rc_ULD_KK0321=$?
wait ${pid_ULD_KK0481}
rc_ULD_KK0481=$?
wait ${pid_ULD_KK0451}
rc_ULD_KK0451=$?
wait ${pid_ULD_KK0081}
rc_ULD_KK0081=$?

wait ${pid_ULD_CN0031}
rc_ULD_CN0031=$?
wait ${pid_ULD_CN0041}
rc_ULD_CN0041=$?
wait ${pid_ULD_CK0011}
rc_ULD_CK0011=$?
wait ${pid_ULD_KK0531}
rc_ULD_KK0531=$?
#--- v36.00.00 2018/05/01 ADD START
wait ${pid_ULD_ZM0321}
rc_ULD_ZM0321=$?
#--- v36.00.00 2018/05/01 ADD END

# 処理結果判定
#--- v36.00 2018/05/01 MOD START
#if [ ${rc_ULD_CN0081} -ne 0 ] || [ ${rc_ULD_CN0071} -ne 0 ] || [ ${rc_ULD_KK0321} -ne 0 ] || [ ${rc_ULD_KK0481} -ne 0 ] || [ ${rc_ULD_KK0451} -ne 0 ] || [ ${rc_ULD_KK0081} -ne 0 ] || \
#   [ ${rc_ULD_CN0031} -ne 0 ] || [ ${rc_ULD_CN0041} -ne 0 ] || [ ${rc_ULD_KK0531} -ne 0 ] || [ ${rc_ULD_CK0011} -ne 0 ]
if [ ${rc_ULD_CN0081} -ne 0 ] || [ ${rc_ULD_CN0071} -ne 0 ] || [ ${rc_ULD_KK0321} -ne 0 ] || [ ${rc_ULD_KK0481} -ne 0 ] || [ ${rc_ULD_KK0451} -ne 0 ] || [ ${rc_ULD_KK0081} -ne 0 ] || \
   [ ${rc_ULD_CN0031} -ne 0 ] || [ ${rc_ULD_CN0041} -ne 0 ] || [ ${rc_ULD_KK0531} -ne 0 ] || [ ${rc_ULD_CK0011} -ne 0 ] || [ ${rc_ULD_ZM0321} -ne 0 ]
#--- v36.00 2018/05/01 MOD END
then

    # エラーメッセージ出力
    if [ ${rc_ULD_CN0081} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_CN0081:rc=${rc_ULD_CN0081}) "
        echo $JOBNAME " UNLOAD Error(ULD_CN0081:rc=${rc_ULD_CN0081}) "
    fi
    if [ ${rc_ULD_CN0071} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_CN0071:rc=${rc_ULD_CN0071}) "
        echo $JOBNAME " UNLOAD Error(ULD_CN0071:rc=${rc_ULD_CN0071}) "
    fi
    if [ ${rc_ULD_KK0321} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_KK0321:rc=${rc_ULD_KK0321}) "
        echo $JOBNAME " UNLOAD Error(ULD_KK0321:rc=${rc_ULD_KK0321}) "
    fi
    if [ ${rc_ULD_KK0481} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_KK0481:rc=${rc_ULD_KK0481}) "
        echo $JOBNAME " UNLOAD Error(ULD_KK0481:rc=${rc_ULD_KK0481}) "
    fi
    if [ ${rc_ULD_KK0451} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_KK0451:rc=${rc_ULD_KK0451}) "
        echo $JOBNAME " UNLOAD Error(ULD_KK0451:rc=${rc_ULD_KK0451}) "
    fi
    if [ ${rc_ULD_KK0081} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_KK0081:rc=${rc_ULD_KK0081}) "
        echo $JOBNAME " UNLOAD Error(ULD_KK0081:rc=${rc_ULD_KK0081}) "
    fi
    if [ ${rc_ULD_CN0031} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_CN0031:rc=${rc_ULD_CN0031}) "
        echo $JOBNAME " UNLOAD Error(ULD_CN0031:rc=${rc_ULD_CN0031}) "
    fi
    if [ ${rc_ULD_CN0041} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_CN0041:rc=${rc_ULD_CN0041}) "
        echo $JOBNAME " UNLOAD Error(ULD_CN0041:rc=${rc_ULD_CN0041}) "
    fi
    if [ ${rc_ULD_CK0011} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_CK0011:rc=${rc_ULD_CK0011}) "
        echo $JOBNAME " UNLOAD Error(ULD_CK0011:rc=${rc_ULD_CK0011}) "
    fi
    if [ ${rc_ULD_KK0531} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_KK0531:rc=${rc_ULD_KK0531}) "
        echo $JOBNAME " UNLOAD Error(ULD_KK0531:rc=${rc_ULD_KK0531}) "
    fi
#--- v36.00.00 2018/05/01 ADD START
    if [ ${rc_ULD_ZM0321} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error(ULD_ZM0321:rc=${rc_ULD_ZM0321}) "
        echo $JOBNAME " UNLOAD Error(ULD_ZM0321:rc=${rc_ULD_ZM0321}) "
    fi
#--- v36.00.00 2018/05/01 ADD END
    #- 異常終了
    exit ${G_RTN_ERROR}
fi

#
# 抽出結果の加工
#
##############################################################
# クレジットカード会社のUNLOADファイルに無料用のダミーカード会社を登録
##############################################################
echo "99999,99999,無料" | nkf -x -s >> ${KK0531_ULD_FILE}

##############################################################
# コンテンツサービスをUTF-8に変換
##############################################################
nkf -x -w -w80 ${CN0041_ULD_FILE} > ${CN0041_ULD_FILE_02}

##############################################################
#--- コンテンツクレカ課金・クレジットカード会社マッチング
##############################################################
MATCHING ${MATCHING_0108_OUT} ${AC_CM_0108_WK_1} &
pid_0108=$!

##############################################################
#--- 課金先からサービス契約番号が設定されているもののみ抽出
##############################################################
(
    bsortex -copy -record recform=txtcsv \
      -input reclen=50 include="1.10asc.ge.'0'" file=${KK0321_ULD_FILE} \
      -output file=${KK0321_BSORT_01}

    rc=$?
    if [ $rc -ne 0 ]
    then
          exit ${G_RTN_ERROR}
    fi
) &
pid_KK0321_SORT_1=$!

# 処理待ち受け
wait ${pid_KK0321_SORT_1}
rc_KK0321_SORT_1=$?
wait ${pid_0108}
rc_0108=$?

# 処理結果判定
if [ ${rc_KK0321_SORT_1} -ne 0 ] || [ ${rc_0108} -ne 0 ]
then

    # エラーメッセージ出力
    if [ ${rc_KK0321_SORT_1} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Sort Error(sort_KK0321_1:rc=${rc_KK0321_SORT_1}) "
        echo $JOBNAME " Sort Error(sort_KK0321_1:rc=${rc_KK0321_SORT_1}) "
    fi
    if [ ${rc_0108} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching Error(matching_0108:rc=${rc_0108}) "
        echo $JOBNAME " Matching Error(matching_0108:rc=${rc_0108}) "
    fi
    #- 異常終了
    exit ${G_RTN_ERROR}
fi

##############################################################
# マッチング (割引サービス契約 - 割引サービス対象契約)
##############################################################
if [ -s ${KK0481_ULD_FILE} ]
then
#-----------------------v20.00.02 START-----------------------
#   MATCHING ${MATCHING_0065_OUT} ${AC_CM_0065_WK_1}
    MATCHING ${MATCHING_0065_OUT_MID_01} ${AC_CM_0065_WK_1}
#-----------------------v20.00.02 END-------------------------

    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching Error(matching_0065:rc=${rc_0065}) "
        echo $JOBNAME " Matching Error(matching_0065:rc=${rc_0065}) "
        exit ${G_RTN_ERROR}
    fi
else
#-----------------------v20.00.02 START-----------------------
#   touch ${MATCHING_0065_OUT}
    touch ${MATCHING_0065_OUT_MID_01}
#-----------------------v20.00.02 END-------------------------
fi

#-----------------------v20.00.02 START-----------------------
##############################################################
#--- ソート (割引サービス契約 - 割引サービス対象契約)
#--- ソートキー
#--- 1.サービス契約番号 2.サービス終了年月日
##############################################################
bsortex \
    -sort key=0.10asc,2.10asca \
    -record recform=txtcsv \
    -input file=${MATCHING_0065_OUT_MID_01} reclen=1000 \
    -output file=${MATCHING_0065_OUT_MID_02}

rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " 0065_OUT_MID_01_FILE sort error(cat:rc=$rc) "
      echo $JOBNAME " TONT_CHRG_FILE sort error(cat:rc=$rc) "
      exit ${G_RTN_ERROR}
fi


##############################################################
#--- マージ（各キー項目毎のカレントレコードのみを残す）
#--- マージキー
#--- 1.サービス契約番号
##############################################################
bsortex \
    -merge key=0.10asc \
    -record recform=txtcsv \
    -input file=${MATCHING_0065_OUT_MID_02} reclen=1000 \
    -summary suppress last \
    -output file=${MATCHING_0065_OUT}

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

##############################################################
# コンテンツISP課金・コンテンツクレカ課金・コンテンツ契約(無料コンテンツ)をマージ
##############################################################
cat ${CN0081_ULD_FILE} ${MATCHING_0108_OUT} > ${TONT_CHRG_FILE_01}
rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CN0081 Cat error(cat:rc=$rc) "
      echo $JOBNAME " CN0081 Cat error(cat:rc=$rc) "
      exit ${G_RTN_ERROR}
fi

##############################################################
#--- 事業者間基本情報をソートする
#--- ソートキー
#--- 1.コンテンツ支払方法コード 2.コンテンツサービスコード 3.コンテンツコード
##############################################################
nkf -x -w -w80 ${TONT_CHRG_FILE_01} \
 | bsortex \
    -sort key=9.1ascr,3.4asca,4.39asca \
    -record recform=txtcsv \
    -input reclen=1000 \
    -output file=${TONT_CHRG_FILE_02}

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

##############################################################
#--- 事業者間基本情報・お客様・コンテンツサービス・課金先マッチング
##############################################################
if [ -s ${TONT_CHRG_FILE_02} ]
then
    MATCHING ${MATCHING_0109_OUT} ${AC_CM_0109_WK_1}
    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching Error(matching_0110:rc=${rc_0110}) "
        echo $JOBNAME " Matching Error(matching_0110:rc=${rc_0110}) "
        exit ${G_RTN_ERROR}
    fi
else
    touch ${MATCHING_0109_OUT}
fi

#--- v36.00.00 2018/05/01 ADD START
##############################################################
#--- 汎用項目値を編集
#
#    汎用項目値はDB上で4000Byteで管理されているが、
#    対象コンテンツに連携される値※は256Byte以下を想定し設定する
#    ※値の一部例  内部ID \ 初期ID \ 初期PW
##############################################################
#---  ダブルクォーテーション削除
sed -e 's/"//g' ${ZM0321_ULD_FILE} > ${ZM0321_WORK_FILE}

BSORT_DEF_0109="@ISP_KSSAI_SVC_KEI_NO=0.10 @SEIKY_KEI_NO=1.10 @EOID=2.80 @SYSID=3.10 @KEISHA_TYPE_CD=4.1 @CONT_SVC_CD=5.4 @CONT_SVC_NM=6.242 @CONT_CD=7.6 @CONT_NM=8.242 @CONT_KEI_STA_DTM=9.19 @CONT_KEI_END_DTM=10.19 @KSSAI_WAY=11.242 @SUPPLIER=12.242 \
                @CONT_TANKA=13.12 @CONT_BUY_CNT=14.4 @CHRG_AMNT=15.12 @TEISE_AMNT=16.12 @SVC_STA_YMD=17.10 @VIRUSBUSTER_ID=18.128 @TRENDMICRO_CEREAL_NO=19.128 @HANYO_VALUE_BF=20.256 @HANYO_VALUE_AF=21.256"

# １回目はマッチングした結果から抽出を行う
cp -f ${MATCHING_0109_OUT} ${SORT_0109_INFILE}
cat /dev/null > ${HANYO_WORK_FILE_02}

# コンテンツサービスコードの件数分処理を行う
while read line1
do
    # コンテンツサービスコード、編集位置の取得
    TRGT_CONT_SVC_CD=`echo ${line1} | cut -d ',' -f 1`
    TRGT_POSITION=`echo ${line1} | cut -d ',' -f 2`
    cat /dev/null > ${HANYO_WORK_FILE_01}

    # コンテンツサービスコードと一致したレコードを抽出
    # また一致しなかったレコードを退避する。（次回入力ファイル）
    bsortex -define ${BSORT_DEF_0109} -copy -record recform=txtcsv \
            -input file=${SORT_0109_INFILE} reclen=1800 \
            -output file=${HANYO_WORK_FILE_01} case="@CONT_SVC_CDasc.eq.'${TRGT_CONT_SVC_CD}'" \
            -output file=${SORT_0109_OUTFILE} case=other

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

    # 抽出したレコードの件数分処理を行う
    while read line2
    do
        # 汎用項目値を取得
        HANYO_VALUE_ORG=`echo ${line2} | sed -e 's/"//g' | cut -d ',' -f 21`
        # 設定値
        HANYO_VALUE=
        # 作業用
        _HANYO_VALUE=
        # 汎用項目値の項目数
        HANYO_VALUE_CNT=0
        for bind in ${HANYO_VALUE_ORG}
        do
            HANYO_VALUE_CNT=`expr ${HANYO_VALUE_CNT} + 1`
        done

        # 編集位置の数分処理を行う
        for bind in ${TRGT_POSITION}
        do
            # 編集位置の指定が項目数を超えている場合は処理を行わない
            if [ $bind -gt $HANYO_VALUE_CNT ]
            then
                continue
            fi

            _HANYO_VALUE=`echo ${HANYO_VALUE_ORG} | cut -d ' ' -f $bind`
            if [ "${_HANYO_VALUE}" != "" ]
            then
                if [ "${HANYO_VALUE}" != "" ]
                then
                    # ２回目以降の処理
                    HANYO_VALUE=${HANYO_VALUE}／${_HANYO_VALUE}
                else
                    # １回目の処理
                    HANYO_VALUE=${_HANYO_VALUE}
                fi
            fi
        done

        # 現在処理中のレコードに編集後の汎用項目値を付加しファイル出力する
        echo ${line2}",${HANYO_VALUE}" >> ${HANYO_WORK_FILE_02}

    done < ${HANYO_WORK_FILE_01}

    # ２回目以降は一致しなかった結果から抽出を行う
    mv -f ${SORT_0109_OUTFILE} ${SORT_0109_INFILE}

done < ${ZM0321_WORK_FILE}

# シリアル番号に汎用項目値_編集後を設定
bsortex -define ${BSORT_DEF_0109} -copy -record recform=txtcsv \
        -input file=${HANYO_WORK_FILE_02} reclen=2100 \
        -output file=${HANYO_WORK_FILE_03} \
                reconst="@ISP_KSSAI_SVC_KEI_NO,@SEIKY_KEI_NO,@EOID,@SYSID,@KEISHA_TYPE_CD,@CONT_SVC_CD,@CONT_SVC_NM,@CONT_CD,@CONT_NM,@CONT_KEI_STA_DTM,@CONT_KEI_END_DTM,@KSSAI_WAY,@SUPPLIER,@CONT_TANKA,@CONT_BUY_CNT,@CHRG_AMNT,@TEISE_AMNT,@SVC_STA_YMD,@VIRUSBUSTER_ID,@HANYO_VALUE_AF,EMPTY"

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

# 編集を行ったレコードとそれ以外をファイル結合する
bsortex -define ${BSORT_DEF_0109} -sort key="@CONT_SVC_CDasc" -record recform=txtcsv \
        -input reclen=1800 file=${HANYO_WORK_FILE_03},${SORT_0109_INFILE} \
        -output file=${MATCHING_0109_OUT} \
                reconst="@ISP_KSSAI_SVC_KEI_NO,@SEIKY_KEI_NO,@EOID,@SYSID,@KEISHA_TYPE_CD,@CONT_SVC_CD,@CONT_SVC_NM,@CONT_CD,@CONT_NM,@CONT_KEI_STA_DTM,@CONT_KEI_END_DTM,@KSSAI_WAY,@SUPPLIER,@CONT_TANKA,@CONT_BUY_CNT,@CHRG_AMNT,@TEISE_AMNT,@SVC_STA_YMD,@VIRUSBUSTER_ID,@TRENDMICRO_CEREAL_NO"

rc=$?
if [ $rc -ne 0 ]
then
  sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Sort error(sort:rc=$rc) "
  echo $JOBNAME " Sort error(sort:rc=$rc) "
  exit ${G_RTN_ERROR}
fi
#--- v36.00.00 2018/05/01 ADD END

##############################################################
# 検索条件のコンテンツ名の処理
##############################################################
# コンテンツ名にカンマ(@@COMMA@@)が設定されているものを元に戻す
sed -i -e "s/@@COMMA@@/,/g" ${MATCHING_0109_OUT}

if [ "${CONT_SVC_NM}" = "" ]
then
    # 検索条件のコンテンツ名が設定されていない場合
    cp ${MATCHING_0109_OUT} ${OUTFILE_WK1}
else
    # 検索条件のコンテンツ名が設定されている場合
    grep ${CONT_SVC_NM} ${MATCHING_0109_OUT} > ${OUTFILE_WK1}
fi

##############################################################
#--- 作成した事業者間精算データにヘッダー行を付けCSV形式の括り文字を設定する
##############################################################
# ヘッダー行を付ける
echo "サービス契約番号,請求契約番号,eo-ID,SYSID,テストID,サービスコード,サービス名称,コンテンツコード,コンテンツ名称,契約開始日時,契約解除日時,決済方法,仕入先,単価,数量,金額,訂正金額,FP契約日,VB-ID,シリアル番号" > ${OUTFILE_WK2}
# 作成した事業者間精算データをマージ
cat ${OUTFILE_WK1} >> ${OUTFILE_WK2}
# UTF-8からShift-JIS変換
nkf -x -s ${OUTFILE_WK2} > ${OUTFILE_WK3}

# CSV形式の括り文字を設定する
sed -i -e "s/^/\"/" ${OUTFILE_WK3}
sed -i -e "s/,/\",\"/g" ${OUTFILE_WK3}
sed -i -e "s/$/\"/" ${OUTFILE_WK3}

# 改行(LF→CRLF & Shift-JIS変換)
nkf -x -Lw -s ${OUTFILE_WK3} > ${OUTFILE}

##############################################################
#--- 作成した事業者間精算データをZIP形式に圧縮しダウンロード管理に登録する
##############################################################
# 圧縮ファイル(ZIP)ファイル作成
cd ${MID_DIR_AC}
zip ${OUTFILE_ZIP} ${OUTFILE_NM}
cd -

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

# Javaパラメータの設定
DATA_CNT=`wc -l ${OUTFILE} | awk '{printf $1 - 1}'`
TRN_KNRI_NO=000000000109
DL_KNRI_CTL_FLG=1

#フリー項目に対象ファイルのパスを設定
PARA="$P1$P2$P3$P4$P5$P6$P7$P8$P9$P10$P11$P12$P13$P14$P15$P16$P17$P18${MID_DIR_AC}/${OUTFILE_ZIP};${TRN_KNRI_NO};${DATA_CNT};${DL_KNRI_CTL_FLG}"

#
#---ＡＰＬ起動
#

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 ${CN0081_ULD_WK_1}
    rm -f ${CN0071_ULD_WK_1}
    rm -f ${KK0321_ULD_WK_1}
    rm -f ${KK0481_ULD_WK_1}
    rm -f ${KK0451_ULD_WK_1}
    rm -f ${KK0081_ULD_WK_1}
    rm -f ${CK0011_ULD_WK_1}
    rm -f ${CN0041_ULD_WK_1}
    rm -f ${KK0531_ULD_WK_1}
#--- v36.00.00 2018/05/01 ADD START
    rm -f ${ZM0321_ULD_WK_1}
#--- v36.00.00 2018/05/01 ADD END
    rm -f ${AC_CM_0063_WK_1}
    rm -f ${AC_CM_0065_WK_1}
    rm -f ${AC_CM_0108_WK_1}
    rm -f ${AC_CM_0109_WK_1}
    rm -f ${CN0081_ULD_FILE}
    rm -f ${CN0071_ULD_FILE}
    rm -f ${KK0321_ULD_FILE}
    rm -f ${KK0481_ULD_FILE}
    rm -f ${KK0451_ULD_FILE}
    rm -f ${KK0081_ULD_FILE}
    rm -f ${CK0011_ULD_FILE}
    rm -f ${CN0031_ULD_FILE}
    rm -f ${CN0041_ULD_FILE}
    rm -f ${CN0041_ULD_FILE_02}
    rm -f ${KK0531_ULD_FILE}
#--- v36.00.00 2018/05/01 ADD START
    rm -f ${ZM0321_ULD_FILE}
#--- v36.00.00 2018/05/01 ADD END
    rm -f ${MATCHING_0063_OUT}
    rm -f ${MATCHING_0065_OUT}
#-----------------------v20.00.02 START-----------------------
    rm -f ${MATCHING_0065_OUT_MID_01}
    rm -f ${MATCHING_0065_OUT_MID_02}
#-----------------------v20.00.02 END-------------------------
    rm -f ${MATCHING_0108_OUT}
    rm -f ${MATCHING_0109_OUT}
    rm -f ${KK0321_BSORT_01}
    rm -f ${TONT_CHRG_FILE_01}
    rm -f ${TONT_CHRG_FILE_02}
    rm -f ${WRIB_SVC_FILE_01}
    rm -f ${WRIB_SVC_FILE_02}
#--- v36.00.00 2018/05/01 ADD START
    rm -f ${ZM0321_WORK_FILE}
    rm -f ${HANYO_WORK_FILE_01}
    rm -f ${HANYO_WORK_FILE_02}
    rm -f ${HANYO_WORK_FILE_03}
    rm -f ${SORT_0109_INFILE}
    rm -f ${SORT_0109_OUTFILE}
#--- v36.00.00 2018/05/01 ADD END
    rm -f ${OUTFILE_WK1}
    rm -f ${OUTFILE_WK2}
    rm -f ${OUTFILE_WK3}
    rm -f ${OUTFILE}
fi

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