#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：口座新規コード変更
#
# 機能          ：口座振替の実績を口座テーブルの新規コードに反映する。
#
# コマンド形式  ：EO2AP0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v66.00.00       2023/06/01   FJ)辻野     【ANK-4408-00-00】口振請求及びWeb申込システム移行 事前対応
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---システム日時を取得
#
#
. EOK010410J0.sh 2

#
#---業務で必要な変数定義（システム日時）
#
YMDHMS=$RSLT_SYSDATE

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

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

#
#--- アンロード関数
#       p1：テーブル名／クエリファイル名
EXEC_UNLOAD()
{
	# 出力ファイルの初期化
	cat /dev/null > $2
	rc=$?
	if [ $rc -ne 0 ]
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($2:rc=$rc) "
		echo $JOBNAME " File cat error($2:rc=$rc) "
		exit ${G_RTN_ERROR}
	fi
	
	# unload(KK_T_CRECARD)
	sh ${G_TOOLSH}/EOKULD02.sh $1 $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
}

#
#--- クエリ編集
#       p1：ＳＱＬ定義ファイル名
#       p2：バインド変数置換文字
EDIT_ULD_QUERY()
{
	SQL_FILE=$1
	SQL_WORK_FILE=${ULD_WORK_DIR}/${JOBNAME}_QUERY.tmp
	cat /dev/null > ${SQL_WORK_FILE}
	
	# SQL定義ファイルの編集
	if [ ! -r ${SQL_FILE} ]
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQL_FILE}:rc=$rc) "
		echo $JOBNAME " File is nonexist(${SQL_FILE}:rc=$rc) "
		exit ${G_RTN_ERROR}
	fi

	# バインド変数を置き換える
	cat ${SQL_FILE} > ${SQL_WORK_FILE}
	
	for bind in $2
	do
		sed -i, -e 0,/?/s/?/"'"$bind"'"/ ${SQL_WORK_FILE}
	done
	
	export SQL_WORK_FILE
}

#
#--- クエリ編集
#       p1：ＳＱＬ定義ファイル名
#       p2：バインド変数置換文字
EDIT_MATCHING_QUERY()
{
	MATCHING_FILE=$1
	MATCHING_QUERY_WORK=${ULD_WORK_DIR}/${JOBNAME}_MATCH_QUERY.tmp
	
	cat /dev/null > ${MATCHING_QUERY_WORK}
	
	# SQL定義ファイルの編集
	if [ ! -r ${MATCHING_FILE} ]
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${MATCHING_FILE}:rc=$rc) "
		echo $JOBNAME " File is nonexist(${MATCHING_FILE}:rc=$rc) "
		exit ${G_RTN_ERROR}
	fi

	# バインド変数を置き換える
	cat ${MATCHING_FILE} > ${MATCHING_QUERY_WORK}
	
	for bind in $2
	do
		bind_escape=`echo $bind | sed "s/\//\\\\\\\\\//g"`
		sed -i, -e 0,/#FILE#/s/#FILE#/$bind_escape/ ${MATCHING_QUERY_WORK}
	done
	
	export MATCHING_QUERY_WORK
}

#
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：マッチングクエリファイルパス
EXEC_MATCHING()
{
	# 出力ファイルの初期化
	OUTFILE=$1
	cat /dev/null > ${OUTFILE}
	rc=$?
	if [ $rc -ne 0 ]
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error(${OUTFILE}:rc=$rc) "
		echo $JOBNAME " File cat error(${OUTFILE}:rc=$rc) "
		exit ${G_RTN_ERROR}
	fi

	# マッチング実行
	export ZTLOUTFILE=${OUTFILE}
	${G_TOOLSH}/util/bin/ZTLMAT01 $2
	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
}

#
#--- 最小ファイルサイズ取得
#       1：最小ファイルサイズが0よりも大きい
#       0：最小ファイルサイズが0
#
GET_MIN_FILESIZE()
{

	MINSIZE=-1
	for bind in $1
	do
		filesize=`cat ${bind} | wc -l`
		
		if [ ${MINSIZE} -eq -1 ]
		then
			MINSIZE=${filesize}
		else
			if [ ${filesize} -lt ${MINSIZE} ]
			then
				MINSIZE=${filesize}
			fi
		fi
	done
	
	if [ ${MINSIZE} -gt 0 ]
	then
		return 1
	else
		return 0
	fi

}

