#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：クレジット請求対象情報抽出
#
# 機能          ：請求方法コードがクレジットカードである当月請求年月の請求情報を抽出する。
#
#
# コマンド形式  ：EO6090110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.01           2013/03/12  FJ) 狭間     【ST4-2013-0000146】性能改善の為、基盤T作成の資産を組込
# v4.01.01        2013/04/08  FJ) 狭間     【ST4-2013-0000286】性能改善の為、アンロード並列化及び処理見直しと水平展開
# v4.02           2013/05/27  FJ）黒木     【TAI-2013-0000027】オラクルユーザ変更等
# v5.00           2013/06/27  FJ）藤田     【ST4-2013-0000479】性能改善 nkfの使用を廃止する。
# v5.01           2013/10/08  FJ) 早崎     【OM-2013-0002103,2343】対応
# v5.02           2013/11/05  FJ) 柴田     【OM-2013-0004126】債権内訳から当月の充当額を取得するように修正。
# V58.00.00       2022/05/11  FJ) 吉田     【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
# V58.00.01       2022/07/22  FJ) 吉田     【IT1-2022-0000048】口座振替でエラー
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

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

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

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

BSDEF_DIR=${BSDEF_DIR:-${G_TOOLSH}/bsort/def}
CMDEF_DIR=${CMDEF_DIR:-${G_TOOLSH}/util/def}

#【SQLPARAM】

#債権．債権ステータス（請求確定）,（一部収納済）
SAIKEN_STAT="020"
SAIKEN_STAT2="060"

#請求．請求ステータス（請求済）
SEIKY_STAT="020"

#料金スケジュール定義．イベントコード（請求処理日）
EVENT_CD="04"

#請求．請求方法コード（クレジット）
SEIKY_WAY_CD="4"

#請求．請求種別コード（定例請求）,（遅延分）
SEIKY_SBT_CD1="0"
SEIKY_SBT_CD2="4"

#料金項目抽出変換．システムコード
SYS_CD="CH"

#料金項目抽出変換．抽出変換コード（抽出のみ）
CHSHT_CHG_CD="1"

#業務パラメータID(充当額_合計)
WORK_PARAM_ID="CH_WKS_JUTO_GOKEI"

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

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

P1="OPD=,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO6090110J0,"
# v58.00.01 IT1-2022-0000048 MOD START
#P4="IND1=CHIFM217.def,"
#P5="INF1=${MID_DIR_CH}/CHIFM217002.csv,"
P4="IND1=CHIFM416.def,"
P5="INF1=${MID_DIR_CH}/CHIFM416001.csv,"
# v58.00.01 IT1-2022-0000048 MOD END
P6="IND2=,"
P7="INF2=,"
# v58.00.01 IT1-2022-0000048 MOD START
#P8="OTD1=CHIFM006.def,"
#P9="OTF1=${MID_DIR_CH}/CHIFM006001.csv,"
P8="OTD1=CHIFM417.def,"
P9="OTF1=${MID_DIR_CH}/CHIFM417001.csv,"
# v58.00.01 IT1-2022-0000048 MOD END
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

# 共通関数
function resolveenv () {
eval "cat <<:EOF
`cat $1`
:EOF"
}

# 中間ファイル名を生成/削除する
function createtempname () {
  if [ -z "$1" ]; then
    echo "${TEMPLIST[*]}"
  else
    let TEMPNAME_SEQ++
    . EOK010410J0.sh "1"
    TEMPNAME=$1_$$_${RSLT_SYSDATE}_${TEMPNAME_SEQ}$2
    TEMPLIST[${TEMPNAME_SEQ}]=${TEMPNAME}
    touch $TEMPNAME
  fi
}

