#!/bin/sh
# admin.properties パラメータ設定
# Replace reverse ( for uninstall )
# ---------------------------------------------- #

# 配列の宣言
declare -a REP_LIST
declare -a ADD_LIST

ORG_NUM=0
ARG_NUM=0
DELIM_NUM=0
TARGET_NUM=0

## メモリリークパッチフラグ名
PATCH_HOME=/home/smxd/smx-cluster_patch
AlreadyFlagLabel=installFlg

# メモリリークパッチがインストール済みか確認フラグ
ALR_MEM=""

# OLD_Version の取得
OLD_VER=${1}

## error 時の戻し専用サイレントモード
SILENT=${2}

##### Function ###################################
#----- 変数初期化 -------------------------------#
init(){
  # sedコマンド用変数は予め「sed」を代入しておく
  # 後々getSed〜()で「-e s/〜/〜/g」のパラメータを付加する
  SED_CMD="$sed"
  
  # ファイル属性値
  FILENAME=""
  REALNAME=""
  DELIMLINE=""
  WRITETYPE=""
  
  # XMLパラメータ変換用
  ORG_PARAM=""
  VAL_PARAM=""
  VAL_DATA=""
  ARG_PARAM=""
  DELIM_PARAM=""
  TARGET_PARAM=""
  REPEAT_PARAM=""
  
  # フラグ変数
  FILE_FLAG=0
  PATH_FLAG=0
  REAL_FLAG=0
  UNIT_FLAG=0
  REPEAT_FLAG=0
  PLATOON_FLAG=0
  CMT_FLAG=0
  ERR_FLAG=0
}

#----- XMLタグから値を取り出す ------------------#
getParam(){     #args:タグ文字列,タグ名(ex:FILENAME,ORG,VALUE)
  TAG_STR=$1
  TAG_NAME=$2
  RES=`$echo "$TAG_STR" | $sed -e s/"<$TAG_NAME>"//g -e s/"<\/$TAG_NAME>"//g`
  if [ $? -ne 0 ] ; then
    arize_err "PRM001" "String | tag [$TAG_STR | $TAG_NAME]"
    $echo ""
    return 1
  else
    $echo "$RES"
    return 0
  fi
}

#----- sed用値置換パラメータ生成 ----------------#
getSedParam(){  #args:ORG値,VALUE値(※変数展開後の値 ex:$HOST -> auth01)
#  TMP_ORG=$1                                                              # ["] [/] [*]が無いことを保証すること
  if [ "${1}" = "" -o "${2}" = "" ] ; then
    $echo ""
  else
    TMP_ORG=`$echo "$1" | $sed -e s/'"'/'\\\"'/g | $sed -e s/'\/'/'\\\\\/'/g | $sed -e s/'*'/'\\\*'/g`  # ["] [/] [*]への対応
    TMP_VAL=`$echo "$2" | $sed -e s/'"'/'\\\"'/g | $sed -e s/'\/'/'\\\\\/'/g | $sed -e s/'*'/'\\\*'/g`  # ["] [/] [*]への対応
    RES=' -e s/"'$TMP_VAL'"/"'$TMP_ORG'"/g'
    $echo "$RES"
  fi
}

#----- sed用コメントアウトパラメータ生成 --------#
getSedCommentOut(){   #args:コメントアウトする行の先頭文字
  TMP_CMT=`$echo "$1" | $sed -e s/'"'/'\\\"'/g | $sed -e s/'\/'/'\\\\\/'/g | $sed -e s/'*'/'\\\*'/g`  # ["] [/] [*]への対応
  RES=' -e s/"^'$TMP_CMT'"/"#'$TMP_CMT'"/g'
  $echo "$RES"
}

#----- メモリリーク対応パッチが当たっていたか確認（SMXVer-3_2_2専用）-----------------#
#----- メモリリーク対応インストーラ配下にフラグファイルがあるか確認 ------------------#
#----- メモリリーク対応個別パッチが当たっていたなら戻さないように救済する処置 --------#
already_memoryleak(){
  write_log "メモリリークパッチのインストール有無について確認します"
  # パッチ適用済みフラグファイルの存在チェック：適用済み=フラグファイルが存在する
  if [ -f ${BACKUP_DIR}/MEMOL_FLAG ] ; then
    # メモリリークパッチがインストール済み
    write_log "メモリリークパッチがインストール済みであった事を確認しました"
    return 1
  else
    # メモリリークパッチがインストールされていない
    write_log "メモリリークパッチがインストールされていなかった事を確認しました"
    return 0
  fi
}