#
# --- 各種変数の定義
#
ULD_OUTFILE=${MID_DIR_KK}/${JOBNAME}.ULD_TMP.csv
# KKIFI025.def
# ---入力ファイルの項目
#      0 - 10 ：請求契約番号
#      1 - 6  ：請求年月
#      2 - 12 ：請求番号
#      3 - 40 ：請求先名
#      4 - 8  ：領収年月日
#      5 - 1  ：口座振替結果コード
#      6 - 4  ：金融機関コード
#      7 - 90 ：金融機関名カナ
#      8 - 3  ：金融機関支店コード
#      9 - 90 ：支店名カナ
#     10 - 1  ：預金種目コード
#     11 - 7  ：口座番号
#     12 - 30 ：口座名義人カナ
#     13 - 15 ：引落金額
#     14 - 2  ：入金経路コード
#     15 - 2  ：収納機関コード
INP_FILE=${SEND_DIR}/KKIFI025001.csv
ZM0321_OUTFILE=${MID_DIR_KK}/${JOBNAME}.ZM0321_OUT.csv
KK0501_CUR=${MID_DIR_KK}/${JOBNAME}.KK0501_CUR.csv
KK0501_ALL=${MID_DIR_KK}/${JOBNAME}.KK0501_ALL.csv
KK0491_ALL=${MID_DIR_KK}/${JOBNAME}.KK0491_ALL.csv
KK0501_MTC=${MID_DIR_KK}/${JOBNAME}.KK0501_MTC.csv
KK0501_MTC_ALL=${MID_DIR_KK}/${JOBNAME}.KK0501_MTC_ALL.csv
INP_SPACE=${MID_DIR_KK}/${JOBNAME}.INP_SPACE.csv
INP_UNSPC=${MID_DIR_KK}/${JOBNAME}.INP_UNSPC.csv
INP_MTC_SPACE=${MID_DIR_KK}/${JOBNAME}.INP_MTC_SPACE.csv
INP_MTC_UNSPC=${MID_DIR_KK}/${JOBNAME}.INP_MTC_UNSPC.csv
INP_MTC_SPACE_ALL=${MID_DIR_KK}/${JOBNAME}.INP_MTC_SPACE_ALL.csv
INP_MTC_UNSPC_ALL=${MID_DIR_KK}/${JOBNAME}.INP_MTC_UNSPC_ALL.csv
INP_MTC_TMP1=${MID_DIR_KK}/${JOBNAME}.INP_MTC_TMP1.csv
INP_MTC_TMP2=${MID_DIR_KK}/${JOBNAME}.INP_MTC_TMP2.csv
INP_MTC_TMP3=${MID_DIR_KK}/${JOBNAME}.INP_MTC_TMP3.csv
INP_MTC_TMP4=${MID_DIR_KK}/${JOBNAME}.INP_MTC_TMP4.csv
INP_MTC_TMP5=${MID_DIR_KK}/${JOBNAME}.INP_MTC_TMP5.csv
INP_MTC_TMP6=${MID_DIR_KK}/${JOBNAME}.INP_MTC_TMP6.csv
INP_MTC_TMP7=${MID_DIR_KK}/${JOBNAME}.INP_MTC_TMP7.csv
INP_MTC_TMP8=${MID_DIR_KK}/${JOBNAME}.INP_MTC_TMP8.csv
INP_MTC_CUR=${MID_DIR_KK}/${JOBNAME}.INP_MTC_CUR.csv
INP_MTC_ALL=${MID_DIR_KK}/${JOBNAME}.INP_MTC_ALL.csv
INP_MTC_RSV=${MID_DIR_KK}/${JOBNAME}.INP_MTC_RSV.csv
INP_CUR_UNMATCH=${MID_DIR_KK}/${JOBNAME}.INP_CUR_UNMATCH.csv
INP_CUR_UNMATCH_TMP1=${MID_DIR_KK}/${JOBNAME}.INP_CUR_UNMATCH_TMP1.csv
INP_CUR_UNMATCH_TMP2=${MID_DIR_KK}/${JOBNAME}.INP_CUR_UNMATCH_TMP2.csv
INP_MTC=${MID_DIR_KK}/KKIFM404001.csv
INP_TMP=${MID_DIR_KK}/${JOBNAME}.INP_TMP.csv

