#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：カード預りＩＤ採番対象抽出＿差分＿03
#
# 機能          ：コンテンツの移行対象クレジットカード番号を抽出する。
#
#<<(1)アンロード条件>>
#【クレジットカード】
# 全件
#
# コマンド形式  ：EO2F70230J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v20.0.0        2015/12//22 FJ)中嶋      ANK_2565_03_00
#
##############################################################

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

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

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

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

#
#---サービス(業務プロセス)
#
SVC=$JOBNAME

sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#=============================================================
# 出力ファイル
#=============================================================
# クリアパス連携ファイル（送信）
KKIFM673_OUT=${MID_DIR_KK}/KKIFM673005.csv

# ロードファイル
LOAD_FILE=${MID_DIR_KK}/KKIFM674001.csv

#=============================================================

# クリアパス連携ファイル（受信）
KKIFM673_IN=${MID_DIR_KK}/KKIFM673004.csv

#--- アンロードファイル
SQLFILE=${SQL_DIR}/KK_U_CN0101_03.sql

IN_FILE_1=${MID_DIR_KK}/${JOBNAME}_UNLD_WK.csv
IN_FILE_2=${MID_DIR_KK}/${JOBNAME}_KKIFM673004_EDT.csv

#--- defファイル
MATCHING_DEF=${G_TOOLSH}/util/def/KK_CM_0565.def

#--- ワークファイル
DEF_FILE=${G_TOOLSH}/util/def/DEF.tmp.${JOBNAME}.def
KKIFM673005_WK=${MID_DIR_KK}/${JOBNAME}_KKIFM673005_WK.csv
EXPORT_OUT_FILE=${MID_DIR_KK}/${JOBNAME}_EXPORT_OUT_FILE.csv