function deletetempname () {
  if [ ${#TEMPLIST[*]} -gt 0 ]; then
    rm ${TEMPLIST[*]}
  fi
  unset TEMPLIST TEMPNAME_SEQ TEMPNAME
}


#--- 出力ファイル
# v58.00.01 IT1-2022-0000048 MOD START
#OUTFILE_CHIFM006=${MID_DIR_CH}/CHIFM217002.csv
#OUTFILE_CHIFM006_WRK=${MID_DIR_CH}/CHIFM217002_WRK.csv
OUTFILE_CHIFM006=${MID_DIR_CH}/CHIFM416001.csv
OUTFILE_CHIFM006_WRK=${MID_DIR_CH}/CHIFM416001_WRK.csv
# v58.00.01 IT1-2022-0000048 MOD END

#--- 0.スケジュール定義CH_M_PRC_SCHDL_TEIGI
# TABLE名で全件抽出し merge
UNLOAD_CH0501=${MID_DIR_CH}/${JOBNAME}_CH0501_ULD.csv
CSVBSDEF_CHIFMCH0501=${BSDEF_DIR}/CH_BS_IFMCH0501_003.bsdef
TBLBSDEF_CH0501_000=${BSDEF_DIR}/CH_BS_CH0501_000.bsdef

#--- 1.請求CH_T_SEIKY
# SQL で請求月分抽出し FILTER
SQLFILE_CH0051_TEMPLATE=${SQL_DIR}/CH_U_CH0051_18.sql
UNLOAD_CH0051=${MID_DIR_CH}/${JOBNAME}_CH0051_ULD.csv
TBLBSDEF_CH0051_000=${BSDEF_DIR}/CH_BS_CH0051_000.bsdef

#--- 2.請求内訳CH_T_SEIKY_UCWK
# SQL で請求月分抽出し FILTER
SQLFILE_CH0101_TEMPLATE=${SQL_DIR}/CH_U_CH0101_09.sql
UNLOAD_CH0101=${MID_DIR_CH}/${JOBNAME}_CH0101_ULD.csv
TBLBSDEF_CH0101_000=${BSDEF_DIR}/CH_BS_CH0101_000.bsdef

#--- 3.CH_M_PRC_KMK_CS_CHGE
# SQL で当処理向けに抽出
SQLFILE_CH0401_TEMPLATE=${SQL_DIR}/CH_U_CH0401_08.sql

#--- 4.CH_T_SEIKY_SKN_KNRN 
# テーブル名で全件抽出し FILTER
UNLOAD_CH0041=${MID_DIR_CH}/${JOBNAME}_CH0041_ULD.csv
TBLBSDEF_CH0041_000=${BSDEF_DIR}/CH_BS_CH0041_000.bsdef

#--- 5.CH_T_SAIKEN
# テーブル名で全件抽出し FILTER
UNLOAD_CH0011=${MID_DIR_CH}/${JOBNAME}_CH0011_ULD.csv
TBLBSDEF_CH0011_000=${BSDEF_DIR}/CH_BS_CH0011_000.bsdef

#--- 6.CH_M_PRC_KMK_CS_CHGE
# 充当額合計
SQLFILE_CH0401=${SQL_DIR}/CH_U_CH0401_03.sql
SQLFILE_CH0401_WRK=${MID_DIR_CH}/${JOBNAME}_CH_U_CH0401_03_UNLOADER_WK_01.sql
UNLOAD_OUTFILE_CH0401=${MID_DIR_CH}/${JOBNAME}_CH0401_UNLOADER_WK_01.csv

#--- 7.CH_T_SAIKEN_UCWK
# SQL で請求月分抽出し FILTER
SQLFILE_CH0021=${SQL_DIR}/CH_U_CH0021_05.sql
SQLFILE_CH0021_WRK=${MID_DIR_CH}/${JOBNAME}_CH_U_CH0021_05_UNLOADER_WK_01.sql
UNLOAD_OUTFILE_CH0021=${MID_DIR_CH}/${JOBNAME}_CH0021_UNLOADER_WK_01.csv

#-- マッチング
CMDEF_CHIFM006=${CMDEF_DIR}/CH_CM_0067.def
CMDEF_CHIFM006X=${CMDEF_DIR}/CH_CM_0106.def
CMDEF_CHIFM006Y=${CMDEF_DIR}/CH_CM_0068.def
CMDEF_CHIFM006Z=${CMDEF_DIR}/CH_CM_0104.def

#
#--- アンロードファイルのクリアを行う
#
cat /dev/null > ${UNLOAD_CH0501}
cat /dev/null > ${UNLOAD_CH0051}
cat /dev/null > ${UNLOAD_CH0101}
cat /dev/null > ${UNLOAD_CH0041}
cat /dev/null > ${UNLOAD_CH0011}
cat /dev/null > ${UNLOAD_OUTFILE_CH0401}
cat /dev/null > ${UNLOAD_OUTFILE_CH0021}
#
#--- 結果出力ファイルのクリアを行う
#
cat /dev/null > ${OUTFILE_CHIFM006}
cat /dev/null > ${OUTFILE_CHIFM006_WRK}


#--- スケジュール定義のUNLOAD
UNLOAD=${UNLOAD_CH0501}
TABLE="CH_M_PRC_SCHDL_TEIGI"
sh ${G_TOOLSH}/EOKULD03.sh ${TABLE} ${UNLOAD}
# V58.00.00 ANK-3846-00-00 ADD START
rc=$?
# V58.00.00 ANK-3846-00-00 ADD END
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload Error($2:rc=$rc) "
      echo $JOBNAME " unload Error($2:rc=$rc) "
      exit ${G_RTN_ERROR}
fi

#--- CH_M_PRC_SCHDL_TEIGI のSORT/FILTERING/CURRENT取得
SORTIN=${UNLOAD}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT=${TEMPNAME}

TBLBSDEF=${TBLBSDEF_CH0501_000}
CSVBSDEF=${CSVBSDEF_CHIFMCH0501}

bsortex \
  -define \
  -a ${TBLBSDEF} \
  -a ${CSVBSDEF} \
  -record recform=txtcsv \
  -input reclen=@{RECLEN} \
         include="@{MK_FLG}asc.eq.'0'.and.@{EVENT_CD}asc.eq.'${EVENT_CD}'.and.@{EVENT_YMD}asc.le.'${RSLT_OPEDATE}'" \
         reconst="@{EVENT_CD},@{EVENT_YMD},@{SEIKY_YM}" \
  -sort key="@[EVENT_CD]asc,@[EVENT_YMD]asc" \
 < ${SORTIN} \
 | bsortex \
  -define \
  -a ${CSVBSDEF} \
  -record recform=txtcsv \
  -input reclen=@[RECLEN] \
  -merge key="@[EVENT_CD]asc" \
  -summary suppress last \
  -output removeeof \
          reconst="@[SEIKY_YM]" \
 > ${SORTOUT} 

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

# サマリ時、特定条件で絞りたい場合、上段の -input に以下のような include を追加する。 
#         include="@{MK_FLG}asc.eq.'0'.and.@{RSV_APLY_CD}asc.eq.'2'.and.@{RSV_APLY_YMD}asc.le.'$RSLT_OPECODE'" \
# 後続処理のために結合キーがNULLのものを除去したい場合、下段の -output に以下のような omit を追加する。
#          omit="@[xxxx]ascb.eq.' '.or.@[xxxx]ascb.eq.' '.or.@[xxxx]ascb.eq.' '" \

eval SEIKY_YM=`cat ${SORTOUT}`

#--- CH_T_SEIKY のUNLOAD用SQL文の作成
TEMPLATE=${SQLFILE_CH0051_TEMPLATE}
createtempname ${MID_DIR_CH}/${JOBNAME} .sql
RESOLVED=${TEMPNAME}
resolveenv ${TEMPLATE} > ${RESOLVED}

#--- CH_T_SEIKY のUNLOAD
UNLOAD=${UNLOAD_CH0051}
SQLFILE=${RESOLVED}
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE} ${UNLOAD}

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

#--- CH_T_SEIKY のFILTERING
SORTIN=${UNLOAD}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT=${TEMPNAME}

TBLBSDEF=${TBLBSDEF_CH0051_000}

# V58.00.00 ANK-3846-00-00 MOD START
#bsortex \
#  -define \
#  -a ${TBLBSDEF} \
#  -record recform=txtcsv \
#  -input reclen=@{RECLEN} \
#         include="@{MK_FLG}asc.eq.'0'.and.@{SEIKY_STAT}asc.eq.'${SEIKY_STAT}'.and.@{SEIKY_WAY_CD}asc.eq.'${SEIKY_WAY_CD}'.and.(@{SEIKY_SBT_CD}asc.eq.'${SEIKY_SBT_CD1}'.or.@{SEIKY_SBT_CD}asc.eq.'${SEIKY_SBT_CD2}')" \
#         reconst="@{SEIKY_NO},@{SEIKY_KEI_NO},@{SEIKY_YM},@{SEIKY_STAT},@{SEIKY_WAY_CD},@{BANK_CD},@{BANK_SHITEN_CD},@{KOZA_NO},@{TSUCHO_SYMBOL},@{TSUCHO_NO},@{SEIKY_SBT_CD},@{MK_FLG}" \
#  -copy \
#  -output removeeof \
# < ${SORTIN} \
# > ${SORTOUT}
bsortex \
  -define \
  -a ${TBLBSDEF} \
  -record recform=txtcsv \
  -input reclen=@{RECLEN} \
         include="@{MK_FLG}asc.eq.'0'.and.@{SEIKY_STAT}asc.eq.'${SEIKY_STAT}'.and.@{SEIKY_WAY_CD}asc.eq.'${SEIKY_WAY_CD}'.and.(@{SEIKY_SBT_CD}asc.eq.'${SEIKY_SBT_CD1}'.or.@{SEIKY_SBT_CD}asc.eq.'${SEIKY_SBT_CD2}')" \
         reconst="@{SEIKY_NO},@{SEIKY_KEI_NO},@{SEIKY_YM},@{SEIKY_STAT},@{SEIKY_WAY_CD},@{BANK_CD},@{BANK_SHITEN_CD},@{KOZA_NO},@{TSUCHO_SYMBOL},@{TSUCHO_NO},@{SEIKY_SBT_CD},@{MK_FLG},@{SHIKOSAKI_COMP_CD},@{KSSAI_ID},@{MERCHANT_DEAL_ID}" \
  -copy \
  -output removeeof \
 < ${SORTIN} \
 > ${SORTOUT} 
# V58.00.00 ANK-3846-00-00 MOD END

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

# 特定条件で絞りたい場合、上段の -input に以下のような include を追加する。 
#         include="@{MK_FLG}asc.eq.'0'.and.@{RSV_APLY_CD}asc.eq.'2'.and.@{RSV_APLY_YMD}asc.le.'$RSLT_OPECODE'" \

# 後で使うので退避
CH0051_SORTOUT=${SORTOUT}


#--- CH_T_SEIKY_UCWK のUNLOAD用SQL文の作成
TEMPLATE=${SQLFILE_CH0101_TEMPLATE}
createtempname ${MID_DIR_CH}/${JOBNAME} .sql
RESOLVED=${TEMPNAME}
resolveenv ${TEMPLATE} > ${RESOLVED}

#--- CH_T_SEIKY_UCWK のUNLOAD
UNLOAD=${UNLOAD_CH0101}
SQLFILE=${RESOLVED}
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE} ${UNLOAD}

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

