/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHCvstrNkinDataDchs
*	ソースファイル名	：JBSbatCHCvstrNkinDataDchs.java
*	作成者				：富士通　
*	作成日				：2011年12月05日
*＜機能概要＞
*　コンビニ入金データ抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/05   富士通		新規作成
*	v3.00.00	2012/08/28   FJ)成田	【TG1-2012-0000145】パラメータ取得部品の共通化、それに伴う不要な初期化削除、クローズ処理を追加。
*	v3.01.00	2012/10/05   FJ)岡田	【ST1-2012-0000681】妥当性チェック追加
*	v4.00.00	2012/12/19   FJ)加島	【ST1-2012-0000878】レコード総件数出力エラー対応
*	v36.00.00	2018/02/14   FJ)平野	【ANK-3339-00-00】請求先番号21番台枯渇による対応
*	v52.00.00	2020/11/12	FJ)星野		【ANK-3838-0000】窓口払い手数料の顧客負担方式導入
*	v52.00.01	2020/12/21	FJ) 星野    【ANK-3838-32-00】窓口払い手数料の顧客負担方式導入 コンビニ会社コードの４分割化
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;


import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.util.file.JBSbatCHIFE022;
import eo.business.util.file.JBSbatCHIFM016;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.util.JBSbatCheckUtil;
import eo.framework.application.JBSbatBusinessException;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHCvstrNkinDataDchs extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 退避.前レコード区分 */
	private String 				bfRcdKbn 				= null;
	/** 退避.企業コード */
	private String 				compCd 					= null;
	/** 退避.速報件数 */
	private int 					skhCnt 					= 0;
	/** 退避.速報金額 */
	private int 					skhAmnt 				= 0;
	/** 退避.確報件数 */
	private int 					kkhCnt 					= 0;
	/** 退避.確報金額 */
	private int 					kkhAmnt 				= 0;
	/** 退避.速報取消し件数 */
	private int 					skhDelCnt 				= 0;
	/** 退避.速報取消し金額 */
	private int 					skhDelAmnt 				= 0;
	/** 退避.入力レコード数 */
	private int 					inRecCnt 				= 0;
	/** 退避.設定用_法人_速報件数 */
	private int 					hjnSkhCnt 				= 0;
	/** 退避.設定用_法人_速報金額 */
	private int 					hjnSkhAmnt				= 0;
	/** 退避.設定用_法人_確報件数 */
	private int 					hjnKkhcnt				= 0;
	/** 退避.設定用_法人_確報金額 */
	private int 					hjnKkhAmnt				= 0;
	/** 退避.設定用_法人_速報取消し件数 */
	private int 					hjnSkhDelCnt			= 0;
	/** 退避.設定用_法人_速報取消し金額 */
	private int 					hjnSkhDelAmnt			= 0;
	/** 退避.設定用_法人_入力レコード数 */
	private int 					hjnInRecCnt				= 0;
	/** 退避.抽出対象 */
	private String 				chsTarget 		= null;
	/** 出力用エラー情報マップ */
	private Map<String, String> 	errorInfoMap 	= null;
	/** エラー判定フラグ */
	private String 				taihiErrCd		= null;
	/** CH_ */
	private String 				errCDinitial 	= null;
	/** 退避.コンビニ入金情報マップ */
	JBSbatServiceInterfaceMap 		taihiCvsNknMap  = new JBSbatServiceInterfaceMap();
// ANK-3339-00-00 MOD START
//	/** コンシューマ識別子 */
//	private String 				consuSkbt 		= null;
	/** コンシューマ識別子（複数値） */
	private String[]				consuSkbts   = null;
// ANK-3339-00-00 MOD END
	
	/** ヘッダ:作成年月日 */
	private static final String HD_MAKE_YMD 		= "HD_MAKE_YMD";
	/** ヘッダ:企業コード */
	private static final String HD_COMP_CD 		= "HD_COMP_CD";
	/** ヘッダ:種別 */
	private static final String HD_SBT 			= "HD_SBT";
	/** ヘッダ:支払予定日 */
	private static final String HD_PAY_DAY 		= "HD_PAY_DAY";
	/** ヘッダ:予備 */
	private static final String HD_YOBI 			= "HD_YOBI";

	/** データ:種別 */
	private static final String DT_SBT 			= "DT_SBT";
	/** データ:収納年月日 */
	private static final String DT_KKN_YMD 		= "DT_KKN_YMD";
	/** データ:収納時分 */
	private static final String DT_KKN_TM 		= "DT_KKN_TM";
	/** データ:予備１ */
	private static final String DT_YOBI_1 		= "DT_YOBI_1";
	/** データ:請求月 */
	private static final String DT_SKY_MON 		= "DT_SKY_MON";
	/** データ:請求年 */
	private static final String DT_CUST_SKY_YEAR 	= "DT_CUST_SKY_YEAR";
	/** データ:群番号 */
	private static final String DT_CUST_GUN 		= "DT_CUST_GUN";
	/** データ:発行シーケンス */
	private static final String DT_CUST_HK_SEQ 	= "DT_CUST_HK_SEQ";
	/** データ:予備２ */
	private static final String DT_YOBI_2 		= "DT_YOBI_2";
	/** データ:請求先番号 */
	private static final String DT_CUST_SKY_NO 	= "DT_CUST_SKY_NO";
	/** データ:予備３ */
	private static final String DT_YOBI_3 		= "DT_YOBI_3";
	/** データ:収納金額 */
	private static final String DT_KKN_AMNT 		= "DT_KKN_AMNT";
	/** データ:予備４ */
	private static final String DT_YOBI_4 		= "DT_YOBI_4";
	/** データ:収納店舗コード */
	private static final String DT_KKN_TENCD 		= "DT_KKN_TENCD";
	/** データ:支払予定日 */
	private static final String DT_PAY_DAY 		= "DT_PAY_DAY";
	/** データ:予備５ */
	private static final String DT_YOBI_5 		= "DT_YOBI_5";
	/** データ:CVSコード */
	private static final String DT_CVS_CD 		= "DT_CVS_CD";
	/** データ:予備６ */
	private static final String DT_YOBI_6 		= "DT_YOBI_6";
// ANK-3838-00-00対応 20201112 星野 ADD START
	/** データ:コンビニ負担方式　さくらＫＣＳの場合のみ使用 */
	private static final String DT_CVSTORE_FTN_HOSHIKI = "DT_CVSTORE_FTN_HOSHIKI";
// ANK-3838-00-00対応 20201112 星野 ADD END

	/** トレーラ:速報件数 */
	private static final String TR_SOK_CNT 		= "TR_SOK_CNT";
	/** トレーラ:速報金額 */
	private static final String TR_SOK_AMNT 		= "TR_SOK_AMNT";
	/** トレーラ:確報件数 */
	private static final String TR_FIX_CNT 		= "TR_FIX_CNT";
	/** トレーラ:確報金額 */
	private static final String TR_FIX_AMNT 		= "TR_FIX_AMNT";
	/** トレーラ:速報取消件数 */
	private static final String TR_CL_CNT 		= "TR_CL_CNT";
	/** トレーラ:速報取消金額 */
	private static final String TR_CL_AMNT 		= "TR_CL_AMNT";
	/** トレーラ:予備 */
	private static final String TR_YOBI 			= "TR_YOBI";

	/** エンド:総件数 */
	private static final String ED_ALL_CNT 		= "ED_ALL_CNT";
	/** エンド:予備 */
	private static final String ED_OYBI 			= "ED_OYBI";
	
	/** 抽出対象判定:コンシューマ */
	private static final String CH_TG_CONS 		= "1";
	/** 抽出対象判定:法人 */
	private static final String CH_TG_JURI 		= "2";
// ANK-3838-00-00対応 20201112 星野 ADD START
	/** 抽出対象判定:コンシューマ（さくらＫＣＳ） */
	private static final String CH_TG_CONS_SAKURA 		= "3";
