/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKCashPostChsht
*	ソースファイル名	：JBSbatKKCashPostChsht.java
*	作成者				：富士通　
*	作成日				：2019年10月04日
*＜機能概要＞
*　CASHPOST送金対象抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v46.00.00	2019/10/04	FJ)美濃原	新規作成
*	v53.00.00	2021/05/13	FJ)岡井		【ANK-3907-00-00】CASHPOST連携キャンペーン金額表示形式変更
*	v59.00.00	2022/04/06  FJ)美濃原	【ANK-4229-00-00】CASHPOST登録結果のメール送付
*	v71.00.00	2024/04/10	FJ)飯田		【ANK-4528-00-00】CASHPOST送金案内登録日の変更対応
*	v71.00.01	2024/05/20	FJ)飯田		IT1-2024-0000008(ANK-4528-00-00)
*	v71.00.02	2024/06/18	FJ)久山    【ANK-4468-07-00】シンプルプラン CASHPOST対応
*********************************************************************/
package eo.business.service;

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import eo.business.common.JBSBatKKFileUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM893;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatCK_T_RRKS;
import eo.business.util.table.JBSbatKK_M_CASHPOST;
import eo.business.util.table.JBSbatKK_T_CASHPOST_KEI;
import eo.business.util.table.JBSbatKK_T_KAISEN_TG_SVKEI;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_ISP;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JKKStringUtil;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.util.JBSbatBusinessFileUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKCashPostChsht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	/** テーブル(CASHPOST契約)*/
	private static final String D_TBL_NAME_KK_T_CASHPOST_KEI = "KK_T_CASHPOST_KEI";
	/** テーブルアクセスクラス(CASHPOST契約)*/
	private JBSbatSQLAccess db_KK_T_CASHPOST_KEI = null;
	/** SQL定義キー(CASHPOST契約：KK_T_CASHPOST-KEI_KK_SELECT_002)*/
	private static final String KK_T_CASHPOST_KEI_KK_SELECT_002 = "KK_SELECT_002";

	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";
	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;
	/** SQL定義キー(お客様：CK_T_CUST-KK_SELECT_075)*/
	private static final String CK_T_CUST_KK_SELECT_075 = "KK_SELECT_075";

	/** テーブル(オプションサービス契約<ISP>)*/
	private static final String D_TBL_NAME_KK_T_OPSVKEI_ISP = "KK_T_OPSVKEI_ISP";
	/** テーブルアクセスクラス(オプションサービス契約<ISP>)*/
	private JBSbatSQLAccess db_KK_T_OPSVKEI_ISP = null;
	/** SQL定義キー(オプションサービス契約<ISP>：KK_T_OPSVKEI-ISP_KK_SELECT_034)*/
	private static final String KK_T_OPSVKEI_ISP_KK_SELECT_034 = "KK_SELECT_034";

	/** テーブル(連絡先)*/
	private static final String D_TBL_NAME_CK_T_RRKS = "CK_T_RRKS";
	/** テーブルアクセスクラス(連絡先)*/
	private JBSbatSQLAccess db_CK_T_RRKS = null;
	// ANK-4229-00-00 MOD START