#
#--- 各ファイルの存在チェックを行う
#
if [ ! -r $SQLFILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($SQLFILE) "
    echo $JOBNAME " File is nonexist($SQLFILE) "
    exit ${G_RTN_ERROR}
fi

#=============================================================
# ファイル加工（連携ファイルカンマ区切り化）
#=============================================================
#
# ファイルの加工
#  連携ファイルを「,」区切りで分割
#   カンマ区切りにおける「２項目（データレコード）」より以下を取得
#    0 .0.5   : トータルレコードID
#    1 .6.1   : データ区分
#    2 .7.3   : 予備2
#    3 .10.16  : 入力会員番号
#    4 .26.4  : 入力有効期限
#    5 .30.10 : 請求先番号
#    6 .40.10 : 予備3
#    7 .50.15 : 請求先名カナ
#    8 .65.1  : 会員番号更新サイン
#    9 .66.1  : 有効期限更新サイン
#    10.67.3  : 予備4
#    11.70.16 : 新会員番号
#    12.86.4  : 新有効期限
#    13.90.1  : 有効性判定結果
#    14.91.35 : 予備5
#
gawk 'BEGIN {FS=",";OFS=","}{print substr($0,0,5),substr($0,6,1),substr($0,7,3),substr($0,10,16),substr($0,26,4),substr($0,30,10),substr($0,40,10),substr($0,50,15),substr($0,65,1),substr($0,66,1),substr($0,67,3),substr($0,70,16),substr($0,86,4),substr($0,90,1),substr($0,91,35)}' ${KKIFM673_IN} > ${IN_FILE_2}

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

#=============================================================
# UNLD
#=============================================================

	#
	#--- アンロードファイルのクリアを行う
	#
	cat /dev/null > $IN_FILE_1

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($IN_FILE_1:rc=$rc) "
	    echo $JOBNAME " File cat error($IN_FILE_1:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

	#
	#--- UNLOAD処理
	#
	sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE $IN_FILE_1 $JOBNAME

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error($SVC unload:rc=$rc) " 
	    echo $JOBNAME " UNLOAD Error($SVC unload:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

	#
	#--- ダブルコーテーションを削除する
	#
	sed -i -e "s/\"//g" ${IN_FILE_1}

#=============================================================
# マッチング
#=============================================================
	#
	#--- defファイルをワークファイルにコピー
	#
	cp ${MATCHING_DEF} ${DEF_FILE}

	#
	#--- defファイルにinputファイルを設定
	#
	sed -i -e "s%:IN_FILE_1%${IN_FILE_1}%"    ${DEF_FILE} 
	sed -i -e "s%:IN_FILE_2%${IN_FILE_2}%"    ${DEF_FILE} 

	#--- UNLDファイルと13か月分全件モード出力ファイルをマッチングする
	#--- EXPORT_OUT_FILE(マッチング出力ファイル）とする
	#---  KEY : 課金対象年月,クレジットカードID,クレジットカード番号
	export ZTLOUTFILE=${EXPORT_OUT_FILE}
	${G_TOOLSH}/util/bin/ZTLMAT01 ${DEF_FILE}

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MV1 Error($SVC mv:rc=$rc) "
	    echo $JOBNAME " MATCHING1 Error($SVC mv:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi
	
	#
	#--- ダブルコーテーションを削除する
	#
	sed -i -e "s/\"//g" ${EXPORT_OUT_FILE}

#=============================================================
# ソート（Loadファイル出力）
#=============================================================

	#
	#--- アンロードファイルを下記のKEYでソートする
	#--- LOAD_FILE（SQLLOADER用ファイル）として出力する
	#---  KEY : クレジットカード番号,クレジットカード有効期限,クレジットカードID
	#
	bsortex \
	    -sort key=34.16asc,7.6asc,0.9asc \
	    -record recform=txtcsv \
	    -input reclen=1000 file=${EXPORT_OUT_FILE} \
	    -output file=${LOAD_FILE} \
	     reconst="0.9,1.6,2.3,3.10,4.1,5.5,6.64,7.6,8.5,9.90,10.17,11.1,12.7,13.8,14.1,15.8,16.12,17.5,18.17,19.10,20.17,21.10,22.17,23.10,24.1,25.8,26.40,27.8,28.40,29.8,30.40,31.20,32.20,33.16"
	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT3 Error($SVC sort:rc=$rc) "
	    echo $JOBNAME " SORT3 Error($SVC sort:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

#=============================================================
# ソート（連携ファイル出力）
#=============================================================

#
#--- アンロードファイルを下記のKEYでソートする
#--- KKIFM673005_WK（カード預りＩＤ採番対象出力ファイルワーク）として出力する
#---  KEY : クレジットカード番号,クレジットカード有効期限,クレジットカードID
#
bsortex \
    -sort key=34.16asc,35.4asc,36.35asc \
    -record recform=txtcsv \
    -input reclen=1000 file=${EXPORT_OUT_FILE} \
    -output \
     case="33.16asc.lt.'0'" \
     reconst="34.16,35.4,36.35" \
     file=${KKIFM673005_WK}

#--- エラー処理	
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT1 Error($SVC sort:rc=$rc) "
    echo $JOBNAME " SORT1 Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#--- カード預りID対象クレジットカード番号ファイル(コンテンツ)ワークファイル２を集約する
#--- KKIFM673_OUT(カード預りID対象クレジットカード番号ファイル(コンテンツ)中間(2))とする
#---  KEY : クレジットカード番号,クレジットカード有効期限,クレジットカードID
#
bsortex -merge key=0.16asc,1.4asc,2.35asc \
        -record recform=txtcsv \
        -input file=${KKIFM673005_WK} reclen=600 \
        -summary suppress last \
        -output file=${KKIFM673_OUT} \
         reconst="'22000'.5asc,'2'.1asc,'000'.3asc,0.16,1.4,'51        '.10asc,'          '.10asc,'               '.15asc,' '.1asc,' '.1asc,'000'.3asc,'0000000000000000'.16asc,'0000'.4asc,' '.1asc,2.35"

#--- エラー処理
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MERGE1 Error($SVC sort:rc=$rc) "
    echo $JOBNAME " MERGE1 Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#--- ダブルコーテーションを削除する
#
sed -i -e "s/\"//g" ${KKIFM673_OUT}

#
#--- カンマを削除する
#
sed -i -e "s/\,//g" ${KKIFM673_OUT}


#
#--- ワーク削除
#
#rm -f ${IN_FILE_2}
#rm -f ${EXPORT_OUT_FILE}
#rm -f ${KKIFM673005_WK}
rm -f ${DEF_FILE}

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

exit ${G_RTN_NORMAL}
