/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKAdslMskmRsltDataChk
*	ソースファイル名	：JBSbatKKAdslMskmRsltDataChk.java
*	作成者				：富士通　
*	作成日				：2011年10月05日
*＜機能概要＞
*　ＡＤＳＬ申込結果データチェック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/05   FJ)団		新規作成
*	v2.00.00	2012/02/01   FJ)倉上	【ST2-2012-0000132】障害対応
*	v2.01.00	2012/03/13   FJ)倉上	【ST2-2012-0000394】登録処理修正。
*	v2.02.00	2012/05/28   FJ)久保田	【ST2-2012-0001003】障害対応。
*	v3.00.00	2012/06/05	 FJ)岡田	【ANK-0315-00-00】に付随する全角項目文字化け横展開対応
*	v3.01.00	2012/06/26	 FJ)倉上	【TAI-2012-0000058】ADSL認証ID形式変更対応。
*	v3.02.00	2012/06/29   FJ)久保田	【TAI-2012-0000043】SQL規約チェック対応
*	v3.03.00	2012/07/26   FJ)倉上	【ST1-2012-0000163】障害対応
*	v3.04.00	2012/08/01   FJ)倉上	【ST1-2012-0000180】障害対応
*	v3.05.00	2012/08/21   FJ)倉上	【ST1-2012-0000141】障害対応
*	v3.06.00	2012/09/01   FJ)倉上	【ST2-2012-0001621】障害対応
*	v4.00.00	2012/10/06   FJ)倉上	【IT1-2012-0001855】障害対応
*	v4.01.00	2013/03/25   FJ)柳		【IT1-2012-0000498】障害対応
*	v5.00.00	2013/01/21   FJ)石原	【ANK-1245-00-00】機種依存文字の取り扱い対応
*	v5.00.01	2013/04/19   FJ)団		【IT1-2013-0000986】障害対応
*	v5.00.02	2013/04/23   FJ)団		【IT1-2013-0001007】障害対応
*	v5.00.03	2013/08/22   FJ)中作	【OM-2013-0000632】障害対応
*	v5.00.04	2013/10/10   FJ)団		【OM-2013-0002345】障害対応
*	v7.00.00	2014/03/06   FJ)団		【OM-2014-0000877】障害対応
*	v7.00.01	2014/03/13   FJ)団		【OM-2014-0000980】障害対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatInterface;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatKKIFM146;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JKKStringConverter;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKAdslMskmRsltDataChk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(ＡＤＳＬ工事)*/
	private static final String D_TBL_NAME_KK_T_ADSL_KOJI = "KK_T_ADSL_KOJI";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(サービス契約＜ｅｏＡＤＳＬ＞)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_EOADSL = "KK_T_SVC_KEI_EOADSL";

	// 2013/10/10 OM-2013-0002345対応 DEL start
	///** SQL定義キー(KK_SELECT_004)*/
	//private static final String KK_T_ADSL_KOJI_KK_SELECT_004 = "KK_SELECT_004";
	// 2013/10/10 OM-2013-0002345対応 DEL end

	/** SQL定義キー(KK_SELECT_005)*/
	private static final String KK_T_ADSL_KOJI_KK_SELECT_005 = "KK_SELECT_005";

	/** SQL定義キー(KK_SELECT_096)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_096 = "KK_SELECT_096";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_T_SVC_KEI_EOADSL_KK_SELECT_001 = "KK_SELECT_001";

	/** テーブルアクセスクラス(ＡＤＳＬ工事)*/
	private JBSbatSQLAccess db_KK_T_ADSL_KOJI = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(サービス契約＜ｅｏＡＤＳＬ＞)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_EOADSL = null;

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/**
	 * ファイルパス（出力）
	 */
	private String filePath = "";
	
	/**
	 * ファイル名
	 */
	private String fileName = "";
	
	/**
	 * 連携年月日時分秒
	 */
	private String renkeiDtm = "";
	
	/**
	 * サービス契約番号
	 */
	private String svcKeiNo = "";
		
	/**
	 *  回線提供コード
	 */
	private String kaisenTkCompCd = "";
	
	/**
	 * 姓
	 */
	private String custNm = "";
	
	/**
	 * 姓ふりがな
	 */
	private String custKana = "";
	
	/**
	 * ADSL使用電話番号
	 */
	private String adslUseTelno = "";
	
	/**
	 * ADSL認証ID
	 */
	private String adslNinshoId = "";
	
	/**
	 * ファイル出力数
	 */
	private int out_count = 0;
	
	/**
	 * エンコード
	 */
	private static final String ENCODE = "Windows-31J";
	
	/**
	 * コンマ
	 */
	private static final String CONMA = ",";
	
	/**
	 * タブ区切り
	 */
	private static final String TAB = "	";
	
	/**
	 * 空文字
	 */
	private static final String KARAMOJI = "";
	
	/**
	 * ファイルID(ADSL申込結果中間ファイル)
	 */
	private static final String ADSL_MSKM_RSLT_MID_FILE_ID = "KKIFM141001";
	
	/**
	 * 改行コード
	 */
	private static final String KAIGYOU_CODE = "\n";
	
	/**
	 * 契約者タイプコード（1:個人）
	 */
	private static final String KEISHA_TYPE_CD_KOJIN = "1";
	
	/**
	 * 契約者タイプコード（2:法人）
	 */
	private static final String KEISHA_TYPE_CD_HOJIN = "2";
	
	/**
	 * 顧客区分（2:個人）
	 */
	private static final String CUST_DIV_KOJIN = "2";
	
	/**
	 * 顧客区分（1:法人）
	 */
	private static final String CUST_DIV_HOJIN = "1";
	
	/**
	 * ＡＤＳＬモデム種類コード（2:ROUTER）
	 */
	private static final String MODEM_KIND_CD_ROUTER = "2";
	
	/**
	 * ファイルパス（入力）
	 */
	private String inFileName = "KKIFE043001.csv";
	
	/**
	 * 出力確認マップ
	 * */
	private HashMap<String, String> adsl_koji_out_map = null;
	
	/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
	/**
	 * ワーニングフラグ
	 * */
	private boolean warningFlg = false;
	/* ++++++++++ v7.00.01 追加終了 ++++++++++ */
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_ADSL_KOJI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADSL_KOJI);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_SVC_KEI_EOADSL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_EOADSL);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		// フリー項目からファイル名を取得します。
		filePath = commonItem.getFreeItem();
		adsl_koji_out_map = new HashMap<String, String>();
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		ArrayList<String> rslt_list   = new ArrayList<String>();
		
		//システム時間(yyyyMMddHHmmss)を取得します。
		String sysdate = JBSbatDateUtil.getSystemDateTime();
		
		// 中間ファイルの読み込みファイル名取得を行います。
		getKkifm146(inMap);
		
		// ファイル名からYYYYMMDDを切り出し、末尾に"00"を付加します。
		renkeiDtm = "20" + fileName.substring(6, 12) + sysdate.substring(8, 12) + "00";
		
		// ADSL申込結果データファイルを読み込み、入力チェックを行います。
		String file_path = filePath + inFileName;
		rslt_list = getInputFile(file_path);
		
		// 更新情報取得とDB参照該当なしチェックを実施し、正常データのみをファイル出力します。
		kkifm141OutPut(rslt_list);
		
		super.logPrint.printDebugLog("kkifm141OutPutCount：：：：" + out_count);
		
		super.logPrint.printDebugLog("execute_END");
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_ADSL_KOJI.close();
		db_KK_T_SVC_KEI.close();
		db_KK_T_SVC_KEI_EOADSL.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

