#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：サービス契約利用停止（日次）
#
# 機能          ：１. 利用停止用中間ファイルより利用停止対象のサービスを取得する。
#２. 利用停止実行CCを介し、利用停止可能なサービスに対して利用停止要求を発行する。
#３. 利用停止できなかったサービスを、停止対象外サービス契約実績に登録する。
#
# コマンド形式  ：EO20Y0210J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
#                2013/01/31   FJ)津田     ST1-2013-0000216 日次ファイルのみ処理するよう修正
#                2013/03/26   FJ)脇田     ST4-2013-0000161
#                2013/04/12   FJ)鈴木     IT1-2013-0000862 中間ファイルを残すよう修正
#                2013/04/26   FJ)坂東     IT1-2013-0001066 バックグラウンドで実行するよう修正
#                2014/09/12   FJ)松本     TAI-2014-0000024 shareフォルダのファイルをエラー時にも退避させる
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---分割数
#
SPLT=5

#
#---ループカウンタ
#
count=0

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#
#--- 運用日の取得
#
. EOK010310J0.sh "BDATE"

#   TAI-2014-0000024  ADD START
#
#---システム日付取得（年月日時分秒）
#
. EOK010410J0.sh 2
RUN_DATE=$RSLT_SYSDATE
#   TAI-2014-0000024  ADD END

#
#--- ファイル定義
#
SOURCEFILE_DAY=${SEND_DIR}/KKIFI005001.csv
#   TAI-2014-0000024  MOD START
#TARGETFILE_DAY=${SEND_DIR}/bk/KKIFI005001_${RSLT_OPEDATE}.csv
TARGETFILE_DAY=${SEND_DIR}/bk/KKIFI005001_${RUN_DATE}.csv
#   TAI-2014-0000024  MOD END

### TAI-2014-0000024  ADD START
ERR_TARGETFILE_DAY=${SEND_DIR}/bk/KKIFI005001_ABORT_${RUN_DATE}.csv
### TAI-2014-0000024  ADD END

#
#--- 多重実行処理
#
while [ ${count} -lt ${SPLT} ]
do

    #
    #---分割ファイルに付与する連番
    #
    seqno=`printf "%02d" $((${count} + 1))`

    #
    #---入力ファイル名
    #
    filename[${count}]=${MID_DIR_KK}/KKIFM083001_${seqno}.csv

    #
    #---出力ファイル名（リラン用）
    #
    filename_err[${count}]=${MID_DIR_KK}/KKIFM083001_ERR_${seqno}.csv

    #
    #---パラメタ定義
    #
    P1="OPD=,"
    P2="SVCCTL=JBSbatMultiServiceControl,"
    P3="JOB=EO20Y0210J0,"
    P4="IND1=KKIFM083.def,"
    P5="INF1=${filename[${count}]},"
    P6="IND2=,"
    P7="INF2=,"
    P8="OTD1=KKIFM083.def,"
    P9="OTF1=${filename_err[${count}]},"
    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

    #
    #---ＡＰＬ起動
    #
    ### IT1-2013-0001066 mod start
    #java ${JAVA_OPTION} -jar ${JAR_DIR}/koptBatch.jar $PARA
     java ${JAVA_OPTION} -jar ${JAR_DIR}/koptBatch.jar $PARA &
    ### IT1-2013-0001066 mod end

    PID=$!
    ARRAY_PID[${count}]=${PID}
    ARRAY_KEKKA[${count}]=0

    count=`expr ${count} + 1`
done

ERR_FLG=0

exit_rc=0
count=0
while [ ${count} -lt ${SPLT} ]
do
    wait ${ARRAY_PID[${count}]}
    rc=$?

    if [ $rc -ne 0 ]
    then
        if [ $rc -ne 4 ]
        then
            if [ $rc -ne 8 ]
            then
                if [ $rc -ne 127 ]
                then
                    ### TAI-2014-0000024  ADD START
                    ERR_FLG=1
                    ### TAI-2014-0000024  ADD END
                    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
    else
        #
        #---中間ファイルクリア(自動生成後、追記)
        #
        cat /dev/null > ${filename[${count}]}
    fi

    if [ $rc -gt $exit_rc ]
    then
        exit_rc=$rc
    fi

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

    count=`expr ${count} + 1`
done
if [ $ERR_FLG -eq 0 ]
then

    #
    #---料金ＳからのＩＦファイルを退避
    #

    if [ -e ${SEND_DIR}/KKIFI005001.csv ]; then
        mv -f $SOURCEFILE_DAY $TARGETFILE_DAY
    fi
    
    #分割ファイルを削除する
    for filename in ${MID_DIR_KK}/KKIFM083001_*
    do
       if [ -e $filename ]
       then
           rm -f $filename
       fi
    done
### TAI-2014-0000024  ADD START
else
    #
    #---エラー時にも料金ＳからのＩＦファイルを退避
    #

    if [ -e ${SEND_DIR}/KKIFI005001.csv ]; then
        mv -f $SOURCEFILE_DAY $ERR_TARGETFILE_DAY
    fi
    
    #分割ファイルを削除する
    for filename in ${MID_DIR_KK}/KKIFM083001_*
    do
       if [ -e $filename ]
       then
           rm -f $filename
       fi
    done
### TAI-2014-0000024  ADD END

### IT1-2013-0000862 del start
#    #中間ファイルを削除する
#    if [ -e ${MID_DIR_KK}/KKIFM083001.csv ]
#    then
#        rm -f ${MID_DIR_KK}/KKIFM083001.csv
#    fi
### IT1-2013-0000862 del end

fi

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

exit $exit_rc