# 出力ファイルの初期化
cat /dev/null > ${KK0501_CUR}
cat /dev/null > ${KK0501_ALL}
cat /dev/null > ${KK0491_ALL}
cat /dev/null > ${KK0501_MTC}
cat /dev/null > ${INP_SPACE}
cat /dev/null > ${INP_UNSPC}
cat /dev/null > ${INP_MTC_SPACE}
cat /dev/null > ${INP_MTC_UNSPC}
cat /dev/null > ${INP_MTC_SPACE_ALL}
cat /dev/null > ${INP_MTC_UNSPC_ALL}
cat /dev/null > ${INP_MTC_TMP1}
cat /dev/null > ${INP_MTC_TMP2}
cat /dev/null > ${INP_MTC_TMP3}
cat /dev/null > ${INP_MTC_TMP4}
cat /dev/null > ${INP_MTC_TMP5}
cat /dev/null > ${INP_MTC_TMP6}
cat /dev/null > ${INP_MTC_TMP7}
cat /dev/null > ${INP_MTC_TMP8}
cat /dev/null > ${INP_MTC_CUR}
cat /dev/null > ${INP_MTC_ALL}
cat /dev/null > ${INP_MTC_RSV}
cat /dev/null > ${INP_CUR_UNMATCH}
cat /dev/null > ${INP_CUR_UNMATCH_TMP1}
cat /dev/null > ${INP_CUR_UNMATCH_TMP2}
cat /dev/null > ${INP_MTC}
cat /dev/null > ${INP_TMP}


# 各種アンロードクエリファイル
ZM0321_ULD_QUERY=${SQL_DIR}/KK_U_ZM0321_02.sql
KK0501_ULD_QUERY=${SQL_DIR}/KK_U_KK0501_01.sql
KK0491_ULD_QUERY=${SQL_DIR}/KK_U_KK0491_06.sql
CH0501_ULD_QUERY=${SQL_DIR}/KK_U_CH0501_01.sql


# CH0501(CH_M_PRC_SCHDL_TEIGI)の全データをアンロード
EXEC_UNLOAD ${CH0501_ULD_QUERY} ${ULD_OUTFILE}

# CH0501のカレントデータ取得
#  CH0501のカレント AND イベントコード='03' AND イベント年月日<=運用日付
#  - SELECT(reconst)項目は以下
#      0 - 0.2  ：イベントコード
#      1 - 1.8  ：イベント年月日
#      2 - 2.6  ：請求年月
#      3 - 9.1  ：無効フラグ
bsortex -sort key="0.2asc,1.8asc" -record recform=txtcsv -input reclen=50 include="3.1asc.eq.'0'.and.0.2asc.eq.'03'.and.1.8asc.le.'${RSLT_OPEDATE}'" < ${ULD_OUTFILE} \
  | bsortex -merge key="0.2asc" -record recform=txtcsv -input reclen=50 reconst="1.8" -summary suppress last -output file=${INP_TMP} 

# ダブルクォーテーション削除
read CHR_DATE_TMP < ${INP_TMP}
CHR_DATE=`echo ${CHR_DATE_TMP} | sed -e 's/"//g'`

# 郵貯の金融機関コード
WORK_PARAM_ID=CH_BANK_CD_YUUCHO
EDIT_ULD_QUERY ${ZM0321_ULD_QUERY} "${WORK_PARAM_ID} ${RSLT_OPEDATE} ${RSLT_OPEDATE}"
EXEC_UNLOAD ${SQL_WORK_FILE} ${ZM0321_OUTFILE}
read EXECDATE_DQ < ${ZM0321_OUTFILE}
# ダブルクォーテーション削除
BANK_CD_YUUCHO=`echo ${EXECDATE_DQ} | sed -e 's/"//g'`
rm ${ZM0321_OUTFILE}


# 入力ファイルを金融機関コードによって分割（金融機関コード:9900で郵便自動振込）
bsortex -sort key="0.10asc" -record recform=txtcsv -input reclen=400 file=${INP_FILE} include="5.1asc.eq.'0'" \
  -output file=${INP_SPACE} case="6.4asc.eq.'${BANK_CD_YUUCHO}'" \
  -output file=${INP_UNSPC} case=other

# KK0501(KK_T_KOZA)の全データをアンロード
EXEC_UNLOAD ${KK0501_ULD_QUERY} ${ULD_OUTFILE}