##### Main routine ###############################


# Function読み込み
. ${INST_HOME}/function.sh

# 設定ファイルの読み込み
load_setup_properties

# 初期処理
initialize
init

# フラグの初期化
FLAG=0


# 開始出力
if [ "${SILENT}" = "silent" ] ; then
    LOG_FILE=$ERR_LOG_FILE
else
	CLEAR
	msg_info  "パラメータ設定を行います。" \
	          "パラメータ設定には時間がかかります。" \
	          "しばらくお待ちください。"
	#echo ""
	echo_sp "パラメータ設定."
fi
write_log "パラメータ設定開始"

# 読み込む行に空白があっても一行をキチンと読み込むためには
# IFSを改行コードとして宣言する必要がある
TMP_IFS=$IFS
IFS='
'

# メモリリーク対応パッチが当たっているか確認（SMXVer-3_2_2専用）
# パッチインストール済み=1 (パラメータ追記処理をスキップする)
already_memoryleak
ALR_MEM=$?

## 置き換えXMLファイル名を配列に登録
## バージョンの他にメモリリークパッチの有無によって書き換え数が変わる
REP_LIST[0]=${REPLACE_XML_FILE3}
if [ $OLD_VER -eq 20 ] ;then
  REP_LIST[1]=${REPLACE_XML_FILE2}
  if [ $ALR_MEM -eq 0 ] ; then
    REP_LIST[2]=${REPLACE_XML_FILE1}
  fi
fi

