#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：会計用クレジットデータ抽出（２日実行）
#
# 機能          ：入金情報より当月入金のあった会計用クレジットの対象情報を抽出する。
#
#【FREE項目】
#ET_CD:32（会計処理日（２日実行））
#
#【SQLPARAM】
#SSA10_JBSbatACKaikNkinDataChsht_会計用入金データ抽出(補足説明).xlsx　
# 10. EO30O2110J0（会計用クレジットデータ抽出（２日実行））の場合 参照
#
#
#出力ファイル名
#ACIFM143005_${XXX}.csv
#※${XXX}をJP1引数で置き換えて出力する。
#
#
# コマンド形式  ：EO30O2110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00           2012/05/17  FJ）山下     新規作成
# v6.00           2012/12/08  FJ）狭間     【OM-2013-0003196】多重化をやめ、スケジュール定義スキーマをアンロード化
# v14.00          2015/05/26  FJ)有本     【OM-2015-0001265】  バックグラウンド実行削除
# v54.00.00       2021/12/22  FJ)寺川      【ANK-4069-00-00】EOL対応(バッチ・DBサーバリプレース対応)
#
##############################################################

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

#---ワークファイル削除モード
WK_RM=true

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

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

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

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

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

#
#---業務で必要な変数定義
#
#手修正あり
ET_CD="32"

KUS_CD="35"
RA_YMD="SQLPARAM_KEY_OPD_YYYYMMDD"
KUC_TSTAYMD="SQLPARAM_KEY_OPD_YYYYMMDD"
KUC_TENDYMD="SQLPARAM_KEY_OPD_YYYYMMDD"
N_ST1="010"
N_ST2="010"
N_ST3="090"
EVENT_CD11="01"
EVENT_CD12="32"
EVENT_CD21="02"
EVENT_CD22="32"
EVENT_CD31="32"
EVENT_CD32="32"
EVENT_CD41="21"
EVENT_CD42="32"
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#
#--- ファイル定義
#
#--- アンローダー実行時のSQLファイル
SQLFILE_CH0501_06=${SQL_DIR}/AC_U_CH0501_06.sql
SQLFILE_CH0501_06_WK1=${SQL_DIR}/${JOBNAME}_AC_U_CH0501_06_WK1.sql
SQLFILE_CH0501_06_WK2=${SQL_DIR}/${JOBNAME}_AC_U_CH0501_06_WK2.sql
SQLFILE_CH0501_06_WK3=${SQL_DIR}/${JOBNAME}_AC_U_CH0501_06_WK3.sql
SQLFILE_CH0501_07=${SQL_DIR}/AC_U_CH0501_07.sql
SQLFILE_CH0501_07_WK1=${SQL_DIR}/${JOBNAME}_AC_U_CH0501_07_WK1.sql

#--- アンローダーの出力結果ファイル
CSVFILE_CH0501_06_WK1=${MID_DIR_AC}/${JOBNAME}_CH0501_06_UNLOAD_WK1.csv
CSVFILE_CH0501_06_WK2=${MID_DIR_AC}/${JOBNAME}_CH0501_06_UNLOAD_WK2.csv
CSVFILE_CH0501_06_WK3=${MID_DIR_AC}/${JOBNAME}_CH0501_06_UNLOAD_WK3.csv
CSVFILE_CH0501_07_WK1=${MID_DIR_AC}/${JOBNAME}_CH0501_07_UNLOAD_WK1.csv

#--- ワークファイル
CSVFILE_ACIFM143005_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFM143005_WK1.csv

#
#--- サブルーチン（UNLOAD）
#
UNLOAD(){

#unload
#ダブルコーテーションなしの形式で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
}

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