# KK0501のカレントデータ取得
#  KK0501のカレント 
#  - SELECT(reconst)項目は以下
#      0 - 0.12   ：請求方法番号(口座)
#      1 - 2.3    ：口座ステータス
#      2 - 3.4    ：金融機関コード
#      3 - 4.3    ：金融機関支店コード
#      4 - 5.1    ：預金種目コード
#      5 - 6.7    ：口座番号
#      6 - 7.1    ：新規コード
#      7 - 8.242  ：口座名義人(漢字)
#      8 - 9.242  ：口座名義人カナ名
#      9 - 10.3   ：通帳記号
#     10 - 11.8   ：通帳番号
#     11 - 12.8   ：口振手続キャンセル年月日
#     12 - 13.2   ：口振手続キャンセル理由コード
#     13 - 14.2   ：記載不備審査結果コード
#     14 - 15.8   ：支払い審査依頼年月日
#     15 - 16.8   ：支払い審査依頼取消年月日
#     16 - 17.2   ：支払い審査依頼取消理由コード
#     17 - 18.240 ：支払い審査依頼取消理由メモ
#     18 - 19.2   ：支払い審査結果コード
#     19 - 20.2   ：支払い審査結果NG理由コード
#     20 - 21.240 ：支払い審査結果NG理由メモ
#     21 - 22.8   ：外部口振審査完了年月日
#     22 - 23.8   ：有効性確認年月日
#     23 - 24.5   ：異動区分
#     24 - 1.17   ：世代登録年月日時分秒
#     25 - 31.1   ：無効フラグ
#     26 - -.7    ：通帳番号（編集）
#2023.05.29 ANK-4408-00-00 Add Start
#     27 - 38.1   ：口座支払方法受付区分
#2023.05.29 ANK-4408-00-00 Add End
bsortex -sort key="0.12asc,24.17asc" -record recform=txtcsv -input reclen=1400 include="25.1asc.eq.'0'" < ${ULD_OUTFILE} \
  | bsortex -merge key="0.12asc" -record recform=txtcsv -input reclen=1400 -summary suppress last \
  | bsortex -sort key="0.12asc" -record recform=txtcsv -input reclen=1400 include="6.1asc.ne.'0'" -output file=${KK0501_CUR} 

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

## KK0501全データ取得
bsortex -sort key="0.12asc,24.17asc" -record recform=txtcsv -input reclen=1400 include="25.1asc.eq.'0'" < ${ULD_OUTFILE} \
  | bsortex -merge key="0.12asc" -record recform=txtcsv -input reclen=1400 -summary suppress last \
  | bsortex -sort key="0.12asc" -record recform=txtcsv -input reclen=1400 -output file=${KK0501_ALL} 

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

# KK0491(KK_T_SEIKYT_KEI)の
# ①請求方法番号(口座)，②請求契約番号，③申込明細番号
# 別のカレントデータをアンロード
EXEC_UNLOAD ${KK0491_ULD_QUERY} ${KK0491_ALL}
#EXEC_UNLOAD ${KK0491_ULD_QUERY} ${ULD_OUTFILE}

# KK0491のデータ取得
#  KK0491のデータ 
#  - SELECT(reconst)項目は以下
#      0 - 15.12  ：請求方法番号(口座)
#      1 - 0.10 ：請求契約番号
#      2 - 44.8 ：予約適用年月日
#      3 - 46.1 ：予約適用コード
#      4 - 6.1  ：請求方法コード
#      5 - 58.1 ：無効フラグ
#      6 - 5.12  :申込明細番号
#      7 - 1.17  :世代登録年月日時分秒

# ソート実行
#bsortex -sort key="6.12asc,7.17asc" -record recform=txtcsv -input reclen=100 file=${ULD_OUTFILE} include="5.1asc.eq.'0'.and.3.1asc.eq.'2'.and.(4.1asc.eq.'2'.or.4.1asc.eq.'3')" \
#  | bsortex -merge key="6.12asc" -record recform=txtcsv -input reclen=100 -summary suppress last -output file=${KK0491_ALL} 

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

#
#---マッチング処理（カレント）
#
MATCH_TMP_OUT_FILE=${MID_DIR_KK}/${JOBNAME}.MATCH_TMP.csv
MATCH_TMP_OUT_FILE2=${MID_DIR_KK}/${JOBNAME}.MATCH_TMP2.csv
cat /dev/null > ${MATCH_TMP_OUT_FILE}
cat /dev/null > ${MATCH_TMP_OUT_FILE2}

