#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：利用料金情報マージ・ソート４
#
# 機能          ：料金集計先データ作成の前処理としてファイルをマージしソートする。
#ソートキー：料金項目コード（昇順）
#
#
#
# コマンド形式  ：EO3013310J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00           2012/05/02  FJ）冨井     【ANK-0024-04-00】ファイル項目追加、一時金情報削除
# v4.00           2013/01/11  FJ）浜口     【内部管理番号-0000502】割引料金情報（ACIFI016043）削除
# v4.01           2013/03/23  FJ）今井     【契約障害対応】マンションオーナー向け利用不可期間減処理の追加対応
# v5.00           2013/08/14  FJ）狭間     【TG1-2013-0000990】利用開始日・利用終了日が空の場合、請求年月の月初月末をセットする
# v5.01           2013/08/27  FJ）狭間     【OM-2013-0000945】サービス番号がnullまたは半角空白20桁の場合は半角空白10桁に置換にする
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#

EVENT_CD_USE_STA="01"
EVENT_CD_USE_END="02"

#
#---ファイルから運用日を取得（工事遅延用）
#
read OPD2 <${MID_DIR_AC}/ACIFM037001.csv
#- バッチ運用日
OPEDATE=${OPD2}
#- 請求年月取得（SEIKY_YM）
. EO3SEIKYYM.sh '03' ${OPEDATE} ${JOBNAME}
#- 月初日取得
. EO3EVENTYMD.sh ${EVENT_CD_USE_STA} ${SEIKY_YM} ${JOBNAME}
USE_STA_YMD=${EVENT_YMD}
#- 月末日取得
. EO3EVENTYMD.sh ${EVENT_CD_USE_END} ${SEIKY_YM} ${JOBNAME}
USE_END_YMD=${EVENT_YMD}

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

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

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

#
#---ワークファイル定義
#

CSVFILE_CAT_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFI016108_CAT_WK1.csv
CSVFILE_BSORT_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFI016108_BSORT_WK1.csv
CSVFILE_BSORT_WK2=${MID_DIR_AC}/${JOBNAME}_ACIFI016108_BSORT_WK2.csv

# 利用料金情報（サービス番号置換処理、編集元のレコード）
CSVFILE_PADSP_WK0=${MID_DIR_AC}/${JOBNAME}_ACIFI016108_ADSP_WK0.csv

# 利用料金情報（サービス番号置換処理、サービス番号＝null（空文字）のレコード）
CSVFILE_PADSP_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFI016108_ADSP_WK1.csv

# 利用料金情報（サービス番号置換処理、サービス番号＝半角空白（20桁）のレコード）
CSVFILE_PADSP_WK2=${MID_DIR_AC}/${JOBNAME}_ACIFI016108_ADSP_WK2.csv

# 利用料金情報（サービス番号置換処理、上記以外のレコード）
CSVFILE_PADSP_WK3=${MID_DIR_AC}/${JOBNAME}_ACIFI016108_ADSP_WK3.csv

# 利用料金情報（出力）
OUTFILE_ACIFI016108=${MID_DIR_AC}/ACIFI016108.csv

#
#---入力ファイルを結合
#
cat ${MID_DIR_AC}/ACIFI016019.csv \
    ${MID_DIR_AC}/ACIFI016104.csv \
    ${MID_DIR_AC}/ACIFI016023.csv \
    ${MID_DIR_AC}/ACIFI016025.csv \
    ${MID_DIR_AC}/ACIFI016018.csv \
    ${MID_DIR_AC}/ACIFM084047.csv \
    ${MID_DIR_AC}/ACIFI016084.csv \
    ${MID_DIR_AC}/ACIFI016085.csv \
    > ${CSVFILE_CAT_WK1}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " cat Error($SVC cat:rc=$rc) "
    echo $JOBNAME " cat Error($SVC cat:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#---利用開始日の有無で分割
#
bsortex -copy -record recform=txtcsv \
  -input reclen=450 file=${CSVFILE_CAT_WK1} \
  -output file=${CSVFILE_BSORT_WK1} case="14.8asc.le.'0'" \
   reconst="0.10,1.6,2.14,3.12,4.11,5.20,6.12,7.1,8.2,9.3,10.12,11.11,12.2,13.12,'${USE_STA_YMD}'.8asc,'${USE_END_YMD}'.8asc,16.END" \
  -output file=${CSVFILE_BSORT_WK2} case=other
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " copy Error($SVC copy:rc=$rc) "
    echo $JOBNAME " copy Error($SVC copy:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#---再結合
#
cat ${CSVFILE_BSORT_WK1} ${CSVFILE_BSORT_WK2} > ${CSVFILE_PADSP_WK0}

#
#---サービス番号がnull（空文字）のレコードと半角空白20桁のレコード、それ以外のレコードに分割する
#---その際、サービス番号がnullまたは半角空白20桁のものは半角空白10桁に置き換える
#
bsortex \
  -copy \
  -record recform=txtcsv \
  -input reclen=450 file=${CSVFILE_PADSP_WK0} \
  -output file=${CSVFILE_PADSP_WK1} case="5.20asc.lt.' '" \
    reconst="0.10,1.6,2.14,3.12,4.11,'          '.10asc,6.END" \
  -output file=${CSVFILE_PADSP_WK2} case="5.20asc.eq.'                    '" \
    reconst="0.10,1.6,2.14,3.12,4.11,'          '.10asc,6.END" \
  -output file=${CSVFILE_PADSP_WK3} case=other \
    reconst="0.END"
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex -copy Error($SVC bsortex:rc=$rc) "
    echo $JOBNAME " bsortex -copy Error($SVC bsortex:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#---再結合してソート
#
bsort -s -z450 -0.10asc,5.20asc,7.1asc,25.1ascr -Tflt -t, \
  -o ${OUTFILE_ACIFI016108} \
  ${CSVFILE_PADSP_WK1} \
  ${CSVFILE_PADSP_WK2} \
  ${CSVFILE_PADSP_WK3} 
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    echo $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#---中間ファイルの削除
#
rm -f ${CSVFILE_CAT_WK1} ${CSVFILE_BSORT_WK1} ${CSVFILE_BSORT_WK2} \
  ${CSVFILE_PADSP_WK0} ${CSVFILE_PADSP_WK1} ${CSVFILE_PADSP_WK2} ${CSVFILE_PADSP_WK3}

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

exit ${G_RTN_NORMAL}
