/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKVWribVrfyHybWribCheck
*	ソースファイル名	：JBSbatKVWribVrfyHybWribCheck.java
*	作成者				：富士通　
*	作成日				：2013年06月06日
*＜機能概要＞
*　割引検証ハイブリッド割引検証結果出力部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2013/06/06   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.util.file.JBSbatKVIFM017;
import eo.business.util.file.JBSbatKVIFM016;
// 2013/09/09 del start
//import eo.business.util.file.JBSbatKVIFM022;
// 2013/09/09 del end
import eo.business.util.file.JBSbatKVIFM023;
import eo.business.util.table.JBSbatKK_M_KAP_PLAN;
import eo.business.util.table.JBSbatKK_M_OP_SVC;
import eo.business.util.table.JBSbatKK_M_PCRS;
import eo.business.util.table.JBSbatKK_M_PPLAN;
import eo.business.util.table.JBSbatKK_T_KAKINS;
import eo.business.util.table.JBSbatKK_T_KAP_KEI;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JKKStrConst;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKVWribVrfyHybWribCheck extends JBSbatBusinessService implements JBSbatMatchServiceInterface
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(割引サービス対象契約)*/
	private static final String D_TBL_NAME_KK_T_WRISVC_TG_KEI = "KK_T_WRISVC_TG_KEI";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";

	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(割賦プラン)*/
	private static final String D_TBL_NAME_KK_M_KAP_PLAN = "KK_M_KAP_PLAN";

	/** テーブル(オプションサービス)*/
	private static final String D_TBL_NAME_KK_M_OP_SVC = "KK_M_OP_SVC";

	/** テーブル(料金コース)*/
	private static final String D_TBL_NAME_KK_M_PCRS = "KK_M_PCRS";

	/** テーブル(料金プラン)*/
	private static final String D_TBL_NAME_KK_M_PPLAN = "KK_M_PPLAN";