GET_MIN_FILESIZE "${KK0501_CUR} ${KK0491_ALL}"
MIN_SIZE=$?
if [ ${MIN_SIZE} -gt 0 ]
then

	# マッチング実行
	#  マッチング後の項目 
	#  - SELECT(reconst)項目は以下
	#      0 - 0.12   ：請求方法番号(口座)
	#      1 - 2.3    ：口座ステータス
	#      2 - 3.4    ：金融機関コード
	#      3 - 4.3    ：金融機関支店コード
	#      4 - 5.1    ：預金種目コード
	#      5 - 6.7    ：口座番号
	#      6 - 7.1    ：新規コード
	#      7 - 8.242  ：口座名義人(漢字)
	#      8 - 9.242  ：口座名義人カナ名
	#      9 - 10.3   ：通帳記号
	#     10 - 11.8   ：通帳番号
	#     11 - 12.8   ：口振手続キャンセル年月日
	#     12 - 13.2   ：口振手続キャンセル理由コード
	#     13 - 14.2   ：記載不備審査結果コード
	#     14 - 15.8   ：支払い審査依頼年月日
	#     15 - 16.8   ：支払い審査依頼取消年月日
	#     16 - 17.2   ：支払い審査依頼取消理由コード
	#     17 - 18.240 ：支払い審査依頼取消理由メモ
	#     18 - 19.2   ：支払い審査結果コード
	#     19 - 20.2   ：支払い審査結果NG理由コード
	#     20 - 21.240 ：支払い審査結果NG理由メモ
	#     21 - 22.8   ：外部口振審査完了年月日
	#     22 - 23.8   ：有効性確認年月日
	#     23 - 24.5   ：異動区分
	#     24 - -.7    ：通帳番号（編集）
	#     25 - 0.10   ：請求契約番号
	#     26 - 1.8    ：予約適用年月日
	#2023.05.29 ANK-4408-00-00 Add Start
	#     27 - 38.1   ：口座支払方法受付区分
	#2023.05.29 ANK-4408-00-00 Add End
	EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/KK_CM_0047.def "${KK0501_CUR} ${KK0491_ALL}"
	EXEC_MATCHING ${MATCH_TMP_OUT_FILE} ${MATCHING_QUERY_WORK}
	# 口座ステータスによってデータを絞る
	bsortex -sort key="0.12asc" -record recform=txtcsv -input reclen=1400 file=${MATCH_TMP_OUT_FILE}  \
	  -output file=${MATCH_TMP_OUT_FILE2} include="1.3asc.eq.'010'.or.1.3asc.eq.'020'.or.1.3asc.eq.'090'.or.1.3asc.eq.'100'" \

	# ダブルクォーテーション削除
	sed -e 's/^"//g' -e 's/","/,/g' -e 's/"$//g' ${MATCH_TMP_OUT_FILE2} > ${KK0501_MTC}

	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

fi

#
#---マッチング処理（全データ）
#
MATCH_TMP_OUT_FILE3=${MID_DIR_KK}/${JOBNAME}.MATCH_TMP3.csv
MATCH_TMP_OUT_FILE4=${MID_DIR_KK}/${JOBNAME}.MATCH_TMP4.csv
cat /dev/null > ${MATCH_TMP_OUT_FILE3}
cat /dev/null > ${MATCH_TMP_OUT_FILE4}

GET_MIN_FILESIZE "${KK0501_ALL} ${KK0491_ALL}"
MIN_SIZE=$?
if [ ${MIN_SIZE} -gt 0 ]
then

	# マッチング実行
	#  マッチング後の項目 
	#  - SELECT(reconst)項目は以下
	#      0 - 0.12   ：請求方法番号(口座)
	#      1 - 2.3    ：口座ステータス
	#      2 - 3.4    ：金融機関コード
	#      3 - 4.3    ：金融機関支店コード
	#      4 - 5.1    ：預金種目コード
	#      5 - 6.7    ：口座番号
	#      6 - 7.1    ：新規コード
	#      7 - 8.242  ：口座名義人(漢字)
	#      8 - 9.242  ：口座名義人カナ名
	#      9 - 10.3   ：通帳記号
	#     10 - 11.8   ：通帳番号
	#     11 - 12.8   ：口振手続キャンセル年月日
	#     12 - 13.2   ：口振手続キャンセル理由コード
	#     13 - 14.2   ：記載不備審査結果コード
	#     14 - 15.8   ：支払い審査依頼年月日
	#     15 - 16.8   ：支払い審査依頼取消年月日
	#     16 - 17.2   ：支払い審査依頼取消理由コード
	#     17 - 18.240 ：支払い審査依頼取消理由メモ
	#     18 - 19.2   ：支払い審査結果コード
	#     19 - 20.2   ：支払い審査結果NG理由コード
	#     20 - 21.240 ：支払い審査結果NG理由メモ
	#     21 - 22.8   ：外部口振審査完了年月日
	#     22 - 23.8   ：有効性確認年月日
	#     23 - 24.5   ：異動区分
	#     24 - -.7    ：通帳番号（編集）
	#     25 - 0.10   ：請求契約番号
	#     26 - 1.8    ：予約適用年月日
	#2023.05.29 ANK-4408-00-00 Add Start
	#     27 - 38.1   ：口座支払方法受付区分
	#2023.05.29 ANK-4408-00-00 Add End
	EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/KK_CM_0047.def "${KK0501_ALL} ${KK0491_ALL}"
	EXEC_MATCHING ${MATCH_TMP_OUT_FILE3} ${MATCHING_QUERY_WORK}
	# 口座ステータスによってデータを絞る
	bsortex -sort key="0.12asc" -record recform=txtcsv -input reclen=1400 file=${MATCH_TMP_OUT_FILE3}  \
	  -output file=${MATCH_TMP_OUT_FILE4} include="1.3asc.eq.'010'.or.1.3asc.eq.'020'.or.1.3asc.eq.'090'.or.1.3asc.eq.'100'" \

	# ダブルクォーテーション削除
	sed -e 's/^"//g' -e 's/","/,/g' -e 's/"$//g' ${MATCH_TMP_OUT_FILE4} > ${KK0501_MTC_ALL}

	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