# パラメータ置換用XMLファイルを読み込み、置換処理を実行する   -----------------#
# メモリリークパッチが適用済みの場合はXMLファイルは１つのみ使用
# XMLファイルが複数有る場合はその分実行する
for REP_FILE in ${REP_LIST[*]}
do
	if [ -f ${REP_FILE} ] ; then
	for READLINE in `$cat ${REP_FILE}`
	do
	  # 改行コード(CR)を除去する
	  LINE=`$echo "$READLINE" | $tr -d "\r"`
	  
	#  echo "[$LINE]"
	  
	  # <FILE> の処理   ##########################################
	  # 一ファイルの開始を告げる                              ####
	  $echo "$LINE" | $grep ^"<FILE>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    init
	    FILE_FLAG=1
	    continue
	  fi
	  
	  # <FILENAME> の処理   ######################################
	  # 書き換え元のファイル名を抽出する                      ####
	  $echo "$LINE" | $grep ^"<FILENAME>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    if [ $FILE_FLAG -eq 1 ] ; then
	      FILENAME=`getParam "$LINE" "FILENAME"`
	      if [ $? -ne 0 ] ; then
	        # ファイル名抽出に失敗
	        ERR_FLAG=1
	      else
	        PATH_FLAG=1
	      fi
	    fi
	    continue
	  fi
	  
	  # <REALNAME> の処理   ######################################
	  # 実際の展開先のファイル名を抽出する                    ####
	  $echo "$LINE" | $grep ^"<REALNAME>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    if [ $FILE_FLAG -eq 1 ] ; then
	      REALNAME=`getParam "$LINE" "REALNAME"`
	      if [ $? -ne 0 ] ; then
	        # ファイル名抽出に失敗
	        ERR_FLAG=1
	      else
	        REAL_FLAG=1
	      fi
	    fi
	    continue
	  fi
	  
	  # <UNIT> の処理   ##########################################
	  # 一文字列置換情報の取得開始を告げる                    ####
	  $echo "$LINE" | $grep ^"<UNIT>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    if [ $PATH_FLAG -eq 1 ] ; then
	      ORG_PARAM=""
	      VAL_PARAM=""
	      VAL_DATA=""
	      UNIT_FLAG=1
	    fi
	    continue
	  fi
	  
	  
	  ### uninstall 用 逆置換処理 ################################
	  # uninstall では ORG と VALUE を逆転させることで        ####
	  # 元の状態に戻す処理（逆置換）を実現する (since v311)   ####
	  ############################################################
	  
	  # <ORG> の処理   #########################################
	  # 置換元の文字列を抽出する                              ####
	  $echo "$LINE" | $grep ^"<ORG>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    if [ $UNIT_FLAG -eq 1 ] ; then
	      ORG_PARAM=`getParam "$LINE" "ORG"`
	      if [ $? -ne 0 ] ; then
	        # 置換元の文字列抽出に失敗
	        ERR_FLAG=1
	      fi
	    fi
	    continue
	  fi
	  
	  # <VALUE> の処理   ###########################################
	  # 置換後の文字列を抽出する                              ####
	  # 抽出した文字列($****)を変数変換する                   ####
	  # この段階でsed用置換パラメータを生成する               ####
	  $echo "$LINE" | $grep ^"<VALUE>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    if [ $UNIT_FLAG -eq 1 -a "$ORG_PARAM" != "" ] ; then
	      VAL_PARAM=`getParam "$LINE" "VALUE"`
	      if [ $? -ne 0 ] ; then
	        # 置換後の文字列抽出に失敗
	        ERR_FLAG=1
	      else
	        VAL_DATA=`eval $echo $VAL_PARAM`
	        if [ "$VAL_DATA" != "" ] ; then
	          # 変数変換した結果がnullでなければ置換を実行する
	          # 置換後の値(2番目のパラメタ)にはxmlから抽出したデータを変数展開させたものを使う
	          #（※xml内で\${TMP}を扱えるようにするため。変数展開はgetSedParam実行時に行われない ex.$HOST -> $HOST のまま）
	          RET=`getSedParam "$ORG_PARAM" "$VAL_DATA"`
	#          RET=`getSedParam "$ORG_PARAM" "$VAL_PARAM"`
	          SED_CMD="$SED_CMD""$RET"
	          RET=""
	        fi
	      fi
	   fi
	    continue
	  fi
	  
	  # <COMMENT> の処理   #######################################
	  # コメントアウト候補宣言の開始を告げる                  ####
	  # 置換後の値がnullの場合にのみコメントアウトが発生する  ####
	  # コメントアウトする文字列は非タグ行で宣言される        ####
	  $echo "$LINE" | $grep ^"<COMMENT>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    if [ $UNIT_FLAG -eq 1 -a "$ORG_PARAM" != "" -a "$VAL_PARAM" != "" -a "$VAL_DATA" = "" ] ; then
	      CMT_FLAG=1
	    fi
	    continue
	  fi
	  
	  # </COMMENT> の処理   ######################################
	  # コメントアウト候補宣言の終了を告げる                  ####
	  $echo "$LINE" | $grep ^"</COMMENT>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    if [ $CMT_FLAG -eq 1 ] ; then
	      CMT_FLAG=0
	    fi
	    continue
	  fi
	  
	  # </UNIT> の処理   #########################################
	  # 一文字列置換情報の終了を告げる                        ####
	  $echo "$LINE" | $grep ^"</UNIT>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    if [ $UNIT_FLAG -eq 1 ] ; then
	      UNIT_FLAG=0
	      ORG_PARAM=""
	      VAL_PARAM=""
	      VAL_DATA=""
	    fi
	    continue
	  fi
	  
	  # </FILE> の処理   #########################################
	  # 一ファイルの終了を告げる                              ####
	  # この段階でファイルをsedで置換する                     ####
	  # 一時ファイルに出力し、元のファイルに強制コピーする    ####
	  $echo "$LINE" | $grep ^"</FILE>" > /dev/null 2>&1
	  if [ $? -eq 0 ] ; then
	    
	    write_log "Replace file. [$FILENAME]"
	    
	    # 置換処理
	    if [ $ERR_FLAG -eq 0 ] ; then
	      # ここまでの処理でエラーが発生していない場合のみ、ファイル処理を実行する
	      # 元ファイルを一時ファイルにコピーする
	      $cat $FILENAME > $TMP_FILE 2>&1
	      if [ $? -ne 0 ] ; then
	        ERR_FLAG=1
	        arize_err "PRM002" "File. [$FILENAME]"
	      else
            if [ "${SED_CMD}" = "$sed" ] ; then
               continue;
            fi
	        # コピーした一時ファイルをsedで置換して、元ファイル+(.change)に出力する
	        eval "$SED_CMD" < $TMP_FILE > $FILENAME".change" 2>&1   # この処理で変数展開している
	        if [ $? -ne 0 ] ; then
	          ERR_FLAG=1
	          arize_err "PRM003" "Sed command. [ $SED_CMD < $TMP_FILE > ${FILENAME}.change ]"
	        fi
	      fi
	      
	      if [ -f $TMP_FILE ] ; then
	        $rm -f $TMP_FILE 2>&1
	      fi
	      
	      # 元ファイル+(.change)を実際の展開先ファイルにコピーする
	      # REALNAMEが読み込まれていなければ実効できない(=エラー)
	      if [ $REAL_FLAG -eq 1 ] ; then
	        $cp -f $FILENAME".change" $REALNAME > /dev/null 2>&1
	        if [ $? -ne 0 ] ; then
	          ERR_FLAG=1
	          arize_err "PRM004" "File copy. [$FILENAME.change > $REALNAME]"
	        fi
	      else
	        # REALNAMEが読み込まれていない場合はエラーとする
	        ERR_FLAG=1
	        arize_err "PRM005" "File. [$FILENAME]"
	      fi
	    fi
	    
	    # このファイル置換中にエラー発生した場合は、フラグを立てる(=>パラメータ設定に失敗)
	    if [ $ERR_FLAG -ne 0 ] ; then
	      FLAG=1
	    fi
	    
	    # 一ファイルの置換が終了したことを出力する
	    echo_sp "."
	    
	    init
	    continue
	  fi
	  
	  # 非タグ行 の処理   ########################################
	  # <COMMENT>〜</COMMENT>の間の非タグ行は、               ####
	  # コメントアウト候補宣言である                          ####
	  # コメントアウト発生時は、この宣言文字で始まるデータの  ####
	  # 行先頭に「#」を付加する                               ####
	  if [ $CMT_FLAG -eq 1 ] ; then
	    RET=`getSedCommentOut "$LINE"`
	    SED_CMD="$SED_CMD""$RET"
	    RET=""
	  fi
	  
	done
	fi
