#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：顧客管理
#
# シェル名      ：返品機器受付抽出
#
# 機能          ：配送のステータスにより、配送中止処理と在庫数変更処理を行うか、返品機器受付を行うか判定する情報を取得する。
#
#詳細仕様は、「SSA10_EO2920430J0_機器ＯＰサービス解約予約＿返品機器受付抽出(補足説明）.xlsx」
#
#
#
# コマンド形式  ：EO2920430J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

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

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

P1="OPD=$OPD,"
P2="SVCCTL=,"
P3="JOB=EO2920430J0,"
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="
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

#
#--- アンロード関数
#       p1：テーブル名／クエリファイル名
EXEC_UNLOAD()
{
   sh ${G_TOOLSH}/EOKULD02.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：ファイルパス
EXEC_CHECK()
{
   if [ ! -r $1 ]
   then
       sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($1) "
       echo $JOBNAME " File is nonexist($1) "
       exit ${G_RTN_ERROR}
   fi
}

#
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：DEFファイルパス
#      p3：TMPDEFファイルパス
EXEC_MATCHING()
{
   OUTFILE=$1
   DEF=$2
   TMPDEF=$3

   # 出力ファイルの初期化
   cat /dev/null > ${OUTFILE}
   cat /dev/null > ${TMPDEF}
   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

   # DEFTMPファイル作成
   cat ${DEF}>${TMPDEF}
   sed -i -e s@'${MID_DIR_KK}'@${MID_DIR_KK}@g ${TMPDEF}

   # マッチング実行
   export ZTLOUTFILE=${OUTFILE}
   ${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEF}
   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
}

#
#--- 中間ファイルクリア関数
#       p1：ファイルパス
EXEC_CLEAR()
{
   FILE=$1
   # 出力ファイルの初期化
   cat /dev/null > ${FILE}
   rc=$?
   if [ $rc -ne 0 ]
   then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error(${FILE}:rc=$rc) "
      echo $JOBNAME " File cat error(${FILE}:rc=$rc) "
      exit ${G_RTN_ERROR}
   fi
}

#
#--- ファイル定義
#
#アンロード用 - SQLファイル
SQLFILE_DK0011=${SQL_DIR}/KK_U_DK0011_05.sql
SQLFILE_DK0021=${SQL_DIR}/KK_U_DK0021_04.sql

#アンロード用 - 出力結果
SQLOUT_DK0011=${MID_DIR_KK}/KKIFM551001_UL_DK0011.csv
SQLOUT_DK0021=${MID_DIR_KK}/KKIFM551001_UL_DK0021.csv

#bsortex - ソート結果
DK0011_SORT=${MID_DIR_KK}/KKIFM551001_DK0011_SORT.tmp
DK0021_SORT=${MID_DIR_KK}/KKIFM551001_DK0021_SORT.tmp

#bsortex - マージ結果
DK0011_CRNT=${MID_DIR_KK}/KKIFM551001_DK0011_CRNT.tmp
DK0021_CRNT=${MID_DIR_KK}/KKIFM551001_DK0021_CRNT.tmp

#マッチング定義
DEF_0345=${G_TOOLSH}/util/def/KK_CM_0345.def
DEF_TMP_0345=${G_TOOLSH}/util/def/KK_CM_0345.tmp.def

#最終出力ファイル
OUT_0345=${MID_DIR_KK}/KKIFM553001.0345.tmp

#
#--- 初期処理 前回実施時に出力したファイルを全てクリアする。
#
#アンロード結果出力ファイル
cat /dev/null > ${SQLOUT_DK0011}
cat /dev/null > ${SQLOUT_DK0021}

#ソート結果出力ファイル
cat /dev/null > ${DK0011_SORT}
cat /dev/null > ${DK0021_SORT}

#マージ結果出力ファイル
cat /dev/null > ${DK0011_CRNT}
cat /dev/null > ${DK0021_CRNT}

#最終出力ファイル
cat /dev/null > ${OUT_0345}

#
#--- UNLOAD処理
#
EXEC_UNLOAD $SQLFILE_DK0011 $SQLOUT_DK0011
EXEC_UNLOAD $SQLFILE_DK0021 $SQLOUT_DK0021

# DK0011
bsortex \
   -sort key=0.10asc \
   -record recform=txtcsv \
   -input file=${SQLOUT_DK0011} \
        reclen=50 \
        include="3.1asc.eq.'0'.and.(1.3asc.eq.'001'.or.1.3asc.eq.'002'.or.1.3asc.eq.'003'.or.1.3asc.eq.'004')" \
   -output file=${DK0011_CRNT}
rc=$?
if [ $rc -ne 0 ]
then
  sh ${G_TOOLSH}/EOK010210J0.sh JOBNAME " DK0011 Sort Error(DK0011 sort:$rc) "
  echo $JOBNAME " DK0011 Sort Error(DK0011 sort:$rc)"
  exit ${G_RTN_ERROR}
fi

# DK0021
bsortex \
   -sort key=2.12asc,3.12asc,1.10asc \
   -record recform=txtcsv \
   -input file=${SQLOUT_DK0021} \
        reclen=100 \
        include="5.1asc.eq.'0'" \
   -output file=${DK0021_SORT}
rc=$?
if [ $rc -ne 0 ]
then
  sh ${G_TOOLSH}/EOK010210J0.sh JOBNAME " DK0021 Sort Error(DK0021 sort:$rc) "
  echo $JOBNAME " DK0021 Sort Error(DK0021 sort:$rc)"
  exit ${G_RTN_ERROR}
fi

#マージ(DK0021) 
bsortex \
    -merge key=2.12asc,3.12asc \
    -record recform=txtcsv \
    -input file=${DK0021_SORT} \
         reclen=100 \
    -summary suppress last \
    -output file=${DK0021_CRNT}

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

##################################
#マッチング実施
# KKIFM553001.0345.tmpの機器提供サービス契約に紐づく機器オプションサービス契約の全量を取得
# P1 DEF_0345=${G_TOOLSH}/util/def/KK_CM_0345.def
# P2 DEF_TMP_0345=${G_TOOLSH}/util/def/KK_CM_0345.tmp.def
# P3 OUT_0345=${MID_DIR_KK}/KKIFM553001.0345.tmp

#
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：DEFファイルパス
#      p3：TMPDEFファイルパス
EXEC_MATCHING ${OUT_0345} ${DEF_0345} ${DEF_TMP_0345}

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

exit ${G_RTN_NORMAL}