#
#--- スケジュール定義スキーマよりイベント年月日を取得
#
(
#----------------------------------------------------------------------------------------------------
#--- UNLOAD処理(月初日)
#----------------------------------------------------------------------------------------------------
#--- SQLパラメータセット
cp -f ${SQLFILE_CH0501_06}                  ${SQLFILE_CH0501_06_WK1}
sed -i -e "s%\:EVENT_CD1%'${EVENT_CD11}'%"  ${SQLFILE_CH0501_06_WK1}
sed -i -e "s%\:EVENT_CD2%'${EVENT_CD12}'%"  ${SQLFILE_CH0501_06_WK1}
sed -i -e "s%\:OPE_DATE%'${RSLT_OPEDATE}'%" ${SQLFILE_CH0501_06_WK1}

#--- UNLOAD実行
UNLOAD ${SQLFILE_CH0501_06_WK1} ${CSVFILE_CH0501_06_WK1}
# OM-2015-0001265 2015/05/26 有本 MOD START
#) &
#pid_EVENT_YMD1=$
)
# ANK-4069-00-00対応 20211222 寺川 MOD START
#rc_EVENT_YMD1=$?!
rc_EVENT_YMD1=$?
# ANK-4069-00-00対応 20211222 寺川 MOD END
# OM-2015-0001265 2015/05/26 有本 MOD END

(
#----------------------------------------------------------------------------------------------------
#--- UNLOAD処理(月末日)
#----------------------------------------------------------------------------------------------------
#--- SQLパラメータセット
cp -f ${SQLFILE_CH0501_06}                  ${SQLFILE_CH0501_06_WK2}
sed -i -e "s%\:EVENT_CD1%'${EVENT_CD21}'%"  ${SQLFILE_CH0501_06_WK2}
sed -i -e "s%\:EVENT_CD2%'${EVENT_CD22}'%"  ${SQLFILE_CH0501_06_WK2}
sed -i -e "s%\:OPE_DATE%'${RSLT_OPEDATE}'%" ${SQLFILE_CH0501_06_WK2}

#--- UNLOAD実行
UNLOAD ${SQLFILE_CH0501_06_WK2} ${CSVFILE_CH0501_06_WK2}
# OM-2015-0001265 2015/05/26 有本 MOD START
#) &
#pid_EVENT_YMD2=$!
)
rc_EVENT_YMD2=$?
# OM-2015-0001265 2015/05/26 有本 MOD END

(
#----------------------------------------------------------------------------------------------------
#--- UNLOAD処理(抽出終了日)
#----------------------------------------------------------------------------------------------------
#--- SQLパラメータセット
cp -f ${SQLFILE_CH0501_06}                  ${SQLFILE_CH0501_06_WK3}
sed -i -e "s%\:EVENT_CD1%'${EVENT_CD31}'%"  ${SQLFILE_CH0501_06_WK3}
sed -i -e "s%\:EVENT_CD2%'${EVENT_CD32}'%"  ${SQLFILE_CH0501_06_WK3}
sed -i -e "s%\:OPE_DATE%'${RSLT_OPEDATE}'%" ${SQLFILE_CH0501_06_WK3}

#--- UNLOAD実行
UNLOAD ${SQLFILE_CH0501_06_WK3} ${CSVFILE_CH0501_06_WK3}
# OM-2015-0001265 2015/05/26 有本 MOD START
#) &
#pid_EVENT_YMD3=$!
)
rc_EVENT_YMD3=$?
# OM-2015-0001265 2015/05/26 有本 MOD END

(
#----------------------------------------------------------------------------------------------------
#--- UNLOAD処理(抽出開始日)
#----------------------------------------------------------------------------------------------------
#--- SQLパラメータセット
cp -f ${SQLFILE_CH0501_07}                  ${SQLFILE_CH0501_07_WK1}
sed -i -e "s%\:EVENT_CD1%'${EVENT_CD41}'%"  ${SQLFILE_CH0501_07_WK1}
sed -i -e "s%\:EVENT_CD2%'${EVENT_CD42}'%"  ${SQLFILE_CH0501_07_WK1}
sed -i -e "s%\:OPE_DATE%'${RSLT_OPEDATE}'%" ${SQLFILE_CH0501_07_WK1}

#--- UNLOAD実行
UNLOAD ${SQLFILE_CH0501_07_WK1} ${CSVFILE_CH0501_07_WK1}
# OM-2015-0001265 2015/05/26 有本 MOD START
#) &
#pid_EVENT_YMD4=$!
)
rc_EVENT_YMD4=$?
# OM-2015-0001265 2015/05/26 有本 MOD END

