#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：顧客管理
#
# シェル名      ：連絡先情報登録
#
# 機能          ：新規に作成されたオプトインメールの連絡先情報をオプトインメール受信設定に登録する。
#
# コマンド形式  ：EO10Q0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v15.00.00      2015/06/30   FJ)有本      OM-2015-0001816 共通UNLOAD対応
# v15.00.01      2015/07/09   FJ)中村      OM-2015-0001816 共通UNLOAD対応(エラーチェック追加)
# v19.00.00      2015/10/09   FJ)福山      OM-2015-0002578 性能改善：アンロード共通ファイル縮小対応
# v20.00.00      2015/11/18   FJ) 有本     OM-2015-0003006 性能改善対応：不要なソート削除
# v20.00.01      2015/12/16   FJ) 有本     OM-2015-0003006 性能改善対応：共通unload項目削除対応
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1


##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME
sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $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
	sh ${G_TOOLSH}/EOKULD03.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_CK}/${JOBNAME}.ULD_TMP.csv
# オプトインメール（カレント）
CK0131_CUR_OUTFILE=${MID_DIR_CK}/${JOBNAME}.CK0131_CUR.csv
# お客様（カレント）
CK0011_CUR_OUTFILE=${MID_DIR_CK}/${JOBNAME}.CK0011_CUR.csv
# オプトインメール受信設定（未設定）
CK0141_NST_OUTFILE=${MID_DIR_CK}/${JOBNAME}.CK0141_NOTSET.csv
# オプトインメール受信設定（設定済）
CK0141_SET_OUTFILE=${MID_DIR_CK}/${JOBNAME}.CK0141_SET.csv
# 連絡先（カレント）
CK0201_CUR_OUTFILE=${MID_DIR_CK}/${JOBNAME}.CK0201_CUR.csv
# オプションサービス契約_ISP
KK0361_DTA_OUTFILE=${MID_DIR_CK}/${JOBNAME}.KK0361_DTA.csv
# オプションサービス契約（カレント）
KK0351_CUR_OUTFILE=${MID_DIR_CK}/${JOBNAME}.KK0351_CUR.csv
# 登録対象（連絡先）
RRKS_INFILE=${MID_DIR_CK}/${JOBNAME}.RRKS_INFILE.csv
RRKS_INFILE_TMP=${MID_DIR_CK}/${JOBNAME}.RRKS_INFILE_TMP.csv
# 登録対象（オプションサービス契約）
OPSVCKEI_INFILE=${MID_DIR_CK}/${JOBNAME}.OPSVCKEI_INFILE.csv
OPSVCKEI_INFILE_TMP=${MID_DIR_CK}/${JOBNAME}.OPSVCKEI_INFILE_TMP.csv
# 登録対象
INS_TG_INFILE=${MID_DIR_CK}/${JOBNAME}.INS_TG_INFILE.csv
INS_TG_INFILE_TMP=${MID_DIR_CK}/${JOBNAME}.INS_TG_INFILE_TMP.csv
INS_TG_INFILE_SED=${MID_DIR_CK}/${JOBNAME}.INS_TG_INFILE_SED.csv

# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD START
#共通UNLOADファイル名
#連絡先(カレント)
COMULD2_CK0201_CUR=${MID_DIR_CC}/CCIFM037002.csv
#お客様(カレント)
COMULD2_CK0011_CUR=${MID_DIR_CC}/CCIFM019002.csv
#オプションサービス契約(カレント)
COMULD2_KK0351_CUR=${MID_DIR_CC}/CCIFM026002.csv
#オプションサービス契約<ISP>(全件)
COMULD2_KK0361_ALL=${MID_DIR_CC}/CCIFM027001.csv
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD END

