#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：口座振替依頼対象抽出（直接）
#
# 機能          ：請求方法コードが預金口座振替(金融機関)および、郵便自動振込(ゆうちょ銀行)の請求情報を抽出し、口座振替依頼対象情報(直接)を作成する。
#
#
# コマンド形式  ：EO60E0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00           2012/07/27  FJ）冨井     【ST2-2012-0001211】ヒープサイズ拡張
# v3.01           2012/11/02  FJ）加島     【ST4-2012-0000006】ヒープサイズ指定方法変更
# v4.00           2012/09/10  FJ) 本多     【ANK-0512-00-00】対応
# v4.01           2013/01/18  FJ) 小柴     【内部管理番号-0000151】クレジット請求依頼・ゼロ円請求時編集不正
# v4.02           2013/03/12  FJ) 狭間     【ST4-2013-0000147】性能改善の為、基盤T作成の資産を組込
# v4.02.01        2013/04/08  FJ) 狭間     【ST4-2013-0000286】性能改善の為、アンロード並列化及び処理見直しと水平展開
# v4.03           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/08  FJ) 柴田     【OM-2013-0004126】債権内訳から当月の充当額を取得するように修正。
# v6.00           2013/12/16  FJ) 狭間     【ST4-2013-0000596】性能改善の為、アンロード並列化。
# v8.00           2014/04/10  FJ) 狭間     【ST4-2013-0000596】性能改善の為、処理最適化。
# v46.00          2019/10/09  FJ) 麻生     【ANK-3586-00-00】隔月合算請求
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

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

#--- 運用日付取得
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}

#債権．債権ステータス（請求確定）
SAIKEN_STAT="020"

#債権．債権ステータス（一部収納済）
SAIKEN_STAT2="060"

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

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

#請求．請求方法コード（預金口座振替）,（郵便自動振込）
SEIKY_WAY_CD1="2"
SEIKY_WAY_CD2="3"

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

# ANK-3586-00-00 ADD START
#請求．隔月請求スキップフラグ（合算対象、請求なし月）
KAKGT_SEIKY_SKIP_FLG="2"
# ANK-3586-00-00 ADD END

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

#システムコード
SYS_CD="CH"

#抽出変換コード
CHSHT_CHG_CD="1"

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

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

P1="OPD=,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO60E0110J0,"
P4="IND1=CHIFM217.def,"
P5="INF1=${MID_DIR_CH}/CHIFM217001.csv,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=CHIFM006.def,"
P9="OTF1=${MID_DIR_CH}/CHIFM006002.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

# 共通関数
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
}


#--- 出力ファイル
OUTFILE_CHIFM006=${MID_DIR_CH}/CHIFM217001.csv

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

#--- 1.請求CH_T_SEIKY
# SQL で請求月分抽出し FILTER
SQLFILE_CH0051_TEMPLATE=${SQL_DIR}/CH_U_CH0051_16.sql
SQLFILE_CH0051_WRK=${SQL_DIR}/${JOBNAME}_CH_U_CH0051_16_WK_01.sql
UNLOAD_CH0051=${MID_DIR_CH}/${JOBNAME}_CH0051_ULD.csv

#--- 2.請求内訳CH_T_SEIKY_UCWK
# SQL で請求月分抽出し FILTER
SQLFILE_CH0101_TEMPLATE=${SQL_DIR}/CH_U_CH0101_08.sql
SQLFILE_CH0101_WRK=${SQL_DIR}/${JOBNAME}_CH_U_CH0101_08_WK_01.sql
UNLOAD_CH0101=${MID_DIR_CH}/${JOBNAME}_CH0101_ULD.csv

#--- 4.CH_T_SEIKY_SKN_KNRN 
# SQL で当処理向けに抽出
SQLFILE_CH0041_TEMPLATE=${SQL_DIR}/CH_U_CH0041_08.sql
SQLFILE_CH0041_WRK=${SQL_DIR}/${JOBNAME}_CH_U_CH0041_08_WK_01.sql
UNLOAD_CH0041=${MID_DIR_CH}/${JOBNAME}_CH0041_ULD.csv

#--- 5.CH_T_SAIKEN
# SQL で当処理向けに抽出
SQLFILE_CH0011_TEMPLATE=${SQL_DIR}/CH_U_CH0011_16.sql
SQLFILE_CH0011_WRK=${SQL_DIR}/${JOBNAME}_CH_U_CH0011_16_WK_01.sql
UNLOAD_CH0011=${MID_DIR_CH}/${JOBNAME}_CH0011_ULD.csv