fi

#
#---入力ファイルとのマッチング処理
#
#  マッチング後の項目 
#  - SELECT(reconst)項目は以下
#      0 - 0.12   ：請求方法番号(口座)
#      1 - 2.3    ：口座ステータス
#      2 - 3.4    ：金融機関コード
#      3 - 4.3    ：金融機関支店コード
#      4 - -.1    ：預金種目コード
#      5 - 6.7    ：口座番号
#      6 - 8.242  ：口座名義人(漢字)
#      7 - 9.242  ：口座名義人カナ名
#      8 - 10.3   ：通帳記号
#      9 - 11.8   ：通帳番号
#     10 - 12.8   ：口振手続キャンセル年月日
#     11 - 13.2   ：口振手続キャンセル理由コード
#     12 - 14.2   ：記載不備審査結果コード
#     13 - 15.8   ：支払い審査依頼年月日
#     14 - 16.8   ：支払い審査依頼取消年月日
#     15 - 17.2   ：支払い審査依頼取消理由コード
#     16 - 18.240 ：支払い審査依頼取消理由メモ
#     17 - 19.2   ：支払い審査結果コード
#     18 - 20.2   ：支払い審査結果NG理由コード
#     19 - 21.240 ：支払い審査結果NG理由メモ
#     20 - 22.8   ：外部口振審査完了年月日
#     21 - 23.8   ：有効性確認年月日
#     22 - 24.5   ：異動区分
#     23 - -.10   ：請求契約番号
#     24 - -.6    ：請求年月
#     25 - -.12   ：請求番号
#     26 - -.1    ：口座振替結果コード
#     27 - 7.1    ：新規コード
#     28 - 26.8   ：予約適用年月日
#2023.05.29 ANK-4408-00-00 Add Start
#     29 - 38.1   ：口座支払方法受付区分
#     30 - --     ：料金走行日
#2023.05.29 ANK-4408-00-00 Add End
# カレント
	GET_MIN_FILESIZE "${INP_UNSPC} ${KK0501_MTC}"
	MIN_SIZE=$?
	if [ ${MIN_SIZE} -gt 0 ]
	then
		# 預金口座振替の場合（通常・郵貯銀行）
		EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/KK_CM_0048.def "${INP_UNSPC} ${KK0501_MTC}"
		EXEC_MATCHING ${INP_MTC_UNSPC} ${MATCHING_QUERY_WORK}
	fi

	GET_MIN_FILESIZE "${INP_SPACE} ${KK0501_MTC}"
	MIN_SIZE=$?
	if [ ${MIN_SIZE} -gt 0 ]
	then
		# 郵便自動振込の場合
		EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/KK_CM_0049.def "${INP_SPACE} ${KK0501_MTC}"
		EXEC_MATCHING ${INP_MTC_SPACE} ${MATCHING_QUERY_WORK}
	fi

	cat ${INP_MTC_SPACE} ${INP_MTC_UNSPC}  > ${INP_MTC_TMP1}

	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CAT Error($SVC cat:rc=$rc) "
	    echo $JOBNAME " CAT Error($SVC cat:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi
	
	# 最終列に料金走行日を追加
	#2023.05.29 ANK-4408-00-00 Mod Start
	#awk 'BEGIN {FS=",";OFS=","}{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29}' ${INP_MTC_TMP1} > ${INP_TMP}
	awk 'BEGIN {FS=",";OFS=","}{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30}' ${INP_MTC_TMP1} > ${INP_TMP}
	#2023.05.29 ANK-4408-00-00 Mod End
	sed -e "s/$/,${CHR_DATE}/g" ${INP_TMP} > ${INP_MTC_TMP2}

	# ソート実行
	#2023.05.29 ANK-4408-00-00 Mod Start
	#bsortex -sort key="0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1185 file=${INP_MTC_TMP2} include="28.8asc.le.29.8asc" -output file=${INP_MTC_TMP3}
	bsortex -sort key="0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1189 file=${INP_MTC_TMP2} include="28.8asc.le.30.8asc" -output file=${INP_MTC_TMP3}
	#2023.05.29 ANK-4408-00-00 Mod End

	#2023.05.29 ANK-4408-00-00 Mod Start
	#bsortex -merge key="0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1185 -summary suppress last < ${INP_MTC_TMP3} -output file=${INP_MTC_CUR}
	bsortex -merge key="0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1189 -summary suppress last < ${INP_MTC_TMP3} -output file=${INP_MTC_CUR}
	#2023.05.29 ANK-4408-00-00 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

