#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：クレジットカード番号マスク化更新
#
# 機能          ：クレジットカード番号マスク化バッチ
#
#（３）クレジットカード番号マスク化更新
#・各種スキーマに以下の更新キー項目でクレジットカード番号を更新する。
#
# コマンド形式  ：EO2F70530J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v20.00.00       2015/11/24  FJ)柳        新規作成
# v23.00.00       2016/03/31  FJ)柳        【ST-2016-0000024】クレジットカード番号マスク化バッチOut Of Memory Error対応
# v23.00.01       2016/04/21  FJ)柳        【ANK-2810-00-00】クレジットカード番号並行保持期間終了に伴うマスク化対応
##############################################################

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

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

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

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

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

# ANK-2810-00-00 2016/04/21 DEL START
# #
# #---OPD
# #
# OPD=$1
# ANK-2810-00-00 2016/04/21 DEL END

#
#---処理対象ファイル名
#
# ANK-2810-00-00 2016/04/21 MOD START
# TRGT_FILE_NM=$2
TRGT_FILE_NM=$1
# ANK-2810-00-00 2016/04/21 MOD END

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

# 検索ファイル名を設定
if [ "${TRGT_FILE_NM}" = "" ];then
    # ANK-2810-00-00 2016/04/21 MOD START
    # # ディレクトリ配下のファイル
    # SEARCH_FILE="FILEEO2F70520J0_*.csv"
    # 警告メッセージ
    echo "入力ファイル名を指定してください"
    exit ${G_RTN_INFO}
    # ANK-2810-00-00 2016/04/21 MOD END
else
    # 指定された処理対象ファイル名
    # ANK-2810-00-00 2016/04/21 MOD START
    # SEARCH_FILE=${TRGT_FILE_NM}
    SEARCH_FILE=${TRGT_FILE_NM}*
    # ANK-2810-00-00 2016/04/21 MOD END
fi

# ANK-2810-00-00 2016/04/21 ADD START
# 指定された処理グループのファイルが存在しない場合
ls ${MID_DIR_KK}/${SEARCH_FILE} > /dev/null 2>&1
if [ $? -ne 0 ]
then
    # 警告メッセージ
    echo "指定されたファイルが存在しません"
    exit ${G_RTN_INFO}
fi
# ANK-2810-00-00 2016/04/21 ADD END

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

CNT=1
for trgt_file in `find ${MID_DIR_KK} -maxdepth 1 -name "${SEARCH_FILE}" | sort`
do
    #
    #---パラメタ定義
    #

    P1="OPD=,"
    P2="SVCCTL=JBSbatUnitServiceControl,"
    P3="JOB=EO2F70530J0,"
    P4="IND1=,"
    P5="INF1=,"
    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=${trgt_file};KKIFM677.def"
    PARA="$P1$P2$P3$P4$P5$P6$P7$P8$P9$P10$P11$P12$P13$P14$P15$P16$P17$P18"

    #
    #---ＡＰＬ起動
    #
    java ${JAVA_OPTION} -jar ${JAR_DIR}/koptBatch.jar $PARA &

    PID=$!
    ARRAY_PID[$CNT]=$PID
    # ANK-2810-00-00 2016/04/21 ADD START
    ARRAY_FILE[$PID]=$trgt_file
    # ANK-2810-00-00 2016/04/21 ADD END

    echo "処理対象ファイル：$trgt_file @$PID"

    CNT=`expr $CNT + 1`
done

# 処理終了監視
RESULT=0
for PID in "${ARRAY_PID[@]}"; do

    wait $PID

    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
    
    echo "PID($PID) => エラーコード：$rc"
    
    # ANK-2810-00-00 2016/04/21 ADD START
    # 正常終了の場合、使用した入力ファイルをバックアップフォルダに移動する
    if [ $rc -eq 0 ]
    then
        file_nm=${ARRAY_FILE[$PID]#${MID_DIR_KK}/}
        mv -f ${ARRAY_FILE[$PID]} ${MID_DIR_KK}/bk/${file_nm}
    fi
    # ANK-2810-00-00 2016/04/21 ADD END
    
    # 処理結果の設定（処理結果コードの最大を残す）
    if [ ${RESULT} -lt $rc ]
    then
        RESULT=$rc
    fi
done 

exit_rc=${RESULT}

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

# ST-2016-0000024 2016/03/31 DEL START
# if [ $exit_rc -eq 0 ]
# then
#     # 一時ファイル削除
#     rm ${MID_DIR_KK}/${SEARCH_FILE}
# fi
# ST-2016-0000024 2016/03/31 DEL END

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

exit $exit_rc