# 出力ファイルの初期化
cat /dev/null > ${ULD_OUTFILE}
cat /dev/null > ${CK0131_CUR_OUTFILE}
cat /dev/null > ${CK0011_CUR_OUTFILE}
cat /dev/null > ${CK0141_NST_OUTFILE}
cat /dev/null > ${CK0141_SET_OUTFILE}
cat /dev/null > ${CK0201_CUR_OUTFILE}
cat /dev/null > ${KK0361_DTA_OUTFILE}
cat /dev/null > ${KK0351_CUR_OUTFILE}
cat /dev/null > ${RRKS_INFILE}
cat /dev/null > ${RRKS_INFILE_TMP}
cat /dev/null > ${OPSVCKEI_INFILE}
cat /dev/null > ${OPSVCKEI_INFILE_TMP}
cat /dev/null > ${INS_TG_INFILE}
cat /dev/null > ${INS_TG_INFILE_TMP}
cat /dev/null > ${INS_TG_INFILE_SED}

# 各種アンロードクエリファイル
CK0131_ULD_QUERY=${SQL_DIR}/CK_U_CK0131_01.sql
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL START
#CK0201_ULD_QUERY=${SQL_DIR}/CK_U_CK0201_02.sql
#CK0011_ULD_QUERY=${SQL_DIR}/CK_U_CK0011_01.sql
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL END
CK0141_ULD_QUERY=${SQL_DIR}/CK_U_CK0141_01.sql
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL START
#KK0351_ULD_QUERY=${SQL_DIR}/CK_U_KK0351_01.sql
#KK0361_ULD_QUERY=${SQL_DIR}/CK_U_KK0361_01.sql
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL END

# 各種マッチング定義
MATCH_RRKS=${G_TOOLSH}/util/def/CK_CM_0002.def
MATCH_RRKS_TMP=${MID_DIR_CK}/${JOBNAME}.CK_CM_0002_TMP.def
cat /dev/null > ${MATCH_RRKS_TMP}
MATCH_OPSVCKEI=${G_TOOLSH}/util/def/CK_CM_0003.def
MATCH_OPSVCKEI_TMP=${G_TOOLSH}/util/def/CK_CM_0003_TMP.def
cat /dev/null > ${MATCH_OPSVCKEI_TMP}

# 運用日、運用日の２日前、２日後を取得

OP_DATE=''
OP_DATE_2AGO=''
OP_DATE_2LTR=''

#
#---運用日付取得
#
if [ "${OPD}" = "" ];then
	. EOK010310J0.sh "BDATE" "DEC" 0 0 2
	OP_DATE_2AGO=${RSLT_OPEDATE}
	. EOK010310J0.sh "BDATE" "ADD" 0 0 2
	OP_DATE_2LTR=${RSLT_OPEDATE}
	. EOK010310J0.sh "BDATE"
	OP_DATE=${RSLT_OPEDATE}
else
	RSLT_OPEDATE=${OPD}
	OP_DATE=${RSLT_OPEDATE}
	OP_DATE_2AGO=`date -d "2 days ago ${RSLT_OPEDATE}" +%Y%m%d`
	OP_DATE_2LTR=`date -d "2 days ${RSLT_OPEDATE}" +%Y%m%d`
fi

echo '■運用日付------------>'${OP_DATE}
echo '■運用日付（２日前）-->'${OP_DATE_2AGO}
echo '■運用日付（２日後）-->'${OP_DATE_2LTR}

# CK0131(CK_M_OPTINM)の全データをアンロード
#  CK0131のカレント AND オプトインメール適用開始年月日 >= 運用日付（２日前） AND オプトインメール適用開始年月日 <= 運用日付（２日後）
#  - SELECT(reconst)項目は以下
#      0 - 0.3   ：オプトインメール番号
#      1 - 1.17  ：世代登録年月日時分秒
#      2 - 2.8   ：予約適用年月日
#      3 - 3.8   ：オプトインメール適用開始年月日
#      4 - 16.1  ：無効フラグ
EDIT_ULD_QUERY ${CK0131_ULD_QUERY} "${OP_DATE} ${OP_DATE_2AGO} ${OP_DATE_2LTR}"
EXEC_UNLOAD ${SQL_WORK_FILE} ${CK0131_CUR_OUTFILE}

# 連絡先、オプションサービス契約の両方で使用するお客様、オプトインメール受信設定の取得