// 2013/09/09 del start
//	/** SQL定義キー(KV_SELECT_002)*/
//	private static final String KK_T_WRISVC_TG_KEI_KV_SELECT_002 = "KV_SELECT_002";
// 2013/09/09 del end
	/** SQL定義キー(KV_SELECT_021)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_017 = "KV_SELECT_021";

	/** SQL定義キー(KV_SELECT_018)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_018 = "KV_SELECT_018";

	/** SQL定義キー(KV_SELECT_012)*/
	private static final String KK_T_OP_SVC_KEI_KV_SELECT_012 = "KV_SELECT_012";

	/** SQL定義キー(KV_SELECT_005)*/
	private static final String KK_T_KKTK_SVC_KEI_KV_SELECT_005 = "KV_SELECT_005";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String ZM_M_CD_NM_KANRI_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_M_KAP_PLAN_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_M_OP_SVC_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_M_PCRS_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_002)*/
	private static final String KK_M_PPLAN_KV_SELECT_002 = "KV_SELECT_002";

	/** テーブルアクセスクラス(割引サービス対象契約)*/
	private JBSbatSQLAccess db_KK_T_WRISVC_TG_KEI = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(割賦プラン)*/
	private JBSbatSQLAccess db_KK_M_KAP_PLAN = null;

	/** テーブルアクセスクラス(オプションサービス)*/
	private JBSbatSQLAccess db_KK_M_OP_SVC = null;

	/** テーブルアクセスクラス(料金コース)*/
	private JBSbatSQLAccess db_KK_M_PCRS = null;

	/** テーブルアクセスクラス(料金プラン)*/
	private JBSbatSQLAccess db_KK_M_PPLAN = null;

	/** キーマッチ処理フラグ*/
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ*/
	private boolean mastProcFlg;

	/** トランファイル処理フラグ*/
	private boolean tranProcFlg;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** コード種別 eoブランドコード eo光ネット */
	public static final String EOBLAND_NET = "01";

	/** ヘッダ出力処理用フラグ */
	private boolean booHeaderOutputFlg = false; 

	/** コード種別 料金プランコード ３Ｇ　４２Ｍ　光ハイブリッドタイプ */
	public static final String CD00565_3G_42M_HYBRID = "PA6001";
	
	/** エラーメッセージ */
	String strErrorMessage = "";

	/** 割賦契約割引チェック済みフラグ */
	private String strKapWriChkFlg = ""; 

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_WRISVC_TG_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_WRISVC_TG_KEI);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_KK_M_KAP_PLAN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_KAP_PLAN);
		db_KK_M_OP_SVC = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_OP_SVC);
		db_KK_M_PCRS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PCRS);
		db_KK_M_PPLAN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PPLAN);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param mastMap　入力電文
	 * @param tranMap　入力電文
	 * @param outputInItem  入力情報
	 * @return JBSbatOutputItem 出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap svcMap, JBSbatServiceInterfaceMap wribMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");

		// 初回のみ処理
		if (!booHeaderOutputFlg)
		{
			this.editOutputHeaderItem(outputInItem);
			booHeaderOutputFlg = true;
		}
		
		// 作業領域の割り当て
		String strSvcSeikyKeiNo = "";				// サービス契約の請求先契約番号
		String strOptSvcSeikyKeiNo = "";			// オプションサービス契約の請求先契約番号
		String strKktkSvcSeikyKeiNo = "";			// 機器提供サービス契約の請求先契約番号
		String[] optSvcData = new String[19];		// オプションサービス契約の検証結果出力用
		String[] kapSvcData = new String[8];		// 割賦契約の検証結果出力用
		ArrayList<String> lstSvcKeiNo = new ArrayList<String>();	// サービス契約番号格納用

		
		// 割賦契約割引の妥当性を検証する
		if (svcMap == null && wribMap != null)
		{
			// 入力Ｍのみnullの場合 ⇒ トランのみ
			this.setTranProcFlg(true);
			super.logPrint.printDebugLog("execute_END");
			return outputInItem;

		}
		else if (svcMap != null && wribMap == null)
		{
			// 入力Ｔのみnullの場合 ⇒ マスタのみ
			this.setMastProcFlg(true);
			super.logPrint.printDebugLog("execute_END");
			return outputInItem;
		// 2013/09/09 add start
		} else if (wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT).equals("300") 
				|| wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT).equals("910")) {
			// 検証対象外
			super.logPrint.printDebugLog("検証対象外：" + wribMap.getString(JBSbatKVIFM017.SVC_KEI_NO)
				+ "、" + wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_NO));
			this.setTranProcFlg(true);
			super.logPrint.printDebugLog("execute_END");
			return outputInItem;
		// 2013/09/09 add end
		}
		else
		{
			// マッチング処理
			// サービス契約コードを主キーにする
			String strMastData = svcMap.getString(JBSbatKVIFM016.SVC_KEI_NO);
			String strTranData = wribMap.getString(JBSbatKVIFM017.SVC_KEI_NO);
			super.logPrint.printDebugLog("入力Ｍ：" + strMastData);
			super.logPrint.printDebugLog("入力Ｔ：" + strTranData);

			int intRsrt = strMastData.compareTo(strTranData);

			if (intRsrt == 0)
			{
				// 一致した場合
				// すでにチェック済みの場合はチェックしない
				if (strKapWriChkFlg.equals(""))
				{
//					// ハイブリッド割引が適用されているかどうかを確認する
//					Object[] hyblidKeiWribParam = {svcMap.getString(JBSbatKVIFM016.SVC_KEI_NO),
//												   super.opeDate,
//												   super.opeDate,
//												   super.opeDate,
//												   JKKStrConst.CD00138_HYBRID,
//												   super.opeDate,
//												   JKKStrConst.WARIB_TYPE_CMP,
//												   super.opeDate};
//					executeKK_T_WRISVC_TG_KEI_KV_SELECT_002(hyblidKeiWribParam);
//					JBSbatCommonDBInterface rcvKapKeiWribMap = db_KK_T_WRISVC_TG_KEI.selectNext();
//					
//					// ハイブリッド割引が適用されていない場合は何もしない
//					if (rcvKapKeiWribMap == null)
//					{
//						strKapWriChkFlg = "0";
//					}
//					else
//					{
						// サービス契約を確認する
						Object[] svcWribParam = {svcMap.getString(JBSbatKVIFM016.SYSID),
								super.opeDate,
								EOBLAND_NET,
								super.opeDate,
								super.opeDate,
								super.opeDate};
						executeKK_T_SVC_KEI_KV_SELECT_021(svcWribParam);
						JBSbatCommonDBInterface rcvSvcKeiMap = db_KK_T_SVC_KEI.selectNext();
						
						// サービス契約が存在しない場合はエラー
						if (rcvSvcKeiMap == null)
						{
							strKapWriChkFlg = "1";
						}
						else if (isKapKeiPrcGrpCd(repNullToEmpty(rcvSvcKeiMap.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD))))
						{
							// 割賦契約対象 ⇒ チェック継続
							strSvcSeikyKeiNo = repNullToEmpty(rcvSvcKeiMap.getString(JBSbatKK_T_KAKINS.SEIKY_KEI_NO));
						}
						else
						{
							strKapWriChkFlg = "1";
						}
//					}
				}
				
				// すでにチェック済みの場合はチェックしない（チェック継続の場合のみ実行）
				if (strKapWriChkFlg.equals(""))
				{
					// ハイブリッド契約以外の契約をすべて抽出する
					Object[] hyblidKeiParam = {svcMap.getString(JBSbatKVIFM016.SVC_KEI_NO),
											   super.opeDate,
											   CD00565_3G_42M_HYBRID,
											   super.opeDate,
											   CD00565_3G_42M_HYBRID,
											   super.opeDate};
					executeKK_T_SVC_KEI_KV_SELECT_018(hyblidKeiParam);
					JBSbatCommonDBInterface rcvHyblidKeiMap = db_KK_T_SVC_KEI.selectNext();
					
					// 取得したサービス契約番号をリストに退避
					while (rcvHyblidKeiMap != null)
					{
						lstSvcKeiNo.add(repNullToEmpty(rcvHyblidKeiMap.getString(JBSbatKVIFM016.SVC_KEI_NO)));
						rcvHyblidKeiMap = db_KK_T_SVC_KEI.selectNext();
					}

					// 取得したサービス契約番号すべてに対し、ハイブリッド割引適用かどうかを確認する
					boolean optionFlg = false;
					boolean kktkFlg = false;
					
					

					
					for (String strSvcKeiNo : lstSvcKeiNo)
					{
						// すでにチェック済みの場合はチェックしない（チェック継続の場合のみ実行）
						if (strKapWriChkFlg.equals(""))
						{
							
							
							// オプションサービス契約を確認する
							Object[] optSvcKeiParam = {strSvcKeiNo,
									JKKStrConst.OP_SVC_CD_SMARTLINK_PREMIUM,
									super.opeDate,
									super.opeDate,
									super.opeDate};
							executeKK_T_OP_SVC_KEI_KV_SELECT_012(optSvcKeiParam);
							JBSbatCommonDBInterface rcvOptSvcKeiMap = db_KK_T_OP_SVC_KEI.selectNext();
							
							// オプションサービス契約が存在する場合
							if (rcvOptSvcKeiMap != null)
							{
								optionFlg = true;
								// オプションサービス契約退避
								optSvcData[0] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_NO));
								optSvcData[1] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT));
								optSvcData[2] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_CD));
								optSvcData[3] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.PCRS_CD));
								optSvcData[4] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.PPLAN_CD));
								optSvcData[5] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_STAYMD));
								optSvcData[6] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_ENDYMD));
								optSvcData[7] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_STAYMD));
								optSvcData[8] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_CHRG_ENDYMD));
								optSvcData[9] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.PLAN_END_SBT_CD));
								optSvcData[10] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_CANCEL_YMD));
								optSvcData[11] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD));
								optSvcData[12] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_STAYMD));
								optSvcData[13] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD));
								optSvcData[14] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_CHRG_ENDYMD));
								optSvcData[15] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_YMD));
								optSvcData[16] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.KAIHK_YMD));
								optSvcData[17] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_CANCEL_CL_YMD));
								optSvcData[18] = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_DSL_CL_YMD));
								
								if (optSvcData[1].equals("030") || optSvcData[1].equals("920") ||
										isSvcYmd(repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD)),
											 repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD)),
											 repNullToEmpty(wribMap.getString(JBSbatKVIFM017.WRIB_ADD_YMD))) 
											 )
								{
									// 割賦契約対象 ⇒ チェック継続
									strOptSvcSeikyKeiNo = repNullToEmpty(rcvOptSvcKeiMap.getString(JBSbatKK_T_KAKINS.SEIKY_KEI_NO));
								}
								else
								{
								strKapWriChkFlg = "1";
								}
							}
						}
						// すでにチェック済みの場合はチェックしない（チェック継続の場合のみ実行）
						if (strKapWriChkFlg.equals(""))
						{
							// 機器対象サービス契約・割賦契約を確認する
							Object[] kktkSvcKeiParam = {strSvcKeiNo,
									super.opeDate,
									super.opeDate,
									super.opeDate,
									super.opeDate};
							executeKK_T_KKTK_SVC_KEI_KV_SELECT_005(kktkSvcKeiParam);
							JBSbatCommonDBInterface rcvKktkSvcKeiMap = db_KK_T_KKTK_SVC_KEI.selectNext();
							
							// 機器対象サービス契約・割賦契約が存在する場合
							if (rcvKktkSvcKeiMap != null)
							{
								// 機器対象サービス契約・割賦契約チェック（複数レコード存在するため、すべてに対してチェック）
								while (rcvKktkSvcKeiMap != null) 
								{
									kktkFlg = true;
									// 割賦契約退避
									kapSvcData[0] = repNullToEmpty(rcvKktkSvcKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_NO));
									kapSvcData[1] = repNullToEmpty(rcvKktkSvcKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_STAT));
									kapSvcData[2] = repNullToEmpty(rcvKktkSvcKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_PLAN_CD));
									kapSvcData[3] = repNullToEmpty(rcvKktkSvcKeiMap.getString(JBSbatKK_T_KAP_KEI.KKTK_SVC_KEI_NO));
									kapSvcData[4] = repNullToEmpty(rcvKktkSvcKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_IKT_SIKY_SWCH_YM));
									kapSvcData[5] = repNullToEmpty(rcvKktkSvcKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CANCEL_YMD));
									kapSvcData[6] = repNullToEmpty(rcvKktkSvcKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CHRG_STAYMD));
									kapSvcData[7] = repNullToEmpty(rcvKktkSvcKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_PAY_ZAN_CNT));
									
									strKktkSvcSeikyKeiNo = repNullToEmpty(rcvKktkSvcKeiMap.getString(JBSbatKK_T_KAKINS.SEIKY_KEI_NO));
									
									// 請求先契約番号がすべて一致しない場合はエラー
									if ((!strSvcSeikyKeiNo.equals(strOptSvcSeikyKeiNo)) || (!strOptSvcSeikyKeiNo.equals(strKktkSvcSeikyKeiNo)))
									{
										strKapWriChkFlg = "1";
										break;
									}
									
									rcvKktkSvcKeiMap = db_KK_T_KKTK_SVC_KEI.selectNext();
								}
							}
						}
					}
					
					// オプション契約・機器対象サービス契約・割賦契約が存在しない場合はエラー
					if ((!optionFlg) || (!kktkFlg))
					{
						strKapWriChkFlg = "1";
					}
				}
				
				// チェック済み
				if (strKapWriChkFlg.equals(""))
				{
					// ２１Ｍ 光ハイブリッドタイプの場合は正常
					if (svcMap.getString(JBSbatKVIFM016.PPLAN_CD).equals("PA6001"))
					{
						strKapWriChkFlg = "0";
					}
					else
					{
						strKapWriChkFlg = "1";
						strErrorMessage = "２１Ｍ　光ハイブリッドタイプを契約していないがハイブリッド割引が適用されている。";
					}
				}
				else
				{
					strErrorMessage = "割賦契約割引の適用条件を満たした実績がないがハイブリッド割引が適用されている。";
				}
				// 検証結果ファイル出力
				if (strKapWriChkFlg.equals("1"))
				{
					editOutputInItem(outputInItem,
									 svcMap,
									 wribMap,
									 optSvcData,
									 kapSvcData,
									 strSvcSeikyKeiNo,
									 strOptSvcSeikyKeiNo,
									 strKktkSvcSeikyKeiNo);
				}
				
				// 入力Ｔのみ ⇒ 次のデータを読み込む
				this.setMastProcFlg(false);
				this.setTranProcFlg(true);
			}
			else if (intRsrt < 0)
			{
				// 入力Ｍのみ ⇒ 次のデータを読み込む
				this.setMastProcFlg(true);
				this.setTranProcFlg(false);
				strKapWriChkFlg = "";
			}
			else
			{
				// 入力Ｔのみ ⇒ 次のデータを読み込む
				this.setMastProcFlg(false);
				this.setTranProcFlg(true);
				strKapWriChkFlg = "";
			}
		}

		super.logPrint.printDebugLog("execute_END");
		return outputInItem;

		/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_WRISVC_TG_KEI.close();
		db_KK_T_SVC_KEI.close();
		db_KK_T_OP_SVC_KEI.close();
		db_KK_T_KKTK_SVC_KEI.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_KK_M_KAP_PLAN.close();
		db_KK_M_OP_SVC.close();
		db_KK_M_PCRS.close();
		db_KK_M_PPLAN.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * @return mastProcFlg を戻します。
	 */
	public boolean isMastProcFlg()
	{
		return mastProcFlg;
	}

	/**
	 * @return matchProcFlg を戻します。
	 */
	public boolean isMatchProcFlg()
	{
		return matchProcFlg;
	}

	/**
	 * @return tranProcFlg を戻します。
	 */
	public boolean isTranProcFlg()
	{
		return tranProcFlg;
	}

	/**
	 * @param mast_ProcFlg 設定する mastProcFlg。
	 */
	public void setMastProcFlg(boolean mast_ProcFlg)
	{
		this.mastProcFlg = mast_ProcFlg;
	}

	/**
	 * @param match_ProcFlg 設定する matchProcFlg。
	 */
	public void setMatchProcFlg(boolean match_ProcFlg)
	{
		this.matchProcFlg = match_ProcFlg;
	}

	/**
	 * @param tran_ProcFlg 設定する tranProcFlg。
	 */
	public void setTranProcFlg(boolean tran_ProcFlg)
	{
		this.tranProcFlg = tran_ProcFlg;
	}
