#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：前月分会計情報繰越分作成
#
# 機能          ：会計情報（前月分）から翌月残高集計分を取出す
#
# コマンド形式  ：EO30Q0530J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00           2012/05/21  FJ）岩切     新規作成
# v4.01           2013/02/27  FJ）広野     【ST4-2013-0000098】冗長的なDB登録手順を変更
# v4.02           2013/03/18  FJ）広野     性能改善: アンロードの参照先スクリプト変更にともなう修正
# v4.02.01        2013/04/08  FJ) 狭間    【ST4-2013-0000286】性能改善の為、アンロード並列化及び処理見直しと水平展開
# v4.03           2013/05/21  FJ) 前田     【TA1-2013-0000026】バッチ運用日を日中バッチ運用日から取得するように修正
##############################################################

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

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

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

#
#---ＪＯＢ名
#
JOBNAME=`basename $0 |sed -e "s/\.sh//g"`
#--- アンロードモジュール
UNLOADER=${G_TOOLSH}/EOKULD03.sh ;
#--- ファイルマッチングモジュール
MATCHING=${G_TOOLSH}/util/bin/ZTLMAT01 ;
[ $# -eq 2 ] &&TAJUKIDO="_$2" ;
#---ワークファイル削除モード
WK_RM=true ;
TMP_FILE_01=${MID_DIR_AC}/${JOBNAME}_WK_1$TAJUKIDO.csv
TMP_FILE_02=${MID_DIR_AC}/${JOBNAME}_WK_2$TAJUKIDO.csv
TMP_FILE_03=${MID_DIR_AC}/${JOBNAME}_WK_3$TAJUKIDO.csv
touch $TMP_FILE_01 $TMP_FILE_02 $TMP_FILE_03 ;

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

#
#---業務で必要な変数定義
#
#手修正あり
OPD=$1
#---運用日付取得
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "NDATE"
else
   RSLT_OPEDATE="${OPD}"
fi
OPEDATE=${RSLT_OPEDATE} ;

#---マッチング処理でLeftjoinがNULL時に"を付けなくする（マッチング使用時は必須）
export ZTLQUOTES=''

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

########
cat ${MID_DIR_AC}/ACIFM147102_*.csv >$TMP_FILE_03 ;
#アンロード:UNLOADER step1
# バッチ運用日に対する請求年月を取得する。:UNLOADER step1
${UNLOADER} CH_M_PRC_SCHDL_TEIGI ${TMP_FILE_01} ;
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME UNLOADER Error($SVC UNLOADER step1 ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;
bsortex \
	-record recform=txtcsv \
	-input reclen=290 \
	include="9.1asc.eq.'0'.and.0.2asc.eq.'21'.and.1.8asc.le.'${OPEDATE}'" \
	reconst="0.2,1.8,2.6" \
	-sort key="0.2asc,1.8asc" \
 <${TMP_FILE_01} \
 |bsortex \
	-record recform=txtcsv \
	-input reclen=290 \
	-merge key="0.2asc" \
	-summary suppress last \
	-output reconst="2.6" \
 >$TMP_FILE_02 ;
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME bsortex Error($SVC bsortex ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;
eval SEIKY_YM=`cat $TMP_FILE_02` ;
echo SEIKY_YM = ${SEIKY_YM} ;

#アンロード:UNLOADER step2 -会計残高集計表マスタから残高集計コード、翌月残高集計コードを取得する
${UNLOADER} ${SQL_DIR}/AC_U_CH0681_01.sql ${TMP_FILE_02} ;
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME UNLOADER Error($SVC UNLOADER step2 ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;

#nkf: step1 -マッチングツール用改行コードのLFへの変換: 対象 会計情報当月分明細CSVファイル
#--- ダブルコーテーションを削除
#--- 改行コードをunix (LF)に変換
nkf -Lu -s <${TMP_FILE_02} >${TMP_FILE_01} ;
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME nkf Error($SVC nkf step1 ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;
#nkf: step2 -マッチングツール用改行コードのLFへの変換: 対象 残高集計表マスタの検索結果CSVファイル
nkf -Lu -s <${TMP_FILE_03} |sed -e "s/\"//g" >${TMP_FILE_02} ;
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME nkf Error($SVC nkf step2 ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;

sed -e "s%:INF1%$TMP_FILE_02%" ${G_TOOLSH}/util/def/AC_CM_0009.def \
 |sed -e "s%:INF2%${TMP_FILE_01}%" >${TMP_FILE_03} ;
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME sed Error($SVC sed ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;
ZTLOUTFILE=${MID_DIR_AC}/ACIFM147103.csv &&export ZTLOUTFILE ;
${MATCHING} ${TMP_FILE_03} ;
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME MATCHING Error($SVC MATCHING ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;
bsortex \
	-copy \
	-record recform=txtcsv \
	-input reclen=300 file=${MID_DIR_AC}/ACIFM147103.csv \
	-output file=${TMP_FILE_01} \
			reconst="'${SEIKY_YM}'.6asc,1.10,2.12,3.12,'${SEIKY_YM}'.6asc,5.10,6.12,7.8" ;
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME bsortex Error($SVC bsortex ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;
cat ${TMP_FILE_01} >$TMP_FILE_02
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME cat Error($SVC cat ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;

#nkf: step3 -ジョブの中間ファイル: ACIFM147103.csv を出力
#--- 改行コードをwindows (CRLF)に変換
nkf -Lw -s <$TMP_FILE_02 >${MID_DIR_AC}/ACIFM147103.csv ;
rc=$? ;
if [ ${rc} -ne 0 ] ;
then
    ERRMSG="$JOBNAME nkf Error($SVC nkf step3 ACIFM147103:rc=${rc}) " ;
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${ERRMSG} ;
    echo ${ERRMSG} ;
    exit ${G_RTN_ERROR} ;
fi ;
exit_rc=$rc ;
#
#--- ジョブの終了メッセージを出力する
#
sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME
[ ${WK_RM} = "true" ] &&rm -f ${TMP_FILE_01} ${TMP_FILE_02} ${TMP_FILE_03} ;
exit $exit_rc