# CK0011(CK_T_CUST)の全カレントデータをアンロード
#  - SELECT(reconst)項目は以下
#      0 - 0.10  ：SYSID
#      1 - 1.17  ：世代登録年月日時分秒
#      2 - 2.3   ：お客様ステータス
#      3 - 55.8  ：予約適用年月日
#      4 - 57.1  ：予約適用コード
#      5 - 69.1  ：お客様入退会コード
#      6 - 91.17 ：更新年月日時分秒
#      7 - 95.1  ：無効フラグ
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL START
#EDIT_ULD_QUERY ${CK0011_ULD_QUERY} "${OP_DATE}"
#EXEC_UNLOAD ${SQL_WORK_FILE} ${CK0011_CUR_OUTFILE}
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL END
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD START
# OM-2015-0002578 2015/10/09 福山 MOD START
#bsortex \
#   -copy -record recform=txtcsv \
#   -input file=${COMULD2_CK0011_CUR} \
#         reclen=${ULD_REC_LEN_CK0011} \
#         reconst="0.10,1.17,2.3,55.8,57.1,69.1,91.17,95.1" \
# | sed 's/\"//g' > ${CK0011_CUR_OUTFILE}
bsortex \
   -copy -record recform=txtcsv \
   -input file=${COMULD2_CK0011_CUR} \
         reclen=${ULD2_REC_LEN_CK0011} \
         reconst="0.10,1.17,2.3,21.8,22.1,23.1,24.17,25.1" \
 | sed 's/\"//g' > ${CK0011_CUR_OUTFILE}
# OM-2015-0002578 2015/10/09 福山 MOD END
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD END
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
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
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
# CK0141(CK_T_OPTINM_RCV_SET)の全データをアンロード
EXEC_UNLOAD ${CK0141_ULD_QUERY} ${ULD_OUTFILE}

# CK0141のデータ取得
#  CK0141のデータを未設定と設定済に分割
#  - SELECT(reconst)項目は以下
#      0 - 1.10  ：SYSID
#      1 - 2.256 ：メールアドレス
#      2 - 0.3   ：オプトインメール番号
#      3 - 16.1  ：MK_FLG

# 未設定用
bsortex -sort key="0.10asc,1.256asc,2.3asc" -record recform=txtcsv -input reclen=400 file=${ULD_OUTFILE} include="3.1asc.eq.'0'" -output file=${CK0141_NST_OUTFILE}
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
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
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
# 設定済み用
bsortex -merge key="0.10asc,1.256asc" -record recform=txtcsv -input reclen=300 file=${CK0141_NST_OUTFILE} -summary suppress last -output file=${CK0141_SET_OUTFILE}
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
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
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
# 登録対象（連絡先）用データ

# CK0201(CK_T_RRKS)の全カレントデータをアンロード
#  - SELECT(reconst)項目は以下
#      0 - 0.12  ：連絡先番号
#      1 - 1.17  ：世代登録年月日時分秒
#      2 - 2.10  ：SYSID
#      3 - 4.3   ：連絡方法コード
#      4 - 7.256 ：メールアドレス
#      5 - 13.8  ：予約適用年月日
#      6 - 15.1  ：予約適用コード
#      7 - 22.1  ：無効フラグ
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL START
#EDIT_ULD_QUERY ${CK0201_ULD_QUERY} "${OP_DATE}"
#EXEC_UNLOAD ${SQL_WORK_FILE} ${CK0201_CUR_OUTFILE}
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL END
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD START
# OM-2015-0002578 2015/10/09 福山 MOD START
# bsortex \
#   -copy -record recform=txtcsv \
#   -input file=${COMULD2_CK0201_CUR} \
#         reclen=${ULD_REC_LEN_CK0201} \
#         reconst="0.12,1.17,2.10,4.3,29.256,13.8,15.1,22.1" \
# | sed 's/\"//g' > ${CK0201_CUR_OUTFILE}
# OM-2015-0003006 性能改善対応 2015/12/16 有本 MOD START
# bsortex \
#   -copy -record recform=txtcsv \
#   -input file=${COMULD2_CK0201_CUR} \
#         reclen=${ULD2_REC_LEN_CK0201} \
#         reconst="0.12,1.17,2.10,3.3,11.256,7.8,8.1,9.1" \
# | sed 's/\"//g' > ${CK0201_CUR_OUTFILE}
 bsortex \
   -copy -record recform=txtcsv \
   -input file=${COMULD2_CK0201_CUR} \
         reclen=${ULD2_REC_LEN_CK0201} \
         reconst="0.12,1.17,2.10,3.3,5.256,7.8,8.1,9.1" \
 | sed 's/\"//g' > ${CK0201_CUR_OUTFILE}