#--- 6.CH_T_SAIKEN（当月）
# SQL で当処理向けに抽出
SQLFILE_CH0011_TEMPLATE2=${SQL_DIR}/CH_U_CH0011_17.sql
SQLFILE_CH0011_WRK2=${SQL_DIR}/${JOBNAME}_CH_U_CH0011_17_WK_01.sql
UNLOAD_CH0011_2=${MID_DIR_CH}/${JOBNAME}_CH0011_ULD2.csv

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

#-- マッチング
CMDEF_CHIFM006_=${CMDEF_DIR}/CH_CM_0106.def
CMDEF_CHIFM006X=${CMDEF_DIR}/CH_CM_0064.def
CMDEF_CHIFM006Y=${CMDEF_DIR}/CH_CM_0065.def
CMDEF_CHIFM006Z=${CMDEF_DIR}/CH_CM_0104.def

#-- マッチング後項目編集
CSVBSDEF_CHIFM006X=${BSDEF_DIR}/CH_BS_IFM006_001.bsdef

#
#--- アンロードファイルのクリアを行う
#
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_CH0021}

#
#--- 結果出力ファイルのクリアを行う
#
cat /dev/null > ${OUTFILE_CHIFM006}


#--- スケジュール定義のUNLOAD
UNLOAD=${UNLOAD_CH0501}
TABLE="CH_M_PRC_SCHDL_TEIGI"
sh ${G_TOOLSH}/EOKULD03.sh ${TABLE} ${UNLOAD}

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_M_PRC_SCHDL_TEIGI のSORT/FILTERING/CURRENT取得
SORTIN=${UNLOAD}
SORTOUT=${SORT_CH0501}

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

eval SEIKY_YM=`cat ${SORTOUT}`

#-------------------------------------------------------------------------------
#-CH_T_SEIKYのUNLOAD
#-------------------------------------------------------------------------------
(
#--- CH_T_SEIKY のUNLOAD用SQL文の作成
resolveenv ${SQLFILE_CH0051_TEMPLATE} > ${SQLFILE_CH0051_WRK}

#--- CH_T_SEIKY のUNLOAD
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_CH0051_WRK} ${UNLOAD_CH0051}

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
) &
pid_CH_T_SEIKY=$!

#-------------------------------------------------------------------------------
# CH_T_SEIKY_UCWKのUNLOAD
#-------------------------------------------------------------------------------
(
#--- CH_T_SEIKY_UCWK のUNLOAD用SQL文の作成
resolveenv ${SQLFILE_CH0101_TEMPLATE} > ${SQLFILE_CH0101_WRK}

#--- CH_T_SEIKY_UCWK のUNLOAD
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_CH0101_WRK} ${UNLOAD_CH0101}

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
) &
pid_CH_T_SEIKY_UCWK=$!

#-------------------------------------------------------------------------------
# CH_T_SEIKY_SKN_KNRNのUNLOAD
#-------------------------------------------------------------------------------
(
#--- CH_T_SEIKY_SKN_KNRN のUNLOAD用SQL文の作成
resolveenv ${SQLFILE_CH0041_TEMPLATE} > ${SQLFILE_CH0041_WRK}

#--- CH_T_SEIKY_SKN_KNRN UNLOAD
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_CH0041_WRK} ${UNLOAD_CH0041}

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
) &
pid_CH_T_SEIKY_SKN_KNRN=$!

#-------------------------------------------------------------------------------
# CH_T_SAIKENのUNLOAD
#-------------------------------------------------------------------------------
(
#--- CH_T_SAIKEN のUNLOAD用SQL文の作成
resolveenv ${SQLFILE_CH0011_TEMPLATE} > ${SQLFILE_CH0011_WRK}

#--- CH_T_SAIKEN UNLOAD
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_CH0011_WRK} ${UNLOAD_CH0011}

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
) &
pid_CH_T_SAIKEN=$!

#-------------------------------------------------------------------------------
# CH_T_SAIKEN（当月）のUNLOAD
#-------------------------------------------------------------------------------
(
#--- CH_T_SAIKEN（当月）のUNLOAD用SQL文の作成
resolveenv ${SQLFILE_CH0011_TEMPLATE2} > ${SQLFILE_CH0011_WRK2}

#--- CH_T_SAIKEN UNLOAD
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_CH0011_WRK2} ${UNLOAD_CH0011_2}

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
) &
pid_CH_T_SAIKEN2=$!