#--- CH_T_SEIKY_UCWK のFILTERING
SORTIN=${UNLOAD}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT=${TEMPNAME}

TBLBSDEF=${TBLBSDEF_CH0101_000}

bsortex \
  -define \
  -a ${TBLBSDEF} \
  -record recform=txtcsv \
  -input reclen=@{RECLEN} \
         include="@{MK_FLG}asc.eq.'0'" \
         reconst="@{SEIKY_NO},@{SEIKY_KEI_NO},@{PRC_GRP_CD},@{PCRS_CD},@{PRC_SVC_CD},@{PRC_KMK_CD},@{USE_STAYMD},@{USE_ENDYMD},@{AMNT},@{MK_FLG}" \
  -copy \
  -output removeeof \
 < ${SORTIN} \
 > ${SORTOUT} 

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

# 特定条件で絞りたい場合、上段の -input に以下のような include を追加する。 
#         include="@{MK_FLG}asc.eq.'0'.and.@{RSV_APLY_CD}asc.eq.'2'.and.@{RSV_APLY_YMD}asc.le.'$RSLT_OPECODE'" \

# 後で使うので退避
CH0101_SORTOUT=${SORTOUT}


#--- CH_M_PRC_KMK_CS_CHGE のUNLOAD用SQL文の作成
TEMPLATE=${SQLFILE_CH0401_TEMPLATE}
createtempname ${MID_DIR_CH}/${JOBNAME} .sql
RESOLVED=${TEMPNAME}
resolveenv ${TEMPLATE} > ${RESOLVED}