// 2013/09/09 del start
//	/**
//	 * SQLKEY(KV_SELECT_002)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でバイント変数を設定します。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
//	 *		 	サービス契約番号
//	 *		 	バッチ運用日付
//	 *		 	バッチ運用日付
//	 *		 	割引タイプコード
//	 *		 	割引サービスコード
//	 *		 	バッチ運用日付
//	 * </pre>
//	 * <p>
//	 * @param param バイント変数の値配列。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeKK_T_WRISVC_TG_KEI_KV_SELECT_002(Object[] param) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		paramList.setValue(param[0].toString());
//		paramList.setValue(param[1].toString());
//		paramList.setValue(param[2].toString());
//		paramList.setValue(param[3].toString());
//		paramList.setValue(param[4].toString());
//		paramList.setValue(param[5].toString());
//		paramList.setValue(param[6].toString());
//		paramList.setValue(param[7].toString());
//
//		// DBアクセスを実行します
//		db_KK_T_WRISVC_TG_KEI.selectBySqlDefine(paramList, KK_T_WRISVC_TG_KEI_KV_SELECT_002);
//	}
// 2013/09/09 del end
	/**
	 * SQLKEY(KV_SELECT_017)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	バッチ運用日付
	 *		 	バッチ運用日付
	 *		 	バッチ運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KV_SELECT_021(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_017);
	}

	/**
	 * SQLKEY(KV_SELECT_018)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	バッチ運用日付
	 *		 	料金プランコード
	 *		 	バッチ運用日付
	 *		 	料金プランコード
	 *		 	バッチ運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KV_SELECT_018(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_018);
	}

	/**
	 * SQLKEY(KV_SELECT_012)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	オプションサービスコード
	 *		 	バッチ運用日付
	 *		 	バッチ運用日付
	 *		 	バッチ運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OP_SVC_KEI_KV_SELECT_012(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KV_SELECT_012);
	}

	/**
	 * SQLKEY(KV_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	バッチ運用日付
	 *		 	バッチ運用日付
	 *		 	バッチ運用日付
	 *		 	バッチ運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_KV_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KV_SELECT_005);
	}
	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	コード種別コード
	 *		 	バッチ運用日付
	 *		 	バッチ運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_CD_NM_KANRI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_KV_SELECT_001);
	}
	
	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	割賦プランコード
	 *		 	バッチ運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_KAP_PLAN_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_KAP_PLAN.selectBySqlDefine(paramList, KK_M_KAP_PLAN_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	オプションサービスコード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	
	private void executeKK_M_OP_SVC_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_M_OP_SVC.selectBySqlDefine(paramList, KK_M_OP_SVC_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	オプションサービスコード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_PCRS_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_M_PCRS.selectBySqlDefine(paramList, KK_M_PCRS_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KV_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	オプションサービスコード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_PPLAN_KV_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_PPLAN.selectBySqlDefine(paramList, KK_M_PPLAN_KV_SELECT_002);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	/**
	 * 料金グループコードが割賦契約の対象かどうかの検証を行います。
	 * 
	 * @param prcGrpCd 料金グループコード
	 * @return boolean 検証結果（true：割賦契約対象、false：割賦契約対象外）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isKapKeiPrcGrpCd(String prcGrpCd) throws Exception
	{
		// 作業領域の初期化
		boolean isKapKei = false;								// 割賦契約対象外
		
		// eo光ネットホームタイプ
		if (prcGrpCd.equals(JKKStrConst.CD00133_02))
		{
			isKapKei = true;
		}

		// eo光ネットメゾンタイプ
		if (prcGrpCd.equals(JKKStrConst.CD00133_03))
		{
			isKapKei = true;
		}
		
		// eo光ネットマンションタイプ
		if (prcGrpCd.equals(JKKStrConst.CD00133_04))
		{
			isKapKei = true;
		}
		
		return isKapKei;
	}
	
	/**
	 * サービス開始終了日が割引登録年月日の範囲内かどうかの検証を行います。
	 * 
	 * @param svcStaYmd サービス開始年月日
	 * @param svcEndYmd サービス終了年月日
	 * @return boolean 検証結果（true：範囲内、false：範囲外）
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isSvcYmd(String svcStaYmd, String svcEndYmd, String wribAddYmd) throws Exception
	{
		// 作業領域の初期化
		boolean isSvc = true;								// 範囲内
		
		// サービス開始年月日との比較
		if (svcStaYmd.compareTo(wribAddYmd) <= 0)
		{
			// サービス終了年月日との比較
			
			// サービス終了日が未設定の場合は、何もしない
			if (svcEndYmd.length() > 0)
			{
				// 月末を算出
				String strYm = svcEndYmd.substring(0, 6);
				String monEndYmd = strYm + JBSbatDateUtil.getEndOfMonth(strYm);
				if (monEndYmd.compareTo(wribAddYmd) < 0)
				{
					isSvc = false;
				}
			}
		}
		else
		{
			isSvc = false;
		}
		
		return isSvc;
	}
	
	
	/**
	 * 検証結果ファイルを編集します。
	 * 
	 * @param outputInItem 出力ファイル
	 * @param svcMap マスタデータ（割引検証サービス契約情報抽出結果ファイル）
	 * @param wribMap トランデータ（割引検証割賦契約割引情報抽出結果ファイル））
	 * @param optSvcData オプションサービス契約退避データ
	 * @param kapSvcData 割賦契約退避データ
	 * @param strSvcSeikyKeiNo サービス契約の請求先契約番号
	 * @param strOptSvcSeikyKeiNo オプションサービス契約の請求先契約番号
	 * @param strKktkSvcSeikyKeiNo 機器提供サービス契約の請求先契約番号
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void editOutputInItem(	JBSbatOutputItem outputInItem,
									JBSbatServiceInterfaceMap svcMap,
									JBSbatServiceInterfaceMap wribMap,
									String[] optSvcData,
									String[] kapSvcData,
									String strSvcSeikyKeiNo,
									String strOptSvcSeikyKeiNo,
									String strKktkSvcSeikyKeiNo) throws Exception
	{
		// 入出力インタフェースオブジェクトを生成
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();
		
		// 出力項目を設定する
		out_map.setString(JBSbatKVIFM023.SVC_KEI_NO , svcMap.getString(JBSbatKVIFM016.SVC_KEI_NO));									// サービス契約番号
		out_map.setString(JBSbatKVIFM023.SVC_KEI_STAT, svcMap.getString(JBSbatKVIFM016.SVC_KEI_STAT));								// サービス契約ステータス
		out_map.setString(JBSbatKVIFM023.SVC_KEI_STAT_NM, svcMap.getString(JBSbatKVIFM016.SVC_KEI_STAT_NM)); 						// サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM023.PCRS_CD_WRIB, svcMap.getString(JBSbatKVIFM016.PCRS_CD)); 									// 料金コースコード
		out_map.setString(JBSbatKVIFM023.PCRS_NM_WRIB, svcMap.getString(JBSbatKVIFM016.PCRS_NM)); 									// 料金コース名
		out_map.setString(JBSbatKVIFM023.PPLAN_CD_WRIB, svcMap.getString(JBSbatKVIFM016.PPLAN_CD)); 								// 料金プランコード
		out_map.setString(JBSbatKVIFM023.PPLAN_NM_WRIB, svcMap.getString(JBSbatKVIFM016.PPLAN_NM)); 								// 料金プラン名
		out_map.setString(JBSbatKVIFM023.KAKINS_NO , svcMap.getString(JBSbatKVIFM016.KAKINS_NO));									// 課金先番号
		out_map.setString(JBSbatKVIFM023.SEIKY_KEI_NO , svcMap.getString(JBSbatKVIFM016.SEIKY_KEI_NO));								// 請求契約番号
		out_map.setString(JBSbatKVIFM023.SVC_KEI_KAISEN_UCWK_NO , svcMap.getString(JBSbatKVIFM016.SVC_KEI_KAISEN_UCWK_NO));			// サービス契約回線内訳番号

		out_map.setString(JBSbatKVIFM023.WRIB_SVC_KEI_NO , wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_NO));						// 割引サービス契約番号
		out_map.setString(JBSbatKVIFM023.WRIB_SVC_KEI_STAT, wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT)); 					// 割引サービスステータス
		out_map.setString(JBSbatKVIFM023.WRIB_SVC_KEI_STAT_NM, wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT_NM)); 			// 割引サービスステータス名称
		out_map.setString(JBSbatKVIFM023.SYSID , wribMap.getString(JBSbatKVIFM017.SYSID));											// ＳＹＳＩＤ
		out_map.setString(JBSbatKVIFM023.WRIB_SVC_CD , wribMap.getString(JBSbatKVIFM017.WRIB_SVC_CD));								// 割引サービスコード
		out_map.setString(JBSbatKVIFM023.DSP_CAMPAIGN_CD, wribMap.getString(JBSbatKVIFM017.DSP_CAMPAIGN_CD)); 						// 表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM023.WRIB_SVC_NM, wribMap.getString(JBSbatKVIFM017.WRIB_SVC_NM)); 								// 割引サービス名
		out_map.setString(JBSbatKVIFM023.PLAN_STAYMD_WRIB , wribMap.getString(JBSbatKVIFM017.PLAN_STAYMD));							// プラン開始年月日
		out_map.setString(JBSbatKVIFM023.PLAN_ENDYMD_WRIB , wribMap.getString(JBSbatKVIFM017.PLAN_ENDYMD));							// プラン終了年月日
		out_map.setString(JBSbatKVIFM023.PLAN_CHRG_STAYMD_WRIB , wribMap.getString(JBSbatKVIFM017.PLAN_CHRG_STAYMD));				// プラン課金開始年月日
		out_map.setString(JBSbatKVIFM023.PLAN_CHRG_ENDYMD_WRIB , wribMap.getString(JBSbatKVIFM017.PLAN_CHRG_ENDYMD));				// プラン課金終了年月日
		out_map.setString(JBSbatKVIFM023.PLAN_END_SBT_CD_WRIB , wribMap.getString(JBSbatKVIFM017.PLAN_END_SBT_CD));					// プラン終了種別コード
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_YMD_WRIB , wribMap.getString(JBSbatKVIFM017.SVC_CANCEL_YMD));					// サービスキャンセル年月日
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_RSN_CD_WRIB , wribMap.getString(JBSbatKVIFM017.SVC_CANCEL_RSN_CD));				// サービスキャンセル理由コード
		out_map.setString(JBSbatKVIFM023.SVC_STA_YMD_WRIB , wribMap.getString(JBSbatKVIFM017.SVC_STA_YMD));							// サービス開始年月日
		out_map.setString(JBSbatKVIFM023.SVC_CHRG_STAYMD_WRIB , wribMap.getString(JBSbatKVIFM017.SVC_CHRG_STAYMD));					// サービス課金開始年月日
		out_map.setString(JBSbatKVIFM023.SVC_ENDYMD_WRIB , wribMap.getString(JBSbatKVIFM017.SVC_ENDYMD));							// サービス終了年月日
		out_map.setString(JBSbatKVIFM023.SVC_CHRG_ENDYMD_WRIB , wribMap.getString(JBSbatKVIFM017.SVC_CHRG_ENDYMD));					// サービス課金終了年月日
		out_map.setString(JBSbatKVIFM023.SVC_DSL_YMD_WRIB , wribMap.getString(JBSbatKVIFM017.SVC_DSL_YMD));							// サービス解約年月日
		out_map.setString(JBSbatKVIFM023.KAIHK_YMD_WRIB , wribMap.getString(JBSbatKVIFM017.KAIHK_YMD));								// 回復年月日
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_CL_YMD_WRIB , wribMap.getString(JBSbatKVIFM017.SVC_CANCEL_CL_YMD));				// サービスキャンセル取消年月日
		out_map.setString(JBSbatKVIFM023.SVC_DSL_CL_YMD_WRIB , wribMap.getString(JBSbatKVIFM017.SVC_DSL_CL_YMD));					// サービス解約取消年月日
		out_map.setString(JBSbatKVIFM023.INTR_CD , wribMap.getString(JBSbatKVIFM017.INTR_CD));										// 紹介コード
		out_map.setString(JBSbatKVIFM023.MSKM_KISAN_YMD , wribMap.getString(JBSbatKVIFM017.MSKM_KISAN_YMD));						// 申込起算年月日
		out_map.setString(JBSbatKVIFM023.WRIB_ADD_OPTY_CD , wribMap.getString(JBSbatKVIFM017.WRIB_ADD_OPTY_CD));					// 割引登録契機コード
		out_map.setString(JBSbatKVIFM023.WRIB_DSL_CNCL_OPTY_CD , wribMap.getString(JBSbatKVIFM017.WRIB_DSL_CNCL_OPTY_CD));			// 割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM023.WRIB_AMNT_SNST_STDARDYMD , wribMap.getString(JBSbatKVIFM017.WRIB_AMNT_SNST_STDARDYMD));	// 割引額算出基準年月日
		out_map.setString(JBSbatKVIFM023.WRIB_CHRG_STA_MON_STI_CD , wribMap.getString(JBSbatKVIFM017.WRIB_CHRG_STA_MON_STI_CD));	// 割引課金開始月指定コード
		out_map.setString(JBSbatKVIFM023.WRIB_ADD_YMD , wribMap.getString(JBSbatKVIFM017.WRIB_ADD_YMD));							// 割引登録年月日
		
		out_map.setString(JBSbatKVIFM023.KAP_KEI_NO , kapSvcData[0]);					// 割賦契約番号
		out_map.setString(JBSbatKVIFM023.KAP_KEI_STAT , kapSvcData[1]);					// 割賦契約ステータス
		
		// 割賦契約ステータス名称取得
		Object[] svcCdnmParam = {"CD01471",
								 repNullToEmpty(kapSvcData[1]),
								 super.opeDate,
								 super.opeDate};
		executeZM_M_CD_NM_KANRI_KV_SELECT_001(svcCdnmParam);
		JBSbatCommonDBInterface rcvCdnmMap = db_ZM_M_CD_NM_KANRI.selectNext();
		
		// 名称が取得できない場合は初期値
		if (rcvCdnmMap == null)
		{
			out_map.setString(JBSbatKVIFM023.KAP_KEI_STAT_NM , "");										// 割賦契約ステータス名称
		}
		else
		{
			out_map.setString(JBSbatKVIFM023.KAP_KEI_STAT_NM ,
							  repNullToEmpty(rcvCdnmMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM)));	// 割賦契約ステータス名称
		}

		
		out_map.setString(JBSbatKVIFM023.KAP_PLAN_CD , kapSvcData[2]);					// 割賦プランコード
		
		// 割賦プランコード名称
		Object[] svcKapParam = {repNullToEmpty(kapSvcData[2]),
								super.opeDate};
		executeKK_M_KAP_PLAN_KV_SELECT_001(svcKapParam);
		JBSbatCommonDBInterface rcvKapMap = db_KK_M_KAP_PLAN.selectNext();
		
		// 名称が取得できない場合は初期値
		if (rcvKapMap == null)
		{
			out_map.setString(JBSbatKVIFM023.KAP_PLAN_CD_NM , "");				// 割賦プランコード名称
		}
		else
		{
			out_map.setString(JBSbatKVIFM023.KAP_PLAN_CD_NM ,
							  repNullToEmpty(rcvKapMap.getString(JBSbatKK_M_KAP_PLAN.KAP_PLAN_NM)));	// 割賦プランコード名称
		}
		
		out_map.setString(JBSbatKVIFM023.KKTK_SVC_KEI_NO , kapSvcData[3]);				// 機器提供サービス契約番号
		out_map.setString(JBSbatKVIFM023.KAP_IKT_SIKY_SWCH_YM , kapSvcData[4]);			// 割賦一括請求切替年月
		out_map.setString(JBSbatKVIFM023.KAP_KEI_CANCEL_YMD , kapSvcData[5]);			// 割賦契約キャンセル年月日
		out_map.setString(JBSbatKVIFM023.KAP_KEI_CHRG_STAYMD , kapSvcData[6]);			// 割賦契約課金開始年月日
		out_map.setString(JBSbatKVIFM023.KAP_PAY_ZAN_CNT , kapSvcData[7]);				// 割賦支払い残回数
		
		out_map.setString(JBSbatKVIFM023.OP_SVC_KEI_NO , optSvcData[0]);				// オプションサービス契約番号
		out_map.setString(JBSbatKVIFM023.OP_SVC_KEI_STAT , optSvcData[1]);				// オプションサービス契約ステータス
		
		// オプションサービス契約ステータス名称取得（サービス契約ステータスと同じにしています）
		Object[] svcOpnmParam = {"CD00037",
								 repNullToEmpty(optSvcData[1]),
								 super.opeDate,
								 super.opeDate};
		// 2013/09/09 mod start
		executeZM_M_CD_NM_KANRI_KV_SELECT_001(svcOpnmParam);
		// 2013/09/09 mod end
		JBSbatCommonDBInterface rcvOpnmMap = db_ZM_M_CD_NM_KANRI.selectNext();
		
		// 名称が取得できない場合は初期値
		if (rcvOpnmMap == null)
		{
			out_map.setString(JBSbatKVIFM023.OP_SVC_KEI_STAT_NM , "");				// オプションサービス契約ステータス名称
		}
		else
		{
			out_map.setString(JBSbatKVIFM023.OP_SVC_KEI_STAT_NM ,
							  repNullToEmpty(rcvOpnmMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM)));	// オプションサービス契約ステータス名称
		}

		out_map.setString(JBSbatKVIFM023.OP_SVC_CD , optSvcData[2]);					// オプションサービスコード
		
		// オプションサービス名
		Object[] svcOptParam = {repNullToEmpty(optSvcData[2])};
		executeKK_M_OP_SVC_KV_SELECT_001(svcOptParam);
		JBSbatCommonDBInterface rcvOptMap = db_KK_M_OP_SVC.selectNext();
		
		// 名称が取得できない場合は初期値
		if (rcvOptMap == null)
		{
			out_map.setString(JBSbatKVIFM023.OP_SVC_NM , "");				// オプションサービス名
		}
		else
		{
			out_map.setString(JBSbatKVIFM023.OP_SVC_NM ,
							  repNullToEmpty(rcvOptMap.getString(JBSbatKK_M_OP_SVC.OP_SVC_NM)));	// オプションサービス名
		}

		out_map.setString(JBSbatKVIFM023.PCRS_CD_SVC , optSvcData[3]);					// 料金コースコード
		
		// 料金コース名
		Object[] svcPprmParam = {repNullToEmpty(optSvcData[3])};
		executeKK_M_PCRS_KV_SELECT_001(svcPprmParam);
		JBSbatCommonDBInterface rcvPprsMap = db_KK_M_PCRS.selectNext();
		
		// 名称が取得できない場合は初期値
		if (rcvPprsMap == null)
		{
			out_map.setString(JBSbatKVIFM023.PCRS_NM_SVC , "");									// 料金コース名（オプションサービス）
		}
		else
		{
			out_map.setString(JBSbatKVIFM023.PCRS_NM_SVC ,
							  repNullToEmpty(rcvPprsMap.getString(JBSbatKK_M_PCRS.PCRS_NM)));	// 料金コース名（オプションサービス）
		}
		
		out_map.setString(JBSbatKVIFM023.PPLAN_CD_SVC , optSvcData[4]);					// 料金プランコード
		
		
		// 料金プラン名
		Object[] svcPplanParam = {repNullToEmpty(optSvcData[3]),
								  repNullToEmpty(optSvcData[4])};
		executeKK_M_PPLAN_KV_SELECT_002(svcPplanParam);
		JBSbatCommonDBInterface rcvPplanMap = db_KK_M_PPLAN.selectNext();
		
		// 名称が取得できない場合は初期値
		if (rcvPplanMap == null)
		{
			out_map.setString(JBSbatKVIFM023.PPLAN_NM_SVC , "");									// 料金プラン名（オプションサービス）
		}
		else
		{
			out_map.setString(JBSbatKVIFM023.PPLAN_NM_SVC ,
							  repNullToEmpty(rcvPplanMap.getString(JBSbatKK_M_PPLAN.PPLAN_NM)));	// 料金プラン名（オプションサービス）
		}

		out_map.setString(JBSbatKVIFM023.PLAN_STAYMD_SVC , optSvcData[5]);				// プラン開始年月日
		out_map.setString(JBSbatKVIFM023.PLAN_ENDYMD_SVC , optSvcData[6]);				// プラン終了年月日
		out_map.setString(JBSbatKVIFM023.PLAN_CHRG_STAYMD_SVC , optSvcData[7]);			// プラン課金開始年月日
		out_map.setString(JBSbatKVIFM023.PLAN_CHRG_ENDYMD_SVC , optSvcData[8]);			// プラン課金終了年月日
		out_map.setString(JBSbatKVIFM023.PLAN_END_SBT_CD_SVC , optSvcData[9]);			// プラン終了種別コード
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_YMD_SVC , optSvcData[10]);			// サービスキャンセル年月日
		out_map.setString(JBSbatKVIFM023.SVC_STAYMD_SVC , optSvcData[11]);				// サービス開始年月日
		out_map.setString(JBSbatKVIFM023.SVC_CHRG_STAYMD_SVC , optSvcData[12]);			// サービス課金開始年月日
		out_map.setString(JBSbatKVIFM023.SVC_ENDYMD_SVC , optSvcData[13]);				// サービス終了年月日
		out_map.setString(JBSbatKVIFM023.SVC_CHRG_ENDYMD_SVC , optSvcData[14]);			// サービス課金終了年月日
		out_map.setString(JBSbatKVIFM023.SVC_DSL_YMD_SVC , optSvcData[15]);				// サービス解約年月日
		out_map.setString(JBSbatKVIFM023.KAIHK_YMD_SVC , optSvcData[16]);				// 回復年月日
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_CL_YMD_SVC , optSvcData[17]);		// サービスキャンセル取消年月日
		out_map.setString(JBSbatKVIFM023.SVC_DSL_CL_YMD_SVC , optSvcData[18]);			// サービス解約取消年月日
		
		out_map.setString(JBSbatKVIFM023.SEIKY_KEI_NO_SVC , strSvcSeikyKeiNo);			// 請求契約番号（サービス）
		out_map.setString(JBSbatKVIFM023.SEIKY_KEI_NO_OPT , strOptSvcSeikyKeiNo);		// 請求契約番号（オプション）
		out_map.setString(JBSbatKVIFM023.SEIKY_KEI_NO_KKI , strKktkSvcSeikyKeiNo);		// 請求契約番号（機器提供サービス）

		out_map.setString(JBSbatKVIFM023.CHECK_RESULT , strErrorMessage);				// 検証結果
		
		//出力フラグを設定
		out_map.setOutFlg(true);
		
		//出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList(out_map);
	}
	
	/**
	 * NULLを空文字に置き換えます。
	 * 
	 * @param strChar 文字列
	 * @return String 編集結果
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String repNullToEmpty(String strChar) throws Exception
	{
		// 作業領域の初期化
		String resultChar = "";

		if (strChar == null)
		{
			resultChar = "";
		}
		else
		{
			resultChar = strChar;
		}
		return resultChar;
	}
	
	/**
	 * 検証結果ファイル（ヘッダ）を編集します。
	 * 
	 * @param outputInItem 出力ファイル
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void editOutputHeaderItem(JBSbatOutputItem outputInItem) throws Exception
	{
		// ヘッダ項目の変数を指定する
		String COLUMN_01 = "サービス契約番号";
		String COLUMN_02 = "サービス契約ステータス";
		String COLUMN_03 = "サービス契約ステータス名称";
		String COLUMN_04 = "料金コースコード";
		String COLUMN_05 = "料金コース名";
		String COLUMN_06 = "料金プランコード";
		String COLUMN_07 = "料金プラン名";
		String COLUMN_08 = "課金先番号";
		String COLUMN_09 = "請求契約番号";
		String COLUMN_10 = "サービス契約回線内訳番号";
		String COLUMN_11 = "割引サービス契約番号";
		String COLUMN_12 = "割引サービス契約ステータス";
		String COLUMN_13 = "割引サービス契約ステータス名称";
		String COLUMN_14 = "SYSID";
		String COLUMN_15 = "割引サービスコード";
		String COLUMN_16 = "表示用キャンペーンコード";
		String COLUMN_17 = "割引サービス名";
		String COLUMN_18 = "プラン開始年月日";
		String COLUMN_19 = "プラン終了年月日";
		String COLUMN_20 = "プラン課金開始年月日";
		String COLUMN_21 = "プラン課金終了年月日";
		String COLUMN_22 = "プラン終了種別コード";
		String COLUMN_23 = "サービスキャンセル年月日";
		String COLUMN_24 = "サービスキャンセル理由コード";
		String COLUMN_25 = "サービス開始年月日";
		String COLUMN_26 = "サービス課金開始年月日";
		String COLUMN_27 = "サービス終了年月日";
		String COLUMN_28 = "サービス課金終了年月日";
		String COLUMN_29 = "サービス解約年月日";
		String COLUMN_30 = "回復年月日";
		String COLUMN_31 = "サービスキャンセル取消年月日";
		String COLUMN_32 = "サービス解約取消年月日";
		String COLUMN_33 = "紹介コード";
		String COLUMN_34 = "申込起算年月日";
		String COLUMN_35 = "割引登録契機コード";
		String COLUMN_36 = "割引解約キャンセル契機コード";
		String COLUMN_37 = "割引額算出基準年月日";
		String COLUMN_38 = "割引課金開始月指定コード";
		String COLUMN_39 = "割引登録年月日";
		String COLUMN_40 = "割賦契約番号";
		String COLUMN_41 = "割賦契約ステータス";
		String COLUMN_42 = "割賦契約ステータス名称";
		String COLUMN_43 = "割賦プランコード";
		String COLUMN_44 = "割賦プランコード名称";
		String COLUMN_45 = "機器提供サービス契約番号";
		String COLUMN_46 = "割賦一括請求切替年月";
		String COLUMN_47 = "割賦契約キャンセル年月日";
		String COLUMN_48 = "割賦契約課金開始年月日";
		String COLUMN_49 = "割賦支払い残回数";
		String COLUMN_50 = "オプションサービス契約番号";
		String COLUMN_51 = "オプションサービス契約ステータス";
		String COLUMN_52 = "オプションサービス契約ステータス名称";
		String COLUMN_53 = "オプションサービスコード";
		String COLUMN_54 = "オプションサービス名";
		String COLUMN_55 = "料金コースコード";
		String COLUMN_56 = "料金コース名";
		String COLUMN_57 = "料金プランコード";
		String COLUMN_58 = "料金プラン名";
		String COLUMN_59 = "プラン開始年月日";
		String COLUMN_60 = "プラン終了年月日";
		String COLUMN_61 = "プラン課金開始年月日";
		String COLUMN_62 = "プラン課金終了年月日";
		String COLUMN_63 = "プラン終了種別コード";
		String COLUMN_64 = "サービスキャンセル年月日";
		String COLUMN_65 = "サービス開始年月日";
		String COLUMN_66 = "サービス課金開始年月日";
		String COLUMN_67 = "サービス終了年月日";
		String COLUMN_68 = "サービス課金終了年月日";
		String COLUMN_69 = "サービス解約年月日";
		String COLUMN_70 = "回復年月日";
		String COLUMN_71 = "サービスキャンセル取消年月日";
		String COLUMN_72 = "サービス解約取消年月日";
		String COLUMN_73 = "請求契約番号（サービス）";
		String COLUMN_74 = "請求契約番号（オプションサービス）";
		String COLUMN_75 = "請求契約番号（機器提供サービス）";
		String COLUMN_76 = "検証結果";
		
		// 入出力インタフェースオブジェクトを生成
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();
		
		// 出力項目を設定する
		out_map.setString(JBSbatKVIFM023.SVC_KEI_NO, 					COLUMN_01);		//サービス契約番号
		out_map.setString(JBSbatKVIFM023.SVC_KEI_STAT, 					COLUMN_02);		//サービス契約ステータス
		out_map.setString(JBSbatKVIFM023.SVC_KEI_STAT_NM, 				COLUMN_03);		//サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM023.PCRS_CD_WRIB, 					COLUMN_04);		//料金コースコード
		out_map.setString(JBSbatKVIFM023.PCRS_NM_WRIB, 					COLUMN_05);		//料金コース名
		out_map.setString(JBSbatKVIFM023.PPLAN_CD_WRIB, 				COLUMN_06);		//料金プランコード
		out_map.setString(JBSbatKVIFM023.PPLAN_NM_WRIB, 				COLUMN_07);		//料金プラン名
		out_map.setString(JBSbatKVIFM023.KAKINS_NO, 					COLUMN_08);		//課金先番号
		out_map.setString(JBSbatKVIFM023.SEIKY_KEI_NO, 					COLUMN_09);		//請求契約番号
		out_map.setString(JBSbatKVIFM023.SVC_KEI_KAISEN_UCWK_NO, 		COLUMN_10);		//サービス契約回線内訳番号
		out_map.setString(JBSbatKVIFM023.WRIB_SVC_KEI_NO, 				COLUMN_11);		//割引サービス契約番号
		out_map.setString(JBSbatKVIFM023.WRIB_SVC_KEI_STAT, 			COLUMN_12);		//割引サービス契約ステータス
		out_map.setString(JBSbatKVIFM023.WRIB_SVC_KEI_STAT_NM, 			COLUMN_13);		//割引サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM023.SYSID, 						COLUMN_14);		//SYSID
		out_map.setString(JBSbatKVIFM023.WRIB_SVC_CD, 					COLUMN_15);		//割引サービスコード
		out_map.setString(JBSbatKVIFM023.DSP_CAMPAIGN_CD, 				COLUMN_16);		//表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM023.WRIB_SVC_NM, 					COLUMN_17);		//割引サービス名
		out_map.setString(JBSbatKVIFM023.PLAN_STAYMD_WRIB, 				COLUMN_18);		//プラン開始年月日
		out_map.setString(JBSbatKVIFM023.PLAN_ENDYMD_WRIB, 				COLUMN_19);		//プラン終了年月日
		out_map.setString(JBSbatKVIFM023.PLAN_CHRG_STAYMD_WRIB, 		COLUMN_20);		//プラン課金開始年月日
		out_map.setString(JBSbatKVIFM023.PLAN_CHRG_ENDYMD_WRIB, 		COLUMN_21);		//プラン課金終了年月日
		out_map.setString(JBSbatKVIFM023.PLAN_END_SBT_CD_WRIB, 			COLUMN_22);		//プラン終了種別コード
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_YMD_WRIB, 			COLUMN_23);		//サービスキャンセル年月日
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_RSN_CD_WRIB, 		COLUMN_24);		//サービスキャンセル理由コード
		out_map.setString(JBSbatKVIFM023.SVC_STA_YMD_WRIB, 				COLUMN_25);		//サービス開始年月日
		out_map.setString(JBSbatKVIFM023.SVC_CHRG_STAYMD_WRIB, 			COLUMN_26);		//サービス課金開始年月日
		out_map.setString(JBSbatKVIFM023.SVC_ENDYMD_WRIB, 				COLUMN_27);		//サービス終了年月日
		out_map.setString(JBSbatKVIFM023.SVC_CHRG_ENDYMD_WRIB, 			COLUMN_28);		//サービス課金終了年月日
		out_map.setString(JBSbatKVIFM023.SVC_DSL_YMD_WRIB, 				COLUMN_29);		//サービス解約年月日
		out_map.setString(JBSbatKVIFM023.KAIHK_YMD_WRIB, 				COLUMN_30);		//回復年月日
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_CL_YMD_WRIB, 		COLUMN_31);		//サービスキャンセル取消年月日
		out_map.setString(JBSbatKVIFM023.SVC_DSL_CL_YMD_WRIB, 			COLUMN_32);		//サービス解約取消年月日
		out_map.setString(JBSbatKVIFM023.INTR_CD, 						COLUMN_33);		//紹介コード
		out_map.setString(JBSbatKVIFM023.MSKM_KISAN_YMD, 				COLUMN_34);		//申込起算年月日
		out_map.setString(JBSbatKVIFM023.WRIB_ADD_OPTY_CD, 				COLUMN_35);		//割引登録契機コード
		out_map.setString(JBSbatKVIFM023.WRIB_DSL_CNCL_OPTY_CD, 		COLUMN_36);		//割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM023.WRIB_AMNT_SNST_STDARDYMD, 		COLUMN_37);		//割引額算出基準年月日
		out_map.setString(JBSbatKVIFM023.WRIB_CHRG_STA_MON_STI_CD, 		COLUMN_38);		//割引課金開始月指定コード
		out_map.setString(JBSbatKVIFM023.WRIB_ADD_YMD, 					COLUMN_39);		//割引登録年月日
		out_map.setString(JBSbatKVIFM023.KAP_KEI_NO, 					COLUMN_40);		//割賦契約番号
		out_map.setString(JBSbatKVIFM023.KAP_KEI_STAT, 					COLUMN_41);		//割賦契約ステータス
		out_map.setString(JBSbatKVIFM023.KAP_KEI_STAT_NM, 				COLUMN_42);		//割賦契約ステータス名称
		out_map.setString(JBSbatKVIFM023.KAP_PLAN_CD, 					COLUMN_43);		//割賦プランコード
		out_map.setString(JBSbatKVIFM023.KAP_PLAN_CD_NM, 				COLUMN_44);		//割賦プランコード名称
		out_map.setString(JBSbatKVIFM023.KKTK_SVC_KEI_NO, 				COLUMN_45);		//機器提供サービス契約番号
		out_map.setString(JBSbatKVIFM023.KAP_IKT_SIKY_SWCH_YM, 			COLUMN_46);		//割賦一括請求切替年月
		out_map.setString(JBSbatKVIFM023.KAP_KEI_CANCEL_YMD, 			COLUMN_47);		//割賦契約キャンセル年月日
		out_map.setString(JBSbatKVIFM023.KAP_KEI_CHRG_STAYMD, 			COLUMN_48);		//割賦契約課金開始年月日
		out_map.setString(JBSbatKVIFM023.KAP_PAY_ZAN_CNT, 				COLUMN_49);		//割賦支払い残回数
		out_map.setString(JBSbatKVIFM023.OP_SVC_KEI_NO, 				COLUMN_50);		//オプションサービス契約番号
		out_map.setString(JBSbatKVIFM023.OP_SVC_KEI_STAT, 				COLUMN_51);		//オプションサービス契約ステータス
		out_map.setString(JBSbatKVIFM023.OP_SVC_KEI_STAT_NM, 			COLUMN_52);		//オプションサービス契約ステータス名称
		out_map.setString(JBSbatKVIFM023.OP_SVC_CD, 					COLUMN_53);		//オプションサービスコード
		out_map.setString(JBSbatKVIFM023.OP_SVC_NM, 					COLUMN_54);		//オプションサービス名
		out_map.setString(JBSbatKVIFM023.PCRS_CD_SVC, 					COLUMN_55);		//料金コースコード
		out_map.setString(JBSbatKVIFM023.PCRS_NM_SVC, 					COLUMN_56);		//料金コース名
		out_map.setString(JBSbatKVIFM023.PPLAN_CD_SVC, 					COLUMN_57);		//料金プランコード
		out_map.setString(JBSbatKVIFM023.PPLAN_NM_SVC, 					COLUMN_58);		//料金プラン名
		out_map.setString(JBSbatKVIFM023.PLAN_STAYMD_SVC, 				COLUMN_59);		//プラン開始年月日
		out_map.setString(JBSbatKVIFM023.PLAN_ENDYMD_SVC, 				COLUMN_60);		//プラン終了年月日
		out_map.setString(JBSbatKVIFM023.PLAN_CHRG_STAYMD_SVC, 			COLUMN_61);		//プラン課金開始年月日
		out_map.setString(JBSbatKVIFM023.PLAN_CHRG_ENDYMD_SVC, 			COLUMN_62);		//プラン課金終了年月日
		out_map.setString(JBSbatKVIFM023.PLAN_END_SBT_CD_SVC, 			COLUMN_63);		//プラン終了種別コード
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_YMD_SVC, 			COLUMN_64);		//サービスキャンセル年月日
		out_map.setString(JBSbatKVIFM023.SVC_STAYMD_SVC, 				COLUMN_65);		//サービス開始年月日
		out_map.setString(JBSbatKVIFM023.SVC_CHRG_STAYMD_SVC, 			COLUMN_66);		//サービス課金開始年月日
		out_map.setString(JBSbatKVIFM023.SVC_ENDYMD_SVC, 				COLUMN_67);		//サービス終了年月日
		out_map.setString(JBSbatKVIFM023.SVC_CHRG_ENDYMD_SVC, 			COLUMN_68);		//サービス課金終了年月日
		out_map.setString(JBSbatKVIFM023.SVC_DSL_YMD_SVC, 				COLUMN_69);		//サービス解約年月日
		out_map.setString(JBSbatKVIFM023.KAIHK_YMD_SVC, 				COLUMN_70);		//回復年月日
		out_map.setString(JBSbatKVIFM023.SVC_CANCEL_CL_YMD_SVC, 		COLUMN_71);		//サービスキャンセル取消年月日
		out_map.setString(JBSbatKVIFM023.SVC_DSL_CL_YMD_SVC, 			COLUMN_72);		//サービス解約取消年月日
		out_map.setString(JBSbatKVIFM023.SEIKY_KEI_NO_SVC, 				COLUMN_73);		//請求契約番号（サービス）
		out_map.setString(JBSbatKVIFM023.SEIKY_KEI_NO_OPT, 				COLUMN_74);		//請求契約番号（オプションサービス）
		out_map.setString(JBSbatKVIFM023.SEIKY_KEI_NO_KKI, 				COLUMN_75);		//請求契約番号（機器提供サービス）
		out_map.setString(JBSbatKVIFM023.CHECK_RESULT, 					COLUMN_76);		//検証結果
		
		//出力フラグを設定
		out_map.setOutFlg(true);
		
		//出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList(out_map);
	}
}