# 予約取得の準備
	GET_MIN_FILESIZE "${INP_UNSPC} ${KK0501_MTC_ALL}"
	MIN_SIZE=$?
	if [ ${MIN_SIZE} -gt 0 ]
	then
		# 預金口座振替の場合（通常・郵貯銀行）
		EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/KK_CM_0256.def "${INP_UNSPC} ${KK0501_MTC_ALL}"
		EXEC_MATCHING ${INP_MTC_UNSPC_ALL} ${MATCHING_QUERY_WORK}
	fi

	GET_MIN_FILESIZE "${INP_SPACE} ${KK0501_MTC}"
	MIN_SIZE=$?
	if [ ${MIN_SIZE} -gt 0 ]
	then
		# 郵便自動振込の場合
		EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/KK_CM_0257.def "${INP_SPACE} ${KK0501_MTC_ALL}"
		EXEC_MATCHING ${INP_MTC_SPACE_ALL} ${MATCHING_QUERY_WORK}
	fi

	cat ${INP_MTC_SPACE_ALL} ${INP_MTC_UNSPC_ALL}  > ${INP_MTC_TMP4}
	
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CAT Error($SVC cat:rc=$rc) "
	    echo $JOBNAME " CAT Error($SVC cat:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi
	
	# 最終列に料金走行日を追加
	#2023.05.29 ANK-4408-00-00 Mod Start
	#awk 'BEGIN {FS=",";OFS=","}{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29}' ${INP_MTC_TMP4} > ${INP_TMP}
	awk 'BEGIN {FS=",";OFS=","}{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30}' ${INP_MTC_TMP4} > ${INP_TMP}
	#2023.05.29 ANK-4408-00-00 Mod End
	sed -e "s/$/,${CHR_DATE}/g" ${INP_TMP} > ${INP_MTC_TMP5}

	# ソート実行
	#2023.05.29 ANK-4408-00-00 Mod Start
	#bsortex -sort key="0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1185 file=${INP_MTC_TMP5} include="28.8asc.gt.29.8asc" -output file=${INP_MTC_TMP6}
	bsortex -sort key="0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1189 file=${INP_MTC_TMP5} include="28.8asc.gt.30.8asc" -output file=${INP_MTC_TMP6}
	#2023.05.29 ANK-4408-00-00 Mod End
	
	#2023.05.29 ANK-4408-00-00 Mod Start
	#bsortex -merge key="0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1185 -summary suppress last < ${INP_MTC_TMP6} -output file=${INP_MTC_ALL}
	bsortex -merge key="0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1189 -summary suppress last < ${INP_MTC_TMP6} -output file=${INP_MTC_ALL}
	#2023.05.29 ANK-4408-00-00 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
	