# OM-2015-0001265 2015/05/26 有本 DEL START
#wait ${pid_EVENT_YMD1}
#rc_EVENT_YMD1=$?
#
#wait ${pid_EVENT_YMD2}
#rc_EVENT_YMD2=$?
#
#wait ${pid_EVENT_YMD3}
#rc_EVENT_YMD3=$?
#
#wait ${pid_EVENT_YMD4}
#rc_EVENT_YMD4=$?
# OM-2015-0001265 2015/05/26 有本 DEL END

#- エラー処理
if [ ${rc_EVENT_YMD1} -ne 0 ] || [ ${rc_EVENT_YMD2} -ne 0 ] || [ ${rc_EVENT_YMD3} -ne 0 ] || [ ${rc_EVENT_YMD4} -ne 0 ]
then
    #- エラーメッセージ出力
    if [ ${rc_EVENT_YMD1} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT1 Error($SVC sort:rc=${rc_EVENT_YMD1}) "
        echo $JOBNAME " SORT1 Error($SVC sort:rc=${rc_EVENT_YMD1}) "
    fi
    if [ ${rc_EVENT_YMD2} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT2 Error($SVC sort:rc=${rc_EVENT_YMD2}) "
        echo $JOBNAME " SORT2 Error($SVC sort:rc=${rc_EVENT_YMD2}) "
    fi
    if [ ${rc_EVENT_YMD3} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT3 Error($SVC sort:rc=${rc_EVENT_YMD3}) "
        echo $JOBNAME " SORT3 Error($SVC sort:rc=${rc_EVENT_YMD3}) "
    fi
    if [ ${rc_EVENT_YMD4} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT3 Error($SVC sort:rc=${rc_EVENT_YMD4}) "
        echo $JOBNAME " SORT3 Error($SVC sort:rc=${rc_EVENT_YMD4}) "
    fi
    #- 異常終了
    exit ${G_RTN_ERROR}
fi

if [ ! -s ${CSVFILE_CH0501_06_WK1} ] || [ ! -s ${CSVFILE_CH0501_06_WK2} ] || [ ! -s ${CSVFILE_CH0501_06_WK3} ] || [ ! -s ${CSVFILE_CH0501_07_WK1} ]
then
    touch ${MID_DIR_AC}/ACIFM143005_010.csv
    touch ${MID_DIR_AC}/ACIFM143005_001.csv
    touch ${MID_DIR_AC}/ACIFM143005_002.csv
    touch ${MID_DIR_AC}/ACIFM143005_003.csv
    touch ${MID_DIR_AC}/ACIFM143005_004.csv
    touch ${MID_DIR_AC}/ACIFM143005_005.csv
    touch ${MID_DIR_AC}/ACIFM143005_006.csv
    touch ${MID_DIR_AC}/ACIFM143005_007.csv
    touch ${MID_DIR_AC}/ACIFM143005_008.csv
    touch ${MID_DIR_AC}/ACIFM143005_009.csv
    #--- ワーク削除
    if [ $WK_RM = "true" ]
    then
        rm -f ${CSVFILE_ACIFM143005_WK1}
        rm -f ${SQLFILE_CH0501_06_WK1}
        rm -f ${SQLFILE_CH0501_06_WK2}
        rm -f ${SQLFILE_CH0501_06_WK3}
        rm -f ${SQLFILE_CH0501_07_WK1}
        rm -f ${CSVFILE_CH0501_06_WK1}
        rm -f ${CSVFILE_CH0501_06_WK2}
        rm -f ${CSVFILE_CH0501_06_WK3}
        rm -f ${CSVFILE_CH0501_07_WK1}
    fi
    #- 正常終了
    exit ${G_RTN_NORMAL}
fi

#--- 上記SQL結果より値(月初日)を変数に格納
eval EVENT_YMD1=`cat ${CSVFILE_CH0501_06_WK1}`

#--- 上記SQL結果より値(月末日)を変数に格納
eval EVENT_YMD2=`cat ${CSVFILE_CH0501_06_WK2}`

#--- 上記SQL結果より値(抽出終了日)を変数に格納
eval EVENT_YMD3=`cat ${CSVFILE_CH0501_06_WK3}`

#--- 上記SQL結果より値(抽出開始日)を変数に格納
eval EVENT_YMD4=`cat ${CSVFILE_CH0501_07_WK1}`


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

P1="OPD=,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO30O2110J0,"
P4="IND1=,"
P5="INF1=,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=ACIFM143.def,"
P9="OTF1=${CSVFILE_ACIFM143005_WK1},"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=CH_T_NYUKIN,"
P13="SQLKEY=AC_SELECT_005,"
P14="SQLPARAM=${KUS_CD};${RA_YMD};${KUC_TSTAYMD};${KUC_TENDYMD};${N_ST1};${EVENT_YMD1};${EVENT_YMD2};${EVENT_YMD1};${EVENT_YMD3};${N_ST2};${EVENT_YMD1};${EVENT_YMD4};${EVENT_YMD3};${N_ST3};${EVENT_YMD1};${EVENT_YMD4};${EVENT_YMD3};${EVENT_YMD4},"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE=${ET_CD}"
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
    ERR_FLG=1
fi

exit_rc=$rc

#-------------------------------------------------------------
#--- 処理結果ファイルを10分割
#-------------------------------------------------------------
#--- ファイルが無いときは空ファイルを作成
if [ ! -r ${CSVFILE_ACIFM143005_WK1} ]
then
    touch ${CSVFILE_ACIFM143005_WK1} 
fi
#--- データ絞込み
bsortex \
  -copy \
  -record recform=txtcsv \
  -input  reclen=530 \
          file=${CSVFILE_ACIFM143005_WK1} \
  -output reconst=2.10,0.END \
|bsortex \
  -copy \
  -record recform=txtfix \
  -input  reclen=530 \
  -output file=${MID_DIR_AC}/ACIFM143005_010.csv case="9.1asc.eq.'0'" reconst=11.END \
  -output file=${MID_DIR_AC}/ACIFM143005_001.csv case="9.1asc.eq.'1'" reconst=11.END \
  -output file=${MID_DIR_AC}/ACIFM143005_002.csv case="9.1asc.eq.'2'" reconst=11.END \
  -output file=${MID_DIR_AC}/ACIFM143005_003.csv case="9.1asc.eq.'3'" reconst=11.END \
  -output file=${MID_DIR_AC}/ACIFM143005_004.csv case="9.1asc.eq.'4'" reconst=11.END \
  -output file=${MID_DIR_AC}/ACIFM143005_005.csv case="9.1asc.eq.'5'" reconst=11.END \
  -output file=${MID_DIR_AC}/ACIFM143005_006.csv case="9.1asc.eq.'6'" reconst=11.END \
  -output file=${MID_DIR_AC}/ACIFM143005_007.csv case="9.1asc.eq.'7'" reconst=11.END \
  -output file=${MID_DIR_AC}/ACIFM143005_008.csv case="9.1asc.eq.'8'" reconst=11.END \
  -output file=${MID_DIR_AC}/ACIFM143005_009.csv case="9.1asc.eq.'9'" reconst=11.END ;

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

#
#--- ワーク削除
#
if [ $WK_RM = "true" ]
then
    rm -f ${CSVFILE_ACIFM143005_WK1}
    rm -f ${SQLFILE_CH0501_06_WK1}
    rm -f ${SQLFILE_CH0501_06_WK2}
    rm -f ${SQLFILE_CH0501_06_WK3}
    rm -f ${SQLFILE_CH0501_07_WK1}
    rm -f ${CSVFILE_CH0501_06_WK1}
    rm -f ${CSVFILE_CH0501_06_WK2}
    rm -f ${CSVFILE_CH0501_06_WK3}
    rm -f ${CSVFILE_CH0501_07_WK1}
fi

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

exit $exit_rc