//	/** SQL定義キー(連絡先：CK_T_RRKS-KK_SELECT_008)*/
//	private static final String CK_T_RRKS_KK_SELECT_008 = "KK_SELECT_008";
	/** SQL定義キー(連絡先：CK_T_RRKS_KK_SELECT_011)*/
	private static final String CK_T_RRKS_KK_SELECT_011 = "KK_SELECT_011";
	// ANK-4229-00-00 MOD END

	/** テーブル(サービス契約回線内訳)*/
	private static final String D_TBL_NAME_KK_T_SVKEI_KAISEN_UW = "KK_T_SVKEI_KAISEN_UW";
	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;
	/** SQL定義キー(サービス契約回線内訳：KK_T_SVKEI_KAISEN_UW-KK_SELECT_059)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_059 = "KK_SELECT_059";

	/** ＣＡＳＨＰＯＳＴ送金対象情報ファイルのプレフィックス "CASHPOST_" </br>
	 *  命名ルール：「CASHPOST_YYYYMMDDhhmmssSSS.csv」
	 */
	private static final String KKIFM893_NAME = "CASHPOST_";
	/** ファイルエンコード(SJIS) */
	private static final String ENCODE_SHIFT_JIS = "Shift-JIS";

	/** 案内方法："0"メール */
	private static final String GUIDE_WAY_MAIL = "0";
	/** 案内方法："9"なし */
	private static final String GUIDE_WAY_NASI = "9";
	/** FREE項目 ヘッダ */
	private static final String STR_FREE_HEADER = "キャンペーン名：";
	/** FREE項目 キャンペーンなし */
	private static final String STR_FREE_NASI = "−";
	/** FREE項目 キャンペーン名と金額の分離符（半角スペース）*/
	private static final String STR_SEP_CAMPNM = " ";
	/** FREE項目 金額単位（円）*/
	private static final String STR_TANI_YEN = "円";
	/** 分離符（半角スラッシュ）*/
	private static final String STR_SEP_SLASH = "/";
	/** 住所 建物と部屋番号の分離符（全角スペース） */
	private static final String STR_SEP_HEYA = "　";

	/** 業務パラメータ管理キー：出力ファイルＭＡＸレコード件数 */
	private static final String KK_CASHPOST_MAX_REC = "KK_CASHPOST_MAX_REC";
	/** 業務パラメータ管理キー：最大抽出レコード件数（１回目）*/
	private static final String KK_CASHPOST_MAXCHSHT = "KK_CASHPOST_MAXCHSHT";
	/** ファイル項目の最大項目数 */
	private static final int INT_KMK_MAX = 5;

	/** 空文字 */
	private static final String STR_EMPTY = "";
	/** １件目レコード */
	private static final int FIRST_REC = 0;

	/** サービス契約回線内訳の住所項目名 */
	private static final List<String> KAISEN_ADR =
			Arrays.asList(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM, JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM,
					JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM, JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM,
					JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO, JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM,
					JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM);

	/** お客様の契約先住所項目名 */
	private static final List<String> KEISHA_ADR =
			Arrays.asList(JBSbatCK_T_CUST.KEISHA_STATE_NM, JBSbatCK_T_CUST.KEISHA_CITY_NM, JBSbatCK_T_CUST.KEISHA_OAZTSU_NM,
					JBSbatCK_T_CUST.KEISHA_AZCHO_NM, JBSbatCK_T_CUST.KEISHA_BNCHIGO, JBSbatCK_T_CUST.KEISHA_ADRTTM, JBSbatCK_T_CUST.KEISHA_ADRRM);

	/** 住所項目の部屋番号位置 */
	private static final int INT_HEYA_ITEMNO = 6;

	/** 出力ファイルＭＡＸレコード件数 */
	private int kkCashPostMaxRec = 0;
	
	/** ＭＡＸ抽出レコード件数（１回目） */
	private int kkCashpostMaxchshtIntValue = 0;
	
	/** 抽出制限区分 */
	private static String chsht_limit_kbn = "";

	/** ＣＡＳＨＰＯＳＴ送金対象情報ファイル オブジェクト */
	private JBSbatBusinessFileUtil KKIFM893FileObj = null;

	/** ＣＡＳＨＰＯＳＴ契約 入力レコード件数 */
	private int CASHPOSTRecordCnt = 0;
	/** ＣＡＳＨＰＯＳＴ送金対象情報ファイル 総レコード件数 */
	private int KKIFM893AllCnt = 0;
	/** ＣＡＳＨＰＯＳＴ送金対象情報ファイル レコード件数 */
	private int KKIFM893RecordCnt = 0;
	/** エラーレコード件数（回線場所毎） */
	private int ErrorKaisenCnt = 0;
	/** 出力ファイル名の文字数 */
	private static final int INT_FILE_NAME_LEN = 30;

	/** 起動パラメータ FREE項目 */
	private String[] freeItems = null;

	/** FREE項目：全項目数 */
	private static final int FREE_ITEM_COUNT = 3;
	/** FREE項目：出力先フォルダ */
	private static final int FREE_IDX_OUTPUT = 0;
	/** FREE項目：バックアップフォルダ */
	private static final int FREE_IDX_BACKUP = 1;
	/** FREE項目：抽出制限区分 */
	private static final int FREE_CHSHT_LIMIT_KBN = 2;

	/** エラーメッセージ */
	private StringBuffer errMsgBuf = new StringBuffer();

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
		/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_CASHPOST_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CASHPOST_KEI);
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_KK_T_OPSVKEI_ISP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OPSVKEI_ISP);
		db_CK_T_RRKS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_RRKS);
		db_KK_T_SVKEI_KAISEN_UW = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEI_KAISEN_UW);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// 業務パラメータ管理：出力ファイルＭＡＸレコード件数
		String value = JKKBatCommon.getWorkParamSetteValue(commonItem, KK_CASHPOST_MAX_REC);
		if (JKKStringUtil.isNullBlank(value))
		{
			// %1%テーブルに%2%が存在しません。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] { "業務パラメータ", "業務パラメータＩＤ：" + KK_CASHPOST_MAX_REC });
		}
		else
		{
			kkCashPostMaxRec = Integer.parseInt(value);
		}

		// フリー項目を取得する
		freeItems = freeItem.split(JKKBatConst.S_PARAM_DELIM);
		if (freeItems.length < FREE_ITEM_COUNT)
		{
			// パラメータが不正です。(%1%)	
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[] { "FREE項目の項目数不正" });
		}

// ANK-4528-00-00 ADD START
		chsht_limit_kbn = freeItems[FREE_CHSHT_LIMIT_KBN];
		// 抽出制限区分が9(制限なし)ではない場合
		if(!("9".equals(chsht_limit_kbn))){
			// 業務パラメータ管理：最大抽出レコード件数（１回目）
			String kkCashpostMaxchshtStringValue = JKKBatCommon.getWorkParamSetteValue(commonItem, KK_CASHPOST_MAXCHSHT);
			if (JKKStringUtil.isNullBlank(kkCashpostMaxchshtStringValue))
			{
				// %1%テーブルに%2%が存在しません。
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[] { "業務パラメータ", "業務パラメータＩＤ：" + KK_CASHPOST_MAXCHSHT });
			}
			else
			{
				kkCashpostMaxchshtIntValue = Integer.parseInt(kkCashpostMaxchshtStringValue);
			}
		}