# 予約取得
	GET_MIN_FILESIZE "${INP_MTC_CUR} ${INP_MTC_ALL}"
	MIN_SIZE=$?
	if [ ${MIN_SIZE} -gt 0 ]
	then
		# カレントが存在するもののみ予約をセット：請求契約番号、金融機関コードが同じもの
		EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/KK_CM_0255.def "${INP_MTC_CUR} ${INP_MTC_ALL}"
		EXEC_MATCHING ${INP_MTC_RSV} ${MATCHING_QUERY_WORK}
	fi

	cat ${INP_MTC_CUR} ${INP_MTC_RSV}  > ${INP_MTC_TMP7}
	
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CAT Error($SVC cat:rc=$rc) "
	    echo $JOBNAME " CAT Error($SVC cat:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi
	
	# ソート実行
	#2023.05.29 ANK-4408-00-00 Mod Start
	#bsortex -sort key="23.10asc,0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1185 file=${INP_MTC_TMP7} -output file=${INP_MTC_TMP8}
	bsortex -sort key="23.10asc,0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1189 file=${INP_MTC_TMP7} -output file=${INP_MTC_TMP8}
	#2023.05.29 ANK-4408-00-00 Mod End

	#2023.05.29 ANK-4408-00-00 Mod Start
	#bsortex -merge key="23.10asc,0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1185 -summary suppress last < ${INP_MTC_TMP8} -output file=${INP_MTC}
	bsortex -merge key="23.10asc,0.12asc,1.3asc,2.4asc,3.3asc" -record recform=txtcsv -input reclen=1189 -summary suppress last < ${INP_MTC_TMP8} -output file=${INP_MTC}
	#2023.05.29 ANK-4408-00-00 Mod End

# マッチング（一時）データの削除
rm ${MATCH_TMP_OUT_FILE}
rm ${MATCH_TMP_OUT_FILE2}
rm ${MATCH_TMP_OUT_FILE3}
rm ${MATCH_TMP_OUT_FILE4}

# unloadファイルの削除
rm ${ULD_OUTFILE}

# KKIFI025とカレントデータのマッチング(KKIFI025に該当データが無い場合は、エラーファイル出力）
	# KKIFI025とカレントデータのマッチング
	EDIT_MATCHING_QUERY ${G_TOOLSH}/util/def/KK_CM_0474.def "${INP_FILE} ${KK0501_MTC_ALL} ${KK0501_MTC_ALL}"
	EXEC_MATCHING ${INP_CUR_UNMATCH_TMP1} ${MATCHING_QUERY_WORK}
	# エラー抽出ファイルから改行コード(\r)を除去する
	sed -e 's/\r//g' ${INP_CUR_UNMATCH_TMP1} > ${INP_CUR_UNMATCH_TMP2}
	# エラー対象のデータ抽出
	bsortex -sort key="0.10asc" -record recform=txtcsv -input reclen=1400 file=${INP_CUR_UNMATCH_TMP2} include="0.10asc.ne.16.10asc.and.0.10asc.ne.17.10asc" -output file=${INP_CUR_UNMATCH}
	rm ${INP_CUR_UNMATCH_TMP1}
	rm ${INP_CUR_UNMATCH_TMP2}

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

P1="OPD=$OPD,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO2AP0110J0,"
P4="IND1=KKIFM404.def,"
P5="INF1=${INP_MTC},"
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"

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
    # 口座新規コード変更.のバックアップ
    cp -p -f ${SEND_DIR}/KKIFI025001.csv ${SEND_DIR}/bk/KKIFI025001_${YMDHMS}_ABORT.csv
    ERR_FLG=1
else

# 口座新規コード変更.の移動
mv -f ${SEND_DIR}/KKIFI025001.csv ${SEND_DIR}/bk/KKIFI025001_${YMDHMS}.csv

fi

exit_rc=$rc

# KKIFI025とカレントデータを比較し、該当無しデータがある場合、マイナーエラーを発生させる。
if [ $rc -eq 0 ]
then
	if [ `cat ${INP_CUR_UNMATCH} | wc -l` -gt 0 ]
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00005W $JOBNAME "[口座振替入金情報]($INP_CUR_UNMATCH)"
		exit_rc=${G_RTN_WARN}
		ERR_FLG=1
	fi
fi

# 各種一時ファイルの削除
rm ${KK0501_CUR}
rm ${KK0501_ALL}
rm ${KK0491_ALL}
rm ${KK0501_MTC}
rm ${KK0501_MTC_ALL}
rm ${INP_SPACE}
rm ${INP_UNSPC}
rm ${INP_MTC_SPACE}
rm ${INP_MTC_UNSPC}
rm ${INP_MTC_SPACE_ALL}
rm ${INP_MTC_UNSPC_ALL}
rm ${INP_MTC_TMP1}
rm ${INP_MTC_TMP2}
rm ${INP_MTC_TMP3}
rm ${INP_MTC_TMP4}
rm ${INP_MTC_TMP5}
rm ${INP_MTC_TMP6}
rm ${INP_MTC_TMP7}
rm ${INP_MTC_TMP8}
rm ${INP_MTC_CUR}
rm ${INP_MTC_ALL}
rm ${INP_MTC_RSV}
rm ${INP_TMP}

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

exit $exit_rc