#--- CH_M_PRC_KMK_CS_CHGE のUNLOAD
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
UNLOAD=${TEMPNAME}
SQLFILE=${RESOLVED}
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE} ${UNLOAD}

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

#--- CH_M_PRC_KMK_CS_CHGE のFILTERING
# ZM_M_WORK_PARAM_KNRI での絞り込みは
# UNLOAD時にJOINする事で済んでいるため不要
# SORTIN を SORTOUTの直接引き継ぐ
SORTIN=${UNLOAD}
SORTOUT=${SORTIN}

# 後で使うので退避
CH0401_SORTOUT=${SORTOUT}


#--- CH_T_SEIKY_SKN_KNRN UNLOAD
UNLOAD=${UNLOAD_CH0041}
TABLE="CH_T_SEIKY_SKN_KNRN"
sh ${G_TOOLSH}/EOKULD03.sh ${TABLE} ${UNLOAD}

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

#--- CH_T_SEIKY_SKN_KNRN のFILTERING
SORTIN=${UNLOAD}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT=${TEMPNAME}

TBLBSDEF=${TBLBSDEF_CH0041_000}

bsortex \
  -define \
  -a ${TBLBSDEF} \
  -record recform=txtcsv \
  -input reclen=@{RECLEN} \
         include="@{MK_FLG}asc.eq.'0'" \
         reconst="@{SEIKY_NO},@{SAIKEN_NO},@{MK_FLG}" \
  -copy \
  -output removeeof \
 < ${SORTIN} \
 > ${SORTOUT} 

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