// 2013/10/10 OM-2013-0002345対応 DEL start
//	/**
//	 * SQLKEY(KK_SELECT_004)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でバイント変数を設定します。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
//	 *		 	ISP受付番号
//	 *		 	申込受付年月日
//	 *		 	連携ファイルコード
//	 * </pre>
//	 * <p>
//	 * @param param バイント変数の値配列。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeKK_T_ADSL_KOJI_KK_SELECT_004(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_T_ADSL_KOJI.selectBySqlDefine(paramList, KK_T_ADSL_KOJI_KK_SELECT_004);
//	}
// 2013/10/10 OM-2013-0002345対応 DEL end

	/**
	 * SQLKEY(KK_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_ADSL_KOJI_KK_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_ADSL_KOJI.selectBySqlDefine(paramList, KK_T_ADSL_KOJI_KK_SELECT_005);
	}

	/**
	 * SQLKEY(KK_SELECT_096)で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_KK_SELECT_096(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_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_096);
	}

	/**
	 * SQLKEY(KK_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_T_SVC_KEI_EOADSL_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_EOADSL.selectBySqlDefine(paramList, KK_T_SVC_KEI_EOADSL_KK_SELECT_001);
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 中間ファイルの読み込みを行います。
	 *  <p>
	 * @param inMap 中間ファイルの値。
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void getKkifm146(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		fileName = inMap.getString(JBSbatKKIFM146.ADSL_MSKM_RSLT_FILE_NM);	// ADSL申込結果データファイル名
	}
	
	/**
	 * 指定されたファイル情報を読み込みます。<br>
	 * <p>
	 * @param file_path ファイル名(フルパス)
	 * @param file_name ファイル名
	 * @return ファイルデータ
	 * @throws Exception 
	 */	
	private ArrayList<String> getInputFile(String file_path) throws Exception
	{
		super.logPrint.printDebugLog("getInputFile_START");
		
		// ファイル情報保持
		ArrayList<String> data_list = new ArrayList<String>();
		String data_work = "";
		BufferedReader br = null;
		int j = 0;
		
		// 指定されたファイルを読み込みます。
		try
		{
			InputStreamReader is = new InputStreamReader(new FileInputStream(file_path), ENCODE);
			
			br = new BufferedReader(is);
			
			// 読み込みデータの入力チェック
			while (br.ready())
			{
				// 行データを取得
				data_work = br.readLine();
				
				// データを分解
				String[] data = data_work.split(TAB, -1);
				
				/* ++++++++++ v7.00.01 修正開始 ++++++++++ */
				//// 2013/10/10 OM-2013-0002345対応 UPD start
				////// 重複チェックを行います。
				////if(!chkDble(data))
				////{
				////	// 必須チェック・データ形式チェックを行います。
				////	if(!chkDataType(data))
				////	{
				////		data_list.add(j, data_work);
				////		j++;
				////	}
				////	else
				////	{
				////		// 次のデータへスキップ。
				////		//throw new JBSbatBusinessError();
				////		
				////		super.logPrint.printDebugLog("読み飛ばしたISP受付番号：" + data[1]);
				////		
				////		continue;
				////	}
				////}
				//// 必須チェック・データ形式チェックを行います。
				//if(!chkDataType(data))
				//{
				//	data_list.add(j, data_work);
				//	j++;
				//}
				//else
				//{
				//	// 次のデータへスキップ。
				//	//throw new JBSbatBusinessError();
				//	
				//	super.logPrint.printDebugLog("読み飛ばしたISP受付番号：" + data[1]);
				//	
				//	continue;
				//}
				//// 2013/10/10 OM-2013-0002345対応 UPD end
				// 必須チェック・データ形式チェックを行います。
				warningFlg = false;
				if(!chkDataType(data))
				{
					data_list.add(j, data_work);
					j++;
				}
				else
				{
					super.logPrint.printDebugLog("読み飛ばしたISP受付番号：" + data[1]);
					// ワーニングエラーが設定されている場合、エラーをセット
					if(warningFlg)
					{
						super.commonItem.addErrorCount(1);
					}
				}
				/* ++++++++++ v7.00.01 修正終了 ++++++++++ */
			}
		}
		catch (IOException e)
		{
			// ファイルがない場合はエラー。
			throw new JBSbatBusinessException("EKKB0020CE", new String[]{file_path});
		}
		finally
		{
			if (br != null)
			{
				br.close();
			}
		}
		
		super.logPrint.printDebugLog("getInputFile_END");
		
		return data_list;
	}

