/*********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名			：eo顧客基幹システム
 *	モジュール名		：JBSbatKVWribVrfyServiceSide
 *	ソースファイル名	：JBSbatKVWribVrfyServiceSide.java
 *	作成者				：富士通　
 *	作成日				：2013年06月11日
 *＜機能概要＞
 *　割引検証サービス契約起点検証部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2013/06/11   富士通		新規作成
 *	v25.00.00	2016/06/22   FJ)岡田	【OM-2016-0000989】
 *	v25.00.01	2016/06/22   FJ)岡田	【OM-2016-0000989】
 *********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.util.file.JBSbatKVIFM017;
import eo.business.util.file.JBSbatKVIFM025;
import eo.business.util.file.JBSbatKVIFM029;
import eo.business.util.file.JBSbatKVIFM026;
import eo.business.util.table.JBSbatKK_M_WRIB_SOKAN_CKJK;
import eo.business.util.table.JBSbatKK_M_WRSV_APLY_JKN;
import eo.business.util.table.JBSbatKK_T_MSKM_AGNT;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
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;

/**
 * (クラスの機能概要)
 * <p>
 *<BR>
 * 
 * @author 富士通
 */
public class JBSbatKVWribVrfyServiceSide extends JBSbatBusinessService
		implements JBSbatMatchServiceInterface {
	/** ▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼ */
	/** テーブル(割引サービス) */
	private static final String D_TBL_NAME_KK_M_WRIB_SVC = "KK_M_WRIB_SVC";

	/** テーブル(割引サービス適用条件) */
	private static final String D_TBL_NAME_KK_M_WRSV_APLY_JKN = "KK_M_WRSV_APLY_JKN";

	/** テーブル(申込明細) */
	private static final String D_TBL_NAME_KK_T_MSKM_DTL = "KK_T_MSKM_DTL";

	/** テーブル(異動予約) */
	private static final String D_TBL_NAME_KK_T_IDO_RSV = "KK_T_IDO_RSV";

	/** テーブル(申込＿代理店) */
	private static final String D_TBL_NAME_KK_T_MSKM_AGNT = "KK_T_MSKM_AGNT";

	/** テーブル(割引相関チェック条件) */
	private static final String D_TBL_NAME_KK_M_WRIB_SOKAN_CKJK = "KK_M_WRIB_SOKAN_CKJK";

	// v25.00.01 MOD START
	/** SQL定義キー(KV_SELECT_004) */
	// private static final String KK_M_WRSV_APLY_JKN_KV_SELECT_001 = "KV_SELECT_001";
	private static final String KK_M_WRSV_APLY_JKN_KV_SELECT_004 = "KV_SELECT_004";
	// v25.00.01 MOD END

	/** SQL定義キー(KV_SELECT_001) */
	private static final String KK_T_MSKM_DTL_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001) */
	private static final String KK_T_IDO_RSV_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_001) */
	private static final String KK_T_MSKM_AGNT_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_002) */
	private static final String KK_T_MSKM_DTL_KV_SELECT_002 = "KV_SELECT_002";

	/** SQL定義キー(KV_SELECT_001) */
	private static final String KK_M_WRIB_SOKAN_CKJK_KV_SELECT_001 = "KV_SELECT_001";

	/** テーブルアクセスクラス(割引サービス) */
	private JBSbatSQLAccess db_KK_M_WRIB_SVC = null;

	/** テーブルアクセスクラス(割引サービス適用条件) */
	private JBSbatSQLAccess db_KK_M_WRSV_APLY_JKN = null;

	/** テーブルアクセスクラス(申込明細) */
	private JBSbatSQLAccess db_KK_T_MSKM_DTL = null;

	/** テーブルアクセスクラス(異動予約) */
	private JBSbatSQLAccess db_KK_T_IDO_RSV = null;

	/** テーブルアクセスクラス(申込＿代理店) */
	private JBSbatSQLAccess db_KK_T_MSKM_AGNT = null;

	/** テーブルアクセスクラス(割引相関チェック条件) */
	private JBSbatSQLAccess db_KK_M_WRIB_SOKAN_CKJK = null;

	/** キーマッチ処理フラグ */
	private boolean matchProcFlg;

	/** マスタファイル処理フラグ */
	private boolean mastProcFlg;

	/** トランファイル処理フラグ */
	private boolean tranProcFlg;
	/** ▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲ */

	/** ヘッダ出力処理用フラグ */
	private boolean booHeaderOutputFlg = false;

	/** 割引サービス情報リスト */
	private List<JBSbatServiceInterfaceMap> wribMapList;

	/** サービス契約適用可能割引情報リスト */
	private List<JBSbatServiceInterfaceMap> svcMapList;

	private String svcKeiNo = "";

	/** フリー項目区切り文字(セミコロン) */
	private static final String DELIM = ";";

	/** 入力Ｍ読み込み回数 */
	private int intMstCnt = 1;

	/** 入力Ｍ読み込み終了回数 */
	private int intMstCntEnd = 0;

	/** 入力Ｔ読み込み回数 */
	private int intTrnCnt = 1;

	/** 入力Ｔ読み込み終了回数 */
	private int intTrnCntEnd = 0;

	private static final String SYUBETSU_01 = "01";
	private static final String SYUBETSU_02 = "02";
	private static final String SYUBETSU_05 = "05";
	private static final String SYUBETSU_06 = "06";
	private static final String SYUBETSU_07 = "07";
	private static final String SYUBETSU_08 = "08";
	private static final String SYUBETSU_09 = "09";

	private static final String[] resultMessageList = { "",
			"適用条件種別コード01：申込可能な申込形態以外でキャンペーンが申し込まれている。",
			"適用条件種別コード01：申込可能な申込形態だがキャンペーンが申し込まれていない。",
			"適用条件種別コード02：申込可能な紹介コード以外でキャンペーンが申し込まれている。",
			"適用条件種別コード02：申込可能な紹介コードだがキャンペーンが申し込まれていない。",
			"適用条件種別コード05：コース変更キャンペーンで変更前後料金プランが不正なキャンペーンが申し込まれている。",
			"適用条件種別コード05：コース変更キャンペーンで申込可能なキャンペーンが申し込まれていない。",
			"適用条件種別コード06：申込可能な代理店以外でキャンペーンが申し込まれている。",
			"適用条件種別コード06：申込可能な代理店だがキャンペーンが申し込まれていない。",
			"適用条件種別コード07：訪販以外の申込形態でキャンペーンが申し込まれている。",
			"適用条件種別コード08：申し込まれているグレードアップキャンペーンは当該サービス契約を対象としていない。",
			"適用条件種別コード08：グレードアップキャンペーンで申込可能なキャンペーンが申し込まれていない。",
			"適用条件種別コード09：申し込まれているBSパススルーキャンペーンは当該サービス契約を対象としていない。",
			"適用条件種別コード09：BSパススルーキャンペーンで申込可能なキャンペーンが申し込まれていない。",
			"同時に申し込みできないキャンペーン%s、%sが申し込まれている。",
			"排他関係にある二つのキャンペーン%s、%sのどちらも申し込まれていない。",
			"適用可能なキャンペーンが抽出されませんでした。不要なキャンペーンが設定されている可能性があります。" };

	/**
	 * 初期処理
	 * 
	 * @param JBSbatCommonItem
	 *            commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception {
		/** ▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼ */
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_M_WRIB_SVC = new JBSbatSQLAccess(commonItem,
			D_TBL_NAME_KK_M_WRIB_SVC);
		db_KK_M_WRSV_APLY_JKN = new JBSbatSQLAccess(commonItem,
			D_TBL_NAME_KK_M_WRSV_APLY_JKN);
		db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem,
			D_TBL_NAME_KK_T_MSKM_DTL);
		db_KK_T_IDO_RSV = new JBSbatSQLAccess(commonItem,
			D_TBL_NAME_KK_T_IDO_RSV);
		db_KK_T_MSKM_AGNT = new JBSbatSQLAccess(commonItem,
			D_TBL_NAME_KK_T_MSKM_AGNT);
		db_KK_M_WRIB_SOKAN_CKJK = new JBSbatSQLAccess(commonItem,
			D_TBL_NAME_KK_M_WRIB_SOKAN_CKJK);
		/** ▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲ */

		wribMapList = new ArrayList<JBSbatServiceInterfaceMap>();
		svcMapList = new ArrayList<JBSbatServiceInterfaceMap>();

		// フリー項目を取得する。
		String[] strFileCnt = super.freeItem.split(DELIM);

		// 入力Ｍファイル行数取得
		intMstCntEnd = Integer.parseInt(strFileCnt[0]);
		// 入力Ｔファイル行数取得
		intTrnCntEnd = Integer.parseInt(strFileCnt[1]);
		super.logPrint.printDebugLog("入力Ｍファイル行数：" + intMstCntEnd);
		super.logPrint.printDebugLog("入力Ｔファイル行数：" + intTrnCntEnd);

		/** ▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 主処理
	 * 
	 * @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);
			this.editOutputHeaderItem2(outputInItem);
			booHeaderOutputFlg = true;
		}

		if (svcMap == null && wribMap != null) {
			// サービス契約のみnullの場合

			String strTranData = wribMap.getString(JBSbatKVIFM017.SVC_KEI_NO);
			if (svcKeiNo.equals(strTranData)) {
				// サービス契約番号が現在処理中のデータと等しい場合
				// 割引検証サービス契約情報抽出データを格納
				wribMapList.add(wribMap);
			}

			this.setTranProcFlg(true);

		} else if (svcMap != null && wribMap == null) {
			// 割引サービス契約のみnullの場合

			String strMastData = svcMap.getString(JBSbatKVIFM029.SVC_KEI_NO);
			if (!svcKeiNo.equals(strMastData)) {
				// サービス契約番号が前回と違う場合
				// ファイル出力処理を行う
				outputFileLogic(outputInItem);

				svcKeiNo = strMastData;
			}

			// サービス契約適用可能割引情報を格納
			svcMapList.add(svcMap);

			this.setMastProcFlg(true);
		// 2013/09/09 add start
		} else if (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);
		// 2013/09/09 add end
		} else {

			// サービス契約番号を比較
			String strMastData = svcMap.getString(JBSbatKVIFM029.SVC_KEI_NO);
			String strTranData = wribMap.getString(JBSbatKVIFM017.SVC_KEI_NO);
			super.logPrint.printDebugLog("サービス契約：" + strMastData);
			super.logPrint.printDebugLog("割引サービス契約：" + strTranData);
			super.logPrint.printDebugLog("サービス契約番号：" + svcKeiNo);

			if (svcKeiNo.equals(strMastData)) {
				super.logPrint.printDebugLog("サービス契約適用可能割引情報を格納");

				// サービス契約適用可能割引情報を格納
				svcMapList.add(svcMap);

				// サービス契約のみ次のデータを読み込む
				this.setMastProcFlg(true);
				this.setTranProcFlg(false);

			} else if (svcKeiNo.equals(strTranData)) {
				super.logPrint.printDebugLog("割引検証サービス契約情報抽出データを格納");

				// 割引検証サービス契約情報抽出データを格納
				wribMapList.add(wribMap);

				// 割引サービス契約のみ次のデータを読み込む
				this.setMastProcFlg(false);
				this.setTranProcFlg(true);

			} else if (strTranData.compareTo(svcKeiNo) < 0) {
				super.logPrint.printDebugLog("割引検証サービス契約情報抽出データをスキップ");

				// 割引サービス契約のみ次のデータを読み込む
				this.setMastProcFlg(false);
				this.setTranProcFlg(true);

			} else {

				if (!svcMapList.isEmpty()) {

					// ファイル出力処理を行う
					outputFileLogic(outputInItem);
				}

				// サービス契約番号
				svcKeiNo = strMastData;

				// サービス契約適用可能割引情報を格納
				svcMapList.add(svcMap);

				// サービス契約のみ次のデータを読み込む
				this.setMastProcFlg(true);
				this.setTranProcFlg(false);
			}
		}

		if (isMastProcFlg()) {
			intMstCnt++;
		} else {
			intTrnCnt++;
		}

		if (intMstCnt > intMstCntEnd && intTrnCnt > intTrnCntEnd) {
			super.logPrint.printDebugLog("最終行処理");

			if (!svcMapList.isEmpty()) {

				// ファイル出力処理を行う
				outputFileLogic(outputInItem);
			}
		}

		super.logPrint.printDebugLog("execute_END");
		return outputInItem;
		/** ▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 業務サービス終了処理
	 * 
	 * @throws Exception
	 */
	public void terminal() throws Exception {
		/** ▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼ */
		// DBアクセスクラスをクローズします
		db_KK_M_WRIB_SVC.close();
		db_KK_M_WRSV_APLY_JKN.close();
		db_KK_T_MSKM_DTL.close();
		db_KK_T_IDO_RSV.close();
		db_KK_T_MSKM_AGNT.close();
		db_KK_M_WRIB_SOKAN_CKJK.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;
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	割引サービス適用条件年月日
	 * 	 	割引サービスコード
	 * 	 	割引サービス適用条件種別コード
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_WRSV_APLY_JKN_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_WRSV_APLY_JKN.selectBySqlDefine(paramList,
			// v25.00.01 MOD START
			// KK_M_WRSV_APLY_JKN_KV_SELECT_001);
			KK_M_WRSV_APLY_JKN_KV_SELECT_004);
			// v25.00.01 MOD END
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	申込明細番号
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_DTL_KV_SELECT_001(Object[] param)
			throws Exception {
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_DTL.selectBySqlDefine(paramList,
			KK_T_MSKM_DTL_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	サービス契約番号
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_IDO_RSV_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());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());

		// DBアクセスを実行します
		db_KK_T_IDO_RSV
			.selectBySqlDefine(paramList, KK_T_IDO_RSV_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数	の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	申込明細番号
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_AGNT_KV_SELECT_001(Object[] param)
			throws Exception {
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_AGNT.selectBySqlDefine(paramList,
			KK_T_MSKM_AGNT_KV_SELECT_001);
	}

	/**
	 * SQLKEY(KV_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	申込明細番号
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_DTL_KV_SELECT_002(Object[] param)
			throws Exception {
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_DTL.selectBySqlDefine(paramList,
			KK_T_MSKM_DTL_KV_SELECT_002);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	割引サービスコード
	 * 	 	割引サービスコード
	 * 	 	バッチ運用日
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_WRIB_SOKAN_CKJK_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());

		// DBアクセスを実行します
		db_KK_M_WRIB_SOKAN_CKJK.selectBySqlDefine(paramList,
			KK_M_WRIB_SOKAN_CKJK_KV_SELECT_001);
	}

	/** ▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲ */

	/**
	 * ファイル出力ロジック
	 * 
	 * @param outputInItem
	 */
	private void outputFileLogic(JBSbatOutputItem outputInItem) {

		try {
			super.logPrint.printDebugLog("ファイル出力ロジックStart");

			// 顧客申込の割引サービス情報リスト
			List<JBSbatServiceInterfaceMap> wribMapListCust = new ArrayList<JBSbatServiceInterfaceMap>();
			
			JBSbatServiceInterfaceMap wribMapData = null;

			// 割引相関マップ
			Map<String, String[]> wribSokanMap = new HashMap<String, String[]>();

			for (int i = 0; i < wribMapList.size(); i++) {
				wribMapListCust.add(wribMapList.get(i));
			}

			for (int i = 0; i < svcMapList.size(); i++) {

				JBSbatServiceInterfaceMap svcMap = svcMapList.get(i);

				// 割引サービスコードを取得
				String wribSvcCd = svcMap.getString(JBSbatKVIFM029.WRIB_SVC_CD);

				// 適用条件種別コード
				String jknSbtCd = svcMap
					.getString(JBSbatKVIFM029.WRSV_APLY_JKN_SBT_CD);

				// v25.00.00 ADD START
				// 割引サービス適用条件適用開始年月日
				String wrsvAplyJknTstaymd = svcMap.getString(JBSbatKVIFM029.WRSV_APLY_JKN_TSTAYMD);

				// 割引サービス適用条件適用終了年月日
				String wrsvAplyJknTendymd = svcMap.getString(JBSbatKVIFM029.WRSV_APLY_JKN_TENDYMD);
				// v25.00.00 ADD END

				// 割引検証サービス契約情報抽出結果ファイルのデータがあれば取得
				if (wribMapData == null
						|| !wribSvcCd.equals(wribMapData
							.getString(JBSbatKVIFM017.WRIB_SVC_CD))) {
					wribMapData = null;
					for (int j = 0; j < wribMapList.size(); j++) {
						JBSbatServiceInterfaceMap wribMapTmp = wribMapList
							.get(j);
						// v25.00.00 MOD START
						//if (wribSvcCd.equals(wribMapTmp
						//	.getString(JBSbatKVIFM017.WRIB_SVC_CD))) {
						if (wribSvcCd.equals(wribMapTmp.getString(JBSbatKVIFM017.WRIB_SVC_CD)) &&
								wrsvAplyJknTstaymd.compareTo(wribMapTmp.getString(JBSbatKVIFM017.WRIB_ADD_YMD)) <= 0 &&
								wrsvAplyJknTendymd.compareTo(wribMapTmp.getString(JBSbatKVIFM017.WRIB_ADD_YMD)) >= 0 )
						{
						// v25.00.00 MOD END
							wribMapData = wribMapTmp;
							// リストから削除
							wribMapList.remove(j);
						}
					}
				}
				// 2013/09/09 mod start
				// 割引が適用済でなければ検証を行う
				if (wribMapData == null || !wribMapData.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT).equals("300")) {
				
					super.logPrint.printDebugLog("検証処理");
					
					int intFlg = isApplicableCampaign(svcMap);
	
					for (; i < svcMapList.size() - 1; i++) {
						JBSbatServiceInterfaceMap svcMapTmp = svcMapList.get(i + 1);
	
						// 割引サービスコード
						String wribSvcCdTmp = svcMapTmp
							.getString(JBSbatKVIFM029.WRIB_SVC_CD);
	
						// 適用条件種別コード
						String jknSbtCdTmp = svcMapTmp
							.getString(JBSbatKVIFM029.WRSV_APLY_JKN_SBT_CD);
	
						// 同じ割引サービスの場合は継続
						if (!wribSvcCd.equals(wribSvcCdTmp)
								|| !jknSbtCd.equals(jknSbtCdTmp)) {
							break;
						}
	
						// すでに適用可能であると判定した場合はチェックしない
						if (intFlg != 1) {
							intFlg = isApplicableCampaign(svcMapTmp);
						}
					}
	
					if (intFlg == 1) {
						if (wribMapData == null) {
							// 適用できるがしていない
							super.logPrint.printDebugLog("適用していないキャンペーンです："
									+ wribSvcCd);
	
							if (!jknSbtCd.equals(SYUBETSU_07)) {
	
								// ファイル出力を行う
								String message = getEnabledWribCampaignMessage(jknSbtCd);
								String[] outData = setOutData(svcMap, message);
								outPutWork(outputInItem, outData);
	
								outData = setOutData2(svcMap);
								outPutWork2(outputInItem, outData);
							}
						}
					} else if (intFlg == 2 && wribMapData != null) {
						// 適用できないのにしている
						super.logPrint.printDebugLog("適用できないキャンペーンです：" + wribSvcCd);
	
						String message = getDisabledWribCampaignMessage(jknSbtCd);
	
						String[] outData = setOutData(svcMap, wribMapData, message);
						outPutWork(outputInItem, outData);
					}
	
					if (svcMap.getString(JBSbatKVIFM029.WRIB_APLY_OPTNTY_CD)
						.equals("1")
							&& wribMapData != null) {
						// 顧客申込の場合
						super.logPrint.printDebugLog("顧客申込");
	
						// 割引相関チェック条件マスタを参照
						wribSokanMap
							.putAll(getCorrelationCheckCondition(wribSvcCd));
	
					}
				}
				// 2013/09/09 mod end
			}

			JBSbatServiceInterfaceMap svcMap = svcMapList.get(0);

			for (int i = 0; i < wribMapList.size(); i++) {
				JBSbatServiceInterfaceMap wribMapTmp = wribMapList.get(i);

				// 2013/09/09 mod start
				// 割引が適用済でなければ検証を行う
				if (!wribMapTmp.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT).equals("300")){
					
					String wribSvcCd = wribMapTmp
						.getString(JBSbatKVIFM017.WRIB_SVC_CD);
					
					// v25.00.01 ADD START
					String addymd = wribMapTmp.getString(JBSbatKVIFM017.WRIB_ADD_YMD);
					// v25.00.01 ADD END
					
					super.logPrint.printDebugLog("適用条件種別確認処理:" + wribSvcCd);
					
					// v25.00.01 MOD START
					// List<String> jokenSyubetsuList = getWribConditionKind(wribSvcCd);
					List<String> jokenSyubetsuList = getWribConditionKind(wribSvcCd, addymd);
					// v25.00.01 MOD END

					// 適用できないのにしている
					super.logPrint.printDebugLog("適用できないか適用条件判定対象外のキャンペーンです："
							+ wribMapTmp.getString(JBSbatKVIFM017.WRIB_SVC_CD));
					// 割引サービスコードで適用条件種別コードを取得
					for (int j = 0; j < jokenSyubetsuList.size(); j++) {

						String message = getDisabledWribCampaignMessage(jokenSyubetsuList
							.get(j));
	
						String[] outData = setOutData(svcMap, wribMapTmp, message);
						outPutWork(outputInItem, outData);
					}
	
					// できれば顧客申込の場合のみ判定したいが遅くなるので全て
					// 割引相関チェック条件マスタを参照
					wribSokanMap.putAll(getCorrelationCheckCondition(wribSvcCd));
				}
				// 2013/09/09 mod end
			}

			if (wribSokanMap.size() > 0) {
				// 顧客申込の場合
				for (Entry<String, String[]> e : wribSokanMap.entrySet()) {
					String[] sokan = e.getValue();
					boolean svcFlg1 = false;
					boolean svcFlg2 = false;
					JBSbatServiceInterfaceMap wribMap1 = null;
					JBSbatServiceInterfaceMap wribMap2 = null;
					for (int i = 0; i < wribMapListCust.size(); i++) {
						JBSbatServiceInterfaceMap wribMapTmp = wribMapListCust
							.get(i);
						String wribSvcCd = wribMapTmp
							.getString(JBSbatKVIFM017.WRIB_SVC_CD);

						if (!svcFlg1) {
							svcFlg1 = sokan[0].equals(wribSvcCd);
							wribMap1 = wribMapTmp;
						}
						if (!svcFlg2) {
							svcFlg2 = sokan[1].equals(wribSvcCd);
							wribMap2 = wribMapTmp;
						}
						if (svcFlg1 && svcFlg2) {
							break;
						}
					}
					if (svcFlg1 && svcFlg2) {
						// 排他となるキャンペーンの両方が適用されている場合
						super.logPrint.printDebugLog("排他関係のキャンペーンが適用されています");

						// ファイル出力を行う
						String message = String.format(resultMessageList[14],
							sokan[0], sokan[1]);
						String[] outData = setOutData(svcMap, wribMap1, message);
						outPutWork(outputInItem, outData);
						outData = setOutData(svcMap, wribMap2, message);
						outPutWork(outputInItem, outData);
					}
				}
			}

			wribSokanMap.clear();
			wribMapList.clear();
			svcMapList.clear();

			super.logPrint.printDebugLog("ファイル出力ロジックEnd");
		} catch (Exception e1) {
			super.logPrint.printDebugLog("ファイル出力ロジックでエラー");
			e1.printStackTrace();
		}
	}

	/**
	 * サービスに適用可能なキャンペーンかを判定
	 * 
	 * @param svcMap
	 *            サービス契約マップデータ
	 * @return サービス契約に適用できる割引キャンペーンのデータか
	 * @throws Exception
	 */
	private int isApplicableCampaign(JBSbatServiceInterfaceMap svcMap) {

		try {
			String wribSvcCd = svcMap
				.getString(JBSbatKK_M_WRSV_APLY_JKN.WRIB_SVC_CD);
			super.logPrint.printDebugLog("適用可能キャンペーンか判定：" + wribSvcCd);

			int intFlg = 0;

			// 適用条件種別コード
			String jknSbtCd = svcMap
				.getString(JBSbatKVIFM029.WRSV_APLY_JKN_SBT_CD);
			// 適用条件値１
			String jokenti = svcMap
				.getString(JBSbatKVIFM029.WRSV_APLY_JKN_VALUE_1);

			if (jknSbtCd.equals(SYUBETSU_01)) {
				// 割引サービス適用条件種別:申込形態
				// 申込明細スキーマを検索
				String[] param01 = new String[1];
				param01[0] = svcMap
					.getString(JBSbatKVIFM029.SVC_KYK_MSKM_DTL_NO); // 申込明細番号
				executeKK_T_MSKM_DTL_KV_SELECT_001(param01);
				JBSbatCommonDBInterface db_map01 = db_KK_T_MSKM_DTL
					.selectNext();

				String formCd = db_map01
					.getString(JBSbatKK_T_MSKM_DTL.MSKM_FORM_CD);
				if (formCd.equals(jokenti)) {
					intFlg = 1;
				} else {
					intFlg = 2;
				}

			} else if (jknSbtCd.equals(SYUBETSU_02)) {

				int length = jokenti.length();
				String intrCd = svcMap.getString(JBSbatKVIFM029.INTR_CD);

				// 紹介コードと割引サービス適用条件マスタの紹介コードが前方一致するか
				if (intrCd.length() >= length
						&& jokenti.equals(intrCd.substring(0, length))) {
					intFlg = 1;
				} else {
					intFlg = 2;
				}

			} else if (jknSbtCd.equals(SYUBETSU_05)) {
				// 割引サービス適用条件種別:申込種別

				if (jokenti.equals("00007")) {
					// 2013/09/09 mod start
					// サービス契約がコース変更を一度も行っていない場合は適用できない
					if(svcMap.getString(JBSbatKVIFM029.SVC_STA_YMD).equals(svcMap.getString(JBSbatKVIFM029.PLAN_STAYMD))){
						super.logPrint.printDebugLog("サービス開始日＝プラン開始日");
						intFlg = 2;
					}else{
					
						super.logPrint.printDebugLog("サービス開始日≠プラン開始日");
						// 異動予約反映スキーマを検索
						String[] param05 = new String[8];
						param05[0] = svcMap.getString(JBSbatKVIFM029.SVC_KEI_NO); // サービス契約番号
						param05[1] = wribSvcCd; // 割引サービスコード
						param05[2] = super.opeDate;
						param05[3] = super.opeDate;
						param05[4] = svcMap.getString(JBSbatKVIFM029.SVC_CD);
						param05[5] = svcMap.getString(JBSbatKVIFM029.PRC_GRP_CD);
						param05[6] = svcMap.getString(JBSbatKVIFM029.PCRS_CD);
						param05[7] = svcMap.getString(JBSbatKVIFM029.PPLAN_CD);
	
						executeKK_T_IDO_RSV_KV_SELECT_001(param05);
						JBSbatCommonDBInterface db_map05 = db_KK_T_IDO_RSV
							.selectNext();
	
						if (db_map05 != null) {
							intFlg = 1;
						} else {
							intFlg = 2;
						}
					}
					// 2013/09/09 mod end
				}

			} else if (jknSbtCd.equals(SYUBETSU_06)) {

				// 申込_代理店スキーマを検索
				String[] param06 = new String[1];
				param06[0] = svcMap
					.getString(JBSbatKVIFM029.SVC_KYK_MSKM_DTL_NO); // 申込明細番号
				executeKK_T_MSKM_AGNT_KV_SELECT_001(param06);
				JBSbatCommonDBInterface db_map06 = db_KK_T_MSKM_AGNT
					.selectNext();

				if (db_map06 != null) {
					String agntCd = db_map06
						.getString(JBSbatKK_T_MSKM_AGNT.AGNT_CD);

					if (agntCd.equals(jokenti)) {
						intFlg = 1;
					} else {
						intFlg = 2;
					}
				} else {
					intFlg = 2;
				}

			} else if (jknSbtCd.equals(SYUBETSU_07)) {

				// 申込明細スキーマを検索
				String[] param07 = new String[1];
				param07[0] = svcMap
					.getString(JBSbatKVIFM029.SVC_KYK_MSKM_DTL_NO); // 申込明細番号
				executeKK_T_MSKM_DTL_KV_SELECT_002(param07);
				JBSbatCommonDBInterface db_map07 = db_KK_T_MSKM_DTL
					.selectNext();

				// データが存在すればtrue
				if (db_map07 != null) {
					intFlg = 1;
				} else {
					intFlg = 2;
				}
			} else if (jknSbtCd.equals(SYUBETSU_08)) {

				if (jokenti.equals(svcMap.get(JBSbatKVIFM029.SVC_KEI_NO))) {
					intFlg = 1;
				} else {
					intFlg = 2;
				}
			} else if (jknSbtCd.equals(SYUBETSU_09)) {

				if (jokenti.equals(svcMap.get(JBSbatKVIFM029.SVC_KEI_NO))) {
					intFlg = 1;
				} else {
					intFlg = 2;
				}
			}

			return intFlg;

		} catch (Exception e) {
			super.logPrint.printDebugLog("キャンペーン適用可能確認でエラー");
			return 2;
		}
	}

	/**
	 * 割引相関チェック条件を取得する。
	 * 
	 * @param wribSvcCd
	 *            割引サービス対象サービスのデータ
	 * @param svcMap
	 *            サービス契約マップデータ
	 * @return サービス契約に適用できる割引キャンペーンのデータか
	 * @throws Exception
	 */
	private Map<String, String[]> getCorrelationCheckCondition(String wribSvcCd) {

		try {
			super.logPrint.printDebugLog("割引相関チェック条件を設定：" + wribSvcCd);

			// 割引相関チェック条件マスタを取得
			String[] param = new String[5];
			param[0] = wribSvcCd;
			param[1] = wribSvcCd;
			param[2] = super.opeDate;

			executeKK_M_WRIB_SOKAN_CKJK_KV_SELECT_001(param);
			JBSbatCommonDBInterface db_map = db_KK_M_WRIB_SOKAN_CKJK
				.selectNext();

			Map<String, String[]> wribSokanMap = new HashMap<String, String[]>();

			// 取得したデータを割引相関マップに設定
			while (db_map != null) {

				String[] st = new String[2];
				st[0] = db_map
					.getString(JBSbatKK_M_WRIB_SOKAN_CKJK.WRIB_SVC_CD_1);
				st[1] = db_map
					.getString(JBSbatKK_M_WRIB_SOKAN_CKJK.WRIB_SVC_CD_2);
				wribSokanMap.put(db_map
					.getString(JBSbatKK_M_WRIB_SOKAN_CKJK.WRIB_SOKAN_CKJK_NO),
					st);
				db_map = db_KK_M_WRIB_SOKAN_CKJK.selectNext();
			}

			return wribSokanMap;

		} catch (Exception e) {
			super.logPrint.printDebugLog("割引相関チェック条件設定でエラー");
			return new HashMap<String, String[]>();
		}
	}

	/**
	 * キャンペーンが適用できない旨のメッセージを取得する
	 * 
	 * @param jokenSyubetsu
	 *            割引サービス適用条件種別コード
	 * @return メッセージ
	 */
	private String getDisabledWribCampaignMessage(String jokenSyubetsu) {

		String message = "";

		if (jokenSyubetsu.equals(SYUBETSU_01)) {
			message = resultMessageList[1];
		} else if (jokenSyubetsu.equals(SYUBETSU_02)) {
			message = resultMessageList[3];
		} else if (jokenSyubetsu.equals(SYUBETSU_05)) {
			message = resultMessageList[5];
		} else if (jokenSyubetsu.equals(SYUBETSU_06)) {
			message = resultMessageList[7];
		} else if (jokenSyubetsu.equals(SYUBETSU_07)) {
			message = resultMessageList[9];
		} else if (jokenSyubetsu.equals(SYUBETSU_08)) {
			message = resultMessageList[10];
		} else if (jokenSyubetsu.equals(SYUBETSU_09)) {
			message = resultMessageList[12];
		}

		return message;
	}

	/**
	 * キャンペーンが適用できる旨のメッセージを取得する
	 * 
	 * @param jokenSyubetsu
	 *            割引サービス適用条件種別コード
	 * @return メッセージ
	 */
	private String getEnabledWribCampaignMessage(String jokenSyubetsu) {

		String message = "";

		// 適用条件種別コードに応じたメッセージを設定
		if (jokenSyubetsu.equals(SYUBETSU_01)) {
			message = resultMessageList[2];
		} else if (jokenSyubetsu.equals(SYUBETSU_02)) {
			message = resultMessageList[4];
		} else if (jokenSyubetsu.equals(SYUBETSU_05)) {
			message = resultMessageList[6];
		} else if (jokenSyubetsu.equals(SYUBETSU_06)) {
			message = resultMessageList[8];
		} else if (jokenSyubetsu.equals(SYUBETSU_08)) {
			message = resultMessageList[11];
		} else if (jokenSyubetsu.equals(SYUBETSU_09)) {
			message = resultMessageList[13];
		}
		return message;
	}

	/**
	 * 割引サービスコードで適用条件種別コードを取得
	 * 
	 * @param wribSvcCd
	 *            割引サービスコード
	 * @param addymd
	 *            割引登録年月日
	 * @return
	 */
	// v25.00.01 MOD START
	// private List<String> getWribConditionKind(String wribSvcCd) {
	private List<String> getWribConditionKind(String wribSvcCd, String addymd) {
	// v25.00.01 MOD END

		try {
			super.logPrint.printDebugLog("適用条件種別コード取得処理");

			// 割引サービス適用条件を取得
			String[] param = new String[4];

			// 適用条件種別リスト
			List<String> codeList = new ArrayList<String>();

			String codeTmp = "";

			// 割引サービス適用条件種別:申込形態
			param[0] = super.opeDate;
			param[1] = wribSvcCd;
			executeKK_M_WRSV_APLY_JKN_KV_SELECT_001(param);
			JBSbatCommonDBInterface db_map = db_KK_M_WRSV_APLY_JKN.selectNext();

			while (db_map != null) {

				String code = db_map
					.getString(JBSbatKK_M_WRSV_APLY_JKN.WRSV_APLY_JKN_SBT_CD);
				
				// v25.00.01 ADD START
				String staYmd = db_map
					.getString(JBSbatKK_M_WRSV_APLY_JKN.WRSV_APLY_JKN_TSTAYMD);
				
				String endYmd = db_map
					.getString(JBSbatKK_M_WRSV_APLY_JKN.WRSV_APLY_JKN_TENDYMD);
				// v25.00.01 ADD END

				// v25.00.01 MOD START
				// if (!codeTmp.equals(code)) {
				if (!codeTmp.equals(code) &&
						staYmd.compareTo(addymd) <= 0 && endYmd.compareTo(addymd) >= 0 )
				{
				// v25.00.01 MOD END

					// 適用条件種別コードが前と違う場合
					
					if (code.equals(SYUBETSU_05)) {
						// 割引サービス適用条件種別が申込種別の場合
						if (db_map.getString(
							JBSbatKK_M_WRSV_APLY_JKN.WRSV_APLY_JKN_VALUE_1)
							.equals("00007")) {
							// 条件地が「00007」であれば判定対象
							
							codeList.add(code);
							codeTmp = code;
						}

					} else {
						// 判定対象として設定
						codeList.add(code);
						codeTmp = code;
					}
				}
				
				db_map = db_KK_M_WRSV_APLY_JKN.selectNext();
			}

			return codeList;
		} catch (Exception e) {
			super.logPrint.printDebugLog("適用条件種別コード取得処理でエラー");
			List<String> list = new ArrayList<String>();
			list.add("00");
			return list;
		}
	}

	/**
	 * 割引検証サービス契約起点検証結果ファイル出力データの設定を行う
	 * 
	 * @param svcMap
	 *            サービス契約データ
	 * @param wribMap
	 *            割引サービス契約データ
	 * @param resultCode
	 *            検証結果
	 * @return 出力データ
	 * @throws Exception
	 */
	private String[] setOutData(JBSbatServiceInterfaceMap svcMap,
			JBSbatServiceInterfaceMap wribMap, String message) throws Exception {

		String[] outData = new String[54];
		// サービス契約番号
		outData[0] = svcMap.getString(JBSbatKVIFM029.SVC_KEI_NO);
		// 料金コースコード
		outData[1] = svcMap.getString(JBSbatKVIFM029.PCRS_CD);
		// 料金コース名
		outData[2] = svcMap.getString(JBSbatKVIFM029.PCRS_NM);
		// 料金プランコード
		outData[3] = svcMap.getString(JBSbatKVIFM029.PPLAN_CD);
		// 料金プラン名
		outData[4] = svcMap.getString(JBSbatKVIFM029.PPLAN_NM);
		// 課金先番号
		outData[5] = svcMap.getString(JBSbatKVIFM029.KAKINS_NO);
		// 請求契約番号
		outData[6] = svcMap.getString(JBSbatKVIFM029.SEIKY_KEI_NO);
		// サービス契約回線内訳番号
		outData[7] = svcMap.getString(JBSbatKVIFM029.SVC_KEI_KAISEN_UCWK_NO);
		// プラン開始年月日(サービス)
		outData[8] = svcMap.getString(JBSbatKVIFM029.PLAN_STAYMD);
		// プラン終了年月日(サービス)
		outData[9] = svcMap.getString(JBSbatKVIFM029.PLAN_ENDYMD);
		// プラン課金開始年月日(サービス)
		outData[10] = svcMap.getString(JBSbatKVIFM029.PLAN_CHRG_STAYMD);
		// プラン課金終了年月日(サービス)
		outData[11] = svcMap.getString(JBSbatKVIFM029.PLAN_CHRG_ENDYMD);
		// サービスキャンセル年月日(サービス)
		outData[12] = svcMap.getString(JBSbatKVIFM029.SVC_CANCEL_YMD);
		// サービス開始年月日(サービス)
		outData[13] = svcMap.getString(JBSbatKVIFM029.SVC_STA_YMD);
		// サービス課金開始年月日(サービス)
		outData[14] = svcMap.getString(JBSbatKVIFM029.SVC_CHRG_STAYMD);
		// サービス休止年月日(サービス)
		outData[15] = svcMap.getString(JBSbatKVIFM029.SVC_PAUSE_YMD);
		// サービス休止解除年月日(サービス)
		outData[16] = svcMap.getString(JBSbatKVIFM029.SVC_PAUSE_RLS_YMD);
		// サービス終了年月日(サービス)
		outData[17] = svcMap.getString(JBSbatKVIFM029.SVC_ENDYMD);
		// サービス課金終了年月日(サービス)
		outData[18] = svcMap.getString(JBSbatKVIFM029.SVC_CHRG_ENDYMD);
		// サービス解約起算年月日(サービス)
		outData[19] = svcMap.getString(JBSbatKVIFM029.SVC_DSL_KISAN_YMD);
		// サービス解約年月日(サービス)
		outData[20] = svcMap.getString(JBSbatKVIFM029.SVC_DSL_YMD);
		// 回復年月日(サービス)
		outData[21] = svcMap.getString(JBSbatKVIFM029.KAIHK_YMD);
		// サービスキャンセル取消年月日(サービス)
		outData[22] = svcMap.getString(JBSbatKVIFM029.SVC_CANCEL_CL_YMD);
		// サービス解約取消年月日(サービス)
		outData[23] = svcMap.getString(JBSbatKVIFM029.SVC_DSL_CL_YMD);
		// 割引サービス契約番号
		outData[24] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_NO);
		// 割引サービス契約ステータス
		outData[25] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT);
		// 割引サービス契約ステータス名称
		outData[26] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_KEI_STAT_NM);
		// SYSID
		outData[27] = wribMap.getString(JBSbatKVIFM017.SYSID);
		// 割引サービスコード
		outData[28] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_CD);
		// 表示用キャンペーンコード
		outData[29] = wribMap.getString(JBSbatKVIFM017.DSP_CAMPAIGN_CD);
		// 割引サービス名
		outData[30] = wribMap.getString(JBSbatKVIFM017.WRIB_SVC_NM);
		// プラン開始年月日（割引）
		outData[31] = wribMap.getString(JBSbatKVIFM017.PLAN_STAYMD);
		// プラン終了年月日（割引）
		outData[32] = wribMap.getString(JBSbatKVIFM017.PLAN_ENDYMD);
		// プラン課金開始年月日（割引）
		outData[33] = wribMap.getString(JBSbatKVIFM017.PLAN_CHRG_STAYMD);
		// プラン課金終了年月日（割引）
		outData[34] = wribMap.getString(JBSbatKVIFM017.PLAN_CHRG_ENDYMD);
		// プラン終了種別コード
		outData[35] = wribMap.getString(JBSbatKVIFM017.PLAN_END_SBT_CD);
		// サービスキャンセル年月日（割引）
		outData[36] = wribMap.getString(JBSbatKVIFM017.SVC_CANCEL_YMD);
		// サービスキャンセル理由コード
		outData[37] = wribMap.getString(JBSbatKVIFM017.SVC_CANCEL_RSN_CD);
		// サービス開始年月日（割引）
		outData[38] = wribMap.getString(JBSbatKVIFM017.SVC_STA_YMD);
		// サービス課金開始年月日（割引）
		outData[39] = wribMap.getString(JBSbatKVIFM017.SVC_CHRG_STAYMD);
		// サービス終了年月日（割引）
		outData[40] = wribMap.getString(JBSbatKVIFM017.SVC_ENDYMD);
		// サービス課金終了年月日（割引）
		outData[41] = wribMap.getString(JBSbatKVIFM017.SVC_CHRG_ENDYMD);
		// サービス解約年月日（割引）
		outData[42] = wribMap.getString(JBSbatKVIFM017.SVC_DSL_YMD);
		// 回復年月日（割引）
		outData[43] = wribMap.getString(JBSbatKVIFM017.KAIHK_YMD);
		// サービスキャンセル取消年月日（割引）
		outData[44] = wribMap.getString(JBSbatKVIFM017.SVC_CANCEL_CL_YMD);
		// サービス解約取消年月日（割引）
		outData[45] = wribMap.getString(JBSbatKVIFM017.SVC_DSL_CL_YMD);
		// 紹介コード
		outData[46] = wribMap.getString(JBSbatKVIFM017.INTR_CD);
		// 申込起算年月日
		outData[47] = wribMap.getString(JBSbatKVIFM017.MSKM_KISAN_YMD);
		// 割引登録契機コード
		outData[48] = wribMap.getString(JBSbatKVIFM017.WRIB_ADD_OPTY_CD);
		// 割引解約キャンセル契機コード
		outData[49] = wribMap.getString(JBSbatKVIFM017.WRIB_DSL_CNCL_OPTY_CD);
		// 割引額算出基準年月日
		outData[50] = wribMap
			.getString(JBSbatKVIFM017.WRIB_AMNT_SNST_STDARDYMD);
		// 割引課金開始月指定コード
		outData[51] = wribMap
			.getString(JBSbatKVIFM017.WRIB_CHRG_STA_MON_STI_CD);
		// 割引登録年月日
		outData[52] = wribMap.getString(JBSbatKVIFM017.WRIB_ADD_YMD);

		// 検証結果
		outData[53] = message;

		return outData;
	}

	/**
	 * 割引検証サービス契約起点検証結果ファイル出力データの設定を行う
	 * 
	 * @param svcMap
	 *            サービス契約データ
	 * @param resultCode
	 *            検証結果
	 * @return 出力データ
	 * @throws Exception
	 */
	private String[] setOutData(JBSbatServiceInterfaceMap svcMap, String message)
			throws Exception {

		String[] outData = new String[54];
		// サービス契約番号
		outData[0] = svcMap.getString(JBSbatKVIFM029.SVC_KEI_NO);
		// 料金コースコード
		outData[1] = svcMap.getString(JBSbatKVIFM029.PCRS_CD);
		// 料金コース名
		outData[2] = svcMap.getString(JBSbatKVIFM029.PCRS_NM);
		// 料金プランコード
		outData[3] = svcMap.getString(JBSbatKVIFM029.PPLAN_CD);
		// 料金プラン名
		outData[4] = svcMap.getString(JBSbatKVIFM029.PPLAN_NM);
		// 課金先番号
		outData[5] = svcMap.getString(JBSbatKVIFM029.KAKINS_NO);
		// 請求契約番号
		outData[6] = svcMap.getString(JBSbatKVIFM029.SEIKY_KEI_NO);
		// サービス契約回線内訳番号
		outData[7] = svcMap.getString(JBSbatKVIFM029.SVC_KEI_KAISEN_UCWK_NO);
		// プラン開始年月日(サービス)
		outData[8] = svcMap.getString(JBSbatKVIFM029.PLAN_STAYMD);
		// プラン終了年月日(サービス)
		outData[9] = svcMap.getString(JBSbatKVIFM029.PLAN_ENDYMD);
		// プラン課金開始年月日(サービス)
		outData[10] = svcMap.getString(JBSbatKVIFM029.PLAN_CHRG_STAYMD);
		// プラン課金終了年月日(サービス)
		outData[11] = svcMap.getString(JBSbatKVIFM029.PLAN_CHRG_ENDYMD);
		// サービスキャンセル年月日(サービス)
		outData[12] = svcMap.getString(JBSbatKVIFM029.SVC_CANCEL_YMD);
		// サービス開始年月日(サービス)
		outData[13] = svcMap.getString(JBSbatKVIFM029.SVC_STA_YMD);
		// サービス課金開始年月日(サービス)
		outData[14] = svcMap.getString(JBSbatKVIFM029.SVC_CHRG_STAYMD);
		// サービス休止年月日(サービス)
		outData[15] = svcMap.getString(JBSbatKVIFM029.SVC_PAUSE_YMD);
		// サービス休止解除年月日(サービス)
		outData[16] = svcMap.getString(JBSbatKVIFM029.SVC_PAUSE_RLS_YMD);
		// サービス終了年月日(サービス)
		outData[17] = svcMap.getString(JBSbatKVIFM029.SVC_ENDYMD);
		// サービス課金終了年月日(サービス)
		outData[18] = svcMap.getString(JBSbatKVIFM029.SVC_CHRG_ENDYMD);
		// サービス解約起算年月日(サービス)
		outData[19] = svcMap.getString(JBSbatKVIFM029.SVC_DSL_KISAN_YMD);
		// サービス解約年月日(サービス)
		outData[20] = svcMap.getString(JBSbatKVIFM029.SVC_DSL_YMD);
		// 回復年月日(サービス)
		outData[21] = svcMap.getString(JBSbatKVIFM029.KAIHK_YMD);
		// サービスキャンセル取消年月日(サービス)
		outData[22] = svcMap.getString(JBSbatKVIFM029.SVC_CANCEL_CL_YMD);
		// サービス解約取消年月日(サービス)
		outData[23] = svcMap.getString(JBSbatKVIFM029.SVC_DSL_CL_YMD);
		// 割引サービス契約番号
		outData[24] = "";
		// 割引サービス契約ステータス
		outData[25] = "";
		// 割引サービス契約ステータス名称
		outData[26] = "";
		// SYSID
		outData[27] = "";
		// 割引サービスコード
		outData[28] = "";
		// 表示用キャンペーンコード
		outData[29] = "";
		// 割引サービス名
		outData[30] = "";
		// プラン開始年月日（割引）
		outData[31] = "";
		// プラン終了年月日（割引）
		outData[32] = "";
		// プラン課金開始年月日（割引）
		outData[33] = "";
		// プラン課金終了年月日（割引）
		outData[34] = "";
		// プラン終了種別コード
		outData[35] = "";
		// サービスキャンセル年月日（割引）
		outData[36] = "";
		// サービスキャンセル理由コード
		outData[37] = "";
		// サービス開始年月日（割引）
		outData[38] = "";
		// サービス課金開始年月日（割引）
		outData[39] = "";
		// サービス終了年月日（割引）
		outData[40] = "";
		// サービス課金終了年月日（割引）
		outData[41] = "";
		// サービス解約年月日（割引）
		outData[42] = "";
		// 回復年月日（割引）
		outData[43] = "";
		// サービスキャンセル取消年月日（割引）
		outData[44] = "";
		// サービス解約取消年月日（割引）
		outData[45] = "";
		// 紹介コード
		outData[46] = "";
		// 申込起算年月日
		outData[47] = "";
		// 割引登録契機コード
		outData[48] = "";
		// 割引解約キャンセル契機コード
		outData[49] = "";
		// 割引額算出基準年月日
		outData[50] = "";
		// 割引課金開始月指定コード
		outData[51] = "";
		// 割引登録年月日
		outData[52] = "";

		// 検証結果
		outData[53] = message;

		return outData;
	}

	/**
	 * 割引検証適用可能キャンペーン情報ファイル出力データの設定を行う
	 * 
	 * @param svcMap
	 *            サービス契約データ
	 * @param resultCode
	 *            検証結果
	 * @return 出力データ
	 * @throws Exception
	 */
	private String[] setOutData2(JBSbatServiceInterfaceMap svcMap)
			throws Exception {

		String[] outData = new String[36];
		// サービス契約番号
		outData[0] = svcMap.getString(JBSbatKVIFM029.SVC_KEI_NO);
		// 料金コースコード
		outData[1] = svcMap.getString(JBSbatKVIFM029.PCRS_CD);
		// 料金コース名
		outData[2] = svcMap.getString(JBSbatKVIFM029.PCRS_NM);
		// 料金プランコード
		outData[3] = svcMap.getString(JBSbatKVIFM029.PPLAN_CD);
		// 料金プラン名
		outData[4] = svcMap.getString(JBSbatKVIFM029.PPLAN_NM);
		// 課金先番号
		outData[5] = svcMap.getString(JBSbatKVIFM029.KAKINS_NO);
		// 請求契約番号
		outData[6] = svcMap.getString(JBSbatKVIFM029.SEIKY_KEI_NO);
		// サービス契約回線内訳番号
		outData[7] = svcMap.getString(JBSbatKVIFM029.SVC_KEI_KAISEN_UCWK_NO);
		// プラン開始年月日(サービス)
		outData[8] = svcMap.getString(JBSbatKVIFM029.PLAN_STAYMD);
		// プラン終了年月日(サービス)
		outData[9] = svcMap.getString(JBSbatKVIFM029.PLAN_ENDYMD);
		// プラン課金開始年月日(サービス)
		outData[10] = svcMap.getString(JBSbatKVIFM029.PLAN_CHRG_STAYMD);
		// プラン課金終了年月日(サービス)
		outData[11] = svcMap.getString(JBSbatKVIFM029.PLAN_CHRG_ENDYMD);
		// サービスキャンセル年月日(サービス)
		outData[12] = svcMap.getString(JBSbatKVIFM029.SVC_CANCEL_YMD);
		// サービス開始年月日(サービス)
		outData[13] = svcMap.getString(JBSbatKVIFM029.SVC_STA_YMD);
		// サービス課金開始年月日(サービス)
		outData[14] = svcMap.getString(JBSbatKVIFM029.SVC_CHRG_STAYMD);
		// サービス休止年月日(サービス)
		outData[15] = svcMap.getString(JBSbatKVIFM029.SVC_PAUSE_YMD);
		// サービス休止解除年月日(サービス)
		outData[16] = svcMap.getString(JBSbatKVIFM029.SVC_PAUSE_RLS_YMD);
		// サービス終了年月日(サービス)
		outData[17] = svcMap.getString(JBSbatKVIFM029.SVC_ENDYMD);
		// サービス課金終了年月日(サービス)
		outData[18] = svcMap.getString(JBSbatKVIFM029.SVC_CHRG_ENDYMD);
		// サービス解約起算年月日(サービス)
		outData[19] = svcMap.getString(JBSbatKVIFM029.SVC_DSL_KISAN_YMD);
		// サービス解約年月日(サービス)
		outData[20] = svcMap.getString(JBSbatKVIFM029.SVC_DSL_YMD);
		// 回復年月日(サービス)
		outData[21] = svcMap.getString(JBSbatKVIFM029.KAIHK_YMD);
		// サービスキャンセル取消年月日(サービス)
		outData[22] = svcMap.getString(JBSbatKVIFM029.SVC_CANCEL_CL_YMD);
		// サービス解約取消年月日(サービス)
		outData[23] = svcMap.getString(JBSbatKVIFM029.SVC_DSL_CL_YMD);
		// SYSID
		outData[24] = svcMap.getString(JBSbatKVIFM029.SYSID);
		// 割引サービスコード
		outData[25] = svcMap.getString(JBSbatKVIFM029.WRIB_SVC_CD);
		// 表示用キャンペーンコード
		outData[26] = svcMap.getString(JBSbatKVIFM029.DSP_CAMPAIGN_CD);
		// 割引サービス名
		outData[27] = svcMap.getString(JBSbatKVIFM029.WRIB_SVC_NM);
		// 受付開始年月日時分
		outData[28] = svcMap.getString(JBSbatKVIFM029.UK_STA_YMDHM);
		// 受付終了年月日時分
		outData[29] = svcMap.getString(JBSbatKVIFM029.UK_END_YMDHM);
		// 割引適用契機コード
		outData[30] = svcMap.getString(JBSbatKVIFM029.WRIB_APLY_OPTNTY_CD);
		// 条件適用開始年月日
		outData[31] = svcMap.getString(JBSbatKVIFM029.JOKEN_TSTAYMD);
		// 条件適用終了年月日
		outData[32] = svcMap.getString(JBSbatKVIFM029.JOKEN_TENDYMD);
		// 割引登録条件コード
		outData[33] = svcMap.getString(JBSbatKVIFM029.WRIB_ADD_JOKEN_CD);
		// 割引サービス適用開始年月日
		outData[34] = svcMap.getString(JBSbatKVIFM029.WRIB_SVC_TSTAYMD);
		// 割引サービス適用終了年月日
		outData[35] = svcMap.getString(JBSbatKVIFM029.WRIB_SVC_TENDYMD);

		return outData;
	}

	/**
	 * 割引検証サービス契約起点検証結果ファイル出力処理
	 * 
	 * @param outputInItem
	 *            出力情報
	 * @param outData
	 *            出力するデータ
	 * @throws Exception
	 *             メソッド内で発生した例外全般。
	 */
	private void outPutWork(JBSbatOutputItem outputInItem, String[] outData)
			throws Exception {

		super.logPrint.printDebugLog("【割引検証サービス契約起点検証結果ファイル出力開始】");

		// 入出力インタフェースオブジェクトを生成
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();

		// 出力項目を設定する
		// サービス契約番号
		out_map.setString(JBSbatKVIFM025.SVC_KEI_NO, outData[0]);
		// 料金コースコード
		out_map.setString(JBSbatKVIFM025.PCRS_CD, outData[1]);
		// 料金コース名
		out_map.setString(JBSbatKVIFM025.PCRS_NM, outData[2]);
		// 料金プランコード
		out_map.setString(JBSbatKVIFM025.PPLAN_CD, outData[3]);
		// 料金プラン名
		out_map.setString(JBSbatKVIFM025.PPLAN_NM, outData[4]);
		// 課金先番号
		out_map.setString(JBSbatKVIFM025.KAKINS_NO, outData[5]);
		// 請求契約番号
		out_map.setString(JBSbatKVIFM025.SEIKY_KEI_NO, outData[6]);
		// サービス契約回線内訳番号
		out_map.setString(JBSbatKVIFM025.SVC_KEI_KAISEN_UCWK_NO, outData[7]);
		// プラン開始年月日(サービス)
		out_map.setString(JBSbatKVIFM025.PLAN_STAYMD_SVC, outData[8]);
		// プラン終了年月日(サービス)
		out_map.setString(JBSbatKVIFM025.PLAN_ENDYMD_SVC, outData[9]);
		// プラン課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM025.PLAN_CHRG_STAYMD_SVC, outData[10]);
		// プラン課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM025.PLAN_CHRG_ENDYMD_SVC, outData[11]);
		// サービスキャンセル年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_YMD_SVC, outData[12]);
		// サービス開始年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_STA_YMD_SVC, outData[13]);
		// サービス課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_CHRG_STAYMD_SVC, outData[14]);
		// サービス休止年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_PAUSE_YMD, outData[15]);
		// サービス休止解除年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_PAUSE_RLS_YMD, outData[16]);
		// サービス終了年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_ENDYMD_SVC, outData[17]);
		// サービス課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_CHRG_ENDYMD_SVC, outData[18]);
		// サービス解約起算年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_DSL_KISAN_YMD, outData[19]);
		// サービス解約年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_DSL_YMD_SVC, outData[20]);
		// 回復年月日(サービス)
		out_map.setString(JBSbatKVIFM025.KAIHK_YMD_SVC, outData[21]);
		// サービスキャンセル取消年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_CL_YMD_SVC, outData[22]);
		// サービス解約取消年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_DSL_CL_YMD_SVC, outData[23]);
		// 割引サービス契約番号
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_KEI_NO, outData[24]);
		// 割引サービス契約ステータス
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_KEI_STAT, outData[25]);
		// 割引サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_KEI_STAT_NM, outData[26]);
		// ＳＹＳＩＤ
		out_map.setString(JBSbatKVIFM025.SYSID, outData[27]);
		// 割引サービスコード
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_CD, outData[28]);
		// 表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM025.DSP_CAMPAIGN_CD, outData[29]);
		// 割引サービス名
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_NM, outData[30]);
		// プラン終了年月日（割引）
		out_map.setString(JBSbatKVIFM025.PLAN_STAYMD_WRIB, outData[31]);
		// プラン終了年月日（割引）
		out_map.setString(JBSbatKVIFM025.PLAN_ENDYMD_WRIB, outData[32]);
		// プラン課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM025.PLAN_CHRG_STAYMD_WRIB, outData[33]);
		// プラン課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM025.PLAN_CHRG_ENDYMD_WRIB, outData[34]);
		// プラン終了種別コード
		out_map.setString(JBSbatKVIFM025.PLAN_END_SBT_CD, outData[35]);
		// サービスキャンセル年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_YMD_WRIB, outData[36]);
		// サービスキャンセル理由コード
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_RSN_CD, outData[37]);
		// サービス開始年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_STA_YMD_WRIB, outData[38]);
		// サービス課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_CHRG_STAYMD_WRIB, outData[39]);
		// サービス終了年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_ENDYMD_WRIB, outData[40]);
		// サービス課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_CHRG_ENDYMD_WRIB, outData[41]);
		// サービス解約年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_DSL_YMD_WRIB, outData[42]);
		// 回復年月日（割引）
		out_map.setString(JBSbatKVIFM025.KAIHK_YMD_WRIB, outData[43]);
		// サービスキャンセル取消年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_CL_YMD_WRIB, outData[44]);
		// サービス解約取消年月日v
		out_map.setString(JBSbatKVIFM025.SVC_DSL_CL_YMD_WRIB, outData[45]);
		// 紹介コード
		out_map.setString(JBSbatKVIFM025.INTR_CD, outData[46]);
		// 申込起算年月日
		out_map.setString(JBSbatKVIFM025.MSKM_KISAN_YMD, outData[47]);
		// 割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM025.WRIB_ADD_OPTY_CD, outData[48]);
		// 割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM025.WRIB_DSL_CNCL_OPTY_CD, outData[49]);
		// 割引額算出基準年月日
		out_map.setString(JBSbatKVIFM025.WRIB_AMNT_SNST_STDARDYMD, outData[50]);
		// 割引課金開始月指定コード
		out_map.setString(JBSbatKVIFM025.WRIB_CHRG_STA_MON_STI_CD, outData[51]);
		// 割引登録年月日
		out_map.setString(JBSbatKVIFM025.WRIB_ADD_YMD, outData[52]);
		// 割引登録年月日
		out_map.setString(JBSbatKVIFM025.VRFY_RESULT, outData[53]);

		// 出力フラグを設定
		out_map.setOutFlg(true);

		// 出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList(out_map);
		super.logPrint.printDebugLog("【割引検証サービス契約起点検証結果ファイル出力終了】");
	}

	/**
	 * 割引検証適用可能キャンペーン情報ファイル出力処理
	 * 
	 * @param outputInItem
	 *            出力情報
	 * @param outData
	 *            出力するデータ
	 * @throws Exception
	 *             メソッド内で発生した例外全般。
	 */
	private void outPutWork2(JBSbatOutputItem outputInItem, String[] outData)
			throws Exception {

		super.logPrint.printDebugLog("【割引検証適用可能キャンペーン情報ファイル出力開始】");

		// 入出力インタフェースオブジェクトを生成
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();

		// 出力項目を設定する
		// サービス契約番号
		out_map.setString(JBSbatKVIFM026.SVC_KEI_NO, outData[0]);
		// 料金コースコード
		out_map.setString(JBSbatKVIFM026.PCRS_CD, outData[1]);
		// 料金コース名
		out_map.setString(JBSbatKVIFM026.PCRS_NM, outData[2]);
		// 料金プランコード
		out_map.setString(JBSbatKVIFM026.PPLAN_CD, outData[3]);
		// 料金プラン名
		out_map.setString(JBSbatKVIFM026.PPLAN_NM, outData[4]);
		// 課金先番号
		out_map.setString(JBSbatKVIFM026.KAKINS_NO, outData[5]);
		// 請求契約番号
		out_map.setString(JBSbatKVIFM026.SEIKY_KEI_NO, outData[6]);
		// サービス契約回線内訳番号
		out_map.setString(JBSbatKVIFM026.SVC_KEI_KAISEN_UCWK_NO, outData[7]);
		// プラン開始年月日(サービス)
		out_map.setString(JBSbatKVIFM026.PLAN_STAYMD_SVC, outData[8]);
		// プラン終了年月日(サービス)
		out_map.setString(JBSbatKVIFM026.PLAN_ENDYMD_SVC, outData[9]);
		// プラン課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM026.PLAN_CHRG_STAYMD_SVC, outData[10]);
		// プラン課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM026.PLAN_CHRG_ENDYMD_SVC, outData[11]);
		// サービスキャンセル年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_CANCEL_YMD_SVC, outData[12]);
		// サービス開始年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_STA_YMD_SVC, outData[13]);
		// サービス課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_CHRG_STAYMD_SVC, outData[14]);
		// サービス休止年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_PAUSE_YMD, outData[15]);
		// サービス休止解除年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_PAUSE_RLS_YMD, outData[16]);
		// サービス終了年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_ENDYMD_SVC, outData[17]);
		// サービス課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_CHRG_ENDYMD_SVC, outData[18]);
		// サービス解約起算年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_DSL_KISAN_YMD, outData[19]);
		// サービス解約年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_DSL_YMD_SVC, outData[20]);
		// 回復年月日(サービス)
		out_map.setString(JBSbatKVIFM026.KAIHK_YMD_SVC, outData[21]);
		// サービスキャンセル取消年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_CANCEL_CL_YMD_SVC, outData[22]);
		// サービス解約取消年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_DSL_CL_YMD_SVC, outData[23]);
		// ＳＹＳＩＤ
		out_map.setString(JBSbatKVIFM026.SYSID, outData[24]);
		// 割引サービスコード
		out_map.setString(JBSbatKVIFM026.WRIB_SVC_CD, outData[25]);
		// 表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM026.DSP_CAMPAIGN_CD, outData[26]);
		// 割引サービス名
		out_map.setString(JBSbatKVIFM026.WRIB_SVC_NM, outData[27]);
		// 受付開始年月日時分
		out_map.setString(JBSbatKVIFM026.UK_STA_YMDHM, outData[28]);
		// 受付終了年月日時分
		out_map.setString(JBSbatKVIFM026.UK_END_YMDHM, outData[29]);
		// 割引適用契機コード
		out_map.setString(JBSbatKVIFM026.WRIB_APLY_OPTNTY_CD, outData[30]);
		// 条件適用開始年月日
		out_map.setString(JBSbatKVIFM026.JOKEN_TSTAYMD, outData[31]);
		// 条件適用終了年月日
		out_map.setString(JBSbatKVIFM026.JOKEN_TENDYMD, outData[32]);
		// 割引登録条件コード
		out_map.setString(JBSbatKVIFM026.WRIB_ADD_JOKEN_CD, outData[33]);
		// 割引サービス適用開始年月日
		out_map.setString(JBSbatKVIFM026.WRIB_SVC_TSTAYMD, outData[34]);
		// 割引サービス適用終了年月日
		out_map.setString(JBSbatKVIFM026.WRIB_SVC_TENDYMD, outData[35]);

		// 出力フラグを設定
		out_map.setOutFlg(true);

		// 出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList_2(out_map);
		super.logPrint.printDebugLog("【割引検証適用可能キャンペーン情報ファイル出力終了】");
	}

	/**
	 * 検証結果ファイル（ヘッダ）を編集します。
	 * 
	 * @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 = "サービス開始年月日(サービス)";
		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 = "SYSID";
		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 = "検証結果";

		// 入出力インタフェースオブジェクトを生成
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();

		// 出力項目を設定する
		out_map.setString(JBSbatKVIFM025.SVC_KEI_NO, COLUMN_01); // サービス契約番号
		out_map.setString(JBSbatKVIFM025.PCRS_CD, COLUMN_02); // 料金コースコード
		out_map.setString(JBSbatKVIFM025.PCRS_NM, COLUMN_03); // 料金コース名
		out_map.setString(JBSbatKVIFM025.PPLAN_CD, COLUMN_04); // 料金プランコード
		out_map.setString(JBSbatKVIFM025.PPLAN_NM, COLUMN_05); // 料金プラン名
		out_map.setString(JBSbatKVIFM025.KAKINS_NO, COLUMN_06); // 課金先番号
		out_map.setString(JBSbatKVIFM025.SEIKY_KEI_NO, COLUMN_07); // 請求契約番号
		out_map.setString(JBSbatKVIFM025.SVC_KEI_KAISEN_UCWK_NO, COLUMN_08); // サービス契約回線内訳番号
		out_map.setString(JBSbatKVIFM025.PLAN_STAYMD_SVC, COLUMN_09); // プラン開始年月日(サービス)
		out_map.setString(JBSbatKVIFM025.PLAN_ENDYMD_SVC, COLUMN_10); // プラン終了年月日(サービス)
		out_map.setString(JBSbatKVIFM025.PLAN_CHRG_STAYMD_SVC, COLUMN_11); // プラン課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM025.PLAN_CHRG_ENDYMD_SVC, COLUMN_12); // プラン課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_YMD_SVC, COLUMN_13); // サービスキャンセル年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_STA_YMD_SVC, COLUMN_14); // サービス開始年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_CHRG_STAYMD_SVC, COLUMN_15); // サービス課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_PAUSE_YMD, COLUMN_16); // サービス休止年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_PAUSE_RLS_YMD, COLUMN_17); // サービス休止解除年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_ENDYMD_SVC, COLUMN_18); // サービス終了年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_CHRG_ENDYMD_SVC, COLUMN_19); // サービス課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_DSL_KISAN_YMD, COLUMN_20); // サービス解約起算年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_DSL_YMD_SVC, COLUMN_21); // サービス解約年月日(サービス)
		out_map.setString(JBSbatKVIFM025.KAIHK_YMD_SVC, COLUMN_22); // 回復年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_CL_YMD_SVC, COLUMN_23); // サービスキャンセル取消年月日(サービス)
		out_map.setString(JBSbatKVIFM025.SVC_DSL_CL_YMD_SVC, COLUMN_24); // サービス解約取消年月日(サービス)
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_KEI_NO, COLUMN_25); // 割引サービス契約番号
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_KEI_STAT, COLUMN_26); // 割引サービス契約ステータス
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_KEI_STAT_NM, COLUMN_27); // 割引サービス契約ステータス名称
		out_map.setString(JBSbatKVIFM025.SYSID, COLUMN_28); // SYSID
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_CD, COLUMN_29); // 割引サービスコード
		out_map.setString(JBSbatKVIFM025.DSP_CAMPAIGN_CD, COLUMN_30); // 表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM025.WRIB_SVC_NM, COLUMN_31); // 割引サービス名
		out_map.setString(JBSbatKVIFM025.PLAN_STAYMD_WRIB, COLUMN_32); // プラン開始年月日（割引）
		out_map.setString(JBSbatKVIFM025.PLAN_ENDYMD_WRIB, COLUMN_33); // プラン終了年月日（割引）
		out_map.setString(JBSbatKVIFM025.PLAN_CHRG_STAYMD_WRIB, COLUMN_34); // プラン課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM025.PLAN_CHRG_ENDYMD_WRIB, COLUMN_35); // プラン課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM025.PLAN_END_SBT_CD, COLUMN_36); // プラン終了種別コード
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_YMD_WRIB, COLUMN_37); // サービスキャンセル年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_RSN_CD, COLUMN_38); // サービスキャンセル理由コード
		out_map.setString(JBSbatKVIFM025.SVC_STA_YMD_WRIB, COLUMN_39); // サービス開始年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_CHRG_STAYMD_WRIB, COLUMN_40); // サービス課金開始年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_ENDYMD_WRIB, COLUMN_41); // サービス終了年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_CHRG_ENDYMD_WRIB, COLUMN_42); // サービス課金終了年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_DSL_YMD_WRIB, COLUMN_43); // サービス解約年月日（割引）
		out_map.setString(JBSbatKVIFM025.KAIHK_YMD_WRIB, COLUMN_44); // 回復年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_CANCEL_CL_YMD_WRIB, COLUMN_45); // サービスキャンセル取消年月日（割引）
		out_map.setString(JBSbatKVIFM025.SVC_DSL_CL_YMD_WRIB, COLUMN_46); // サービス解約取消年月日（割引）
		out_map.setString(JBSbatKVIFM025.INTR_CD, COLUMN_47); // 紹介コード
		out_map.setString(JBSbatKVIFM025.MSKM_KISAN_YMD, COLUMN_48); // 申込起算年月日
		out_map.setString(JBSbatKVIFM025.WRIB_ADD_OPTY_CD, COLUMN_49); // 割引登録契機コード
		out_map.setString(JBSbatKVIFM025.WRIB_DSL_CNCL_OPTY_CD, COLUMN_50); // 割引解約キャンセル契機コード
		out_map.setString(JBSbatKVIFM025.WRIB_AMNT_SNST_STDARDYMD, COLUMN_51); // 割引額算出基準年月日
		out_map.setString(JBSbatKVIFM025.WRIB_CHRG_STA_MON_STI_CD, COLUMN_52); // 割引課金開始月指定コード
		out_map.setString(JBSbatKVIFM025.WRIB_ADD_YMD, COLUMN_53); // 割引登録年月日
		out_map.setString(JBSbatKVIFM025.VRFY_RESULT, COLUMN_54); // 検証結果

		// 出力フラグを設定
		out_map.setOutFlg(true);

		// 出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList(out_map);
	}

	/**
	 * 検証結果ファイル（ヘッダ）を編集します。
	 * 
	 * @param outputInItem
	 *            出力ファイル
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void editOutputHeaderItem2(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 = "サービス開始年月日(サービス)";
		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 = "SYSID";
		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 = "割引サービス適用終了年月日";

		// 入出力インタフェースオブジェクトを生成
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();

		// 出力項目を設定する
		out_map.setString(JBSbatKVIFM026.SVC_KEI_NO, COLUMN_01); // サービス契約番号
		out_map.setString(JBSbatKVIFM026.PCRS_CD, COLUMN_02); // 料金コースコード
		out_map.setString(JBSbatKVIFM026.PCRS_NM, COLUMN_03); // 料金コース名
		out_map.setString(JBSbatKVIFM026.PPLAN_CD, COLUMN_04); // 料金プランコード
		out_map.setString(JBSbatKVIFM026.PPLAN_NM, COLUMN_05); // 料金プラン名
		out_map.setString(JBSbatKVIFM026.KAKINS_NO, COLUMN_06); // 課金先番号
		out_map.setString(JBSbatKVIFM026.SEIKY_KEI_NO, COLUMN_07); // 請求契約番号
		out_map.setString(JBSbatKVIFM026.SVC_KEI_KAISEN_UCWK_NO, COLUMN_08); // サービス契約回線内訳番号
		out_map.setString(JBSbatKVIFM026.PLAN_STAYMD_SVC, COLUMN_09); // プラン開始年月日(サービス)
		out_map.setString(JBSbatKVIFM026.PLAN_ENDYMD_SVC, COLUMN_10); // プラン終了年月日(サービス)
		out_map.setString(JBSbatKVIFM026.PLAN_CHRG_STAYMD_SVC, COLUMN_11); // プラン課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM026.PLAN_CHRG_ENDYMD_SVC, COLUMN_12); // プラン課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_CANCEL_YMD_SVC, COLUMN_13); // サービスキャンセル年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_STA_YMD_SVC, COLUMN_14); // サービス開始年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_CHRG_STAYMD_SVC, COLUMN_15); // サービス課金開始年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_PAUSE_YMD, COLUMN_16); // サービス休止年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_PAUSE_RLS_YMD, COLUMN_17); // サービス休止解除年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_ENDYMD_SVC, COLUMN_18); // サービス終了年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_CHRG_ENDYMD_SVC, COLUMN_19); // サービス課金終了年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_DSL_KISAN_YMD, COLUMN_20); // サービス解約起算年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_DSL_YMD_SVC, COLUMN_21); // サービス解約年月日(サービス)
		out_map.setString(JBSbatKVIFM026.KAIHK_YMD_SVC, COLUMN_22); // 回復年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_CANCEL_CL_YMD_SVC, COLUMN_23); // サービスキャンセル取消年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SVC_DSL_CL_YMD_SVC, COLUMN_24); // サービス解約取消年月日(サービス)
		out_map.setString(JBSbatKVIFM026.SYSID, COLUMN_25); // SYSID
		out_map.setString(JBSbatKVIFM026.WRIB_SVC_CD, COLUMN_26); // 割引サービスコード
		out_map.setString(JBSbatKVIFM026.DSP_CAMPAIGN_CD, COLUMN_27); // 表示用キャンペーンコード
		out_map.setString(JBSbatKVIFM026.WRIB_SVC_NM, COLUMN_28); // 割引サービス名
		out_map.setString(JBSbatKVIFM026.UK_STA_YMDHM, COLUMN_29); // 受付開始年月日時分
		out_map.setString(JBSbatKVIFM026.UK_END_YMDHM, COLUMN_30); // 受付終了年月日時分
		out_map.setString(JBSbatKVIFM026.WRIB_APLY_OPTNTY_CD, COLUMN_31); // 割引適用契機コード
		out_map.setString(JBSbatKVIFM026.JOKEN_TSTAYMD, COLUMN_32); // 条件適用開始年月日
		out_map.setString(JBSbatKVIFM026.JOKEN_TENDYMD, COLUMN_33); // 条件適用終了年月日
		out_map.setString(JBSbatKVIFM026.WRIB_ADD_JOKEN_CD, COLUMN_34); // 割引登録条件コード
		out_map.setString(JBSbatKVIFM026.WRIB_SVC_TSTAYMD, COLUMN_35); // 割引サービス適用開始年月日
		out_map.setString(JBSbatKVIFM026.WRIB_SVC_TENDYMD, COLUMN_36); // 割引サービス適用終了年月日

		// 出力フラグを設定
		out_map.setOutFlg(true);

		// 出力共通電文に入出力インターフェースを設定する。
		outputInItem.addOutMapList_2(out_map);
	}

}