# 特定条件で絞りたい場合、上段の -input に以下のような include を追加する。 
#         include="@{MK_FLG}asc.eq.'0'.and.@{RSV_APLY_CD}asc.eq.'2'.and.@{RSV_APLY_YMD}asc.le.'$RSLT_OPECODE'" \

# 後で使うので退避
CH0041_SORTOUT=${SORTOUT}


#--- CH_T_SAIKEN UNLOAD
UNLOAD=${UNLOAD_CH0011}
TABLE="CH_T_SAIKEN"
sh ${G_TOOLSH}/EOKULD03.sh ${TABLE} ${UNLOAD}

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

#--- CH_T_SAIKEN のFILTERING
SORTIN=${UNLOAD}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT=${TEMPNAME}

TBLBSDEF=${TBLBSDEF_CH0011_000}

bsortex \
  -define \
  -a ${TBLBSDEF} \
  -record recform=txtcsv \
  -input reclen=@{RECLEN} \
         include="@{MK_FLG}asc.eq.'0'.and.(@{SAIKEN_STAT}asc.eq.'${SAIKEN_STAT}'.or.@{SAIKEN_STAT}asc.eq.'${SAIKEN_STAT2}')" \
         reconst="@{SAIKEN_NO},@{SAIKEN_STAT},@{MK_FLG},@{SAIKEN_YM}"\
  -copy \
  -output removeeof \
 < ${SORTIN} \
 > ${SORTOUT} 

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

# 特定条件で絞りたい場合、上段の -input に以下のような include を追加する。 
#         include="@{MK_FLG}asc.eq.'0'.and.@{RSV_APLY_CD}asc.eq.'2'.and.@{RSV_APLY_YMD}asc.le.'$RSLT_OPECODE'" \

# 後で使うので退避
CH0011_SORTOUT=${SORTOUT}

#-- CH_M_PRC_KMK_CS_CHGE(充当額合計)のUNLOAD
cp -f ${SQLFILE_CH0401} ${SQLFILE_CH0401_WRK}
sed -i -e "s%\:OPEDATE%'${RSLT_OPEDATE}'%"  ${SQLFILE_CH0401_WRK}
sed -i -e "s%\:WORK_PARAM_ID%'${WORK_PARAM_ID}'%"  ${SQLFILE_CH0401_WRK}
sed -i -e "s%\:SYS_CD%'${SYS_CD}'%"  ${SQLFILE_CH0401_WRK}
sed -i -e "s%\:CHSHT_CHG_CD%'${CHSHT_CHG_CD}'%"  ${SQLFILE_CH0401_WRK}

sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_CH0401_WRK} ${UNLOAD_OUTFILE_CH0401}

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

#-- CH_T_SAIKEN_UCWKのUNLOAD
cp -f ${SQLFILE_CH0021} ${SQLFILE_CH0021_WRK}
sed -i -e "s/:SAIKEN_FIX_YM/'${SEIKY_YM}'/" ${SQLFILE_CH0021_WRK}

sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_CH0021_WRK} ${UNLOAD_OUTFILE_CH0021}

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