// ANK-3838-00-00対応 20201112 星野 ADD END

	/** トレーラ：件数桁数 */
	private static final int TR_CNT_NO			= 6;
	/** トレーラ：金額桁数 */
	private static final int TR_AMNT_NO			= 11;
	/** エンド：件数桁数 */
	private static final int EN_CNT_NO			= 11;

	/** パラメータ取得部品 */
	private JACbatParamUtil paramUtil = null;

	private String    compCdMae  = null;		// 前回企業コード
	private String    compCdAto  = null;		// 今回企業コード
	private boolean  procFlg    = false;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");

		// コンビニ入金データ抽出処理 1:コンシューマ 2:法人 3:コンシューマ（さくらＫＣＳ）
		this.chsTarget = super.freeItem;
		
		paramUtil = new JACbatParamUtil(commonItem);
// ANK-3339-00-00 MOD START
//		this.consuSkbt = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_CSM_DATA_SKBT_CD);;
		this.consuSkbts = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_CSM_DATA_SKBT_CD).split(",");
// ANK-3339-00-00 MOD END
		// エラー内容取得
		getErrorInfoMap();

		// エラーコードの頭に付与する文字列("CH_")作成
		this.errCDinitial = super.systemCode + JACStrConst.UNDER_BAR;

		paramUtil.close();

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * エラー内容を取得し、出力用エラー内容マップに格納します。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void getErrorInfoMap() throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getErrorInfoMap]");

		errorInfoMap = new HashMap<String, String>();
		// レコード区分エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB0490AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB0490AE));
		// レコード区分並び順エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB0500AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB0500AE));
		// 企業コード不一致エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1220AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1220AE));
		// 速報合計件数エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1230AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1230AE));
		// 速報合計金額エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1240AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1240AE));
		// 確定合計件数エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1250AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1250AE));
		// 確定合計金額エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1260AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1260AE));
		// 取消合計件数エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1270AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1270AE));
		// 取消合計金額エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1280AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1280AE));
		// レコード総件数エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1290AE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1290AE));
		
		// 作成年月日エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1300TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1300TE));
		// データ種別エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1310TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1310TE));
		// 収納年月日エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1320TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1320TE));
		// 収納年月日が運用年月より未来の日付になっています
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1330TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1330TE));
		// 収納時分エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1340TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1340TE));
		// 請求先番号エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1350TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1350TE));
		// 請求月エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1360TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1360TE));
		// 発行シーケンスエラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1370TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1370TE));
		// 収納金額エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1380TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1380TE));
		// 支払予定日エラー
		errorInfoMap.put(JACStrConst.WKPARA_CH_ECHB1390TE, paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_ECHB1390TE));

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getErrorInfoMap]");
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @param outputInItem 出力情報
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert inMap 			!= null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][inMap 		= " + inMap.getMap().toString() + "]") : true;
		assert outputInItem 	!= null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][outputInItem 	= " + outputInItem.getOutMapList().toString() + "]") : true;
		assert outputInItem 	!= null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][outputInItem 	= " + outputInItem.getOutMapList_2().toString() + "]") : true;

		// 出力情報データ
		JBSbatServiceInterfaceMap resultMap = new JBSbatServiceInterfaceMap();
		JBSbatServiceInterfaceMap errMap = new JBSbatServiceInterfaceMap();
		
		// 前回のレコードでエラーが発生していた場合
		if(this.taihiErrCd != null)
		{
			// 異常終了させる
			throw new JBSbatBusinessException(this.taihiErrCd);
		}
		
		ArrayList<String> errCdList = new ArrayList<String>();
		// 整合性チェック（レコード順序最終判定）
		if(inMap == null)
		{
			// 入力情報が未設定の場合、前レコード区分が"9"(エンド)であったか確認
			if(!JACStrConst.DATA_KUBUN_END.equals(bfRcdKbn))
			{
				this.taihiErrCd = JPCBatchMessageConstant.ECHB0500AE;
				errMap = setOutMapErr(inMap, this.taihiErrCd);
				outputInItem.addOutMapList_2(errMap);
				return outputInItem;
			}
		}
		else
		{
			// 整合性チェック
			if(JACStrConst.DATA_KUBUN_HEADER.equals(inMap.get(JBSbatCHIFE022.REC_DIV))
					|| JACStrConst.DATA_KUBUN_DATA.equals(inMap.get(JBSbatCHIFE022.REC_DIV))
					|| JACStrConst.DATA_KUBUN_TRAILER.equals(inMap.get(JBSbatCHIFE022.REC_DIV))
					|| JACStrConst.DATA_KUBUN_END.equals(inMap.get(JBSbatCHIFE022.REC_DIV)))
			{
				// レコード区分が"1" "2" "8" "9"の場合(正常)、次の処理へ
				// 入力情報マップ詰め替え
				resultMap = makeInfoMap(inMap);
			}
			else
			{
				this.taihiErrCd = JPCBatchMessageConstant.ECHB0490AE;
				// 上記レコード区分以外の場合(エラー)
				// 出力ファイル編集
				errMap = setOutMapErr(inMap, this.taihiErrCd);
				outputInItem.addOutMapList_2(errMap);
				return outputInItem;
			}
		}
		
		// ダミーレコード設定
		if(bfRcdKbn == null)
		{
			// --------------------------------------------------
			// １件目のレコードはこのIF文内で完結するため、
			// データチェックされずに終了する。
			// そのため、レコードのチェックは退避マップに格納した
			// １件前のデータを下に後続の処理を行う
			// --------------------------------------------------
			
			// 入力.レコード区分を退避に格納
			this.bfRcdKbn = inMap.getString(JBSbatCHIFE022.REC_DIV);
			// ダミーレコード設定
			outputInItem.addOutMapList(new JBSbatServiceInterfaceMap());
			// 
			this.compCd = resultMap.getString(HD_COMP_CD);
			this.taihiCvsNknMap = resultMap;
			return outputInItem;
		}

		// 整合性チェック（レコード順序）
		// 退避.レコード区分が"9"(エンド)か未設定の場合
		if(JACStrConst.DATA_KUBUN_END.equals(bfRcdKbn)
			|| bfRcdKbn == null)
		{
			if(inMap != null)
			{
				// 入力.レコード区分が"1"
				if(JACStrConst.DATA_KUBUN_HEADER.equals(inMap.get(JBSbatCHIFE022.REC_DIV)))
				{
					this.compCdMae = compCd; 	//前回分取得
					procFlg = true;
					this.compCd = resultMap.getString("HD_COMP_CD");
				}
				else
				{
					this.taihiErrCd = JPCBatchMessageConstant.ECHB0500AE;
					errMap = setOutMapErr(inMap, this.taihiErrCd);
					outputInItem.addOutMapList_2(errMap);
					return outputInItem;
				}
			}
		}
		// 退避.レコード区分が"1"(ヘッダ)か"2"(データ)の場合
		else if (JACStrConst.DATA_KUBUN_HEADER.equals(bfRcdKbn)
				|| JACStrConst.DATA_KUBUN_DATA.equals(bfRcdKbn))
		{
			// 入力.レコード区分が"2"(データ)と"8"(トレーラ)以外
			if(!JACStrConst.DATA_KUBUN_DATA.equals(inMap.get(JBSbatCHIFE022.REC_DIV))
					&& !JACStrConst.DATA_KUBUN_TRAILER.equals(inMap.get(JBSbatCHIFE022.REC_DIV)))
			{
				this.taihiErrCd = JPCBatchMessageConstant.ECHB0500AE;
				errMap = setOutMapErr(inMap, this.taihiErrCd);
				outputInItem.addOutMapList_2(errMap);
				return outputInItem;
			}

			// 整合性チェック(企業コード)
// ANK-3838-00-00対応 20201112 星野 ADD START
			// さくらＫＣＳの場合
			if(chsTarget.equals(CH_TG_CONS_SAKURA))
			{
				// 退避している「企業コード」が通常分またはリアル分でない場合
// ANK-3838-32-00対応 20201221 星野 MOD START
//				if(!JACStrConst.KIGYO_CD_TUJO_SAKURA.equals(this.compCd) && !JACStrConst.KIGYO_CD_REAL_SAKURA.equals(this.compCd))
				if( !JACStrConst.KIGYO_CD_TUJO_CUST_FTN_SAKURA.equals(this.compCd) 
					&& !JACStrConst.KIGYO_CD_TUJO_COMP_FTN_SAKURA.equals(this.compCd) 
					&& !JACStrConst.KIGYO_CD_REAL_CUST_FTN_SAKURA.equals(this.compCd)
					&& !JACStrConst.KIGYO_CD_REAL_COMP_FTN_SAKURA.equals(this.compCd)
				)
// ANK-3838-32-00対応 20201221 星野 MOD END
				{
					this.taihiErrCd = JPCBatchMessageConstant.ECHB1220AE;
					errMap = setOutMapErr(inMap, this.taihiErrCd);
					outputInItem.addOutMapList_2(errMap);
					return outputInItem;
				}
			}
			else
			{
// ANK-3838-00-00対応 20201112 星野 ADD END
				// 退避している「企業コード」が通常分またはリアル分でない場合
				if(!JACStrConst.KIGYO_CD_TUJO.equals(this.compCd) && !JACStrConst.KIGYO_CD_REAL.equals(this.compCd))
				{
					this.taihiErrCd = JPCBatchMessageConstant.ECHB1220AE;
					errMap = setOutMapErr(inMap, this.taihiErrCd);
					outputInItem.addOutMapList_2(errMap);
					return outputInItem;
				}
// ANK-3838-00-00対応 20201112 星野 ADD START
			}
// ANK-3838-00-00対応 20201112 星野 ADD END
		}
		// 退避.レコード区分が"8"(トレーラ)の場合
		else if(JACStrConst.DATA_KUBUN_TRAILER.equals(bfRcdKbn))
		{
			// 入力.レコード区分が"9"(エンド)以外
			if(!JACStrConst.DATA_KUBUN_END.equals(inMap.get(JBSbatCHIFE022.REC_DIV)))
			{
				this.taihiErrCd = JPCBatchMessageConstant.ECHB0500AE;
				errMap = setOutMapErr(inMap, this.taihiErrCd);
				outputInItem.addOutMapList_2(errMap);
				return outputInItem;
			}
		}
		
		// 妥当性チェック
		if (inMap != null)
		{
			// 入力.レコード区分が"1"(ヘッダ)の場合
			if(JACStrConst.DATA_KUBUN_HEADER.equals(bfRcdKbn))
			{	
				// ヘッダレコード妥当性チェック
				errCdList = checkHdRcd(taihiCvsNknMap);
			}
			// 入力.レコード区分が"2"(データ)の場合
			else if (JACStrConst.DATA_KUBUN_DATA.equals(bfRcdKbn))
			{
				// データレコード妥当性チェック
				errCdList = checkDtRcd(taihiCvsNknMap);
			}
			
			// 入力チェック結果判定
			if (errCdList.size() > 0)
			{
				Iterator<String> itr = errCdList.iterator();
				while (itr.hasNext())
				{
					// エラーコード取得
					String errorCode = itr.next();
					// コンビニ入金情報エラーデータ（妥当性）作成
					JBSbatServiceInterfaceMap newErrMap = setOutMapDtErr(taihiCvsNknMap, errorCode);
					// コンビニ入金情報エラーデータ（妥当性）出力
					outputInItem.addOutMapList_2(newErrMap);
				}
				
				// 妥当性チェック後のレコード数、カウントアップ処理
				recodeCntUp(taihiCvsNknMap);
				
				// カレントレコードの退避
				bfRcdKbn = inMap.getString(JBSbatCHIFE022.REC_DIV);
				taihiCvsNknMap = resultMap;
				return outputInItem;
			}
		}
		
		// 合計項目チェック
		errCdList = checkSumItem();
		if(procFlg)
		{
			this.compCdAto = compCd;
			this.compCd = compCdMae;
		}
		int i = 0;
		if(errCdList.size() != i)
		{
			while(errCdList.size() > i)
			{
				this.taihiErrCd = errCdList.get(i);
				errMap = setOutMapErr(inMap, this.taihiErrCd);
				outputInItem.addOutMapList_2(errMap);
				errMap = new JBSbatServiceInterfaceMap();
				i++;
			}
			// エラーとなったのがトレーラかエンドか判定
			if(JACStrConst.DATA_KUBUN_TRAILER.equals(bfRcdKbn))
			{
				// 各項目の初期化
				this.skhCnt 		= 0;
				this.skhAmnt 		= 0;
				this.kkhCnt 		= 0;
				this.kkhAmnt 		= 0;
				this.skhDelCnt 		= 0;
				this.skhDelAmnt 	= 0;
			}
			else
			{
				// 退避.総件数初期化
				this.inRecCnt 		= 0;
			}
			// 退避.エラーコードを初期化
			this.taihiErrCd = null;
		}
		// 出力判定・作成
		judgmentDataExtraction(outputInItem);
		if(procFlg)
		{
			this.compCd = compCdAto;
			procFlg = false;
		}
		// 退避処理
		if(inMap != null)
		{
			this.bfRcdKbn = inMap.getString(JBSbatCHIFE022.REC_DIV);
			this.taihiCvsNknMap = resultMap;
		}
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputInItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 出力ファイル編集：エラー(整合性)
	 * @param  inMap  		入力電文
	 * @param  errCd 	エラーコード
	 * @return errMakeMap	処理結果情報
	 * @throws Exception 	業務サービス内で発生した例外全般
	 */
	public JBSbatServiceInterfaceMap setOutMapErr(JBSbatServiceInterfaceMap inMap, String errCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setOutMapErr1]");
		
		// マップ項目の初期化処理
		JBSbatServiceInterfaceMap errMakeMap = getInitMap(errCd);
		
		String payDay = null;

		// エラーコードが"ECHB0490AE"以外の場合
		if(!taihiErrCd.equals(JPCBatchMessageConstant.ECHB0490AE))
		{			
			//  4.レコード区分
			errMakeMap.set(JBSbatCHIFM016.REC_DIV, this.bfRcdKbn);
			// レコード区分が"1"(ヘッダ)の場合
			if(JACStrConst.DATA_KUBUN_HEADER.equals(this.bfRcdKbn))
			{
				//  5.データ種別１
				errMakeMap.set(JBSbatCHIFM016.DATA_SBT_1, 	this.taihiCvsNknMap.getString(HD_SBT));
				//  6.企業コード１
				errMakeMap.set(JBSbatCHIFM016.COMP_CD_1, 	this.taihiCvsNknMap.getString(HD_COMP_CD));
				//  7.支払予定日１
				// 退避マップより支払予定日を取得
				payDay = this.taihiCvsNknMap.getString(HD_PAY_DAY);
				// 支払予定日がyyyy/MM/ddに変換可能であれば
				if(JPCUtilCommon.formatDate(this.taihiCvsNknMap.getString(HD_PAY_DAY)).length() > 8)
				{
					// 支払予定日をyyyy//MM/ddに変換後、yy/MM/ddを切り取り格納
					payDay = JPCUtilCommon.formatDate(payDay).substring(2, 10);
				}
				errMakeMap.set(JBSbatCHIFM016.PAY_RSVD_1, 	payDay);
			}
			// レコード区分が"8"(トレーラ)の場合
			else if(JACStrConst.DATA_KUBUN_TRAILER.equals(this.bfRcdKbn))
			{
				//  8.速報合計件数 カンマ付与
				errMakeMap.set(JBSbatCHIFM016.SOKHO_GOKEI_CNT, 	JPCUtilCommon.formatNumber(Integer.toString(this.skhCnt)));
				//  9.速報合計金額 カンマ付与
				errMakeMap.set(JBSbatCHIFM016.SOKHO_GOKEI_AMNT, JPCUtilCommon.formatNumber(Integer.toString(this.skhAmnt)));
				// 10.確定合計件数 カンマ付与
				errMakeMap.set(JBSbatCHIFM016.FIX_GOKEI_CNT, 	JPCUtilCommon.formatNumber(Integer.toString(this.kkhCnt)));
				// 11.確定合計金額 カンマ付与
				errMakeMap.set(JBSbatCHIFM016.FIX_GOKEI_AMNT, 	JPCUtilCommon.formatNumber(Integer.toString(this.kkhAmnt)));
				// 12.取消合計件数 カンマ付与
				errMakeMap.set(JBSbatCHIFM016.CL_GOKEI_CNT, 	JPCUtilCommon.formatNumber(Integer.toString(this.skhDelCnt)));
				// 13.取消合計金額 カンマ付与
				errMakeMap.set(JBSbatCHIFM016.CL_GOKEI_AMNT, 	JPCUtilCommon.formatNumber(Integer.toString(this.skhDelAmnt)));
			}
			// レコード区分が"9"(エンド)の場合
			else if(JACStrConst.DATA_KUBUN_END.equals(this.bfRcdKbn))
			{
				// 14.レコード件数 カンマ付与
				errMakeMap.set(JBSbatCHIFM016.REC_CNT, 			JPCUtilCommon.formatNumber(Integer.toString(this.inRecCnt)));
			}
		}
		else
		{
			// 27.レコード内容
			errMakeMap.set(JBSbatCHIFM016.REC_NAIYO, inMap.getString(JBSbatCHIFE022.REC_DIV) + inMap.getString(JBSbatCHIFE022.OTHER));
		}
		
		// 囲み文字付加
		errMakeMap.setMap(JCHbatSeikyKaknoBusinessUtil.quote(errMakeMap.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));
		// 出力フラグ
		errMakeMap.setOutFlg(true);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setOutMapErr1][errMakeMap=" + errMakeMap + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setOutMapErr1]");
		
		return errMakeMap;
	}

	/**
	 * 出力ファイル編集：エラー(妥当性)
	 * @param  resultMap  	詰め替え後、入力電文
	 * @param  errCd 		エラーコード
	 * @return errMakeMap	処理結果情報
	 * @throws Exception 	業務サービス内で発生した例外全般
	 */
	public JBSbatServiceInterfaceMap setOutMapDtErr(JBSbatServiceInterfaceMap resultMap, String errCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setOutMapErr1]");

		// マップ項目の初期化処理
		JBSbatServiceInterfaceMap errMakeMap = getInitMap(errCd);
		
		//  4.レコード区分
		errMakeMap.set(JBSbatCHIFM016.REC_DIV, bfRcdKbn);
		
		// ヘッダレコードの妥当性チェック時にエラーの場合
		if(errCd.equals(JPCBatchMessageConstant.ECHB1300TE))
		{
			//  5.データ種別１
			errMakeMap.set(JBSbatCHIFM016.DATA_SBT_1, 	resultMap.getString(HD_SBT));
			//  6.企業コード１
			errMakeMap.set(JBSbatCHIFM016.COMP_CD_1, 	resultMap.get(HD_COMP_CD));
			
			// 退避マップより支払予定日を取得
			String payDay = resultMap.getString(HD_PAY_DAY);
			
			// 支払予定日がyyyy/MM/ddに変換可能であれば
			if(JPCUtilCommon.formatDate(payDay).length() > 8)
			{
				// 支払予定日をyyyy//MM/ddに変換後、yy/MM/ddを切り取り格納
				payDay = JPCUtilCommon.formatDate(payDay).substring(2, 10);
			}
			//  7.支払予定日１
			errMakeMap.set(JBSbatCHIFM016.PAY_RSVD_1, 	payDay);
			
		}
		else
		{
			// 15.データ種別２
			errMakeMap.set(JBSbatCHIFM016.DATA_SBT_2, 		resultMap.get(DT_SBT));
			
			// 退避マップより収納年月日を取得
			String kknYMD = resultMap.getString(DT_KKN_YMD);
			
			// 収納日付がyyyy/MM/ddに変換可能であれば
			if(JPCUtilCommon.formatDate(kknYMD).length() > 8)
			{
				// 収納日付をyyyy//MM/ddに変換後、yy/MM/ddを切り取り格納
				kknYMD = JPCUtilCommon.formatDate(kknYMD).substring(2, 10);
			}
			// 16.収納日付
			errMakeMap.set(JBSbatCHIFM016.KAKNO_YMD, 		kknYMD);
			// 17.収納時間
			errMakeMap.set(JBSbatCHIFM016.KAKNO_TIME, 		resultMap.get(DT_KKN_TM));
			// 18.企業コード２
			errMakeMap.set(JBSbatCHIFM016.COMP_CD_2, 		compCd);
			// 19.請求先番号
			errMakeMap.set(JBSbatCHIFM016.SEIKY_SAKI_NO, 	resultMap.get(DT_CUST_SKY_NO));
			// 20.群
			errMakeMap.set(JBSbatCHIFM016.GUN, 				resultMap.get(DT_CUST_GUN));
			// 21.請求月 請求年＋"/"＋請求月
			errMakeMap.set(JBSbatCHIFM016.SEIKY_MON,  		resultMap.get(DT_CUST_SKY_YEAR) + JACStrConst.SLASH + resultMap.getString(DT_SKY_MON));
			// 22.発行シーケンス
			errMakeMap.set(JBSbatCHIFM016.HAKKO_SEQ, 		resultMap.get(DT_CUST_HK_SEQ));
			// 23.請求額
			errMakeMap.set(JBSbatCHIFM016.SEIKY_AMNT, 		JPCUtilCommon.formatNumber(resultMap.getString(DT_KKN_AMNT)));
			// 24.収納店舗
			errMakeMap.set(JBSbatCHIFM016.KAKNO_TENPO, 		resultMap.get(DT_KKN_TENCD));
			// 退避マップより支払予定日を取得
			String payDay2 = resultMap.getString(DT_PAY_DAY);
			// 支払予定日がyyyy/MM/ddに変換可能であれば
			if(JPCUtilCommon.formatDate(resultMap.getString(DT_PAY_DAY)).length() > 8)
			{
				// 支払予定日をyyyy//MM/ddに変換後、yy/MM/ddを切り取り格納
				payDay2 = JPCUtilCommon.formatDate(payDay2).substring(2, 10);
			}
			// 25.支払予定日２
			errMakeMap.set(JBSbatCHIFM016.PAY_RSVD_2, 		payDay2);
			// 26.CVSコード
			errMakeMap.set(JBSbatCHIFM016.CVS_CD, 			resultMap.get(DT_CVS_CD));
		}
		
		
		// 囲み文字付加
		errMakeMap.setMap(JCHbatSeikyKaknoBusinessUtil.quote(errMakeMap.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));
		// 出力フラグ
		errMakeMap.setOutFlg(true);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setOutMapErr1][errMakeMap=" + errMakeMap + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setOutMapErr1]");
		
		return errMakeMap;
	}

	/**
	 * エラーファイル編集用の初期化レコードを生成します。
	 * @return 初期化データ
	 */
	private JBSbatServiceInterfaceMap getInitMap(String errCd)
	{
		JBSbatServiceInterfaceMap errMakeMap = new JBSbatServiceInterfaceMap();
		//  1.企業コード
		errMakeMap.set(JBSbatCHIFM016.CMN_KMK_COMP_CD, 	compCd);
		//  2.エラー種別
		errMakeMap.set(JBSbatCHIFM016.ERR_SBT, 			JACStrConst.ERR_KUBUN_ERR);
		//  3.エラー内容
		errMakeMap.set(JBSbatCHIFM016.ERR_NAIYO, 		errorInfoMap.get(this.errCDinitial + errCd));
		//  4.レコード区分
		errMakeMap.set(JBSbatCHIFM016.REC_DIV, 			JACStrConst.KARA_MOJI);
		//  5.データ種別１
		errMakeMap.set(JBSbatCHIFM016.DATA_SBT_1, 		JACStrConst.KARA_MOJI);
		//  6.企業コード１
		errMakeMap.set(JBSbatCHIFM016.COMP_CD_1, 		JACStrConst.KARA_MOJI);
		//  7.支払予定日１
		errMakeMap.set(JBSbatCHIFM016.PAY_RSVD_1, 		JACStrConst.KARA_MOJI);
		//  8.速報合計件数
		errMakeMap.set(JBSbatCHIFM016.SOKHO_GOKEI_CNT, 	JACStrConst.KARA_MOJI);
		//  9.速報合計金額
		errMakeMap.set(JBSbatCHIFM016.SOKHO_GOKEI_AMNT, JACStrConst.KARA_MOJI);
		// 10.確定合計件数
		errMakeMap.set(JBSbatCHIFM016.FIX_GOKEI_CNT, 	JACStrConst.KARA_MOJI);
		// 11.確定合計金額
		errMakeMap.set(JBSbatCHIFM016.FIX_GOKEI_AMNT, 	JACStrConst.KARA_MOJI);
		// 12.取消合計件数
		errMakeMap.set(JBSbatCHIFM016.CL_GOKEI_CNT, 	JACStrConst.KARA_MOJI);
		// 13.取消合計金額
		errMakeMap.set(JBSbatCHIFM016.CL_GOKEI_AMNT, 	JACStrConst.KARA_MOJI);
		// 14.レコード件数
		errMakeMap.set(JBSbatCHIFM016.REC_CNT, 			JACStrConst.KARA_MOJI);
		// 15.データ種別２
		errMakeMap.set(JBSbatCHIFM016.DATA_SBT_2, 		JACStrConst.KARA_MOJI);
		// 16.収納日付
		errMakeMap.set(JBSbatCHIFM016.KAKNO_YMD, 		JACStrConst.KARA_MOJI);
		// 17.収納時間
		errMakeMap.set(JBSbatCHIFM016.KAKNO_TIME, 		JACStrConst.KARA_MOJI);
		// 18.企業コード２
		errMakeMap.set(JBSbatCHIFM016.COMP_CD_2, 		JACStrConst.KARA_MOJI);
		// 19.請求先番号
		errMakeMap.set(JBSbatCHIFM016.SEIKY_SAKI_NO, 	JACStrConst.KARA_MOJI);
		// 20.群
		errMakeMap.set(JBSbatCHIFM016.GUN, 				JACStrConst.KARA_MOJI);
		// 21.請求月
		errMakeMap.set(JBSbatCHIFM016.SEIKY_MON, 		JACStrConst.KARA_MOJI);
		// 22.発行シーケンス
		errMakeMap.set(JBSbatCHIFM016.HAKKO_SEQ, 		JACStrConst.KARA_MOJI);
		// 23.請求額
		errMakeMap.set(JBSbatCHIFM016.SEIKY_AMNT, 		JACStrConst.KARA_MOJI);
		// 24.収納店舗
		errMakeMap.set(JBSbatCHIFM016.KAKNO_TENPO, 		JACStrConst.KARA_MOJI);
		// 25.支払予定日２
		errMakeMap.set(JBSbatCHIFM016.PAY_RSVD_2, 		JACStrConst.KARA_MOJI);
		// 26.CVSコード
		errMakeMap.set(JBSbatCHIFM016.CVS_CD, 			JACStrConst.KARA_MOJI);
		// 27.レコード内容
		errMakeMap.set(JBSbatCHIFM016.REC_NAIYO, 		JACStrConst.KARA_MOJI);
		
		return errMakeMap;
	}
	
	
	/**
	 * 入力情報マップ詰め替え
	 * @param inMap  		入力電文
	 * @return resultMap	処理結果情報
	 * @throws Exception
	 */
	public JBSbatServiceInterfaceMap makeInfoMap(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeInfoMap]");
		JBSbatServiceInterfaceMap inDataMap = new JBSbatServiceInterfaceMap();
		// 入力情報．レコード区分が「"1"：ヘッダレコード」
		if(JACStrConst.DATA_KUBUN_HEADER.equals(inMap.getString(JBSbatCHIFE022.REC_DIV)))
		{
			// レコード区分
			inDataMap.setString(JBSbatCHIFE022.REC_DIV, inMap.getString(JBSbatCHIFE022.REC_DIV));
			// 作成年月日
			inDataMap.setString(HD_MAKE_YMD, 		inMap.getString(JBSbatCHIFE022.OTHER).substring(0, 8));
			// 企業コード
			inDataMap.setString(HD_COMP_CD, 		inMap.getString(JBSbatCHIFE022.OTHER).substring(8, 13));
			// 種別
			inDataMap.setString(HD_SBT, 			inMap.getString(JBSbatCHIFE022.OTHER).substring(13, 15));
			// 支払予定日
			inDataMap.setString(HD_PAY_DAY, 		inMap.getString(JBSbatCHIFE022.OTHER).substring(15, 23));
			// 予備
			inDataMap.setString(HD_YOBI, 			inMap.getString(JBSbatCHIFE022.OTHER).substring(23, 99));
		}
		// 入力情報．レコード区分が「"2"：データレコード」
		else if(JACStrConst.DATA_KUBUN_DATA.equals(inMap.getString(JBSbatCHIFE022.REC_DIV)))
		{
			// レコード区分
			inDataMap.setString(JBSbatCHIFE022.REC_DIV, inMap.getString(JBSbatCHIFE022.REC_DIV));
			// 種別
			inDataMap.setString(DT_SBT,			inMap.getString(JBSbatCHIFE022.OTHER).substring(0, 2));
			// 収納年月日
			inDataMap.setString(DT_KKN_YMD,		inMap.getString(JBSbatCHIFE022.OTHER).substring(2, 10));
			// 収納時分
			inDataMap.setString(DT_KKN_TM,		inMap.getString(JBSbatCHIFE022.OTHER).substring(10, 14));
			// 予備１
			inDataMap.setString(DT_YOBI_1,		inMap.getString(JBSbatCHIFE022.OTHER).substring(14, 28));
			// 請求月
			inDataMap.setString(DT_SKY_MON,		inMap.getString(JBSbatCHIFE022.OTHER).substring(28, 30));
			// 顧客番号１
				// 請求年
			inDataMap.setString(DT_CUST_SKY_YEAR,	inMap.getString(JBSbatCHIFE022.OTHER).substring(30, 32));
				// 群番号
			inDataMap.setString(DT_CUST_GUN,		inMap.getString(JBSbatCHIFE022.OTHER).substring(32, 33));
				// 発行シーケンス
			inDataMap.setString(DT_CUST_HK_SEQ,		inMap.getString(JBSbatCHIFE022.OTHER).substring(33, 34));
			// 予備２
			inDataMap.setString(DT_YOBI_2,			inMap.getString(JBSbatCHIFE022.OTHER).substring(34, 36));
			// 顧客番号２
				// 請求先番号
			inDataMap.setString(DT_CUST_SKY_NO,		inMap.getString(JBSbatCHIFE022.OTHER).substring(36, 46));
			// 予備３
			inDataMap.setString(DT_YOBI_3,			inMap.getString(JBSbatCHIFE022.OTHER).substring(46, 54));
			// 収納金額
			inDataMap.setString(DT_KKN_AMNT,		inMap.getString(JBSbatCHIFE022.OTHER).substring(54, 60));
			// 予備４
			inDataMap.setString(DT_YOBI_4,			inMap.getString(JBSbatCHIFE022.OTHER).substring(60, 61));
			// 収納店舗コード
			inDataMap.setString(DT_KKN_TENCD,		inMap.getString(JBSbatCHIFE022.OTHER).substring(61, 68));
			// 支払予定日
			inDataMap.setString(DT_PAY_DAY,			inMap.getString(JBSbatCHIFE022.OTHER).substring(68, 76));
			// 予備５
			inDataMap.setString(DT_YOBI_5,			inMap.getString(JBSbatCHIFE022.OTHER).substring(76, 92));
			// CVSコード
			inDataMap.setString(DT_CVS_CD,			inMap.getString(JBSbatCHIFE022.OTHER).substring(92, 97));
			// 予備６
			inDataMap.setString(DT_YOBI_6,			inMap.getString(JBSbatCHIFE022.OTHER).substring(97, 99));
		}
		// 入力情報．レコード区分が「"8"：トレーラレコード」
		else if(JACStrConst.DATA_KUBUN_TRAILER.equals(inMap.getString(JBSbatCHIFE022.REC_DIV)))
		{
			// レコード区分
			inDataMap.setString(JBSbatCHIFE022.REC_DIV, inMap.getString(JBSbatCHIFE022.REC_DIV));
			// 速報件数
			inDataMap.setString(TR_SOK_CNT, 	inMap.getString(JBSbatCHIFE022.OTHER).substring(0, 6));
			// 速報金額
			inDataMap.setString(TR_SOK_AMNT, 	inMap.getString(JBSbatCHIFE022.OTHER).substring(6, 17));
			// 確報件数
			inDataMap.setString(TR_FIX_CNT, 	inMap.getString(JBSbatCHIFE022.OTHER).substring(17, 23));
			// 確報合計
			inDataMap.setString(TR_FIX_AMNT, 	inMap.getString(JBSbatCHIFE022.OTHER).substring(23, 34));
			// 速報取消し件数
			inDataMap.setString(TR_CL_CNT, 		inMap.getString(JBSbatCHIFE022.OTHER).substring(34, 40));
			// 速報取消し合計
			inDataMap.setString(TR_CL_AMNT, 	inMap.getString(JBSbatCHIFE022.OTHER).substring(40, 51));
			// 予備
			inDataMap.setString(TR_YOBI, 		inMap.getString(JBSbatCHIFE022.OTHER).substring(51, 99));
		}
		// 入力情報．レコード区分が「"9"：エンドレコード」
		else if(JACStrConst.DATA_KUBUN_END.equals(inMap.getString(JBSbatCHIFE022.REC_DIV)))
		{
			// レコード区分
			inDataMap.setString(JBSbatCHIFE022.REC_DIV, inMap.getString(JBSbatCHIFE022.REC_DIV));
			// 総件数
			inDataMap.setString(ED_ALL_CNT, 	inMap.getString(JBSbatCHIFE022.OTHER).substring(0, 11));
			// 予備
			inDataMap.setString(ED_OYBI, 		inMap.getString(JBSbatCHIFE022.OTHER).substring(11, 99));
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeInfoMap][inDataMap=" + inDataMap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeInfoMap]");
		return inDataMap;
	}
	
	/**
	 * ヘッダレコード妥当性チェック
	 * @param  resultMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private ArrayList<String> checkHdRcd(JBSbatServiceInterfaceMap resultMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][checkHdRcd]");
		// エラーコード格納リスト
		ArrayList<String> errCdList = new ArrayList<String>();
		
		// 作成年月日の妥当性チェック
		if(!JPCUtilCommon.checkDate(resultMap.getString(HD_MAKE_YMD), 8))
		{
			errCdList.add(JPCBatchMessageConstant.ECHB1300TE);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][checkHdRcd]");
		
		return errCdList;
	}

	/**
	 * データレコード妥当性チェック
	 * @param  resultMap 入力情報
	 * @return ArrayList エラーコードリスト
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private ArrayList<String> checkDtRcd(JBSbatServiceInterfaceMap resultMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][checkDtRcd]");
		// エラーコード格納リスト
		ArrayList<String> errCdList = new ArrayList<String>();
		
		// 種別
		if(!JACStrConst.SYUBETU_SOKUHOU.equals(resultMap.get(DT_SBT))
			&& !JACStrConst.SYUBETU_KAKUHOU.equals(resultMap.get(DT_SBT))
			&& !JACStrConst.SYUBETU_TORIKESI.equals(resultMap.get(DT_SBT)))
		{
			// 種別が"1" "2" "3"以外
			errCdList.add(JPCBatchMessageConstant.ECHB1310TE);
		}
		// 収納年月日の妥当性チェック
		if(!JPCUtilCommon.checkDate(resultMap.getString(DT_KKN_YMD), 8))
		{
			errCdList.add(JPCBatchMessageConstant.ECHB1320TE);
		}
		// 収納年月日 ≦ バッチ運用日
		else if(!JPCUtilCommon.isPastDate(resultMap.getString(DT_KKN_YMD), super.opeDate, "1"))
		{
			errCdList.add(JPCBatchMessageConstant.ECHB1330TE);
		}
		// 収納時分の妥当性チェック
		if(!JPCUtilCommon.checkTime(resultMap.getString(DT_KKN_TM) + "000", 7))
		{
			errCdList.add(JPCBatchMessageConstant.ECHB1340TE);
		}
		// 請求先番号
		if(!JBSbatCheckUtil.invoke(resultMap.get(DT_CUST_SKY_NO), new String[]{"hannkakusuuji2"}))
		{
			errCdList.add(JPCBatchMessageConstant.ECHB1350TE);
		}
		// 請求月の妥当性チェック
		if(!JBSbatCheckUtil.invoke(resultMap.get(DT_SKY_MON), new String[]{"month1"}))
		{
			errCdList.add(JPCBatchMessageConstant.ECHB1360TE);
		}
		// 発行シーケンスエラー
		if(!JBSbatCheckUtil.invoke(resultMap.get(DT_CUST_HK_SEQ), new String[]{"hannkakusuuji2"}))
		{
			errCdList.add(JPCBatchMessageConstant.ECHB1370TE);
		}
		// 収納金額
		if(!JBSbatCheckUtil.invoke(resultMap.get(DT_KKN_AMNT), new String[]{"hannkakusuuji2"}))
		{
			errCdList.add(JPCBatchMessageConstant.ECHB1380TE);
		}
		// 支払予定日
		// 確報の場合のみ実行
		if(JACStrConst.SYUBETU_KAKUHOU.equals(resultMap.get(DT_SBT)))
		{
			if(!JPCUtilCommon.checkDate(resultMap.getString(DT_PAY_DAY), 8))
			{
				errCdList.add(JPCBatchMessageConstant.ECHB1390TE);
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][checkDtRcd]");
		return errCdList;
	}
	
	/**
	 * ヘッダ、データの妥当性チェック後のレコード数カウントアップ処理
	 * @param resultMap 入力情報（退避情報）
	 * @throws Exception
	 */
	private void recodeCntUp(JBSbatServiceInterfaceMap resultMap) throws Exception
	{
		// 退避.レコード区分が"1"(ヘッダ)の場合
		if(JACStrConst.DATA_KUBUN_HEADER.equals(this.bfRcdKbn))
		{
			// 退避.入力レコード数 = 1
			this.inRecCnt = 1;
		}
		// 退避.レコード区分が"2"(データ)の場合
		else if(JACStrConst.DATA_KUBUN_DATA.equals(this.bfRcdKbn))
		{
			// 退避.入力レコード数 +1
			this.inRecCnt++;
			
			// 退避.コンビニ入金情報マップ内の種別が"01"(速報)の場合
			if(JACStrConst.SYUBETU_SOKUHOU.equals(resultMap.get(DT_SBT)))
			{
				this.skhCnt++;
			}
			// 退避.コンビニ入金情報マップ内の種別が"02"(確報)の場合
			else if(JACStrConst.SYUBETU_KAKUHOU.equals(resultMap.get(DT_SBT)))
			{
				this.kkhCnt++;
			}
			// 退避.コンビニ入金情報マップ内の種別が"03"(取消)の場合
			else if(JACStrConst.SYUBETU_TORIKESI.equals(resultMap.get(DT_SBT)))
			{
				this.skhDelCnt++;
			}
		}
	}
	
	/**
	 * 合計項目チェック
	 * @return errCdList エラーコードリスト
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private ArrayList<String> checkSumItem() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][checkSumItem]");
		
		ArrayList<String> errCdList = new ArrayList<String>();
		// 退避.レコード区分が"1"(ヘッダ)の場合
		if(JACStrConst.DATA_KUBUN_HEADER.equals(this.bfRcdKbn))
		{
			// 退避.入力レコード数 = 1
			this.inRecCnt = 1;
		}
		// 退避.レコード区分が"2"(データ)の場合
		else if(JACStrConst.DATA_KUBUN_DATA.equals(this.bfRcdKbn))
		{
			// 退避.入力レコード数 +1
			this.inRecCnt++;
			// 退避.コンビニ入金情報マップ内の種別が"01"(速報)の場合
			if(JACStrConst.SYUBETU_SOKUHOU.equals(this.taihiCvsNknMap.get(DT_SBT)))
			{
				this.skhCnt++;
				this.skhAmnt		= this.skhAmnt + Integer.parseInt(this.taihiCvsNknMap.getString(DT_KKN_AMNT));
			}
			// 退避.コンビニ入金情報マップ内の種別が"02"(確報)の場合
			else if(JACStrConst.SYUBETU_KAKUHOU.equals(this.taihiCvsNknMap.get(DT_SBT)))
			{
				this.kkhCnt++;
				this.kkhAmnt		= this.kkhAmnt + Integer.parseInt(this.taihiCvsNknMap.getString(DT_KKN_AMNT));
			}
			// 退避.コンビニ入金情報マップ内の種別が"03"(取消)の場合
			else if(JACStrConst.SYUBETU_TORIKESI.equals(this.taihiCvsNknMap.get(DT_SBT)))
			{
				this.skhDelCnt++;
				this.skhDelAmnt 	= this.skhDelAmnt + Integer.parseInt(this.taihiCvsNknMap.getString(DT_KKN_AMNT));
			}
		}
		// 退避.レコード区分が"8"(トレーラ)の場合
		else if(JACStrConst.DATA_KUBUN_TRAILER.equals(this.bfRcdKbn))
		{
			// 退避.入力レコード数 +1
			this.inRecCnt++;
			// 速報件数
			if(isNumberAndCntCheck(skhCnt,  taihiCvsNknMap.getString(TR_SOK_CNT)))
			{
				errCdList.add(JPCBatchMessageConstant.ECHB1230AE);
			}
			// 速報金額
			if(isNumberAndCntCheck(skhAmnt, taihiCvsNknMap.getString(TR_SOK_AMNT)))
			{
				errCdList.add(JPCBatchMessageConstant.ECHB1240AE);
			}
			// 確報件数
			if(isNumberAndCntCheck(kkhCnt, taihiCvsNknMap.getString(TR_FIX_CNT)))
			{
				errCdList.add(JPCBatchMessageConstant.ECHB1250AE);
			}
			// 確報金額
			if(isNumberAndCntCheck(kkhAmnt, taihiCvsNknMap.getString(TR_FIX_AMNT)))
			{
				errCdList.add(JPCBatchMessageConstant.ECHB1260AE);
			}
			// 速報取消し件数
			if(isNumberAndCntCheck(skhDelCnt, taihiCvsNknMap.getString(TR_CL_CNT)))
			{
				errCdList.add(JPCBatchMessageConstant.ECHB1270AE);
			}
			// 速報取消し件数
			if(isNumberAndCntCheck(skhDelAmnt, taihiCvsNknMap.getString(TR_CL_AMNT)))
			{
				errCdList.add(JPCBatchMessageConstant.ECHB1280AE);
			}
		}
		// 退避.レコード区分が"9"(エンド)の場合
		else if(JACStrConst.DATA_KUBUN_END.equals(this.bfRcdKbn))
		{
			// 退避.入力レコード数 +1
			this.inRecCnt++;
			// 総件数
			if(this.inRecCnt != Integer.parseInt(this.taihiCvsNknMap.getString(ED_ALL_CNT)))
			{
				errCdList.add(JPCBatchMessageConstant.ECHB1290AE);
			}
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][checkSumItem]");
		return errCdList;
	}
	
	/**
	 * 合計項目の数値および件数のチェックを行う
	 * @param checkCnt チェック件数
	 * @param strAmnt チェック集計項目
	 * @return チェックエラーが発生した場合にtrueを返却
	 * @throws Exception
	 */
	public boolean isNumberAndCntCheck(int checkCnt, String strAmnt) throws Exception
	{
		// 数値のチェックを行う
		if(!JBSbatCheckUtil.invoke(strAmnt, new String[]{"hannkakusuuji1"}))
		{
			// 数値チェックエラー
			return true;
		}
		
		// 合計(件数・金額)項目の値と、データレコードの対象項目を集計した値を比較する
		if(checkCnt != Integer.parseInt(strAmnt))
		{
			// 件数不一致エラー
			return true;
		}
		
		// チェック正常
		return false;
	}
	

	/**
	 * コンビニ入金データ抽出判定
	 * @param  outputItem 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void judgmentDataExtraction(JBSbatOutputItem outputItem) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][judgmentConsumerDataExtraction]");
		
		// 抽出対象が"1"(コンシューマ) 3:コンシューマ（さくらＫＣＳ）の場合
// ANK-3838-00-00対応 20201112 星野 MOD START
//		if(this.chsTarget.equals(CH_TG_CONS))
		if(this.chsTarget.equals(CH_TG_CONS) || chsTarget.equals(CH_TG_CONS_SAKURA))
// ANK-3838-00-00対応 20201112 星野 MOD END
		{
			// 退避.レコード区分が"2"(データ)以外
			if(!JACStrConst.DATA_KUBUN_DATA.equals(this.bfRcdKbn))
			{
				makeOutDataInfo(outputItem);
			}
			else
			{
				// 退避．請求先番号の上2桁が「"21"：コンシューマ識別子」
// ANK-3339-00-00 MOD START
//				if(consuSkbt.equals(this.taihiCvsNknMap.getString(DT_CUST_SKY_NO).substring(0, 2)))
				if(Arrays.asList(consuSkbts).contains(
						this.taihiCvsNknMap.getString(DT_CUST_SKY_NO).substring(0, 2)))
// ANK-3339-00-00 MOD END
				{
					makeOutDataInfo(outputItem);
				}
			}
		}
		// 抽出対象が"2"(法人)の場合
		else if(this.chsTarget.equals(CH_TG_JURI))
		{
			// 退避.企業コードが通常分の場合
			if(JACStrConst.KIGYO_CD_TUJO.equals(this.compCd))
			{
				if(JACStrConst.DATA_KUBUN_HEADER.equals(this.bfRcdKbn))
				{
					this.hjnInRecCnt = 1;
					makeOutDataInfo(outputItem);
				}
				else if(JACStrConst.DATA_KUBUN_DATA.equals(this.bfRcdKbn))
				{
					// 退避．請求先番号の上2桁が「"21"：コンシューマ識別子」以外
// ANK-3339-00-00 MOD START
//					if(!consuSkbt.equals(this.taihiCvsNknMap.getString(DT_CUST_SKY_NO).substring(0, 2)))
					if(!Arrays.asList(consuSkbts).contains(
							this.taihiCvsNknMap.getString(DT_CUST_SKY_NO).substring(0, 2)))
// ANK-3339-00-00 MOD END
					{
						this.hjnInRecCnt++;
						makeOutDataInfo(outputItem);
						// 退避.コンビニ入金情報マップ内の種別が"01"(速報)の場合
						if(JACStrConst.SYUBETU_SOKUHOU.equals(this.taihiCvsNknMap.get(DT_SBT)))
						{
							this.hjnSkhCnt++;
							this.hjnSkhAmnt		= this.hjnSkhAmnt + Integer.parseInt(this.taihiCvsNknMap.getString(DT_KKN_AMNT));
						}
						// 退避.コンビニ入金情報マップ内の種別が"02"(確報)の場合
						else if(JACStrConst.SYUBETU_KAKUHOU.equals(this.taihiCvsNknMap.get(DT_SBT)))
						{
							this.hjnKkhcnt++;
							this.hjnKkhAmnt		= this.hjnKkhAmnt + Integer.parseInt(this.taihiCvsNknMap.getString(DT_KKN_AMNT));
						}
						// 退避.コンビニ入金情報マップ内の種別が"03"(取消)の場合
						else if(JACStrConst.SYUBETU_TORIKESI.equals(this.taihiCvsNknMap.get(DT_SBT)))
						{
							this.hjnSkhDelCnt++;
							this.hjnSkhDelAmnt 	= this.hjnSkhDelAmnt + Integer.parseInt(this.taihiCvsNknMap.getString(DT_KKN_AMNT));
						}
					}
				}
				else if(JACStrConst.DATA_KUBUN_TRAILER.equals(this.bfRcdKbn))
				{
					this.hjnInRecCnt++;
					makeOutDataInfo(outputItem);
				}
				else if(JACStrConst.DATA_KUBUN_END.equals(this.bfRcdKbn))
				{
					this.hjnInRecCnt++;
					makeOutDataInfo(outputItem);
				}
			}
		}
		if(JACStrConst.DATA_KUBUN_TRAILER.equals(this.bfRcdKbn))
		{
			// 各項目の初期化、実行
			this.skhCnt 		= 0;
			this.skhAmnt 		= 0;
			this.kkhCnt 		= 0;
			this.kkhAmnt 		= 0;
			this.skhDelCnt 		= 0;
			this.skhDelAmnt 	= 0;
		}
		else if(JACStrConst.DATA_KUBUN_END.equals(this.bfRcdKbn))
		{
			// 各項目の初期化、実行
			this.inRecCnt 		= 0;
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][judgmentConsumerDataExtraction]");
	}

	
	
	/**
	 * 出力情報作成
	 * @param  outputItem 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	public void makeOutDataInfo(JBSbatOutputItem outputItem) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutDataInfo]");

		// 出力情報格納マップ
		JBSbatServiceInterfaceMap outDataMap = new JBSbatServiceInterfaceMap();
		// その他項目連結用文字列
		StringBuffer otherData = new StringBuffer();

		// 退避.レコード区分が"1"(ヘッダ)
		if(JACStrConst.DATA_KUBUN_HEADER.equals(this.bfRcdKbn))
		{
			// レコード区分
			outDataMap.set(JBSbatCHIFE022.REC_DIV, this.taihiCvsNknMap.get(JBSbatCHIFE022.REC_DIV));
			
			// 作成年月
			otherData.append(this.taihiCvsNknMap.get(HD_MAKE_YMD));
			// 企業コード
			otherData.append(this.taihiCvsNknMap.get(HD_COMP_CD));
			// 種別
			otherData.append(this.taihiCvsNknMap.get(HD_SBT));
			// 支払予定日
			otherData.append(this.taihiCvsNknMap.get(HD_PAY_DAY));
			// 予備
			otherData.append(this.taihiCvsNknMap.get(HD_YOBI));
			// その他
			outDataMap.set(JBSbatCHIFE022.OTHER, otherData.toString());
		}
		// 退避.レコード区分が"2"(データ)
		else if(JACStrConst.DATA_KUBUN_DATA.equals(this.bfRcdKbn))
		{
			// レコード区分
			outDataMap.set(JBSbatCHIFE022.REC_DIV, taihiCvsNknMap.get(JBSbatCHIFE022.REC_DIV));
			// 種別
			otherData.append(this.taihiCvsNknMap.get(DT_SBT));
			// 収納年月日
			otherData.append(this.taihiCvsNknMap.get(DT_KKN_YMD));
			// 収納時分
			otherData.append(this.taihiCvsNknMap.get(DT_KKN_TM));
			// 予備１
			otherData.append(this.taihiCvsNknMap.get(DT_YOBI_1));
			// 請求月
			otherData.append(this.taihiCvsNknMap.get(DT_SKY_MON));
			// 請求年
			otherData.append(this.taihiCvsNknMap.get(DT_CUST_SKY_YEAR));
			// 群番号
			otherData.append(this.taihiCvsNknMap.get(DT_CUST_GUN));
			// 発行シーケンス
			otherData.append(this.taihiCvsNknMap.get(DT_CUST_HK_SEQ));
			// 予備２
			otherData.append(this.taihiCvsNknMap.get(DT_YOBI_2));
			// 請求先番号
			otherData.append(this.taihiCvsNknMap.get(DT_CUST_SKY_NO));
			// 予備３
			otherData.append(this.taihiCvsNknMap.get(DT_YOBI_3));
			// 収納金額
			otherData.append(this.taihiCvsNknMap.get(DT_KKN_AMNT));
			// 予備４
			otherData.append(this.taihiCvsNknMap.get(DT_YOBI_4));
			// 収納店舗コード
			otherData.append(this.taihiCvsNknMap.get(DT_KKN_TENCD));
			// 支払予定日
			otherData.append(this.taihiCvsNknMap.get(DT_PAY_DAY));
			// 予備５
			otherData.append(this.taihiCvsNknMap.get(DT_YOBI_5));
			// ＣＶＳコード
			otherData.append(this.taihiCvsNknMap.get(DT_CVS_CD));
			// 予備６
			otherData.append(this.taihiCvsNknMap.get(DT_YOBI_6));
			// その他
			outDataMap.set(JBSbatCHIFE022.OTHER, otherData.toString());
		}
		// 退避.レコード区分が"8"(トレーラ)
		else if(JACStrConst.DATA_KUBUN_TRAILER.equals(this.bfRcdKbn))
		{
			// レコード区分
			outDataMap.set(JBSbatCHIFE022.REC_DIV, taihiCvsNknMap.get(JBSbatCHIFE022.REC_DIV));
			// 抽出対象が"1"(コンシューマ) 3:コンシューマ（さくらＫＣＳ）の場合
// ANK-3838-00-00対応 20201112 星野 MOD START
//			if(this.chsTarget.equals(CH_TG_CONS))
			if(this.chsTarget.equals(CH_TG_CONS) || chsTarget.equals(CH_TG_CONS_SAKURA))
// ANK-3838-00-00対応 20201112 星野 MOD END
			{
				// 速報件数
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.skhCnt), 		TR_CNT_NO, false));
				// 速報金額
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.skhAmnt), 	TR_AMNT_NO, false));
				// 確報件数
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.kkhCnt), 		TR_CNT_NO, false));
				// 確報金額
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.kkhAmnt), 	TR_AMNT_NO, false));
				// 速報取消件数
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.skhDelCnt), 	TR_CNT_NO, false));
				// 速報取消金額
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.skhDelAmnt), 	TR_AMNT_NO, false));
			}
			// 抽出対象が"2"(法人)の場合
			else if(this.chsTarget.equals(CH_TG_JURI))
			{
				// 速報件数
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.hjnSkhCnt), 		TR_CNT_NO, false));
				// 速報金額
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.hjnSkhAmnt), 		TR_AMNT_NO, false));
				// 確報件数
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.hjnKkhcnt), 		TR_CNT_NO, false));
				// 確報金額
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.hjnKkhAmnt), 		TR_AMNT_NO, false));
				// 速報取消件数
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.hjnSkhDelCnt), 	TR_CNT_NO, false));
				// 速報取消金額
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.hjnSkhDelAmnt), 	TR_AMNT_NO, false));
			}
			// 予備
			otherData.append(this.taihiCvsNknMap.get(TR_YOBI));
			// その他
			outDataMap.set(JBSbatCHIFE022.OTHER, otherData.toString());
		}
		// 退避.レコード区分が"9"(エンド)
		else if(JACStrConst.DATA_KUBUN_END.equals(this.bfRcdKbn))
		{
			// レコード区分
			outDataMap.set(JBSbatCHIFE022.REC_DIV, taihiCvsNknMap.get(JBSbatCHIFE022.REC_DIV));
			// 抽出対象が"1"(コンシューマ) 3:コンシューマ（さくらＫＣＳ）の場合
// ANK-3838-00-00対応 20201112 星野 MOD START
//			if(this.chsTarget.equals(CH_TG_CONS))
			if(this.chsTarget.equals(CH_TG_CONS) || chsTarget.equals(CH_TG_CONS_SAKURA))
// ANK-3838-00-00対応 20201112 星野 MOD END
			{
				// 総件数
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.inRecCnt), EN_CNT_NO, false));
			}
			// 抽出対象が"2"(法人)の場合
			else if(this.chsTarget.equals(CH_TG_JURI))
			{
				// 総件数
				otherData.append(JPCUtilCommon.fillZero(Integer.toString(this.hjnInRecCnt), EN_CNT_NO, false));
			}
			// 予備
			otherData.append(this.taihiCvsNknMap.get(ED_OYBI));
			// その他
			outDataMap.set(JBSbatCHIFE022.OTHER, otherData.toString());
		}
		// 出力フラグ
		outDataMap.setOutFlg(true);
		// 出力共通電文に入出力インターフェースを設定する
		outputItem.addOutMapList(outDataMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutDataInfo]");
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");

		// 最終レコードでエラーが発生していた場合
		if(this.taihiErrCd != null)
		{
			// 異常終了させる
			throw new JBSbatBusinessException(this.taihiErrCd);
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