# OM-2015-0003006 性能改善対応 2015/12/16 有本 MOD END
# OM-2015-0002578 2015/10/09 福山 MOD END
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD END
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
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
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
# 登録対象（オプションサービス契約）用データ

# KK0351(KK_T_OP_SVC_KEI)の全カレントデータデータをアンロード
#  - SELECT(reconst)項目は以下
#      0 - 0.12   ：オプションサービス契約番号
#      1 - 1.17   ：世代登録年月日時分秒
#      2 - 2.3    ：オプションサービス契約ステータス
#      3 - 3.4    ：オプションサービスコード
#      4 - 10.10  ：SYSID
#      5 - 23.8   ：予約適用年月日
#      6 - 25.1   ：予約適用コード
#      7 - 72.1   ：無効フラグ
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL START
#EDIT_ULD_QUERY ${KK0351_ULD_QUERY} "${OP_DATE}"
#EXEC_UNLOAD ${SQL_WORK_FILE} ${KK0351_CUR_OUTFILE}
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL END
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD START
# OM-2015-0002578 2015/10/09 福山 MOD START
# bsortex \
#   -copy -record recform=txtcsv \
#   -input file=${COMULD2_KK0351_CUR} \
#         reclen=${ULD_REC_LEN_KK0351} \
#         reconst="0.12,1.17,2.3,3.4,10.10,23.8,25.1,72.1" \
# | sed 's/\"//g' > ${KK0351_CUR_OUTFILE}
 bsortex \
   -copy -record recform=txtcsv \
   -input file=${COMULD2_KK0351_CUR} \
         reclen=${ULD2_REC_LEN_KK0351} \
         reconst="0.12,1.17,2.3,3.4,9.10,10.8,11.1,30.1" \
 | sed 's/\"//g' > ${KK0351_CUR_OUTFILE}
# OM-2015-0002578 2015/10/09 福山 MOD END
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD END
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
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
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
# KK0361(KK_T_OPSVKEI_ISP)の全データをアンロード
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL START
#EXEC_UNLOAD ${KK0361_ULD_QUERY} ${ULD_OUTFILE}
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 DEL END
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD START
# OM-2015-0002578 2015/10/09 福山 MOD START
# bsortex \
#   -copy -record recform=txtcsv \
#   -input file=${COMULD2_KK0361_ALL} \
#         reclen=${ULD_REC_LEN_KK0361} \
#         reconst="0.12,1.17,13.256,71.1" \
# | sed 's/\"//g' > ${ULD_OUTFILE}
 bsortex \
   -copy -record recform=txtcsv \
   -input file=${COMULD2_KK0361_ALL} \
         reclen=${ULD2_REC_LEN_KK0361} \
         reconst="0.12,1.17,2.256,4.1" \
 | sed 's/\"//g' > ${ULD_OUTFILE}
# OM-2015-0002578 2015/10/09 福山 MOD END
# OM-2015-0001816 共通UNLOAD対応 2015/06/30 有本 ADD END
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
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
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
# KK0361のデータ取得
#  - SELECT(reconst)項目は以下
#      0 - 0.12   ：オプションサービス契約番号
#      1 - 1.17   ：世代登録年月日時分秒
#      2 - 13.256 ：メールアドレス
#      3 - 71.1   ：無効フラグ
# OM-2015-0003006 性能改善対応 2015/11/18 有本 MOD START
#bsortex -sort key="0.12asc,1.17asc,2.256asc" -record recform=txtcsv -input reclen=400 file=${ULD_OUTFILE} include="3.1asc.eq.'0'" -output file=${KK0361_DTA_OUTFILE}
bsortex -copy -record recform=txtcsv -input reclen=400 file=${ULD_OUTFILE} include="3.1asc.eq.'0'" -output file=${KK0361_DTA_OUTFILE}
# OM-2015-0003006 性能改善対応 2015/11/18 有本 MOD END
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
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
# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
# マッチング用
MATCH_TMP_OUT_FILE=${MID_DIR_CK}/${JOBNAME}.MATCH_TMP.csv
MATCH_TMP_SED=${MID_DIR_CK}/${JOBNAME}.MATCH_TMP_SED.csv
cat /dev/null > ${MATCH_TMP_OUT_FILE}
cat /dev/null > ${MATCH_TMP_SED}