#--- MATCHING 債権内訳・料金項目抽出変換
export ZTL_DEFINE_CH0021=SAIKEN_NO,PRC_GRP_CD,PCRS_CD,PRC_SVC_CD,PRC_KMK_CD,AMNT,SAIKEN_FIX_YM,ADD_DTM,ADD_OPEACNT,UPD_DTM,UPD_OPEACNT,DEL_DTM,DEL_OPEACNT,MK_FLG,ADD_UNYO_YMD,ADD_TRN_ID,UPD_UNYO_YMD,UPD_TRN_ID,DEL_UNYO_YMD,DEL_TRN_ID
export ZTL_DEFINE_CH0401=PRC_GRP_CD,PCRS_CD,PRC_SVC_CD,PRC_KMK_CD
export CH_T_SAIKEN_UCWK=${UNLOAD_OUTFILE_CH0021}
export CH_M_PRC_KMK_CS_CHGE=${UNLOAD_OUTFILE_CH0401}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
export ZTLOUTFILE=${TEMPNAME}

CMFILE=${CMDEF_CHIFM006Z}
${G_TOOLSH}/util/bin/ZTLMAT01 ${CMFILE}

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

# distinct
SORTIN=${ZTLOUTFILE}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT=${TEMPNAME}

bsortex \
  -record recform=txtflt \
  -input reclen=100 \
  -summary suppress last \
 < ${SORTIN} \
 > ${SORTOUT}

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

# 後で使うので退避
CH_0021_AMNT=${SORTOUT}


#CH_T_SAIKENから当月のデータを取得
#--- CH_T_SAIKEN のFILTERING
SORTIN=${UNLOAD_CH0011}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT=${TEMPNAME}

TBLBSDEF=${TBLBSDEF_CH0011_000}

bsortex \
  -define \
  -a ${TBLBSDEF} \
  -record recform=txtcsv \
  -input reclen=@{RECLEN} \
         include="@{MK_FLG}asc.eq.'0'.and.@{SAIKEN_YM}asc.eq.'${SEIKY_YM}'" \
         reconst="@{SAIKEN_NO},@{SAIKEN_STAT},@{MK_FLG},@{SAIKEN_YM}"\
  -copy \
  -output removeeof \
 < ${SORTIN} \
 > ${SORTOUT} 

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

# 後で使うので退避
CH0011_SORTOUT2=${SORTOUT}


#--- CH_T_SAIKENの当月データと債権内訳をMATCHING
export ZTL_DEFINE_CH0011=SAIKEN_NO,SAIKEN_STAT,MK_FLG,SAIKEN_YM
export ZTL_DEFINE_CH0021=SAIKEN_NO,AMNT
export ZTL_DEFINE_CH0041=SEIKY_NO,SAIKEN_NO,MK_FLG
export CH_T_SAIKEN=${CH0011_SORTOUT2}
export CH_T_SAIKEN_UCWK=${CH_0021_AMNT}
export CH_T_SEIKY_SKN_KNRN=${CH0041_SORTOUT}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
export ZTLOUTFILE=${TEMPNAME}

CMFILE=${CMDEF_CHIFM006X}
${G_TOOLSH}/util/bin/ZTLMAT01 ${CMFILE}

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

# 後で使うので退避
CH0011_TOUGETU=${ZTLOUTFILE}


#--- MATCHING 債権関連
export ZTL_DEFINE_CH0041=SEIKY_NO,SAIKEN_NO,MK_FLG
export ZTL_DEFINE_CH0011=SAIKEN_NO,SAIKEN_STAT,MK_FLG,SAIKEN_YM
export CH_T_SEIKY_SKN_KNRN=${CH0041_SORTOUT} 
export CH_T_SAIKEN=${CH0011_SORTOUT}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
export ZTLOUTFILE=${TEMPNAME}

CMFILE=${CMDEF_CHIFM006Y}
${G_TOOLSH}/util/bin/ZTLMAT01 ${CMFILE}

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

# distinct
SORTIN=${ZTLOUTFILE}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT=${TEMPNAME}

bsortex \
  -sort key="0.12asc,2.6asc" \
  -record recform=txtcsv \
  -input reclen=50 \
 < ${SORTIN} \
 | bsortex \
  -merge key="0.12asc" \
  -record recform=txtcsv \
  -input reclen=50 \
 -summary suppress last \
 > ${SORTOUT} 

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


# 後で使うので退避
SAIKEN_SORTOUT=${SORTOUT}