// 2013/10/10 OM-2013-0002345対応 DEL start
//	/**
//	 * 重複チェックを行います。<br>
//	 * <p>
//	 * @param data レコードデータ
//	 * @return true:NG、false:OK
//	 * @throws Exception 
//	 */	
//	private boolean chkDble(String[] data) throws Exception
//	{
//		super.logPrint.printDebugLog("    chkDble_START");
//		boolean err_flag = false;
//		// SQL実行結果取得用mapを生成（連絡先）
//		
//		// SQL実行結果取得用mapを生成（ADSL工事）
//		JBSbatCommonDBInterface adslKoji04Map = new JBSbatCommonDBInterface(); 
//		// SQL定義キー(KK_SELECT_004)を実行する
//		
//		String [] select004Param = {data[1], data[2], data[3]};
//		
//		super.logPrint.printDebugLog("    selectParam(ISP受付番号)：：：：" + data[1]);
//		super.logPrint.printDebugLog("    selectParam(申込年月日)：：：：" + data[2]);
//		super.logPrint.printDebugLog("    selectParam(連携ファイルコード)：：" + data[3]);
//		executeKK_T_ADSL_KOJI_KK_SELECT_004(select004Param);
//		adslKoji04Map = db_KK_T_ADSL_KOJI.selectNext();
//
//		//検索結果が存在しない場合は0になるnullはあり得ない
//		int adslKoji04Count = Integer.parseInt(adslKoji04Map.getString("CNT"));
//		// 同じデータが存在した場合
//		if(adslKoji04Count != 0)
//		{
//			//業務エラーログ出力
//			String value = "ISP受付番号：" + data[1] + "、申込年月日：" + data[2] + "、連携ファイルコード：" + data[3];
//			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0220KW, new String[]{value});
//			err_flag = true;
//		}
//		super.logPrint.printDebugLog("    chkDble_END");
//		return err_flag;
//	}
// 2013/10/10 OM-2013-0002345対応 DEL end
	
	/**
	 * 必須チェック・データ形式チェックを行います。<br>
	 * <p>
	 * @param data レコードデータ
	 * @return true：チェックNG、false：チェックOK
	 * @throws Exception 
	 */	
	private boolean chkDataType(String[] data) throws Exception
	{
		super.logPrint.printDebugLog("    chkDataType_START");
		
		boolean err_flag = false;
		
		String ispUkNo = data[1];
		
		// 0.フォーマットバージョン（必須、半角数字1、1桁）
		if(!isHannkakuSuuji(data[0], 1, 1, true, "ISP受付番号：" + ispUkNo + "、エラー項目：フォーマットバージョン:::::値：" + data[0]))
		{
			err_flag = true;
		}
		// 1.ＩＳＰ受付番号（必須、半角英数字1、50桁）
		if (!isHannkakuESuuji(data[1], 1, 50, true, "ISP受付番号：" + ispUkNo + "、エラー項目：ISP受付番号:::::値：" + data[1]))
		{
			err_flag = true;
		}
		// 2.申込日（必須、年月日1）
		if (!isYearMonthDay(data[2], true, "ISP受付番号：" + ispUkNo + "、エラー項目：申込日:::::値：" + data[2]))
		{
			err_flag = true;
		}
		// 3.ステータス（必須、半角英数字1、2桁）
		if (!isHannkakuESuuji(data[3], 1, 2, true, "ISP受付番号：" + ispUkNo + "、エラー項目：ステータス:::::値：" + data[3]))
		{
			err_flag = true;
		}
		// 4.ＩＳＰコード（必須、半角英数字1、10桁）
		if (!isHannkakuESuuji(data[4], 1, 10, true, "ISP受付番号：" + ispUkNo + "、エラー項目：ISPコード:::::値：" + data[4]))
		{
			err_flag = true;
		}
		// 5.代理店コード（半角英数字1、10桁）
		if (!isHannkakuESuuji(data[5], 1, 10, false, "ISP受付番号：" + ispUkNo + "、エラー項目：代理店コード:::::値：" + data[5]))
		{
			err_flag = true;
		}
		// 6.与信結果（チェックなし）
		// 7.与信結果不適理由（チェックなし）
		// 8.顧客番号（必須、半角英数字1、最小8,最大8桁）
		if(!isHannkakuESuuji(data[8], 8, 8, true, "ISP受付番号：" + ispUkNo + "、エラー項目：顧客番号:::::値：" + data[8]))
		{
			err_flag = true;
		}
		// 9.契約番号（必須、半角英数字1、最小8,最大8桁）
		if(!isHannkakuESuuji(data[9], 8, 8, true, "ISP受付番号：" + ispUkNo + "、エラー項目：契約番号:::::値：" + data[9]))
		{
			err_flag = true;
		}
		// 10.アプリケーションコード（必須、半角英数字1、50桁）
		if(!isHannkakuESuuji(data[10], 1, 50, true, "ISP受付番号：" + ispUkNo + "、エラー項目：アプリケーションコード:::::値：" + data[10]))
		{
			err_flag = true;
		}
		// 11.パスワードWEB（チェックなし）
		// 12.顧客区分（半角数字1、1桁）
		if(!isHannkakuSuuji(data[12], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：顧客区分:::::値：" + data[12]))
		{
			err_flag = true;
		}
		
		String name = data[13];
		if(name.indexOf("　") != -1)
		{
			data[13] = name.substring(0, name.indexOf("　"));
			data[14] = name.substring(name.indexOf("　") + 1);
		}
		else
		{
			data[13] = name;
		}
		
		// 13.姓ふりがな（全角カタカナ、121桁）
		/* ++++++++++ v7.00.00 修正開始 ++++++++++ */
		//if (!isZenkakuKana(JBSbatInterface.charConverter(data[13]), 121, "ISP受付番号：" + ispUkNo + "、エラー項目：姓ふりがな:::::値：" + data[13]))
		if (!isNameAddress(JBSbatInterface.charConverter(data[13]), 121, "ISP受付番号：" + ispUkNo + "、エラー項目：姓ふりがな:::::値：" + data[13]))
		/* ++++++++++ v7.00.00 修正終了 ++++++++++ */
		{
			err_flag = true;
		}
		
		// 14.名ふりがな（全角カタカナ、121桁）
		/* ++++++++++ v7.00.00 修正開始 ++++++++++ */
		//if (!isZenkakuKana(JBSbatInterface.charConverter(data[14]), 121, "ISP受付番号：" + ispUkNo + "、エラー項目：名ふりがな:::::値：" + data[14]))
		if (!isNameAddress(JBSbatInterface.charConverter(data[14]), 121, "ISP受付番号：" + ispUkNo + "、エラー項目：名ふりがな:::::値：" + data[14]))
		/* ++++++++++ v7.00.00 修正終了 ++++++++++ */
		{
			err_flag = true;
		}
		
		// 15.姓（氏名/住所、121桁）
		if (!isNameAddress(JBSbatInterface.charConverter(data[15]), 121, "ISP受付番号：" + ispUkNo + "、エラー項目：姓:::::値：" + data[15]))
		{
			err_flag = true;
		}
		
		// 16.名（氏名/住所、121桁）
		if (!isNameAddress(JBSbatInterface.charConverter(data[16]), 121, "ISP受付番号：" + ispUkNo + "、エラー項目：名:::::値：" + data[16]))
		{
			err_flag = true;
		}
		// 17.性別区分（半角数字1、1桁）
		if(!isHannkakuSuuji(data[17], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：性別区分:::::値：" + data[17]))
		{
			err_flag = true;
		}
		// 18.生年月日（年月日1）
		if (!isYearMonthDay(data[18], false, "ISP受付番号：" + ispUkNo + "、エラー項目：生年月日:::::値：" + data[18]))
		{
			err_flag = true;
		}
		// 19.担当部署（全角、121桁）
		if (!isZenkaku(JBSbatInterface.charConverter(data[19]), 121, "ISP受付番号：" + ispUkNo + "、エラー項目：担当部署:::::値：" + data[19]))
		{
			err_flag = true;
		}
		// 20.担当者名（氏名/住所、121桁）
		if (!isNameAddress(JBSbatInterface.charConverter(data[20]), 121, "ISP受付番号：" + ispUkNo + "、エラー項目：担当者名:::::値：" + data[20]))
		{
			err_flag = true;
		}
		// 21.郵便番号（半角数字7、7桁）
		if(!isHannkakuSuuji(data[21], 7, 7, false, "ISP受付番号：" + ispUkNo + "、エラー項目：郵便番号:::::値：" + data[21]))
		{
			err_flag = true;
		}
		// 22.住所１（氏名/住所、4桁）
		/* ++++++++++ v7.00.01 修正開始 ++++++++++ */
		//if (!isNameAddress(JBSbatInterface.charConverter(data[22]), 4, "ISP受付番号：" + ispUkNo + "、エラー項目：住所１:::::値：" + data[22]))
		if (!isNameAddress1(JBSbatInterface.charConverter(data[22]), 4, "ISP受付番号：" + ispUkNo + "、エラー項目：住所１:::::値：" + data[22]))
		/* ++++++++++ v7.00.01 修正開始 ++++++++++ */
		{
			err_flag = true;
		}
		// 23.住所２（氏名/住所、57桁）
		if (!isNameAddress(JBSbatInterface.charConverter(data[23]), 57, "ISP受付番号：" + ispUkNo + "、エラー項目：住所２:::::値：" + data[23]))
		{
			err_flag = true;
		}
		
		// 24.住所３（氏名/住所、60桁）（機種依存文字を許容）
		if (!isNameAddress(JBSbatInterface.charConverter(data[24]), 60, "ISP受付番号：" + ispUkNo + "、エラー項目：住所３:::::値：" + data[24]))
		{
			err_flag = true;
		}
		// 25.電話番号（TEL2、最小10最大11）
		if(!isTelno2(data[25], "ISP受付番号：" + ispUkNo + "、エラー項目：電話番号:::::値：" + data[25]))
		{
			err_flag = true;
		}
		// 26.昼間電話番号（TEL2、最小10最大11）
		if(!isTelno2(data[26], "ISP受付番号：" + ispUkNo + "、エラー項目：昼間電話番号:::::値：" + data[26]))
		{
			err_flag = true;
		}
		// 27.FAX番号（TEL2、最小10最大11）
		if(!isTelno2(data[27], "ISP受付番号：" + ispUkNo + "、エラー項目：FAX番号:::::値：" + data[27]))
		{
			err_flag = true;
		}
		// 28.連絡先電子メールアドレス（E-mail1、128桁）
		if (!isEMail1(data[28], 128, "ISP受付番号：" + ispUkNo + "、エラー項目：連絡先電子メールアドレス:::::値：" + data[28]))
		{
			err_flag = true;
		}
		// 29.パッケージ（チェックなし）
		// 30.料金プラン（必須、半角英数字1、10桁）
		if (!isHannkakuESuuji(data[30], 1, 10, true, "ISP受付番号：" + ispUkNo + "、エラー項目：料金プラン:::::値：" + data[30]))
		{
			err_flag = true;
		}
		// 31.タイプ（半角英数字1、1桁）
		if(!isHannkakuESuuji(data[31], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：タイプ:::::値：" + data[31]))
		{
			err_flag = true;
		}
		// 32.ADSLモデム提供区分（半角英数字1、1桁）
		if(!isHannkakuESuuji(data[32], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：ADSLモデム提供区分:::::値：" + data[32]))
		{
			err_flag = true;
		}
		// 33.宅内工事区分（半角英数字1、1桁）
		if(!isHannkakuESuuji(data[33], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：宅内工事区分:::::値：" + data[33]))
		{
			err_flag = true;
		}
		// 34.キャンペーンコード（半角英数字1、10桁）
		if (!isHannkakuESuuji(data[34], 1, 10, false, "ISP受付番号：" + ispUkNo + "、エラー項目：キャンペーンコード:::::値：" + data[34]))
		{
			err_flag = true;
		}
		// ステータスが「DF」以外の場合
		// 35.開通希望日・解約希望日・変更希望日（年月日1）
		if (!isYearMonthDay(data[35], false, "ISP受付番号：" + ispUkNo + "、エラー項目：開通・解約・変更希望日:::::値：" + data[35]))
		{
			err_flag = true;
		}
		// 36.設置先郵便番号（半角数字1、7桁）
		if(!isHannkakuSuuji(data[36], 7, 7, false, "ISP受付番号：" + ispUkNo + "、エラー項目：設置先郵便番号:::::値：" + data[36]))
		{
			err_flag = true;
		}
		// 37.設置先住所１（氏名/住所、4桁）
		/* ++++++++++ v7.00.01 修正開始 ++++++++++ */
		//if (!isNameAddress(JBSbatInterface.charConverter(data[37]), 4, "ISP受付番号：" + ispUkNo + "、エラー項目：設置先住所１:::::値：" + data[37]))
		if (!isNameAddress1(JBSbatInterface.charConverter(data[37]), 4, "ISP受付番号：" + ispUkNo + "、エラー項目：設置先住所１:::::値：" + data[37]))
		/* ++++++++++ v7.00.01 修正終了 ++++++++++ */
		{
			err_flag = true;
		}
		// 38.設置先住所２（氏名/住所、57桁）
		if (!isNameAddress(JBSbatInterface.charConverter(data[38]), 57, "ISP受付番号：" + ispUkNo + "、エラー項目：設置先住所２:::::値：" + data[38]))
		{
			err_flag = true;
		}
		// 39.設置先住所３（氏名/住所、60桁）（機種依存文字を許容）
		if (!isNameAddress(JBSbatInterface.charConverter(data[39]), 60, "ISP受付番号：" + ispUkNo + "、エラー項目：設置先住所３:::::値：" + data[39]))
		{
			err_flag = true;
		}
		// 40.契約電話番号（TEL2、最小10最大11）
		if(!isTelno2(data[40], "ISP受付番号：" + ispUkNo + "、エラー項目：契約電話番号:::::値：" + data[40]))
		{
			err_flag = true;
		}
		// 41.エリア判定局（半角数字1、最小0最大7）
		if(!isHannkakuSuuji(data[41], 0, 7, false, "ISP受付番号：" + ispUkNo + "、エラー項目：エリア判定局:::::値：" + data[41]))
		{
			err_flag = true;
		}
		// 42.設置先電話番号（TEL2、最小10最大11）
		if(!isTelno2(data[42], "ISP受付番号：" + ispUkNo + "、エラー項目：設置先電話番号:::::値：" + data[42]))
		{
			err_flag = true;
		}
		// 43.NTT局（全角、121桁）
		if (!isZenkaku(JBSbatInterface.charConverter(data[43]), 121, "ISP受付番号：" + ispUkNo + "、エラー項目：ＮＴＴ局:::::値：" + data[43]))
		{
			err_flag = true;
		}
		// 44.回線種別（半角英数字1、1桁）
		if(!isHannkakuESuuji(data[44], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：回線種別:::::値：" + data[44]))
		{
			err_flag = true;
		}
		// 45.回線名義人（氏名/住所、60桁）（機種依存文字を許容）
		if (!isNameAddress(JBSbatInterface.charConverter(data[45]), 60, "ISP受付番号：" + ispUkNo + "、エラー項目：回線名義人:::::値：" + data[45]))
		{
			err_flag = true;
		}
		// 46.アナログ切替承認区分（半角英数字1、1桁）
		if(!isHannkakuESuuji(data[46], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：アナログ切替承認区分:::::値：" + data[46]))
		{
			err_flag = true;
		}
		// 47.電話番号変更承認区分（半角英数字1、1桁）
		if(!isHannkakuESuuji(data[47], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：電話番号変更承認区分:::::値：" + data[47]))
		{
			err_flag = true;
		}
		// 48.設備区分（チェックなし）
		// 49.構内配線区分（半角英数字1、1桁）
		if(!isHannkakuESuuji(data[49], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：構内配線区分:::::値：" + data[49]))
		{
			err_flag = true;
		}
		if("G".equals(data[3]))
		{
			// ステータスが「G」の場合
			// 50.適合結果登録日（必須、年月日1）
			if (!isYearMonthDay(data[50], true, "ISP受付番号：" + ispUkNo + "、エラー項目：適合結果登録日:::::値：" + data[50]))
			{
				err_flag = true;
			}
			// 51.適合結果（必須、半角英数字1、1桁）
			if(!isHannkakuESuuji(data[51], 1, 1, true, "ISP受付番号：" + ispUkNo + "、エラー項目：適合結果:::::値：" + data[51]))
			{
				err_flag = true;
			}
			// 52.不適理由（必須、半角英数字1、1桁）
			if(!isHannkakuESuuji(data[52], 1, 1, true, "ISP受付番号：" + ispUkNo + "、エラー項目：不適理由:::::値：" + data[52]))
			{
				err_flag = true;
			}
		}
		else
		{
			// ステータスが「G」以外の場合
			// 50.適合結果登録日（年月日1）
			if (!isYearMonthDay(data[50], false, "ISP受付番号：" + ispUkNo + "、エラー項目：適合結果登録日:::::値：" + data[50]))
			{
				err_flag = true;
			}
			// 51.適合結果（半角英数字1、1桁）
			if(!isHannkakuESuuji(data[51], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：適合結果:::::値：" + data[51]))
			{
				err_flag = true;
			}
			// 52.不適理由（半角英数字1、1桁）
			if(!isHannkakuESuuji(data[52], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：不適理由:::::値：" + data[52]))
			{
				err_flag = true;
			}
		}
		// 53.サービス開始日・サービス終了日（年月日1）
		if (!isYearMonthDay(data[53], true, "ISP受付番号：" + ispUkNo + "、エラー項目：サービス開始日・終了日:::::値：" + data[53]))
		{
			err_flag = true;
		}
		if("G".equals(data[3]))
		{
			// ステータスが「G」の場合
			// 54.NTT局内工事日（必須、年月日1）
			if (!isYearMonthDay(data[54], true, "ISP受付番号：" + ispUkNo + "、エラー項目：NTT局内工事日:::::値：" + data[54]))
			{
				err_flag = true;
			}
		}
		else
		{
			// ステータスが「G」以外の場合
			// 54.NTT局内工事日（年月日1）
			if (!isYearMonthDay(data[54], false, "ISP受付番号：" + ispUkNo + "、エラー項目：NTT局内工事日:::::値：" + data[54]))
			{
				err_flag = true;
			}
		}
		// 55.認証情報払出日（チェックなし）
		// 56.ADSL認証ID（半角英数字2、63桁）
		if (!isHannkakuESuuji2(data[56], 1, 63, false, "ISP受付番号：" + ispUkNo + "、エラー項目：ADSL認証ID:::::値：" + data[56]))
		{
			err_flag = true;
		}
		// 57.パスワード（チェックなし）
		// 58.LAN側アドレス（チェックなし）
		// 59.WAN側アドレス（チェックなし）
		// 60.オプション_Qos（チェックなし）
		// 61.オプション_保守（チェックなし）
		// 62.オプション_IPアドレス追加（チェックなし）
		// 63.オプション_相互接続区分（チェックなし）
		// 64.備考（MIX、120桁）
		if (!isMix(JBSbatInterface.charConverter(data[64]), 120, "ISP受付番号：" + ispUkNo + "、エラー項目：備考:::::値：" + data[64]))
		{
			err_flag = true;
		}
		// 65.備考2（チェックなし）
		// 66.備考3（チェックなし）
		// 67.WEB受付番号（半角英数字1、10桁）
		if (!isHannkakuESuuji(data[67], 1, 10, false, "ISP受付番号：" + ispUkNo + "、エラー項目：WEB受付番号:::::値：" + data[67]))
		{
			err_flag = true;
		}
		// 68.spare2（半角英数字1、1桁）
		if (!isHannkakuESuuji(data[68], 1, 1, false, "ISP受付番号：" + ispUkNo + "、エラー項目：spare2:::::値：" + data[68]))
		{
			err_flag = true;
		}
		// 69.spare3（チェックなし）
		// 70.spare4（チェックなし）
		// 71.spare5（チェックなし）
		
		super.logPrint.printDebugLog("    chkDataType_END");
		return err_flag;
	}
	
	/**
	 * 必須チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exceptionメソッド内で発生した例外全般。
	 */	
	private boolean isHissu(String value, String name) throws Exception
	{
		boolean rslt = true;
		
		if (value == null || value.length() == 0)
		{
			//業務エラーログ出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0060TE, new String[]{name});
			return false;
		}
		
		return rslt;
	}
	
	/**
	 * 桁数チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param min_len 最小桁数
	 * @param max_len 最大桁数
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exceptionメソッド内で発生した例外全般。
	 */	
	private boolean isKetasuu(String value, int min_len, int max_len, String name) throws Exception
	{
		boolean rslt = true;
		
		if(min_len == max_len)
		{
			if (!JCCBatCommon.isKetasuu1(value, String.valueOf(min_len)))
			{
				//業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
				return false;
			}
		}else
		{
			if (!JCCBatCommon.isKetasuu2(value, String.valueOf(min_len), String.valueOf(max_len)))
			{
				//業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
				return false;
			}
		}
		
		return rslt;
	}
	
	/**
	 * 半角数字１単項目チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param min_len 最小桁数
	 * @param max_len 最大桁数
	 * @param flg 必須チェックフラグ（true:チェック実施、false:チェック未実施）
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exceptionメソッド内で発生した例外全般。
	 */	
	private boolean isHannkakuSuuji(String value, int min_len, int max_len, boolean flg, String name) throws Exception
	{
		boolean rslt = true;

		// 必須チェック
		if (flg)
		{
			if (!isHissu(value, name))
			{
				return false;
			}
			else
			{
				// 属性チェック
				rslt = JCCBatCommon.isHannkakuSuuji1(value);
				
				if (!rslt)
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェック
				if(!isKetasuu(value, min_len, max_len, name))
				{
					return false;
				}
			}
		}
		else
		{
			// 必須チェックでない場合、NULLでなく、空文字でない場合
			if (value != null && !"".equals(value))
			{
			
				// 属性チェック
				rslt = JCCBatCommon.isHannkakuSuuji1(value);
				
				if (!rslt)
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェック
				if(!isKetasuu(value, min_len, max_len, name))
				{
					return false;
				}
			}
		}		
		return rslt;
	}
	
	/**
	 * 年月日１単項目チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param flg 必須チェックフラグ（true:チェック実施、false:チェック未実施）
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exception メソッド内で発生した例外全般。
	 */	
	private boolean isYearMonthDay(String value, boolean flg, String name) throws Exception
	{
		boolean rslt = true;

		// 必須チェック
		if (flg)
		{
			if (!isHissu(value, name))
			{
				return false;
			}
			else
			{
				// 必須チェックでない場合、NULLでなく、空文字でない場合
				// 年月日１の単項目チェック
				rslt = JCCBatCommon.isYearMonthDay1(value);
				
				// 結果判断
				if (!rslt)
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
			}
		}
		else
		{
			// 必須チェックでない場合、NULLでなく、空文字でない場合
			if (value != null && !"".equals(value))
			{
				// 年月日１の単項目チェック
				rslt = JCCBatCommon.isYearMonthDay1(value);
				
				// 結果判断
				if (!rslt)
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
			}
		}
		
		return rslt;
	
	}
	
	/**
	 * 半角英数字１単項目チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param min_len 最小桁数
	 * @param max_len 最大桁数
	 * @param flg 必須チェックフラグ（true:チェック実施、false:チェック未実施）
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exception メソッド内で発生した例外全般。
	 */	
	private boolean isHannkakuESuuji(String value, int min_len, int max_len, boolean flg, String name) throws Exception
	{
		boolean rslt = true;

		// 必須チェック
		if (flg)
		{
			if (!isHissu(value, name))
			{
				return false;
			}
			else
			{
				// 必須チェックでない場合でNULL以外および空文字以外
				// 属性チェック
				rslt = JCCBatCommon.isHannkakuESuuji1(value);
				
				if (!rslt)
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェック
				if(!isKetasuu(value, min_len, max_len, name))
				{
					return false;
				}
			}
		}
		else
		{
			// 必須チェックでない場合でNULL以外および空文字以外
			if (value != null && !"".equals(value))
			{
				// 属性チェック
				rslt = JCCBatCommon.isHannkakuESuuji1(value);
				
				if (!rslt)
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェック
				if(!isKetasuu(value, min_len, max_len, name))
				{
					return false;
				}
			}
		}
		
		return rslt;
	}
	
	/**
	 * TEL2項目チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param len 桁数
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */	
	private boolean isTelno2(String value, String name) throws Exception
	{
		
		boolean rslt = true;
		
		// NULLでなく、空文字でない場合
		if (value != null && !"".equals(value))
		{
			// 属性チェック
			rslt = JCCBatCommon.isTel2(value);
			
			if (!rslt)
			{
				//業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
				return false;
			}
			
			// 桁数チェックは共通部品で10桁か11桁のみOKとしている。
		}
		return rslt;
	}
	
	/**
	 * MIX項目チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param len 桁数
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */	
	private boolean isMix(String value, int len, String name) throws Exception
	{
		
		boolean rslt = true;
		
		// NULLでなく、空文字でない場合
		if (value != null && !"".equals(value))
		{
			// 属性チェック
			rslt = JCCBatCommon.isMIX(value);
			
			if (!rslt)
			{
				//業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
				return false;
			}
			
			// 桁数チェック
			if (len > 0)
			{
				if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
					return false;
				}
			}
		}
		return rslt;
	}
	
	/**
	 * 全角単項目チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param len 桁数
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws JBSbatBusinessException 
	 * @throws Exception メソッド内で発生した例外全般。
	 */	
	private boolean isZenkaku(String value, int len, String name) throws Exception
	{
		
		boolean rslt = true;
		
		// NULLでなく、空文字でない場合
		if (value != null && !"".equals(value))
		{
		
			// 属性チェック
			rslt = JCCBatCommon.isZenkaku(value);
			
			if (!rslt)
			{
				//業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
				return false;
			}
			
			// 桁数チェック
			if (len > 0)
			{
				if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
					return false;
				}
			}
		}
		return rslt;
	}
	
	/* ++++++++++ v7.00.00 削除開始 ++++++++++ */
//	/**
//	 * 全角カナ単項目チェックを実施します。<br>
//	 * <p>
//	 * @param value 値
//	 * @param len 桁数
//	 * @param name 項目名
//	 * @return true：チェックOK、false：チェックNG
//	 * @throws JBSbatBusinessException 
//	 * @throws Exception メソッド内で発生した例外全般。
//	 */	
//	private boolean isZenkakuKana(String value, int len, String name) throws Exception
//	{
//		
//		boolean rslt = true;
//		boolean rslt2 = true;
//		boolean returnRslt = true;
//		
//		// NULLでなく、空文字でない場合
//		if (value != null && !"".equals(value))
//		{
//		
//			// 属性チェック（全角カタカナ）
//			rslt = JCCBatCommon.isZenkakuKana(value);
//			
//			if (!rslt)
//			{
//				
//				// 属性チェック（全角ひらがな）
//				rslt2 = JCCBatCommon.isZenkakuHiragana(value);
//				
//				if (!rslt2)
//				{
//					returnRslt = false;
//					//業務エラーログ出力
//					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
//					return false;
//				}
//			}
//			
//			// 桁数チェック
//			if (len > 0)
//			{
//				if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
//				{
//					returnRslt = false;
//					//業務エラーログ出力
//					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
//					return false;
//				}
//			}
//		}
//		return returnRslt;
//	}
	/* ++++++++++ v7.00.00 削除終了 ++++++++++ */
	
	/**
	 * 氏名／住所単項目チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param len 桁数
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws JBSbatBusinessException 
	 * @throws Exception メソッド内で発生した例外全般。
	 */	
	private boolean isNameAddress(String value, int len, String name) throws Exception
	{
		
		boolean rslt = true;
		
		
		// NULLでなく、空文字でない場合
		if (value != null && !"".equals(value))
		{
			// 半角→全角
			String strFull = JKKStringConverter.convertFull(value);
			
			super.logPrint.printDebugLog("変換後文字列---->" + strFull);
			
			// 属性チェック
			rslt = JCCBatCommon.isNameAddress1(strFull);
			
			if (!rslt)
			{
				//業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
				return false;
			}
			
			// 桁数チェック
			if (len > 0)
			{
				if (!JCCBatCommon.isKetasuu2(strFull, "0", String.valueOf(len)))
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
					return false;
				}
			}
		}
		return rslt;
	}
	
	/**
	 * 機種依存_氏名／住所単項目チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param len 桁数
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws JBSbatBusinessException 
	 * @throws Exception メソッド内で発生した例外全般。
	 */	
//	private boolean isKisyuIzonNmAd(String value, int len, String name) throws Exception
//	{
//		
//		boolean rslt = true;
//		
//		// NULLでなく、空文字でない場合
//		if (value != null && !"".equals(value))
//		{
//		
//			// 属性チェック
//			rslt = JCCBatCommon.isKisyuIzonNmAd(value);
//			
//			if (!rslt)
//			{
//				//業務エラーログ出力
//				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
//				return false;
//			}
//			
//			// 桁数チェック
//			if (len > 0)
//			{
//				if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
//				{
//					//業務エラーログ出力
//					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
//					return false;
//				}
//			}
//		}
//		return rslt;
//	}
	
	/**
	 * Ｅ−ｍａｉｌ１の書式チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param len 桁数
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */	
	private boolean isEMail1(String value, int len, String name) throws Exception
	{
		
		boolean rslt = true;
		
		// NULLでなく、空文字でない場合
		if (value != null && !"".equals(value))
		{
			// 属性チェック
			rslt = JCCBatCommon.isEMail1(value);
			
			if (!rslt)
			{
				//業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
				return false;
			}
			
			// 桁数チェック
			if (len > 0)
			{
				if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
					return false;
				}
			}
		}
		return rslt;
	}
	
	/**
	 * 更新データの取得とDB参照エラーチェックを行い、正常データをファイル出力します。
	 * <p>
	 * @param data_list 入力チェック済ファイルの値。
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void kkifm141OutPut(ArrayList<String> data_list) throws Exception
	{
		super.logPrint.printDebugLog("kkifm141OutPut_START");
		// 更新情報保持
		String data_work = "";
		StringBuilder adsl_koji_inf = new StringBuilder();
		
		for (int i = 0; i < data_list.size(); i++)
		{
			// 行データを取得
			data_work = data_list.get(i);
			
			// データを分解
			String[] data = data_work.split(TAB, -1);
			
			// DB参照し該当データが存在するかチェック
			if(chkDbGaito(data))
			{
				String key = data[1] + data[2] +data[3];
				if(!adsl_koji_out_map.containsKey(key))
				{
					// 更新用データを作成
					setAdslKojiInf(data, adsl_koji_inf);
					adsl_koji_out_map.put(key, key);
				}


			}
		}
		// ファイル出力
		executeOutputFile(adsl_koji_inf.toString(), filePath + ADSL_MSKM_RSLT_MID_FILE_ID  + ".csv");
		
		super.logPrint.printDebugLog("kkifm141OutPut_END");
	}
	
	/**
	 * DB参照し該当データが存在するか確認します。<br>
	 * <p>
	 * @param data １行分のレコード
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exception メソッド内で発生した例外全般。
	 */	
	private boolean chkDbGaito(String[] data) throws Exception
	{
		super.logPrint.printDebugLog("    chkDbGaito_START");
		// サービス契約番号、回線提供コードを取得（ADSL工事）
		JBSbatCommonDBInterface adslKojiMap = new JBSbatCommonDBInterface(); 
		// SQL定義キー(KK_SELECT_005)を実行する
		String [] selectParam = {data[1]};
		super.logPrint.printDebugLog("    selectParam(ISP受付番号)：" +  selectParam[0]);
		executeKK_T_ADSL_KOJI_KK_SELECT_005(selectParam);
		// 検索結果を取得する
		adslKojiMap = db_KK_T_ADSL_KOJI.selectNext();
		if(adslKojiMap == null)
		{
			String table = "ＡＤＳＬ工事";
			String value = "ＩＳＰ受付番号：[" + data[1] + "]のデータ";;
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE, new String[]{table, value});
			return false;
		}
		else
		{
			// フィールド変数の初期化
			svcKeiNo = "";
			kaisenTkCompCd = "";
			// 検索結果を設定する。
			svcKeiNo = JBSbatStringUtil.Rtrim(adslKojiMap.getString("SVC_KEI_NO"));
			kaisenTkCompCd = JBSbatStringUtil.Rtrim(adslKojiMap.getString("KAISEN_TK_COMP_CD"));
		}
		
		// 「姓」または「姓ふりがな」に値がセットされていない場合
		if(KARAMOJI.equals(data[13]) || KARAMOJI.equals(data[15]))
		{
			JBSbatCommonDBInterface svcKeiMap = new JBSbatCommonDBInterface(); 
			
			// SQL定義キー(KK_SELECT_096)を実行する
			String [] select096Param = {opeDate, svcKeiNo, opeDate};
			super.logPrint.printDebugLog("    select096Param(お客様.予約適用年月日)：" +  select096Param[0]);
			super.logPrint.printDebugLog("    select096Param(サービス契約番号)：" +  select096Param[1]);
			super.logPrint.printDebugLog("    select096Param(サービス契約.予約適用年月日)：" +  select096Param[2]);
			executeKK_T_SVC_KEI_KK_SELECT_096(select096Param);
			
			// 検索結果を取得する
			svcKeiMap = db_KK_T_SVC_KEI.selectNext();
			if(svcKeiMap == null)
			{
				String table = "サービス契約";
				String value = "ＩＳＰ受付番号：[" + data[1] + "]に紐付くデータ";
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE, new String[]{table, value});
				return false;
			}
			else
			{
				// フィールド変数の初期化
				custNm = "";
				custKana = "";
				// 検索結果を設定する。
				if(KARAMOJI.equals(data[13]))
				{
					custKana = JBSbatStringUtil.Rtrim(svcKeiMap.getString("CUST_KANA"));
				}
				else
				{
					custKana = data[13];
				}
				if(KARAMOJI.equals(data[15]))
				{
					// 全角項目に対して文字化け対応します。
					custNm = JBSbatInterface.charConverter(JBSbatStringUtil.Rtrim(svcKeiMap.getString("CUST_NM")),ENCODE);
				}
				else
				{
					custNm = data[15];
				}
			}
		}
		else
		{
			custKana = data[13];
			custNm = data[15];
		}
		
		// 「契約電話番号」に値がセットされていない場合
		if(KARAMOJI.equals(data[40]))
		{
			JBSbatCommonDBInterface svcKeiEoadslMap = new JBSbatCommonDBInterface(); 
			
			// SQL定義キー(KK_SELECT_001)を実行する
			String [] select001Param = {svcKeiNo, opeDate};
			super.logPrint.printDebugLog("    select001_1Param(サービス契約番号)：" +  select001Param[0]);
			super.logPrint.printDebugLog("    select001_1Param(予約適用年月日)：" +  select001Param[1]);
			executeKK_T_SVC_KEI_EOADSL_KK_SELECT_001(select001Param);
			
			// 検索結果を取得する
			svcKeiEoadslMap = db_KK_T_SVC_KEI_EOADSL.selectNext();
			if(svcKeiEoadslMap == null)
			{
				String table = "サービス契約eoADSL";
				String value = "ＩＳＰ受付番号：[" + data[1] + "]に紐付くデータ";
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE, new String[]{table, value});
				return false;
			}
			else
			{
				// フィールド変数の初期化
				adslUseTelno = "";
				// 検索結果を設定する。
				if(KARAMOJI.equals(data[40]))
				{
					adslUseTelno = JBSbatStringUtil.Rtrim(svcKeiEoadslMap.getString("ADSL_USE_TELNO"));
				}
				else
				{
					adslUseTelno = data[40];
				}
			}
		}
		else
		{
			adslUseTelno = data[40];
		}
		
		// 「ADSL認証ID」を設定
		adslNinshoId = data[56];
		
		super.logPrint.printDebugLog("    chkDbGaito_END");
		return true;
	}
	
	/**
	 * ADSL工事情報更新データを設定します。<br>
	 * <p>
	 * @param data 工事完了情報データ
	 * @param adsl_koji_inf 文字列データ保持
	 * @throws Exception 
	 */	
	private void setAdslKojiInf(String[] data, StringBuilder adsl_koji_inf) throws Exception
	{
		super.logPrint.printDebugLog("setAdslKojiInf_START");
	
		// 1.ＡＤＳＬ工事番号（設定なし）
		adsl_koji_inf.append(CONMA);
		// 2.サービス契約番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(svcKeiNo));
		adsl_koji_inf.append(CONMA);
		// 3.回線提供会社コード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(kaisenTkCompCd));
		adsl_koji_inf.append(CONMA);
		// 4.ＩＳＰ受付番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[1]));
		adsl_koji_inf.append(CONMA);
		// 5.申込受付年月日
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[2]));
		adsl_koji_inf.append(CONMA);
		// 6.連携ファイルコード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[3]));
		adsl_koji_inf.append(CONMA);
		// 7.連携年月日時分秒
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(renkeiDtm));
		adsl_koji_inf.append(CONMA);
		// 8.ｅＡｃｃｅｓｓ連携フォーマットバージョン
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[0]));
		adsl_koji_inf.append(CONMA);
		// 9.ＩＳＰコード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[4]));
		adsl_koji_inf.append(CONMA);
		// 10.ＡＤＳＬ顧客番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[8]));
		adsl_koji_inf.append(CONMA);
		// 11.ＡＤＳＬ契約番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[9]));
		adsl_koji_inf.append(CONMA);
		// 12.契約者タイプコード
		if(data[12].equals(CUST_DIV_KOJIN))
		{
			adsl_koji_inf.append(KEISHA_TYPE_CD_KOJIN);
		}
		else if(data[12].equals(CUST_DIV_HOJIN))
		{
			adsl_koji_inf.append(KEISHA_TYPE_CD_HOJIN);
		}
		else
		{
			
		}
		adsl_koji_inf.append(CONMA);
		// 13.ＡＤＳＬアプリケーションコード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[10]));
		adsl_koji_inf.append(CONMA);
		// 14.ｅＡｃｃｅｓｓキャンペーンコード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[34]));
		adsl_koji_inf.append(CONMA);
		// 15.ｅＡｃｃｅｓｓＷＥＢ受付番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[67]));
		adsl_koji_inf.append(CONMA);
		
		// お客様名が「姓　名」の場合(姓)
		int index_name = custNm.indexOf("　");
		if(index_name != -1)
		{
			String mk_name_sei = custNm.substring(0, index_name);
			// 16.申込者名（姓）
			adsl_koji_inf.append(mk_name_sei);
			adsl_koji_inf.append(CONMA);
		}
		else
		{
			// 16.申込者名（姓）
			adsl_koji_inf.append(JBSbatStringUtil.Rtrim(custNm));
			adsl_koji_inf.append(CONMA);
		}
		
		// お客様名カナが「姓　名」の場合(姓)
		int index_kana = custKana.indexOf("　");
		if(index_kana != -1)
		{
			String mk_kananame_sei = custKana.substring(0, index_kana);
			// 17.申込者姓カナ名
			adsl_koji_inf.append(mk_kananame_sei);
			adsl_koji_inf.append(CONMA);
		}
		else
		{
			// 17.申込者姓カナ名
			adsl_koji_inf.append(JBSbatStringUtil.Rtrim(custKana));
			adsl_koji_inf.append(CONMA);
		}
		
		// お客様名が「姓　名」の場合(名)
		if(index_name != -1)
		{
			String mk_name_mei = custNm.substring(index_name + 1);
			// 18.申込者名（名）
			adsl_koji_inf.append(mk_name_mei);
			adsl_koji_inf.append(CONMA);
		}
		else
		{
			// 18.申込者名（名）
			adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[16]));
			adsl_koji_inf.append(CONMA);
		}
		
		// お客様名カナが「姓　名」の場合(名)
		if(index_kana != -1)
		{
			String mk_kananame_mei = custKana.substring(index_kana + 1);
			// 17.申込者姓カナ名
			adsl_koji_inf.append(mk_kananame_mei);
			adsl_koji_inf.append(CONMA);
		}
		else
		{
			// 19.申込者名カナ名
			adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[14]));
			adsl_koji_inf.append(CONMA);
		}
		// 20.お客様性別コード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[17]));
		adsl_koji_inf.append(CONMA);
		// 21.お客様生年月日
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[18]));
		adsl_koji_inf.append(CONMA);
		// 22.申込者住所郵便番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[21]));
		adsl_koji_inf.append(CONMA);
		// 23.申込者住所都道府県名
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[22]));
		adsl_koji_inf.append(CONMA);
		// 24.申込者住所市区町村番地名
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[23]));
		adsl_koji_inf.append(CONMA);
		// 25.申込者住所補記
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[24]));
		adsl_koji_inf.append(CONMA);
		// 26.連絡先電話番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[25]));
		adsl_koji_inf.append(CONMA);
		// 27.昼間連絡先電話番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[26]));
		adsl_koji_inf.append(CONMA);
		// 28.連絡先ＦＡＸ番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[27]));
		adsl_koji_inf.append(CONMA);
		// 29.連絡先メールアドレス
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[28]));
		adsl_koji_inf.append(CONMA);
		// 30.法人連絡先担当者所属部署名
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[19]));
		adsl_koji_inf.append(CONMA);
		// 31.法人連絡先担当者名
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[20]));
		adsl_koji_inf.append(CONMA);
		// 32.ＡＤＳＬ料金プランコード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[30]));
		adsl_koji_inf.append(CONMA);
		// 33.ＡＤＳＬタイプコード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[31]));
		adsl_koji_inf.append(CONMA);
		// 34.ＡＤＳＬモデム提供コード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[32]));
		adsl_koji_inf.append(CONMA);
		// 35.ＡＤＳＬモデム種類コード
		adsl_koji_inf.append(MODEM_KIND_CD_ROUTER);
		adsl_koji_inf.append(CONMA);
		// 36.ＡＤＳＬ宅内工事コード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[33]));
		adsl_koji_inf.append(CONMA);
		// 37.開通希望年月日
		if("F".equals(JBSbatStringUtil.Rtrim(data[3])) || "G".equals(JBSbatStringUtil.Rtrim(data[3])))
		{
			adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[35]));
		}
		adsl_koji_inf.append(CONMA);
		// 38.解約希望年月日
		if("DF".equals(JBSbatStringUtil.Rtrim(data[3])))
		{
			adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[35]));
		}
		adsl_koji_inf.append(CONMA);
		// 39.変更希望年月日
		if("CF".equals(JBSbatStringUtil.Rtrim(data[3])))
		{
			adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[35]));
		}
		adsl_koji_inf.append(CONMA);
		// 40.設置先郵便番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[36]));
		adsl_koji_inf.append(CONMA);
		// 41.設置先都道府県名
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[37]));
		adsl_koji_inf.append(CONMA);
		// 42.設置先市区町村番地名
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[38]));
		adsl_koji_inf.append(CONMA);
		// 43.設置先住所補記
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[39]));
		adsl_koji_inf.append(CONMA);
		// 44.ＡＤＳＬ使用電話番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(adslUseTelno));
		adsl_koji_inf.append(CONMA);
		// 45.エリア判定局番
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[41]));
		adsl_koji_inf.append(CONMA);
		// 46.設置先既設電話番号
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[42]));
		adsl_koji_inf.append(CONMA);
		// 47.ＡＤＳＬ回線種別コード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[44]));
		adsl_koji_inf.append(CONMA);
		// 48.ＡＤＳＬ回線名義人名
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[45]));
		adsl_koji_inf.append(CONMA);
		// 49.アナログ切替承認区分
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[46]));
		adsl_koji_inf.append(CONMA);
		// 50.構内配線コード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[49]));
		adsl_koji_inf.append(CONMA);
		// 51.電話番号変更承認コード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[47]));
		adsl_koji_inf.append(CONMA);
		// 52.ＮＴＴ適合結果登録年月日
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[50]));
		adsl_koji_inf.append(CONMA);
		// 53.ＮＴＴ適合結果コード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[51]));
		adsl_koji_inf.append(CONMA);
		// 54.ＮＴＴ不適理由コード
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[52]));
		adsl_koji_inf.append(CONMA);
		// 55.サービス開始年月日
		if(!"DF".equals(JBSbatStringUtil.Rtrim(data[3])))
		{
			adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[53]));
		}
		adsl_koji_inf.append(CONMA);
		// 56.サービス終了年月日
		if("DF".equals(JBSbatStringUtil.Rtrim(data[3])))
		{
			adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[53]));
		}
		adsl_koji_inf.append(CONMA);
		// 57.ＮＴＴ局内工事年月日
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[54]));
		adsl_koji_inf.append(CONMA);
		// 58.ＮＴＴ局内工事予定年月日
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[54]));
		adsl_koji_inf.append(CONMA);
		// 59.ＮＴＴ収容局名
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[43]));
		adsl_koji_inf.append(CONMA);
		// 60.ＬＡＮ側アドレス（設定なし）
		adsl_koji_inf.append(CONMA);
		// 61.ＷＡＮ側アドレス（設定なし）
		adsl_koji_inf.append(CONMA);
		// 62.ＡＤＳＬ認証ＩＤ
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(adslNinshoId));
		adsl_koji_inf.append(CONMA);
		// 63.ｅＡｃｃｅｓｓ連絡備考
		adsl_koji_inf.append(JBSbatStringUtil.Rtrim(data[64]));
		
		// 改行コード
		adsl_koji_inf.append(KAIGYOU_CODE);
		
		out_count++;
		
		super.logPrint.printDebugLog("setAdslKojiInf_END");
	}
	
	/**
	 * 中間ファイルを出力します。<br>
	 * <p>
	 * @param file_data 出力情報
	 * @param file_path ファイル名(フルパス)
	 * @throws Exception 
	 */	
	private void executeOutputFile(String file_data, String file_path) throws Exception
	{
		BufferedWriter wr = null;
		try
		{
			// パラメータで渡された中間ファイルを出力する。
			wr = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file_path), ENCODE));
			
			// ファイル書き込み
			wr.write(file_data);
		}
		catch(IOException e)
		{
			throw new JBSbatBusinessException("EKKB0250CE", new String[]{"ADSL申込結果中間ファイル", "MASSEAGE"});
		}
		finally
		{
			if (wr != null)
			{
				wr.close();
			}
		}
	}
	
	/**
	 * 半角英数字２単項目チェックを実施します。<br>
	 * <p>
	 * @param value 値
	 * @param min_len 最小桁数
	 * @param max_len 最大桁数
	 * @param flg 必須チェックフラグ（true:チェック実施、false:チェック未実施）
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws Exception メソッド内で発生した例外全般。
	 */	
	private boolean isHannkakuESuuji2(String value, int min_len, int max_len, boolean flg, String name) throws Exception
	{
		boolean rslt = true;

		// 必須チェック
		if (flg)
		{
			if (!isHissu(value, name))
			{
				return false;
			}
			else
			{
				// 必須チェックでない場合でNULL以外および空文字以外
				// 属性チェック
				rslt = JCCBatCommon.isHannkakuESuuji2(value);
				
				if (!rslt)
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェック
				if(!isKetasuu(value, min_len, max_len, name))
				{
					return false;
				}
			}
		}
		else
		{
			// 必須チェックでない場合でNULL以外および空文字以外
			if (value != null && !"".equals(value))
			{
				// 属性チェック
				rslt = JCCBatCommon.isHannkakuESuuji2(value);
				
				if (!rslt)
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェック
				if(!isKetasuu(value, min_len, max_len, name))
				{
					return false;
				}
			}
		}
		
		return rslt;
	}
	
	/**
	 * 氏名／住所単項目チェックを実施します。（桁数エラー時ワーニング）<br>
	 * <p>
	 * @param value 値
	 * @param len 桁数
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws JBSbatBusinessException 
	 * @throws Exception メソッド内で発生した例外全般。
	 */	
	private boolean isNameAddress1(String value, int len, String name) throws Exception
	{
		
		boolean rslt = true;
		
		
		// NULLでなく、空文字でない場合
		if (value != null && !"".equals(value))
		{
			// 半角→全角
			String strFull = JKKStringConverter.convertFull(value);
			
			super.logPrint.printDebugLog("変換後文字列---->" + strFull);
			
			// 属性チェック
			rslt = JCCBatCommon.isNameAddress1(strFull);
			
			if (!rslt)
			{
				//業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
				return false;
			}
			
			// 桁数チェック
			if (len > 0)
			{
				if (!JCCBatCommon.isKetasuu2(strFull, "0", String.valueOf(len)))
				{
					//業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0980CW, new String[]{name});
					warningFlg = true;
					return false;
				}
			}
		}
		return rslt;
	}
}