GET_MIN_FILESIZE "${CK0141_NST_OUTFILE} ${CK0141_SET_OUTFILE}"
MIN_SIZE=$?
if [ ${MIN_SIZE} -gt 0 ]
then

	while read line
	do

		echo '■オプトインメール番号---------> '${line}
		SETTING_RECONST="0.3,1.10,2.256"

		# 登録対象（連絡先）
		GET_MIN_FILESIZE "${CK0201_CUR_OUTFILE} ${CK0011_CUR_OUTFILE}"
		MIN_SIZE=$?
		if [ ${MIN_SIZE} -gt 0 ]
		then

			# 変数を書き換える
			sed -e "s/:OPTINM_NO/${line}/g" ${MATCH_RRKS} > ${MATCH_RRKS_TMP}
			
			# マッチング実行
			#  - SELECT(reconst)項目は以下（絞り込み後の内容）
			#      0 - -.3    ：オプトインメール番号（マッチング後に追加）
			#      1 - -.10   ：SYSID
			#      2 - -.256  ：メールアドレス
			#      3 - -.17   ：世代登録年月日時分秒（マッチング後に削除）
			#      4 - -.17   ：更新年月日時分秒（マッチング後に削除）
			#      5 - -.3    ：連絡方法コード（マッチング後に削除）
			#      6 - -.3    ：お客様ステータス（マッチング後に削除）
			#      7 - -.1    ：お客様入退会コード（マッチング後に削除）
			#      8 - -.10   ：SYSID（未設定用）（マッチング後に削除）
			#      9 - -.10   ：SYSID（設定済み用）（マッチング後に削除）
			EDIT_MATCHING_QUERY ${MATCH_RRKS_TMP} "${CK0201_CUR_OUTFILE} ${CK0011_CUR_OUTFILE} ${CK0141_NST_OUTFILE} ${CK0141_SET_OUTFILE}"
			EXEC_MATCHING ${MATCH_TMP_OUT_FILE} ${MATCHING_QUERY_WORK}

			# 変数を書き換える
			sed -e "s/^/${line},/g" ${MATCH_TMP_OUT_FILE} > ${MATCH_TMP_SED}

			# マッチング結果を絞り込み
			# 絞り込み条件
			#   ・連絡方法コード＝'001'（メールアドレス）
			#   ・（お客様ステータス＝'100'（受付済））、または お客様ステータス＝'010'（登録済） ＡＮＤ お客様入退会コード＝'0'（入会）
			#   ・メールアドレスが設定されている
			#   ・SYSID（未設定用）が設定されていない（当該のオプトインメール番号がオプトインメール受信設定に存在しない）
			#   ・SYSID（設定済み用）が設定されている（受信設定対象である）
			# OM-2015-0003006 性能改善対応 2015/11/18 有本 MOD START
			#bsortex -sort key="0.3asc,1.10asc,2.256asc" -record recform=txtcsv -input reclen=500 file=${MATCH_TMP_SED} -output file=${RRKS_INFILE_TMP} reconst=${SETTING_RECONST} \
			#	include="5.3asc.eq.'001'.and.((6.3asc.eq.'100').or.(6.3asc.eq.'010'.and.7.1asc.eq.'0')).and.2.256asc.ne.' '.and.8.10asc.lt.' '.and.9.10asc.gt.' '"
			bsortex -copy -record recform=txtcsv -input reclen=500 file=${MATCH_TMP_SED} -output file=${RRKS_INFILE_TMP} reconst=${SETTING_RECONST} \
				include="5.3asc.eq.'001'.and.((6.3asc.eq.'100').or.(6.3asc.eq.'010'.and.7.1asc.eq.'0')).and.2.256asc.ne.' '.and.8.10asc.lt.' '.and.9.10asc.gt.' '"
			# OM-2015-0003006 性能改善対応 2015/11/18 有本 MOD END
			# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
			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
			# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
			# 登録対象（連絡先）へ追記
			cat ${RRKS_INFILE_TMP} >> ${RRKS_INFILE}
		
		fi

		# 登録対象（オプションサービス契約）
		GET_MIN_FILESIZE "${KK0351_CUR_OUTFILE} ${KK0361_DTA_OUTFILE} ${CK0011_CUR_OUTFILE}"
		MIN_SIZE=$?
		if [ ${MIN_SIZE} -gt 0 ]
		then

			# 変数を書き換える
			sed -e "s/:OPTINM_NO/${line}/g" ${MATCH_OPSVCKEI} > ${MATCH_OPSVCKEI_TMP}
			
			# マッチング実行
			#  - SELECT(reconst)項目は以下（絞り込み後の内容）
			#      0 - -.3    ：オプトインメール番号（マッチング後に追加）
			#      1 - -.10   ：SYSID
			#      2 - -.256  ：メールアドレス
			#      3 - -.17   ：世代登録年月日時分秒
			#      4 - -.17   ：更新年月日時分秒
			#      5 - -.3    ：オプションサービス契約ステータス（マッチング後に削除）
			#      6 - -.4    ：オプションサービスコード（マッチング後に削除）
			#      7 - -.10   ：SYSID（未設定用）（マッチング後に削除）
			#      8 - -.10   ：SYSID（設定済み用）（マッチング後に削除）
			EDIT_MATCHING_QUERY ${MATCH_OPSVCKEI_TMP} "${KK0351_CUR_OUTFILE} ${KK0361_DTA_OUTFILE} ${CK0011_CUR_OUTFILE} ${CK0141_NST_OUTFILE} ${CK0141_SET_OUTFILE}"
			EXEC_MATCHING ${MATCH_TMP_OUT_FILE} ${MATCHING_QUERY_WORK}

			# 変数を書き換える
			sed -e "s/^/${line},/g" ${MATCH_TMP_OUT_FILE} > ${MATCH_TMP_SED}
			
			# マッチング結果を絞り込み
			# 絞り込み条件
			#   ・オプションサービス契約ステータスが'010'（受付済）、'020'（照査済）、'030'（締結済）、'220'（停止中）、'210'（休止・中断中）、'100'（サービス提供中）のいずれか
			#   ・オプションサービスコード＝'B001'
			#   ・メールアドレスが設定されている
			#   ・SYSID（未設定用）が設定されていない（当該のオプトインメール番号がオプトインメール受信設定に存在しない）
			#   ・SYSID（設定済み用）が設定されている（受信設定対象である）
			# OM-2015-0003006 性能改善対応 2015/11/18 有本 MOD START
			#bsortex -sort key="0.3asc,1.10asc,2.256asc" -record recform=txtcsv -input reclen=500 file=${MATCH_TMP_SED} -output file=${OPSVCKEI_INFILE_TMP} reconst=${SETTING_RECONST} \
			#	include="(5.3asc.eq.'010'.or.5.3asc.eq.'020'.or.5.3asc.eq.'030'.or.5.3asc.eq.'220'.or.5.3asc.eq.'210'.or.5.3asc.eq.'100').and.6.4asc.eq.'B001'.and.2.256asc.ne.' '.and.7.10asc.lt.' '.and.8.10asc.gt.' '"
			bsortex -copy -record recform=txtcsv -input reclen=500 file=${MATCH_TMP_SED} -output file=${OPSVCKEI_INFILE_TMP} reconst=${SETTING_RECONST} \
				include="(5.3asc.eq.'010'.or.5.3asc.eq.'020'.or.5.3asc.eq.'030'.or.5.3asc.eq.'220'.or.5.3asc.eq.'210'.or.5.3asc.eq.'100').and.6.4asc.eq.'B001'.and.2.256asc.ne.' '.and.7.10asc.lt.' '.and.8.10asc.gt.' '"
			# OM-2015-0003006 性能改善対応 2015/11/18 有本 MOD END
			# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
			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
			# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
			# 登録対象（連絡先）へ追記
			cat ${OPSVCKEI_INFILE_TMP} >> ${OPSVCKEI_INFILE}
		
		fi
	done < ${CK0131_CUR_OUTFILE}
	
	# 登録用データをマージ
	cat ${RRKS_INFILE} ${OPSVCKEI_INFILE} > ${INS_TG_INFILE_TMP}
	
	# 重複情報をマージ
	bsortex -sort key="0.3asc,1.10asc,2.256asc,3.17asc" -record recform=txtcsv -input reclen=400 < ${INS_TG_INFILE_TMP} \
	  | bsortex -merge key="0.3asc,1.10asc,2.256asc" -record recform=txtcsv -input reclen=400 -summary suppress last -output file=${INS_TG_INFILE}
	# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD START
	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
	# OM-2015-0001816 共通UNLOAD対応 2015/07/09 中村 ADD END