// ANK-4528-00-00 ADD END

		// 出力ファイル削除
		printInfoLog("[初期処理]出力ファイル削除 フォルダ名：" + freeItems[FREE_IDX_OUTPUT] + " ファイル名(" + INT_FILE_NAME_LEN + "文字)：" + KKIFM893_NAME + "*"
				+ JKKStrConst.EXT_CSV);
		JBSBatKKFileUtil.deleteFile(commonItem, freeItems[FREE_IDX_OUTPUT], KKIFM893_NAME, JKKStrConst.EXT_CSV, INT_FILE_NAME_LEN);

		// バックアップファイル削除
		printInfoLog("[初期処理]出力ファイル削除 フォルダ名：" + freeItems[FREE_IDX_BACKUP] + " ファイル名(" + INT_FILE_NAME_LEN + "文字)：" + KKIFM893_NAME + "*"
				+ JKKStrConst.EXT_CSV);
		JBSBatKKFileUtil.deleteFile(commonItem, freeItems[FREE_IDX_BACKUP], KKIFM893_NAME, JKKStrConst.EXT_CSV, INT_FILE_NAME_LEN);
		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
		/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// ＣＡＳＨＰＯＳＴ契約の入力レコード件数
		CASHPOSTRecordCnt = 0;
		// ＣＡＳＨＰＯＳＴ送金対象情報ファイル 総出力レコードカウンタ
		KKIFM893AllCnt = 0;
		// ＣＡＳＨＰＯＳＴ送金対象情報ファイル 出力レコードカウンタ
		KKIFM893RecordCnt = 0;
		// エラーレコード件数（回線場所毎）カウンタ
		ErrorKaisenCnt = 0;

		String oldKey = STR_EMPTY;
		String newKey = STR_EMPTY;
		ArrayList<HashMap<String, String>> saveList = new ArrayList<HashMap<String, String>>();

		try
		{
			// CASHPOST契約テーブルの照会
			executeKK_T_CASHPOST_KEI_KK_SELECT_002(new String[] { this.opeDate, this.opeDate, this.opeDate, this.opeDate, this.opeDate });

			// ■ＣＡＳＨＰＯＳＴの件数分繰り返す
			JBSbatCommonDBInterface cashPsotChshstInfo = db_KK_T_CASHPOST_KEI.selectNext();
			while (cashPsotChshstInfo != null)
			{

// IT1-2024-0000008(ANK-4528-00-00) DEL START
//				// ＣＡＳＨＰＯＳＴ契約 入力レコード件数カウント
//				CASHPOSTRecordCnt++;
// IT1-2024-0000008(ANK-4528-00-00) DEL END

				newKey = keySet(cashPsotChshstInfo);
				if (!JKKStringUtil.isNullEmpty(oldKey) && !oldKey.equals(newKey))
				{
					keyBreak(saveList);
					// 退避リストの初期化
					saveList = new ArrayList<HashMap<String, String>>();

// ANK-4528-00-00 ADD START
					// 抽出制限区分が9(制限なし)ではない場合
					if(!("9".equals(chsht_limit_kbn))){
						// ＣＡＳＨＰＯＳＴ送金対象情報ファイル 総レコード件数がＭＡＸ抽出レコード件数（１回目）を上回る場合
						if(kkCashpostMaxchshtIntValue <= KKIFM893AllCnt){
							break;
						}
					}
// ANK-4528-00-00 ADD END

				}
// IT1-2024-0000008(ANK-4528-00-00) ADD START
				// ＣＡＳＨＰＯＳＴ契約 入力レコード件数カウント
				CASHPOSTRecordCnt++;
// IT1-2024-0000008(ANK-4528-00-00) ADD END
				oldKey = newKey;

				HashMap<String, String> recMap = new HashMap<String, String>();
				recMap.put(JBSbatKK_T_CASHPOST_KEI.SOHU_AMNT, cashPsotChshstInfo.getString(JBSbatKK_T_CASHPOST_KEI.SOHU_AMNT)); // 送付金額
				recMap.put(JBSbatKK_M_CASHPOST.CASHPOST_CAMPAIGN_NM, cashPsotChshstInfo.getString(JBSbatKK_M_CASHPOST.CASHPOST_CAMPAIGN_NM)); // CASHPOSTキャンペーン名
				recMap.put(JBSbatKK_T_CASHPOST_KEI.CASHPOST_KEI_NO, cashPsotChshstInfo.getString(JBSbatKK_T_CASHPOST_KEI.CASHPOST_KEI_NO)); // CASHPOST契約番号
				recMap.put(JBSbatKK_T_CASHPOST_KEI.SVC_KEI_NO, cashPsotChshstInfo.getString(JBSbatKK_T_CASHPOST_KEI.SVC_KEI_NO)); // サービス契約番号
				recMap.put(JBSbatKK_T_KAISEN_TG_SVKEI.SVC_KEI_KAISEN_UCWK_NO, cashPsotChshstInfo
						.getString(JBSbatKK_T_KAISEN_TG_SVKEI.SVC_KEI_KAISEN_UCWK_NO)); // サービス契約回線内訳番号
				recMap.put(JBSbatKK_T_SVC_KEI.SYSID, cashPsotChshstInfo.getString(JBSbatKK_T_SVC_KEI.SYSID)); // SYSID
				// ANK-4468-07-00 ADD START
				recMap.put(JBSbatKK_M_CASHPOST.TEMPLATE_CD, cashPsotChshstInfo.getString(JBSbatKK_M_CASHPOST.TEMPLATE_CD)); // テンプレートコード
				recMap.put(JBSbatKK_T_SVC_KEI.PCRS_CD, cashPsotChshstInfo.getString(JBSbatKK_T_SVC_KEI.PCRS_CD)); // 料金コースコード
				// ANK-4468-07-00 ADD END
				saveList.add(recMap);

				// 次のレコード処理へ
				cashPsotChshstInfo = db_KK_T_CASHPOST_KEI.selectNext();

			}
			if (saveList != null && saveList.size() > 0)
			{
				keyBreak(saveList);
			}
			if (null != KKIFM893FileObj)
			{
				// ＣＡＳＨＰＯＳＴ送金対象情報ファイルを閉じる
				JKKBatCommon.closeBusinessFileUtil(KKIFM893FileObj);
			}
			if (0 == KKIFM893AllCnt)
			{
				// 出力ファイル0件の場合は削除
				JBSBatKKFileUtil.deleteFile(commonItem, freeItems[FREE_IDX_OUTPUT], KKIFM893_NAME, JKKStrConst.EXT_CSV, INT_FILE_NAME_LEN);
			}
		}
		catch (Exception ex)
		{
			if (null != KKIFM893FileObj)
			{
				// ＣＡＳＨＰＯＳＴ送金対象情報ファイルを閉じる
				JKKBatCommon.closeBusinessFileUtil(KKIFM893FileObj);
				printInfoLog("エラーが発生したため作業ファイルを削除しました。 フォルダ名：" + freeItems[FREE_IDX_OUTPUT] + " ファイル名(" + INT_FILE_NAME_LEN + "文字)：" + KKIFM893_NAME
						+ "*" + JKKStrConst.EXT_CSV);
				JBSBatKKFileUtil.deleteFile(commonItem, freeItems[FREE_IDX_OUTPUT], KKIFM893_NAME, JKKStrConst.EXT_CSV, INT_FILE_NAME_LEN);
			}
			throw ex;
		}
		finally
		{
			//■エラーメッセージの出力
			if (0 < errMsgBuf.length())
			{
				//『CASHPOSTへの同時連携最大件数を超過している為、送金対象から除外しました。%1%
				//    %1%  [お客さまID：xxxxxxxxxx]』
				printBusinessError(JPCBatchMessageConstant.EKKB1990AW, new String[] { errMsgBuf.toString() });
			}
		}
		super.logPrint.printDebugLog("execute_END");

		return null;
		/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
		/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_CASHPOST_KEI.close();
		db_CK_T_CUST.close();
		db_KK_T_OPSVKEI_ISP.close();
		db_CK_T_RRKS.close();
		db_KK_T_SVKEI_KAISEN_UW.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		printInfoLog("ＣＡＳＨＰＯＳＴ契約 入力件数：" + String.valueOf(CASHPOSTRecordCnt));
		printInfoLog("ＣＡＳＨＰＯＳＴ送金対象情報ファイル 総出力レコード件数：" + String.valueOf(KKIFM893AllCnt));
		printInfoLog("チェックエラーレコード件数（回線場所毎）：" + String.valueOf(ErrorKaisenCnt));
		/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * キー項目を取得する。
	 * @param JBSbatCommonDBInterface ＣＡＳＨＰＯＳＴ契約＋その他情報
	 * @return キー情報
	 * @throws Exception 
	 */
	private String keySet(JBSbatCommonDBInterface cashPsotChshstInfo) throws Exception
	{
		String keyVal = cashPsotChshstInfo.getString(JBSbatKK_T_KAISEN_TG_SVKEI.SVC_KEI_KAISEN_UCWK_NO);
		return keyVal;
	}

	/**
	 * キーブレイク処理
	 * 
	 * <br>
	 * @param saveList 退避リスト
	 * @return true：正常出力、false：エラー
	 * @throws Exception 
	 */
	private boolean keyBreak(ArrayList<HashMap<String, String>> saveList) throws Exception
	{
		// ■チェック処理
		// 連携件数チェック
		if (saveList.size() > 5)
		{
			//『CASHPOSTへの同時連携最大件数を超過している為、送金対象から除外しました。[お客さまID：%1%]』
			// チェックエラー(処理続行)
			errMsgBuf = errMsgBuf.append(getSvcKeiNoStr(saveList));
			ErrorKaisenCnt++;
			return false;
		}
		else
		{
			if (0 == KKIFM893AllCnt || kkCashPostMaxRec <= KKIFM893RecordCnt)
			{
				if (0 < KKIFM893AllCnt)
				{
					// ＣＡＳＨＰＯＳＴ送金対象情報ファイルを閉じる
					JKKBatCommon.closeBusinessFileUtil(KKIFM893FileObj);
				}
				// ＣＡＳＨＰＯＳＴ送金対象情報ファイルパス
				String wFilePath = getFileName(freeItems[FREE_IDX_OUTPUT], KKIFM893_NAME, JKKStrConst.EXT_CSV);
				// ＣＡＳＨＰＯＳＴ送金対象情報ファイル ファイルオブジェクトを生成する
				KKIFM893FileObj = JKKBatCommon.createBusinessFileUtil(wFilePath, ENCODE_SHIFT_JIS, JKKStrConst.LINE_SEPARATOR, JKKStrConst.COMMA);
				// ファイルレ制御用のレコード件数の初期化
				KKIFM893RecordCnt = 0;
				printInfoLog("出力ファイル作成：" + wFilePath);
			}
			// ＣＡＳＨＰＯＳＴ送金対象情報ファイルにレコードを出力する
			if (createKKIFM893(saveList))
			{
				// カウンタのインクリメント
				KKIFM893AllCnt++;
				KKIFM893RecordCnt++;
			}
			else
			{
				// エラー
				ErrorKaisenCnt++;
			}

		}
		return true;
	}

	/**
	 * ファイル名を生成する。<br>
	 * （システム日付付加）
	 * <br>
	 * @param dirName ディレクトリ名
	 * @param defaultFileName ファイル名
	 * @param extKind 拡張子
	 * @return
	 */
	private String getFileName(String dirName, String defaultFileName, String extKind)
	{
		String timeStamp = JKKBatCommon.getSysDateTimeStamp();
		StringBuffer sb = new StringBuffer();
		sb.append(dirName);
		sb.append(defaultFileName);
		sb.append(timeStamp);
		sb.append(extKind);
		return sb.toString();
	}

	/**
	 * CASHPOST送金対象情報ファイルのレコードを出力する。<br>
	 * @param  saveList CASHPOST契約内容
	 * @return true:正常終了、false:連携情報取得エラー
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private boolean createKKIFM893(ArrayList<HashMap<String, String>> saveList) throws Exception
	{

		// ■連携情報取得
		HashMap<String, String> renkeiMap = getRenkeiInfo(saveList);
		if (renkeiMap == null)
		{
			return false;
		}

		// ■送金額の集計、自由項目、ＣＡＳＨＰＯＳＴ契約番号、サービス契約番号の編集
		int kmkCount = -1;
		int sumSohu = 0;
		StringBuffer frrKmk = new StringBuffer();
		StringBuffer svcKeiNo = new StringBuffer();
		StringBuffer cashpostKeiNo = new StringBuffer();
		for (HashMap<String, String> map : saveList)
		{
			kmkCount++;
			int sohu = Integer.parseInt(map.get(JBSbatKKIFM893.SOHU_AMNT));
			sumSohu = sumSohu + sohu;
			if (0 < kmkCount)
			{
				frrKmk.append(STR_SEP_SLASH);
				cashpostKeiNo.append(STR_SEP_SLASH);
				svcKeiNo.append(STR_SEP_SLASH);
			}
			frrKmk.append(STR_FREE_HEADER);
			frrKmk.append(map.get(JBSbatKK_M_CASHPOST.CASHPOST_CAMPAIGN_NM));
			frrKmk.append(STR_SEP_CAMPNM);

			// ANK-3907-00-00 MOD START
			//frrKmk.append(map.get(JBSbatKKIFM893.SOHU_AMNT));
			frrKmk.append(editAmnt(map.get(JBSbatKKIFM893.SOHU_AMNT), true));
			// ANK-3907-00-00 MOD END

			frrKmk.append(STR_TANI_YEN);
			cashpostKeiNo.append(map.get(JBSbatKK_T_CASHPOST_KEI.CASHPOST_KEI_NO));
			svcKeiNo.append(map.get(JBSbatKK_T_CASHPOST_KEI.SVC_KEI_NO));
		}
		for (int idx = kmkCount + 1; idx < INT_KMK_MAX; idx++)
		{
			if (0 < idx)
			{
				frrKmk.append(STR_SEP_SLASH);
				cashpostKeiNo.append(STR_SEP_SLASH);
				svcKeiNo.append(STR_SEP_SLASH);
			}
			frrKmk.append(STR_FREE_HEADER);
			frrKmk.append(STR_FREE_NASI);
		}

		// ■CASHPOST送金対象情報ファイルの出力
		ArrayList<String> outputInfo = new ArrayList<String>();

		outputInfo.add(String.valueOf(sumSohu)); // 送金額
		outputInfo.add(renkeiMap.get(JBSbatKKIFM893.UKETORI_NINSHO_KEY)); // 受取認証キー１
		outputInfo.add(JKKStringUtil.nullToBlank(renkeiMap.get(JBSbatKKIFM893.MLAD))); // メールアドレス
		outputInfo.add(renkeiMap.get(JBSbatKKIFM893.GUIDE_WAY)); // 案内方法
		outputInfo.add(frrKmk.toString()); // 自由項目
		outputInfo.add(cashpostKeiNo.toString()); // ＣＡＳＨＰＯＳＴ契約番号
		outputInfo.add(JKKStringUtil.nullToBlank(renkeiMap.get(JBSbatKKIFM893.CUST_PCD))); // 郵便番号
		outputInfo.add(JKKStringUtil.nullToBlank(renkeiMap.get(JBSbatKKIFM893.CUST_ADR))); // 住所
		outputInfo.add(JKKStringUtil.nullToBlank(renkeiMap.get(JBSbatKKIFM893.CUST_NM))); // 氏名
		outputInfo.add(svcKeiNo.toString()); // サービス契約番号
		// ANK-4468-07-00 ADD START
		outputInfo.add(JKKStringUtil.nullToBlank(renkeiMap.get(JBSbatKKIFM893.CASHPOST_TEMPLATE_CD))); // テンプレートコード
		outputInfo.add(JKKStringUtil.nullToBlank(renkeiMap.get(JBSbatKKIFM893.SVC_PCRS_CD))); // 料金コースコード
		// ANK-4468-07-00 ADD END

		JKKBatCommon.printDoubleQuoteBusinessFileUtil(KKIFM893FileObj, outputInfo);

		return true;
	}

	/**
	 * 連携情報の取得。
	 * 
	 * <br>
	 * @param  saveList CASHPOST契約内容
	 * @return 連携情報（住所、氏名、メールアドレス）
	 * @throws Exception 
	 */
	private HashMap<String, String> getRenkeiInfo(ArrayList<HashMap<String, String>> saveList) throws Exception
	{
		HashMap<String, String> resultMap = new HashMap<String, String>();

		// ■明細１件目からキー情報を取得
		HashMap<String, String> dataMap = saveList.get(FIRST_REC);

		//■ お客様
		executeCK_T_CUST_KK_SELECT_075(new String[] { dataMap.get(JBSbatKK_T_SVC_KEI.SYSID), this.opeDate });
		JBSbatCommonDBInterface custInfo = db_CK_T_CUST.selectNext();

		StringBuffer msgStr = new StringBuffer();
		msgStr.append("[SYSID:");
		msgStr.append(dataMap.get(JBSbatKK_T_SVC_KEI.SYSID));
		msgStr.append("][サービス契約回線内訳番号:");
		msgStr.append(dataMap.get(JBSbatKK_T_KAISEN_TG_SVKEI.SVC_KEI_KAISEN_UCWK_NO));
		msgStr.append("]");

		// お客様に存在しないSYSIDの場合、チェックエラーとする
		if (null == custInfo)
		{
			// 『%1%テーブルに%2%が存在しません。（key：%3%）』（ありえない前提）
			printBusinessError(JPCBatchMessageConstant.EKKB0630NW, new String[] { "お客様", "SYSID", msgStr.toString() });
			return null;
		}

		resultMap.put(JBSbatKKIFM893.CUST_NM, custInfo.getString(JBSbatCK_T_CUST.CUST_NM));
		resultMap.put(JBSbatKKIFM893.UKETORI_NINSHO_KEY, custInfo.getString(JBSbatCK_T_CUST.SHK_EOID));

		String keishaTypeCd = JKKStringUtil.nullToBlank(custInfo.getString(JBSbatCK_T_CUST.KEISHA_TYPE_CD));

		if (JBSbatKKConst.KEISHA_TYPE_CD_KOJIN.equals(keishaTypeCd))
		{
			//■ 契約者タイプコードが個人の場合は、利用場所住所取得
			executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_059(new String[] { dataMap.get(JBSbatKK_T_KAISEN_TG_SVKEI.SVC_KEI_KAISEN_UCWK_NO) });
			JBSbatCommonDBInterface kaisenInfo = db_KK_T_SVKEI_KAISEN_UW.selectNext();
			if (null == kaisenInfo)
			{
				// 『%1%テーブルに%2%が存在しません。（key：%3%）』（ありえない前提）
				printBusinessError(JPCBatchMessageConstant.EKKB0630NW, new String[] { "サービス契約回線内訳", "サービス契約回線内訳番号", msgStr.toString() });
				return null;
			}
			resultMap.put(JBSbatKKIFM893.CUST_PCD, JKKStringUtil.nullToBlank(kaisenInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD)));
			resultMap.put(JBSbatKKIFM893.CUST_ADR, getAdr(kaisenInfo, KAISEN_ADR));
		}
		else if (JBSbatKKConst.KEISHA_TYPE_CD_HOJIN.equals(keishaTypeCd))
		{
			//■ 契約者タイプコードが法人の場合は、契約者住所
			resultMap.put(JBSbatKKIFM893.CUST_PCD, JKKStringUtil.nullToBlank(custInfo.getString(JBSbatCK_T_CUST.KEISHA_PCD)));
			resultMap.put(JBSbatKKIFM893.CUST_ADR, getAdr(custInfo, KEISHA_ADR));
		}
		else
		{
			//■ その他は対象外（ありえない前提）
			// 『コード値が不正です。(%1%)』
			printBusinessError(JPCBatchMessageConstant.EKKB1970KW, new String[] { "契約者タイプコード対象外" + msgStr.toString() });
			return null;
		}

		//■ 契約先メールアドレス
		JBSbatCommonDBInterface opsvkeiInfo = geKeiyakuMailAdr(saveList);
		if (null == opsvkeiInfo)
		{
			//■ 連絡先メールアドレス
			// ANK-4229-00-00 MOD START
//			executeCK_T_RRKS_KK_SELECT_008(new String[] { dataMap.get(JBSbatKK_T_SVC_KEI.SYSID), this.opeDate });
			executeCK_T_RRKS_KK_SELECT_011(new String[] { dataMap.get(JBSbatKK_T_SVC_KEI.SYSID), this.opeDate });
			// ANK-4229-00-00 MOD START
			JBSbatCommonDBInterface rrksInfo = db_CK_T_RRKS.selectNext();
			if (null == rrksInfo)
			{
				resultMap.put(JBSbatKKIFM893.MLAD, STR_EMPTY);
			}
			else
			{
				resultMap.put(JBSbatKKIFM893.MLAD, rrksInfo.getString(JBSbatCK_T_RRKS.MLAD));
			}
		}
		else
		{
			resultMap.put(JBSbatKKIFM893.MLAD, opsvkeiInfo.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD));
		}

		String guide_way = GUIDE_WAY_MAIL;
		if (JKKStringUtil.isNullEmpty(resultMap.get(JBSbatKKIFM893.MLAD)))
		{
			guide_way = GUIDE_WAY_NASI;
		}
		
		resultMap.put(JBSbatKKIFM893.GUIDE_WAY, guide_way);
		
		// ANK-4468-07-00 ADD START
		resultMap.put(JBSbatKKIFM893.CASHPOST_TEMPLATE_CD, dataMap.get(JBSbatKK_M_CASHPOST.TEMPLATE_CD)); // テンプレートコード
		resultMap.put(JBSbatKKIFM893.SVC_PCRS_CD, dataMap.get(JBSbatKK_T_SVC_KEI.PCRS_CD)); // 料金コースコード
		// ANK-4468-07-00 ADD END
		
		return resultMap;
	}

	/**
	 * 契約先メールアドレスを取得する。（サービス契約番号）
	 * 
	 * <br>
	 * @param saveList 退避リスト
	 * @return JBSbatCommonDBInterface
	 * @throws Exception 
	 */
	private JBSbatCommonDBInterface geKeiyakuMailAdr(ArrayList<HashMap<String, String>> saveList) throws Exception
	{
		JBSbatCommonDBInterface opsvkeiInfo = null;
		for (HashMap<String, String> dataMap : saveList)
		{
			String svcKeiNo = dataMap.get(JBSbatKK_T_CASHPOST_KEI.SVC_KEI_NO);
			executeKK_T_OPSVKEI_ISP_KK_SELECT_034(new String[] { svcKeiNo, this.opeDate });
			opsvkeiInfo = db_KK_T_OPSVKEI_ISP.selectNext();
			if (null != opsvkeiInfo)
			{
				return opsvkeiInfo;
			}
		}

		return opsvkeiInfo;

	}

	/**
	 * 住所編集。
	 * 
	 * <br>
	 * @param info 住所情報
	 * @param itemList 住所情報の項目名
	 * @return 住所編集結果
	 * @throws Exception 
	 */
	private String getAdr(JBSbatCommonDBInterface info, List<String> itemList) throws Exception
	{
		// 都道府県名＋市区町村名＋大字通称名
		// ＋字丁目名＋番地号＋建物名
		// ＋(全角スペース)＋部屋番号

		StringBuffer sb = new StringBuffer();
		for (int idx = 0; idx < itemList.size(); idx++)
		{
			if (idx == INT_HEYA_ITEMNO)
			{
				String heya = JKKStringUtil.nullToBlank(info.getString(itemList.get(6)));
				if (!JKKStringUtil.isNullEmpty(heya))
				{
					sb.append(STR_SEP_HEYA);
					sb.append(heya);
				}
			}
			else
			{
				sb.append(JKKStringUtil.nullToBlank(info.getString(itemList.get(idx))));
			}
		}

		return sb.toString();
	}

	/**
	 * メッセージ出力用の編集を行う。（サービス契約番号）
	 * 
	 * <br>
	 * @param dataList 退避リスト
	 * @return サービス契約番号のカンマ区切り
	 */
	private String getSvcKeiNoStr(ArrayList<HashMap<String, String>> dataList)
	{

		StringBuffer sb = new StringBuffer();
		HashMap<String, String> outKeyMap = new HashMap<String, String>();
		for (HashMap<String, String> dataMap : dataList)
		{
			String svcKeiNo = dataMap.get(JBSbatKK_T_CASHPOST_KEI.SVC_KEI_NO);
			if (outKeyMap.containsKey(svcKeiNo))
			{
				// 同一サービス契約番号は、除外する。
				continue;
			}
			outKeyMap.put(svcKeiNo, svcKeiNo);
			if (sb.length() > 0)
			{
				sb.append(JKKBatConst.CONMA);
			}
			sb.append(svcKeiNo);
		}

		return "[お客さまID：" + sb.toString() + "]";

	}

	/**
	 * 警告メッセージ出力。
	 * 
	 * <br>
	 * @param msgId メッセージID
	 * @param chngMsgStr メッセージ置換文字列
	 */
	private void printBusinessError(String msgId, String[] chngMsgStr)
	{
		if (chngMsgStr == null)
		{
			super.logPrint.printBusinessErrorLog(msgId);
		}
		else
		{
			super.logPrint.printBusinessErrorLog(msgId, chngMsgStr);
		}
	}

	/**
	 * 情報メッセージ出力
	 * 
	 * <br>
	 * @param msg メッセージ
	 */
	private void printInfoLog(String msg)
	{
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB1200AI, new String[]{msg});
	}

	/**
	 * CASHPOST契約をSQLKEY(KK_SELECT_002)で<br>
	 * DBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	運用日付 × 5
	 * </pre>
	 * <p>
	 * @param setParam バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CASHPOST_KEI_KK_SELECT_002(String[] setParam) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		for (int i = 0; i < setParam.length; i++)
		{
			paramList.setValue(setParam[i]);
		}

		db_KK_T_CASHPOST_KEI.selectBySqlDefine(paramList, KK_T_CASHPOST_KEI_KK_SELECT_002);
	}

	/**
	 * お客様をSQLKEY(KK_SELECT_075)で<br>
	 * DBアクセスを行います。<br>
	 * <p>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 *			運用日付
	 * </pre>
	 * <p>
	 * @param setParam バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KK_SELECT_075(String[] setParam) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		for (int i = 0; i < setParam.length; i++)
		{
			paramList.setValue(setParam[i]);
		}

		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_075);
	}

	/**
	 * オプションサービス契約<ISP>をSQLKEY(KK_SELECT_034)で<br>
	 * DBアクセスを行います。<br>
	 * <p>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *			運用日付
	 * </pre>
	 * <p>
	 * @param setParam バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OPSVKEI_ISP_KK_SELECT_034(String[] setParam) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		for (int i = 0; i < setParam.length; i++)
		{
			paramList.setValue(setParam[i]);
		}

		db_KK_T_OPSVKEI_ISP.selectBySqlDefine(paramList, KK_T_OPSVKEI_ISP_KK_SELECT_034);
	}

// ANK-4229-00-00 MOD START
//	/**
//	 * 連絡先をSQLKEY(KK_SELECT_008)で<br>
//	 * DBアクセスを行います。<br>
//	 * <p>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でバイント変数を設定します。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
//	 *		 	SYSID
//	 *			運用日付
//	 * </pre>
//	 * <p>
//	 * @param setParam バイント変数の値配列。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeCK_T_RRKS_KK_SELECT_008(String[] setParam) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//
//		for (int i = 0; i < setParam.length; i++)
//		{
//			paramList.setValue(setParam[i]);
//		}
//
//		db_CK_T_RRKS.selectBySqlDefine(paramList, CK_T_RRKS_KK_SELECT_008);
//	}

	/**
	 * 連絡先をSQLKEY(KK_SELECT_011)で<br>
	 * DBアクセスを行います。<br>
	 * <p>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 *			運用日付
	 * </pre>
	 * <p>
	 * @param setParam バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_RRKS_KK_SELECT_011(String[] setParam) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		for (int i = 0; i < setParam.length; i++)
		{
			paramList.setValue(setParam[i]);
		}

		db_CK_T_RRKS.selectBySqlDefine(paramList, CK_T_RRKS_KK_SELECT_011);
	}
// ANK-4229-00-00 MOD END

	/**
	 * サービス契約回線内訳をSQLKEY(KK_SELECT_059)で<br>
	 * DBアクセスを行います。<br>
	 * <p>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約回線内訳番号
	 * </pre>
	 * <p>
	 * @param setParam バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_059(String[] setParam) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		for (int i = 0; i < setParam.length; i++)
		{
			paramList.setValue(setParam[i]);
		}

		db_KK_T_SVKEI_KAISEN_UW.selectBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_SELECT_059);
	}

	// ANK-3907-00-00 ADD START
	/**
	 * 金額を編集します。
	 * <br>
	 * @param amnt 金額
	 * @param zenkaku 全角変換フラグ
	 * @return 編集結果
	 */
	private String editAmnt(String amnt, boolean zenkaku)
	{
		String result = amnt;

		try
		{
			long val = Long.parseLong(amnt);

			// 3桁区切り
			NumberFormat nf = NumberFormat.getNumberInstance();
			result = nf.format(val);

			if (zenkaku)
			{
				// 全角変換

				// 半角 → 全角
				StringBuilder sb = new StringBuilder(result);
				for (int i = 0; i < result.length(); i++)
				{
					char c = result.charAt(i);

					// 変換対象：0〜9、半角カンマ
					if ((0x30 <= c && c <= 0x39) || c == 0x2C)
					{
						sb.setCharAt(i, (char)(c + 0xFEE0));
					}
				}

				// 変換後の値を設定
				result = sb.toString();
			}
		}
		catch (Exception e)
		{
			// 変換時にエラーの場合は変換しない
			result = amnt;
		}

		return result;
	}
	// ANK-3907-00-00 ADD END

}