done


# パラメータ追記用XMLファイルを読み込み、追記処理を実行する   -----------------#
# メモリリーク対応パッチが当たっているか確認（SMXVer-3_2_2専用）
# パッチインストール済み=1 (パラメータ追記処理をスキップする)
already_memoryleak
ALR_MEM=$?

## 追記XMLファイル名を配列に登録(Ver-3.2.0からのアップデートは３つのXMLから追記)
## メモリリークパッチが適用済みの場合はXMLファイルは２つ使用
## Ver-3.2.2 からアップデートした場合はXMLファイルは１つ使用
ADD_LIST[0]=${INSERT_XML_FILE3}
if [ $OLD_VER -eq 21 ] ; then
  ADD_LIST[1]=${INSERT_XML_FILE2}
fi
if [ $OLD_VER -eq 20 ] ; then
  ADD_LIST[1]=${INSERT_XML_FILE2}
  if [ $ALR_MEM -eq 0 ] ; then
    ADD_LIST[2]=${INSERT_XML_FILE1}
  fi
fi

for ADD_FILE in ${ADD_LIST[*]}
do
	if [ -f $ADD_FILE ] ; then
	for READLINE in `$cat $ADD_FILE`
	do
	# 改行コード(CR)を除去する
	LINE=`$echo "$READLINE" | $tr -d "\r"`
	
	#  echo "[$LINE]"
	
	# <FILE> の処理   ##########################################
	# 一ファイルの開始を告げる                              ####
	$echo "$LINE" | $grep ^"<FILE>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	init
	
	if [ -f $TMP_FILE ] ; then
	  $rm -f $TMP_FILE 2>&1
	fi
	
	FILE_FLAG=1
	continue
	fi
	
	# <FILENAME> の処理   ######################################
	# 書き換え元のファイル名を抽出する                      ####
	$echo "$LINE" | $grep ^"<FILENAME>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	if [ $FILE_FLAG -eq 1 ] ; then
	  FILENAME=`getParam "$LINE" "FILENAME"`
	  if [ $? -ne 0 ] ; then
	    # ファイル名抽出に失敗
	    ERR_FLAG=1
	  else
	    PATH_FLAG=1
	  fi
	fi
	continue
	fi
	
	# <REALNAME> の処理   ######################################
	# 実際の展開先のファイル名を抽出する                    ####
	$echo "$LINE" | $grep ^"<REALNAME>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	if [ $FILE_FLAG -eq 1 ] ; then
	  REALNAME=`getParam "$LINE" "REALNAME"`
	  if [ $? -ne 0 ] ; then
	    # ファイル名抽出に失敗
	    ERR_FLAG=1
	  else
	    REAL_FLAG=1
	  fi
	fi
	continue
	fi
	
	# <DELIMLINE> の処理   ######################################
	# SMX区切り行を抽出する                                  ####
	$echo "$LINE" | $grep ^"<DELIMLINE>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	DELIMLINE=`getParam "$LINE" "DELIMLINE"`
	if [ $? -ne 0 ] ; then
	  # SMX区切り行の抽出に失敗
	  ERR_FLAG=1
	fi
	continue
	fi
	
	# <UNIT> の処理   ##########################################
	# 一文字列置換情報の取得開始を告げる                    ####
	$echo "$LINE" | $grep ^"<UNIT>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	if [ $PATH_FLAG -eq 1 -a $REAL_FLAG -eq 1 ] ; then
	  VAL_PARAM=""
	  VAL_DATA=""
	  ORG_PARAM=""
	  UNIT_FLAG=1
	fi
	continue
	fi
	
	# <VALUE> の処理   #########################################
	# 抽出した文字列($****)を変数変換する                   ####
	# 変換後の値がnullの場合、TEXTは追記されない            ####
	$echo "$LINE" | $grep ^"<VALUE>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	if [ $UNIT_FLAG -eq 1 ] ; then
	  VAL_PARAM=`getParam "$LINE" "VALUE"`
	  if [ $? -ne 0 ] ; then
	    # 置換後の文字列抽出に失敗
	    ERR_FLAG=1
	  else
	    VAL_DATA=`eval $echo $VAL_PARAM`
	    if [ "$VAL_DATA" = "" ] ; then
	      # 変換後の値がnullの場合はTEXTを追記しないようにフラグを設定する
	      CMT_FLAG=2
	    fi
	  fi
	fi
	continue
	fi
	
	# <ORG> の処理   ###########################################
	# 置換元の文字列を抽出する                              ####
	$echo "$LINE" | $grep ^"<ORG>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	if [ $UNIT_FLAG -eq 1 ] ; then
	  ORG_PARAM=`getParam "$LINE" "ORG"`
	  if [ $? -ne 0 ] ; then
	    # 置換元の文字列抽出に失敗
	    ERR_FLAG=1
	  fi
	fi
	continue
	fi
	
	# <TEXT> の処理   ##########################################
	# 追記文候補宣言の開始を告げる                          ####
	# 追記文は非タグ行で宣言される                          ####
	$echo "$LINE" | $grep ^"<TEXT>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	if [ $UNIT_FLAG -eq 1 ] ; then
	  if [ $CMT_FLAG -eq 2 ] ; then
	    # VALUE値がnullなので、追記しない
	    CMT_FLAG=0
	  else
	    # 特に非追記対象（VALUE）が指定されていないので、追記する
	    CMT_FLAG=1
	  fi
	  continue
	fi
	fi
	
	# </TEXT> の処理   #########################################
	# 追記文候補宣言の終了を告げる                          ####
	$echo "$LINE" | $grep ^"</TEXT>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	if [ $CMT_FLAG -eq 1 ] ; then
	  CMT_FLAG=0
	fi
	continue
	fi
	
	# </UNIT> の処理   #########################################
	# 一文字列置換情報の終了を告げる                        ####
	$echo "$LINE" | $grep ^"</UNIT>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	if [ $UNIT_FLAG -eq 1 ] ; then
	  UNIT_FLAG=0
	  VAL_PARAM=""
	  VAL_DATA=""
	#      ORG_PARAM=""     # ※INSERT処理は一つのUNITしか保持できないので、ORG_PARAMはそのまま</FILE>まで残す。
	fi
	continue
	fi
	
	### uninstall 用 追記部分除去処理 ##########################
	# uninstall では DELIMLINE で囲まれた部分を除去することで ##
	# 元の状態に戻す処理を実現する (since v311)             ####
	# ※現時点では、末尾追記型にのみ対応する                ####
	############################################################
	
	# </FILE> の処理   #########################################
	# 一ファイルの終了を告げる                              ####
	
	$echo "$LINE" | $grep ^"</FILE>" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
	if [ $ERR_FLAG -eq 0 ] ; then
	  # ここまでの処理でエラーが発生していない場合のみ、ファイル処理を実行する
	  if [ $REAL_FLAG -eq 1 ] ; then
	    if [ "$DELIMLINE" != "" ] ; then
	      # 初期化処理
	      ADDED_FLAG=0                                      # フラグの初期化
	      $rm -f $FILENAME".change" > /dev/null 2>&1        # .changeファイルの削除
	      
	      LASTEST_FLAG=0                                    # 追記フラグ(0=途中挿入,1=末尾追記)
	      
	      if [ "$ORG_PARAM" = "" ] ; then
	        # <ORG>がnullの場合 -> 最後に追記する
	        LASTEST_FLAG=1
	      fi
	      
	      # 実際のファイル(既存のファイル)を読み込む
	      for REAL_LINE in `$cat $REALNAME`
	      do
	        # 読み込んだ行がSMX区切り行であるかの判別をする->フラグを立てる
	        # continue により以降の処理は実行しないことになる（DELIMLINE は対象外になる)
	        if [ "$REAL_LINE" = "$DELIMLINE" ] ; then
	          if [ $ADDED_FLAG -eq 0 ] ; then
	            ADDED_FLAG=1                                # フラグが立っていない場合->フラグを立てる
	            continue
	          elif [ $ADDED_FLAG -eq 1 ] ; then
	            ADDED_FLAG=0                                # フラグが立っている場合->フラグを下ろす
	            continue
	          fi
	        fi
	        
	        if [ $ADDED_FLAG -eq 0 ] ; then
	          # DELIMLINE の範囲ではないので書き出す（読み込んだ内容をリダイレクトする）
	          $echo "$REAL_LINE" >> $FILENAME".change"
	        fi
	        
	      done
	      
	      # 実際の展開先ファイルにコピーする
	      $cp -f $FILENAME".change" $REALNAME > /dev/null 2>&1
	      if [ $? -ne 0 ] ; then
	        ERR_FLAG=1
	        arize_err "PRM004" "File copy. [$FILENAME.change > $REALNAME]"
	      fi
	      
	    else
	      # SMX区切り行が読み込まれていない場合はエラーとする
	      ERR_FLAG=1
	      arize_err "PRM006" "Delimline. [$DELIMLINE]"
	    fi
	  else
	    # REALNAMEが読み込まれていない場合はエラーとする
	    ERR_FLAG=1
	    arize_err "PRM005" "File. [$FILENAME]"
	  fi
	  
	  if [ -f $TMP_FILE ] ; then
	    $rm -f $TMP_FILE 2>&1
	  fi
	fi
	
	# このファイル置換中にエラー発生した場合は、フラグを立てる(=>パラメータ設定に失敗)
	if [ $ERR_FLAG -ne 0 ] ; then
	  FLAG=1
	fi
	
	# 一ファイルの置換が終了したことを出力する
	echo_sp "."
	write_log "Added file. [$FILENAME]"
	
	init
	continue
	fi
	
	# 非タグ行 の処理   ########################################
	# <TEXT>〜</TEXT>の間の非タグ行は、                     ####
	# 追記文候補宣言である                                  ####
	# 追記文は一時ファイルに蓄積する                        ####
	# ※この中の値変換はできない（制限事項）                ####
	#  if [ $CMT_FLAG -eq 1 ] ; then
	#    $echo "$LINE" | $grep ^"#" > /dev/null 2>&1
	#    if [ $? -eq 0 ] ; then
	#      # 先頭がコメントアウト(#)の場合は先頭の#を一時除去してevalする
	#      # 最後に流し込む段階で#を追加する
	#      TMP_EVAL_LINE=`$echo "$LINE" | $sed -e s/'#'/''/`
	#      TMP_AFTER_EVAL_LINE="#"`eval $echo "$TMP_EVAL_LINE"`
	#      $echo "$TMP_AFTER_EVAL_LINE" >> $TMP_FILE 2>&1
	#    else
	#      eval $echo "$LINE" >> $TMP_FILE 2>&1
	###since v311###      $echo "$LINE" >> $TMP_FILE 2>&1
	#    fi
	#  fi
	
	done
	fi
done



IFS=$TMP_IFS


# 結果出力
if [ $FLAG -eq 0 ] ; then
	if [ "$SILENT" != "silent" ] ; then
	  $echo "完了"
	  $echo ""
	  msg_dialog  "パラメータ設定は正常に行われました。" \
	              "処理を継続します。"
	  WAIT_ENTER
	fi
	write_log "パラメータ設定は正常に行われました。"
    $rm -f ${BACKUP_DIR}/MEMOL_FLAG > /dev/null 2>&1
else
  if [ "${SILENT}" != "silent" ] ; then
    $echo "エラー発生！"
    $echo ""
    msg_err "パラメータ設定に失敗しました。" \
            "処理を中断します。"
  fi
  arize_err "dmy" "パラメータ設定に失敗しました。"
fi

exit $FLAG