fi

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

	echo '■ロード処理'
	# ロード処理（進捗）
	. EOK010410J0.sh 1
	SYSDATE=`echo $RSLT_SYSDATE`

	LOAD_TRN_ID="$HOSTNAME"_"$JOBNAME"_"$$"
	LOAD_WORK_FILE_CK_T_OPTINM_RCV_SET=${MID_DIR_CK}/CK_T_OPTINM_RCV_SET_01_WK.ctl
	LOAD_FILE_CK_T_OPTINM_RCV_SET=${MID_DIR_CK}/CK_T_OPTINM_RCV_SET_01.ctl
	LOADER_CTL_CK_T_OPTINM_RCV_SET=${SQL_LOADER_CTL_DIR}/CK_T_OPTINM_RCV_SET_01.ctl

	LOG_FILE=${SQL_LOADER_LOG_DIR}/CK_T_OPTINM_RCV_SET_01_${SYSDATE}.log
	BAD_FILE=${SQL_LOADER_BAD_DIR}/CK_T_OPTINM_RCV_SET_01_${SYSDATE}.bad

	# 運用日付取得
	OPEDATE=`echo $RSLT_OPEDATE`

	# 変数を書き換える
	sed -e "s/:TRN_ID/${LOAD_TRN_ID}/g" ${LOADER_CTL_CK_T_OPTINM_RCV_SET} > ${LOAD_WORK_FILE_CK_T_OPTINM_RCV_SET}
	sed -e "s/:UNYO_YMD/${OPEDATE}/g" ${LOAD_WORK_FILE_CK_T_OPTINM_RCV_SET} > ${LOAD_FILE_CK_T_OPTINM_RCV_SET}

	# ロード
	sqlldr ${ORACLEUSER}/${ORACLEPASS}@${SID_S},CONTROL=${LOAD_FILE_CK_T_OPTINM_RCV_SET},DATA=${INS_TG_INFILE},LOG=${LOG_FILE},BAD=${BAD_FILE}

	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
	    echo $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
	    if [ $rc -ne 8 ]
	    then
	        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " LOAD Error($SVC load:rc=$rc) ログを確認してください。ログファイル：${LOG_FILE}、不良ファイル：${BAD_FILE} "
	        echo $JOBNAME " LOAD Error($SVC load:rc=$rc) "
	        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

	# ワークファイル削除
	rm ${LOAD_WORK_FILE_CK_T_OPTINM_RCV_SET}
	rm ${LOAD_FILE_CK_T_OPTINM_RCV_SET}
fi

exit_rc=$rc

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


# 各種一時ファイルの削除
rm ${CK0131_CUR_OUTFILE}
rm ${CK0011_CUR_OUTFILE}
rm ${CK0141_NST_OUTFILE}
rm ${CK0141_SET_OUTFILE}
rm ${CK0201_CUR_OUTFILE}
rm ${KK0361_DTA_OUTFILE}
rm ${KK0351_CUR_OUTFILE}
rm ${RRKS_INFILE_TMP}
rm ${OPSVCKEI_INFILE_TMP}
rm ${MATCH_TMP_OUT_FILE}
rm ${MATCH_TMP_SED}
rm ${MATCH_RRKS_TMP}
rm ${MATCH_OPSVCKEI_TMP}
rm ${RRKS_INFILE}
rm ${OPSVCKEI_INFILE}
rm ${INS_TG_INFILE_TMP}
rm ${INS_TG_INFILE_SED}

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

exit $exit_rc