#--- MATCHING
# V58.00.00 ANK-3846-00-00 MOD START
#export ZTL_DEFINE_CH0051=SEIKY_NO,SEIKY_KEI_NO,SEIKY_YM,SEIKY_STAT,SEIKY_WAY_CD,BANK_CD,BANK_SHITEN_CD,KOZA_NO,TSUCHO_SYMBOL,TSUCHO_NO,SEIKY_SBT_CD,MK_FLG
export ZTL_DEFINE_CH0051=SEIKY_NO,SEIKY_KEI_NO,SEIKY_YM,SEIKY_STAT,SEIKY_WAY_CD,BANK_CD,BANK_SHITEN_CD,KOZA_NO,TSUCHO_SYMBOL,TSUCHO_NO,SEIKY_SBT_CD,MK_FLG,SHIKOSAKI_COMP_CD,KSSAI_ID,MERCHANT_DEAL_ID
# V58.00.00 ANK-3846-00-00 MOD END
export ZTL_DEFINE_CH0101=SEIKY_NO,SEIKY_KEI_NO,PRC_GRP_CD,PCRS_CD,PRC_SVC_CD,PRC_KMK_CD,USE_STAYMD,USE_ENDYMD,AMNT,MK_FLG
export ZTL_DEFINE_CH0401=SYS_CD,WORK_KINO_SKBT_CD,CHSHT_CHG_CD,PRC_GRP_CD,PCRS_CD,PRC_SVC_CD,PRC_KMK_CD,PRC_KMK_CS_CHGE_TSTAYMD,PRC_KMK_CS_CHGE_TENDYMD,MK_FLG
export ZTL_DEFINE_SAIKEN=SEIKY_NO,SAIKEN_NO,SAIKEN_YM
export ZTL_DEFINE_TOUGETU=SEIKY_NO,SAIKEN_NO,SAIKEN_YM,AMNT
export CH_T_SEIKY=${CH0051_SORTOUT}
export CH_T_SEIKY_UCWK=${CH0101_SORTOUT}
export CH_M_PRC_KMK_CS_CHGE=${CH0401_SORTOUT}
export SAIKEN_WORK=${SAIKEN_SORTOUT}
export SAIKEN_TOUGETU=${CH0011_TOUGETU}
export ZTLOUTFILE=${OUTFILE_CHIFM006_WRK}

CMFILE=${CMDEF_CHIFM006}
${G_TOOLSH}/util/bin/ZTLMAT01 ${CMFILE}

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

#--- 改行コードをwindows (CRLF)に変換する
# V58.00.00 ANK-3846-00-00 MOD START
#bsortex \
#  -copy \
#  -record recform=txtcsv \
#  -input  file=${OUTFILE_CHIFM006_WRK} \
#          reclen=100 \
#  -output file=${OUTFILE_CHIFM006} \
#          linedlmt=crlf ;
bsortex \
  -copy \
  -record recform=txtcsv \
  -input  file=${OUTFILE_CHIFM006_WRK} \
          reclen=160 \
  -output file=${OUTFILE_CHIFM006} \
          linedlmt=crlf ;
# V58.00.00 ANK-3846-00-00 MOD END
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex Error($SVC bsortex last:rc=$rc) "
    echo $JOBNAME " bsortex Error($SVC bsortex last:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# 中間ファイルを削除する
# ワーク削除
if [ ${WK_RM} = "true" ] ;then 
  deletetempname
  rm -f ${OUTFILE_CHIFM006_WRK}
  rm -f ${UNLOAD_CH0501}
  rm -f ${UNLOAD_CH0051}
  rm -f ${UNLOAD_CH0101}
  rm -f ${UNLOAD_CH0041}
  rm -f ${UNLOAD_CH0011}
  rm -f ${SQLFILE_CH0401_WRK}
  rm -f ${UNLOAD_OUTFILE_CH0401}
  rm -f ${SQLFILE_CH0021_WRK}
  rm -f ${UNLOAD_OUTFILE_CH0021}
 fi

#
#---ＡＰＬ起動
#

java ${JAVA_OPTION} -jar ${JAR_DIR}/koptBatch.jar $PARA

rc=$?
ERR_FLG=0
if [ $rc -ne 0 ]
then
   if [ $rc -ne 4 ]
   then
       if [ $rc -ne 8 ]
       then
           if [ $rc -ne 127 ]
           then
              sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              echo $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              exit ${G_RTN_ERROR}
           fi
       fi
    fi
    ERR_FLG=1
fi

exit_rc=$rc

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

exit $exit_rc