#-------------------------------------------------------------------------------
# CH_T_SAIKEN_UCWKのUNLOAD
#-------------------------------------------------------------------------------
(
#-- CH_T_SAIKEN_UCWKのUNLOAD
cp -f ${SQLFILE_CH0021} ${SQLFILE_CH0021_WRK}
sed -i -e "s/:SAIKEN_FIX_YM/'${SEIKY_YM}'/"       ${SQLFILE_CH0021_WRK}
sed -i -e "s%\:OPEDATE%'${RSLT_OPEDATE}'%"        ${SQLFILE_CH0021_WRK}
sed -i -e "s%\:WORK_PARAM_ID%'${WORK_PARAM_ID}'%" ${SQLFILE_CH0021_WRK}
sed -i -e "s%\:SYS_CD%'${SYS_CD}'%"               ${SQLFILE_CH0021_WRK}
sed -i -e "s%\:CHSHT_CHG_CD%'${CHSHT_CHG_CD}'%"   ${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
) &
pid_CH_T_SAIKEN_UCWK=$!

#-------------------------------------------------------------------------------
# すべての抽出が終了するのを待つ
#-------------------------------------------------------------------------------
wait ${pid_CH_T_SEIKY}
rc_CH_T_SEIKY=$?
wait ${pid_CH_T_SEIKY_UCWK}
rc_CH_T_SEIKY_UCWK=$?
wait ${pid_CH_T_SEIKY_SKN_KNRN}
rc_CH_T_SEIKY_SKN_KNRN=$?
wait ${pid_CH_T_SAIKEN}
rc_CH_T_SAIKEN=$?
wait ${pid_CH_T_SAIKEN2}
rc_CH_T_SAIKEN2=$?
wait ${pid_CH_T_SAIKEN_UCWK}
rc_CH_T_SAIKEN_UCWK=$?

if [ ${rc_CH_T_SEIKY} -ne 0 ] || [ ${rc_CH_T_SEIKY_UCWK} -ne 0 ] \
|| [ ${rc_CH_T_SEIKY_SKN_KNRN} -ne 0 ] || [ ${rc_CH_T_SAIKEN} -ne 0 ] || [ ${rc_CH_T_SAIKEN2} -ne 0 ] \
|| [ ${rc_CH_T_SAIKEN_UCWK} -ne 0 ]
then
    #- エラーメッセージ出力
    if [ ${rc_CH_T_SEIKY} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pid_CH_T_SEIKY Error($SVC unload:rc=${rc_CH_T_SEIKY}) "
        echo $JOBNAME " pid_CH_T_SEIKY Error($SVC unload:rc=${rc_CH_T_SEIKY}) "
    fi
    if [ ${rc_CH_T_SEIKY_UCWK} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pid_CH_T_SEIKY_UCWK Error($SVC unload:rc=${rc_CH_T_SEIKY_UCWK}) "
        echo $JOBNAME " pid_CH_T_SEIKY_UCWK Error($SVC unload:rc=${rc_CH_T_SEIKY_UCWK}) "
    fi
    if [ ${rc_CH_T_SEIKY_SKN_KNRN} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pid_CH_T_SEIKY_SKN_KNRN Error($SVC unload:rc=${rc_CH_T_SEIKY_SKN_KNRN}) "
        echo $JOBNAME " pid_CH_T_SEIKY_SKN_KNRN Error($SVC unload:rc=${rc_CH_T_SEIKY_SKN_KNRN}) "
    fi
    if [ ${rc_CH_T_SAIKEN} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pid_CH_T_SAIKEN Error($SVC unload:rc=${rc_CH_T_SAIKEN}) "
        echo $JOBNAME " pid_CH_T_SAIKEN Error($SVC unload:rc=${rc_CH_T_SAIKEN}) "
    fi
    if [ ${rc_CH_T_SAIKEN2} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pid_CH_T_SAIKEN2 Error($SVC unload:rc=${rc_CH_T_SAIKEN2}) "
        echo $JOBNAME " pid_CH_T_SAIKEN2 Error($SVC unload:rc=${rc_CH_T_SAIKEN2}) "
    fi
    if [ ${rc_CH_T_SAIKEN_UCWK} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " pid_CH_T_SAIKEN_UCWK Error($SVC sort:rc=${rc_CH_T_SAIKEN_UCWK}) "
        echo $JOBNAME " pid_CH_T_SAIKEN_UCWK Error($SVC sort:rc=${rc_CH_T_SAIKEN_UCWK}) "
    fi
    #- 異常終了
    exit ${G_RTN_ERROR}
fi

# distinct
SORTIN=${UNLOAD_OUTFILE_CH0021}
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の当月データと債権内訳をMATCHING
export ZTL_DEFINE_CH0011=SAIKEN_NO,SAIKEN_STAT,SAIKEN_YM
export ZTL_DEFINE_CH0021=SAIKEN_NO,AMNT
export ZTL_DEFINE_CH0041=SEIKY_NO,SAIKEN_NO
export CH_T_SAIKEN=${UNLOAD_CH0011_2}
export CH_T_SAIKEN_UCWK=${CH_0021_AMNT}
export CH_T_SEIKY_SKN_KNRN=${UNLOAD_CH0041}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
export ZTLOUTFILE=${TEMPNAME}

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

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


#--- MATCHING
export ZTL_DEFINE_CH0041=SEIKY_NO,SAIKEN_NO
export ZTL_DEFINE_CH0011=SAIKEN_NO,SAIKEN_STAT,SAIKEN_YM
export CH_T_SEIKY_SKN_KNRN=${UNLOAD_CH0041}
export CH_T_SAIKEN=${UNLOAD_CH0011}
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
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
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
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=${UNLOAD_CH0051}
export CH_T_SEIKY_UCWK=${UNLOAD_CH0101}
export SAIKEN_WORK=${SAIKEN_SORTOUT}
export SAIKEN_TOUGETU=${CH0011_TOUGETU}
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

#--- KOZA_NO の有無によりソートキー項目を変える
SORTIN=${ZTLOUTFILE}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT1=${TEMPNAME}
createtempname ${MID_DIR_CH}/${JOBNAME} .csv
SORTOUT2=${TEMPNAME}

CSVBSDEF=${CSVBSDEF_CHIFM006X}

bsortex \
  -define \
  -a ${CSVBSDEF} \
  -record recform=txtcsv \
  -input reclen=@[RECLEN] \
  -copy \
  -output removeeof \
          file=${SORTOUT1} \
          case="@[KOZA_NO]ascn.ne.' '" \
          reconst="@[SEIKY_KEI_NO],@[SEIKY_NO],@[SEIKY_YM],@[SEIKY_STAT],@[SEIKY_WAY_CD],@[PRC_GRP_CD],@[PCRS_CD],@[PRC_SVC_CD],@[PRC_KMK_CD],@[AMNT],@[JUTO_AMNT],@[BANK_CD],@[BANK_SHITEN_CD],@[KOZA_NO]" \
  -output removeeof \
          file=${SORTOUT2} \
          case=other \
          reconst="@[SEIKY_KEI_NO],@[SEIKY_NO],@[SEIKY_YM],@[SEIKY_STAT],@[SEIKY_WAY_CD],@[PRC_GRP_CD],@[PCRS_CD],@[PRC_SVC_CD],@[PRC_KMK_CD],@[AMNT],@[JUTO_AMNT],@[BANK_CD],@[TSUCHO_SYMBOL],@[TSUCHO_NO]" \
 < ${SORTIN} \

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

#--- ORDER BY
#---   CH0051_SUB.SEIKY_WAY_CD ,CH0051_SUB.BANK_CD ,CH0051_SUB.CD ,CH0051_SUB.NO ,CH0051_SUB.SEIKY_KEI_NO
SORTIN1=${SORTOUT1}
SORTIN2=${SORTOUT2}
SORTOUT=${OUTFILE_CHIFM006}

CSVBSDEF=${CSVBSDEF}

bsortex \
  -define \
  -a ${CSVBSDEF} \
  -record recform=txtcsv \
  -input reclen=@[RECLEN] \
         file=${SORTIN1},${SORTIN2} \
  -sort key="@[SEIKY_WAY_CD]asc,@[BANK_CD]asc,@[BANK_SHITEN_CD]asc,@[KOZA_NO]asc,@[SEIKY_KEI_NO]asc" \
  -summary suppress last \
  -output removeeof \
          reconst="@[SEIKY_KEI_NO],@[SEIKY_NO],@[SEIKY_YM],@[SEIKY_STAT],@[SEIKY_WAY_CD],@[PRC_GRP_CD],@[PCRS_CD],@[PRC_SVC_CD],@[PRC_KMK_CD],@[AMNT],@[JUTO_AMNT]" \
          linedlmt=crlf \
 > ${OUTFILE_CHIFM006}
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 ${UNLOAD_CH0501}
  rm -f ${UNLOAD_CH0051}
  rm -f ${UNLOAD_CH0101}
  rm -f ${UNLOAD_CH0041}
  rm -f ${UNLOAD_CH0011}
  rm -f ${UNLOAD_CH0011_2}
  rm -f ${SQLFILE_CH0021_WRK}
  rm -f ${UNLOAD_OUTFILE_CH0021}
  rm -f ${SQLFILE_CH0051_WRK}
  rm -f ${SQLFILE_CH0101_WRK}
  rm -f ${SQLFILE_CH0041_WRK}
  rm -f ${SQLFILE_CH0011_WRK}
  rm -f ${SQLFILE_CH0011_WRK2}
  rm -f ${SORT_CH0501}
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
