/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSvkeiShosaCncMapper
*	ソースファイル名：JKKSvkeiShosaCncMapper.java
*	作成者			：富士通
*	日付			：2012年01月27日
*＜機能概要＞
*	サービス契約照査締結のBP-サービスIFマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/01/27	富士通		新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKSvkeiShosaConstCC;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.ejb.cbs.cbsmsg.EKK0081B009CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B009CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0091A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0091C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0111A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0111C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0141A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0141C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0171A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0171C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0221A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0221C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341C050CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0371A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0371C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0431A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0431C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2541C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811C050CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111D010CBSMsg;


/**
 * サービス契約照査締結BP-SCマッピング<br/>
 * 所定のサービス契約を締結済まで進める処理をするS-IFのマッピングをまとめたクラスです<br/>
 * <br/>
 * @author 富士通
 * @since 2012-01-27
 * @version 2012-01-27
 * @see JKKSvkeiShosaCnc サービス契約照査締結部品クラス
 */
public class JKKSvkeiShosaCncMapper
{

	/** テンプレートID：同一場所サービス契約情報照会 */
	private static final String TID_EKK0081B009 = "EKK0081B009";

	/** テンプレートID：サービス契約＜eo光ネット＞締結 */
	private static final String TID_EKK0091C020 = "EKK0091C020";

	/** テンプレートID：サービス契約＜eo光電話＞締結 */
	private static final String TID_EKK0111C020 = "EKK0111C020";

	/** テンプレートID：サービス契約＜eoADSL＞締結 */
	private static final String TID_EKK0141C020 = "EKK0141C020";

	/** テンプレートID：サービス契約内訳＜eo光ネット＞照査締結 */
	private static final String TID_EKK0171C030 = "EKK0171C030";

	/** テンプレートID：サービス契約内訳＜eo光電話＞照査締結 */
	private static final String TID_EKK0191C030 = "EKK0191C030";

	/** テンプレートID：サービス契約内訳＜eoADSL＞照査締結 */
	private static final String TID_EKK0221C030 = "EKK0221C030";

	/** テンプレートID：機器提供サービス契約照査締結 */
	private static final String TID_EKK0341C050 = "EKK0341C050";

	/** テンプレートID：オプションサービス契約＜ISP＞照査締結 */
	private static final String TID_EKK0361C030 = "EKK0361C030";

	/** テンプレートID：オプションサービス契約＜電話＞照査締結 */
	private static final String TID_EKK0371C030 = "EKK0371C030";

	/** テンプレートID：サブオプションサービス契約＜ISP＞照査締結 */
	private static final String TID_EKK0411C040 = "EKK0411C040";

	/** テンプレートID：サブオプションサービス契約＜電話＞照査締結 */
	private static final String TID_EKK0431C030 = "EKK0431C030";

	/** テンプレートID：機器オプションサービス契約照査締結 */
	private static final String TID_EKK2811C050 = "EKK2811C050";
	
	




	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static HashMap<String, Object> editInMsgEKK0081B009(IRequestParameterReadOnly param, String mapNm)
	throws Throwable {

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0081B009CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0081B009CBSMsg.TEMPLATEID, TID_EKK0081B009);

		// 機能コード（デフォルト：１）
		template.set(EKK0081B009CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);


		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap != null) {
			// 機能コード
			template.set(EKK0081B009CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
		}

		// 同一場所サービス契約情報照会ＳＣ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (inMap == null || inMap.get("key_svc_kei_no") == null || "".equals(inMap.get("key_svc_kei_no"))) {
			template.setNull(EKK0081B009CBSMsg.KEY_SVC_KEI_NO);
		} else {
			template.set(EKK0081B009CBSMsg.KEY_SVC_KEI_NO, (String) inMap.get("key_svc_kei_no"));
		}


		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0081B009(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0081B009CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;

		
		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// 同一場所サービス契約情報照会ＳＣ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0081B009CBSMsg.KEY_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("key_svc_kei_no_err")) {
				inMap.put("key_svc_kei_no_err", template.getString(EKK0081B009CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editResultRPEKK0081B009(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		templateArray = parentTemplate.getCAANMsgList(EKK0081B009CBSMsg.EKK0081B009CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0081B009CBSMsg1List");
		  
		if (dataList == null) {
			dataList = new ArrayList();
		}

		if (templateArray != null) {
			for (int i = 0; i < templateArray.length; i++) {
				CAANMsg childTemplate = templateArray[i];
				if ( i >= dataList.size()) {
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				
				// 同一場所サービス契約情報照会ＳＣ.同一場所サービス契約情報照会明細.サービス契約番号 ← 同一場所サービス契約情報照会明細.サービス契約番号
				if (childTemplate.isNull(EKK0081B009CBSMsg1List.SVC_KEI_NO)) {
					childMap.put("svc_kei_no", new String());
				} else {
					childMap.put("svc_kei_no", childTemplate.getString(EKK0081B009CBSMsg1List.SVC_KEI_NO));
				}
				
				// 同一場所サービス契約情報照会ＳＣ.同一場所サービス契約情報照会明細.世代登録年月日時分秒 ← 同一場所サービス契約情報照会明細.世代登録年月日時分秒
				if (childTemplate.isNull(EKK0081B009CBSMsg1List.GENE_ADD_DTM)) {
					childMap.put("gene_add_dtm", new String());
				} else {
					childMap.put("gene_add_dtm", childTemplate.getString(EKK0081B009CBSMsg1List.GENE_ADD_DTM));
				}
				
				// 同一場所サービス契約情報照会ＳＣ.同一場所サービス契約情報照会明細.サービス契約ステータス ← 同一場所サービス契約情報照会明細.サービス契約ステータス
				if (childTemplate.isNull(EKK0081B009CBSMsg1List.SVC_KEI_STAT)) {
					childMap.put("svc_kei_stat", new String());
				} else {
					childMap.put("svc_kei_stat", childTemplate.getString(EKK0081B009CBSMsg1List.SVC_KEI_STAT));
				}
				
				// 同一場所サービス契約情報照会ＳＣ.同一場所サービス契約情報照会明細.ＳＹＳＩＤ ← 同一場所サービス契約情報照会明細.ＳＹＳＩＤ
				if (childTemplate.isNull(EKK0081B009CBSMsg1List.SYSID)) {
					childMap.put("sysid", new String());
				} else {
					childMap.put("sysid", childTemplate.getString(EKK0081B009CBSMsg1List.SYSID));
				}
				
				// 同一場所サービス契約情報照会ＳＣ.同一場所サービス契約情報照会明細.サービスコード ← 同一場所サービス契約情報照会明細.サービスコード
				if (childTemplate.isNull(EKK0081B009CBSMsg1List.SVC_CD)) {
					childMap.put("svc_cd", new String());
				} else {
					childMap.put("svc_cd", childTemplate.getString(EKK0081B009CBSMsg1List.SVC_CD));
				}
				
				// 同一場所サービス契約情報照会ＳＣ.同一場所サービス契約情報照会明細.料金グループコード
				if (childTemplate.isNull(EKK0081B009CBSMsg1List.PRC_GRP_CD)) {
					childMap.put("prc_grp_cd", new String());
				} else {
					childMap.put("prc_grp_cd", childTemplate.getString(EKK0081B009CBSMsg1List.PRC_GRP_CD));
				}
			}
		}
		dataMap.put("EKK0081B009CBSMsg1List", dataList);

        
        // エラー情報の設定
        param = editErrorInfoEKK0081B009(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return param;
	}



	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.01.27
	 */
	public static HashMap<String, Object> editInMsgEKK0091C020(IRequestParameterReadOnly param, CAANMsg ekk0091a010Map, String idoDiv)
	throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0091C020CBSMsg.class.getName());




		// テンプレートID
		template.set(EKK0091C020CBSMsg.TEMPLATEID, TID_EKK0091C020);

		// 機能コード（デフォルト：１）
		template.set(EKK0091C020CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);


		String key_svc_kei_no = ekk0091a010Map.getString(EKK0091A010CBSMsg1List.SVC_KEI_NO);

		// サービス契約＜eo光ネット＞締結SC.サービス契約番号 → サービス契約番号
		template.set(EKK0091C020CBSMsg.SVC_KEI_NO, key_svc_kei_no);

		// サービス契約＜eo光ネット＞締結SC.異動区分 → 異動区分
		template.set(EKK0091C020CBSMsg.IDO_DIV, idoDiv);

//		// サービス契約＜eo光ネット＞締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0091C020CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0091C020CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0091C020(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0091C020CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// サービス契約＜eo光ネット＞締結SC.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0091C020CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0091C020CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// サービス契約＜eo光ネット＞締結SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0091C020CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0091C020CBSMsg.IDO_DIV_ERR));
			}
		}
		// サービス契約＜eo光ネット＞締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
		if (!template.isNull(EKK0091C020CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0091C020CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK0091C020(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;


		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		// サービス契約＜eo光ネット＞締結SC.世代登録年月日時分秒（サービス契約） ← 世代登録年月日時分秒（サービス契約）
		if (parentTemplate.isNull(EKK0091C020CBSMsg.KK0081_GENE_ADD_DTM)) {
			dataMap.put("kk0081_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0081_gene_add_dtm", parentTemplate.getString(EKK0091C020CBSMsg.KK0081_GENE_ADD_DTM));
		}

		// サービス契約＜eo光ネット＞締結SC.サービス契約ステータス ← サービス契約ステータス
		if (parentTemplate.isNull(EKK0091C020CBSMsg.SVC_KEI_STAT)) {
			dataMap.put("svc_kei_stat", new String());
		} else {
			dataMap.put("svc_kei_stat", parentTemplate.getString(EKK0091C020CBSMsg.SVC_KEI_STAT));
		}

		// サービス契約＜eo光ネット＞締結SC.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0091C020CBSMsg.KEI_CNC_YMD)) {
			dataMap.put("kei_cnc_ymd", new String());
		} else {
			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0091C020CBSMsg.KEI_CNC_YMD));
		}

		// サービス契約＜eo光ネット＞締結SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0091C020CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0091C020CBSMsg.RSV_APLY_YMD));
		}

		// サービス契約＜eo光ネット＞締結SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0091C020CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0091C020CBSMsg.RSV_APLY_CD));
		}

		// サービス契約＜eo光ネット＞締結SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0091C020CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0091C020CBSMsg.UPD_DTM));
		}

		// サービス契約＜eo光ネット＞締結SC.世代登録年月日時分秒（サービス契約＜eo光ネット＞） ← 世代登録年月日時分秒（サービス契約＜eo光ネット＞）
		if (parentTemplate.isNull(EKK0091C020CBSMsg.KK0091_GENE_ADD_DTM)) {
			dataMap.put("kk0091_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0091_gene_add_dtm", parentTemplate.getString(EKK0091C020CBSMsg.KK0091_GENE_ADD_DTM));
		}

        
        // エラー情報の設定
        param = editErrorInfoEKK0091C020(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}


	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param ekk0111a010Map 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.01.27
	 */
	public static HashMap<String, Object> editInMsgEKK0111C020(IRequestParameterReadOnly param, CAANMsg ekk0111a010Map, String idoDiv)
	throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0111C020CBSMsg.class.getName());




		// テンプレートID
		template.set(EKK0111C020CBSMsg.TEMPLATEID, TID_EKK0111C020);

		// 機能コード（デフォルト：１）
		template.set(EKK0111C020CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);



		String svc_kei_no = ekk0111a010Map.getString(EKK0111A010CBSMsg1List.SVC_KEI_NO);

		// サービス契約＜eo光電話＞締結SC.サービス契約番号 → サービス契約番号
		template.set(EKK0111C020CBSMsg.SVC_KEI_NO, svc_kei_no);

		// サービス契約＜eo光電話＞締結SC.異動区分 → 異動区分
		template.set(EKK0111C020CBSMsg.IDO_DIV, idoDiv);

//		// サービス契約＜eo光電話＞締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0111C020CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0111C020CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0111C020(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0111C020CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// サービス契約＜eo光電話＞締結SC.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0111C020CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0111C020CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// サービス契約＜eo光電話＞締結SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0111C020CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0111C020CBSMsg.IDO_DIV_ERR));
			}
		}
		// サービス契約＜eo光電話＞締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
		if (!template.isNull(EKK0111C020CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0111C020CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK0111C020(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];


		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		

		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		// サービス契約＜eo光電話＞締結SC.世代登録年月日時分秒（サービス契約） ← 世代登録年月日時分秒（サービス契約）
		if (parentTemplate.isNull(EKK0111C020CBSMsg.KK0081_GENE_ADD_DTM)) {
			dataMap.put("kk0081_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0081_gene_add_dtm", parentTemplate.getString(EKK0111C020CBSMsg.KK0081_GENE_ADD_DTM));
		}

		// サービス契約＜eo光電話＞締結SC.サービス契約ステータス ← サービス契約ステータス
		if (parentTemplate.isNull(EKK0111C020CBSMsg.SVC_KEI_STAT)) {
			dataMap.put("svc_kei_stat", new String());
		} else {
			dataMap.put("svc_kei_stat", parentTemplate.getString(EKK0111C020CBSMsg.SVC_KEI_STAT));
		}

		// サービス契約＜eo光電話＞締結SC.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0111C020CBSMsg.KEI_CNC_YMD)) {
			dataMap.put("kei_cnc_ymd", new String());
		} else {
			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0111C020CBSMsg.KEI_CNC_YMD));
		}

		// サービス契約＜eo光電話＞締結SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0111C020CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0111C020CBSMsg.RSV_APLY_YMD));
		}

		// サービス契約＜eo光電話＞締結SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0111C020CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0111C020CBSMsg.RSV_APLY_CD));
		}

		// サービス契約＜eo光電話＞締結SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0111C020CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0111C020CBSMsg.UPD_DTM));
		}

		// サービス契約＜eo光電話＞締結SC.世代登録年月日時分秒（サービス契約＜eo光電話＞） ← 世代登録年月日時分秒（サービス契約＜eo光電話＞）
		if (parentTemplate.isNull(EKK0111C020CBSMsg.KK0111_GENE_ADD_DTM)) {
			dataMap.put("kk0111_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0111_gene_add_dtm", parentTemplate.getString(EKK0111C020CBSMsg.KK0111_GENE_ADD_DTM));
		}

        
        // エラー情報の設定
        param = editErrorInfoEKK0111C020(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}


	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param ekk0141a010Map 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.01.27
	 */
	public static HashMap<String, Object> editInMsgEKK0141C020(IRequestParameterReadOnly param, CAANMsg ekk0141a010Map, String idoDiv)
	throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0141C020CBSMsg.class.getName());




		// テンプレートID
		template.set(EKK0141C020CBSMsg.TEMPLATEID, TID_EKK0141C020);

		// 機能コード（デフォルト：１）
		template.set(EKK0141C020CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);




		String svc_kei_no = ekk0141a010Map.getString(EKK0141A010CBSMsg1List.SVC_KEI_NO);

		// サービス契約＜eoADSL＞締結SC.サービス契約番号 → サービス契約番号
		template.set(EKK0141C020CBSMsg.SVC_KEI_NO, svc_kei_no);

		// サービス契約＜eoADSL＞締結SC.異動区分 → 異動区分
		template.set(EKK0141C020CBSMsg.IDO_DIV, idoDiv);

//		// サービス契約＜eoADSL＞締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0141C020CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0141C020CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0141C020(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0141C020CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// サービス契約＜eoADSL＞締結SC.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0141C020CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK0141C020CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// サービス契約＜eoADSL＞締結SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0141C020CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0141C020CBSMsg.IDO_DIV_ERR));
			}
		}
		// サービス契約＜eoADSL＞締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
		if (!template.isNull(EKK0141C020CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0141C020CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK0141C020(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		// サービス契約＜eoADSL＞締結SC.世代登録年月日時分秒（サービス契約） ← 世代登録年月日時分秒（サービス契約）
		if (parentTemplate.isNull(EKK0141C020CBSMsg.KK0081_GENE_ADD_DTM)) {
			dataMap.put("kk0081_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0081_gene_add_dtm", parentTemplate.getString(EKK0141C020CBSMsg.KK0081_GENE_ADD_DTM));
		}

		// サービス契約＜eoADSL＞締結SC.サービス契約ステータス ← サービス契約ステータス
		if (parentTemplate.isNull(EKK0141C020CBSMsg.SVC_KEI_STAT)) {
			dataMap.put("svc_kei_stat", new String());
		} else {
			dataMap.put("svc_kei_stat", parentTemplate.getString(EKK0141C020CBSMsg.SVC_KEI_STAT));
		}

		// サービス契約＜eoADSL＞締結SC.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0141C020CBSMsg.KEI_CNC_YMD)) {
			dataMap.put("kei_cnc_ymd", new String());
		} else {
			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0141C020CBSMsg.KEI_CNC_YMD));
		}

		// サービス契約＜eoADSL＞締結SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0141C020CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0141C020CBSMsg.RSV_APLY_YMD));
		}

		// サービス契約＜eoADSL＞締結SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0141C020CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0141C020CBSMsg.RSV_APLY_CD));
		}

		// サービス契約＜eoADSL＞締結SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0141C020CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0141C020CBSMsg.UPD_DTM));
		}

		// サービス契約＜eoADSL＞締結SC.世代登録年月日時分秒（サービス契約＜eoADSL＞） ← 世代登録年月日時分秒（サービス契約＜eoADSL＞）
		if (parentTemplate.isNull(EKK0141C020CBSMsg.KK0141_GENE_ADD_DTM)) {
			dataMap.put("kk0141_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0141_gene_add_dtm", parentTemplate.getString(EKK0141C020CBSMsg.KK0141_GENE_ADD_DTM));
		}

        
        // エラー情報の設定
        param = editErrorInfoEKK0141C020(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}


	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param ekk0171a010Map 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.01.27
	 */
	public static HashMap<String, Object> editInMsgEKK0171C030(IRequestParameterReadOnly param, CAANMsg ekk0171a010Map, String idoDiv)
	throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0171C030CBSMsg.class.getName());



		// テンプレートID
		template.set(EKK0171C030CBSMsg.TEMPLATEID, TID_EKK0171C030);

		// 機能コード（デフォルト：１）
		template.set(EKK0171C030CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);



		String svc_key_ucwk_no = ekk0171a010Map.getString(EKK0171A010CBSMsg1List.SVC_KEI_UCWK_NO);

		// サービス契約内訳＜eo光ネット＞照査締結SC.サービス契約内訳番号 → サービス契約内訳番号
		template.set(EKK0171C030CBSMsg.SVC_KEI_UCWK_NO, svc_key_ucwk_no);

		// サービス契約内訳＜eo光ネット＞照査締結SC.異動区分 → 異動区分
		template.set(EKK0171C030CBSMsg.IDO_DIV, idoDiv);

//		// サービス契約内訳＜eo光ネット＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0171C030CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0171C030CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0171C030(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0171C030CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK0171C030CBSMsg.SVC_KEI_UCWK_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_ucwk_no_err")) {
				inMap.put("svc_kei_ucwk_no_err", template.getString(EKK0171C030CBSMsg.SVC_KEI_UCWK_NO_ERR));
			}
		}
		// サービス契約内訳＜eo光ネット＞照査締結SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0171C030CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0171C030CBSMsg.IDO_DIV_ERR));
			}
		}
		// サービス契約内訳＜eo光ネット＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
		if (!template.isNull(EKK0171C030CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0171C030CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK0171C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		// サービス契約内訳＜eo光ネット＞照査締結SC.世代登録年月日時分秒（サービス契約内訳） ← 世代登録年月日時分秒（サービス契約内訳）
		if (parentTemplate.isNull(EKK0171C030CBSMsg.KK0161_GENE_ADD_DTM)) {
			dataMap.put("kk0161_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0161_gene_add_dtm", parentTemplate.getString(EKK0171C030CBSMsg.KK0161_GENE_ADD_DTM));
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.サービス契約内訳ステータス ← サービス契約内訳ステータス
		if (parentTemplate.isNull(EKK0171C030CBSMsg.SVC_KEI_UCWK_STAT)) {
			dataMap.put("svc_kei_ucwk_stat", new String());
		} else {
			dataMap.put("svc_kei_ucwk_stat", parentTemplate.getString(EKK0171C030CBSMsg.SVC_KEI_UCWK_STAT));
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.照査年月日 ← 照査年月日
		if (parentTemplate.isNull(EKK0171C030CBSMsg.SHOSA_YMD)) {
			dataMap.put("shosa_ymd", new String());
		} else {
			dataMap.put("shosa_ymd", parentTemplate.getString(EKK0171C030CBSMsg.SHOSA_YMD));
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.照査取消年月日 ← 照査取消年月日
		if (parentTemplate.isNull(EKK0171C030CBSMsg.SHOSA_CL_YMD)) {
			dataMap.put("shosa_cl_ymd", new String());
		} else {
			dataMap.put("shosa_cl_ymd", parentTemplate.getString(EKK0171C030CBSMsg.SHOSA_CL_YMD));
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0171C030CBSMsg.KEI_CNC_YMD)) {
			dataMap.put("kei_cnc_ymd", new String());
		} else {
			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0171C030CBSMsg.KEI_CNC_YMD));
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0171C030CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0171C030CBSMsg.RSV_APLY_YMD));
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0171C030CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0171C030CBSMsg.RSV_APLY_CD));
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.世代登録年月日時分秒（サービス契約内訳＜eo光ネット＞） ← 世代登録年月日時分秒（サービス契約内訳＜eo光ネット＞）
		if (parentTemplate.isNull(EKK0171C030CBSMsg.KK0171_GENE_ADD_DTM)) {
			dataMap.put("kk0171_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0171_gene_add_dtm", parentTemplate.getString(EKK0171C030CBSMsg.KK0171_GENE_ADD_DTM));
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0171C030CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0171C030CBSMsg.UPD_DTM));
		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.初期ＩＳＰ認証ＩＤパスワード ← 初期ＩＳＰ認証ＩＤパスワード
		if (parentTemplate.isNull(EKK0171C030CBSMsg.SHK_ISP_NINSHO_ID_PWD)) {
			dataMap.put("shk_isp_ninsho_id_pwd", new String());
		} else {
			dataMap.put("shk_isp_ninsho_id_pwd", parentTemplate.getString(EKK0171C030CBSMsg.SHK_ISP_NINSHO_ID_PWD));
		}

// 2012-11-01 IT1-2012-0001819 EDIT_START
//		// サービス契約内訳＜eo光ネット＞照査締結SC.ＩＳＰ認証ＩＤパスワード ← ＩＳＰ認証ＩＤパスワード
//		if (parentTemplate.isNull(EKK0171C030CBSMsg.ISP_NINSHO_ID_PWD)) {
//			dataMap.put("isp_ninsho_id_pwd", new String());
//		} else {
//			dataMap.put("isp_ninsho_id_pwd", parentTemplate.getString(EKK0171C030CBSMsg.ISP_NINSHO_ID_PWD));
//		}
//
//		//作業領域			2012-02-03追加
//		Map<Object, Object> workMap = param.getMappingWorkArea();
//		dataMap = (HashMap) workMap.get(JKKSvkeiShosaCC.AGING_WORK);
//
//		// サービス契約内訳＜eo光ネット＞照査締結SC.ＩＳＰ認証ＩＤ ← ＩＳＰ認証ＩＤ
//		if (parentTemplate.isNull(EKK0171C030CBSMsg.ISP_NINSHO_ID)) {
//			dataMap.put(JKKSvkeiShosaCC.AGING_SBT_ISP_NINSHO_ID, null);
//		} else {
//			String ninsho_id = parentTemplate.getString(EKK0171C030CBSMsg.ISP_NINSHO_ID);
//			ninsho_id = JKKBpCommon.getAgingNinshoId(ninsho_id);				//2012-02-23追加　IT障害1023対応
//			dataMap.put(JKKSvkeiShosaCC.AGING_SBT_ISP_NINSHO_ID, ninsho_id);
//		}

		// サービス契約内訳＜eo光ネット＞照査締結SC.ＩＳＰ認証ＩＤパスワード ← ＩＳＰ認証ＩＤパスワード
		if (parentTemplate.isNull(EKK0171C030CBSMsg.ISP_NINSHO_ID_PWD_O)) {
			dataMap.put("isp_ninsho_id_pwd", new String());
		} else {
			dataMap.put("isp_ninsho_id_pwd", parentTemplate.getString(EKK0171C030CBSMsg.ISP_NINSHO_ID_PWD_O));
		}

		//作業領域			2012-02-03追加
		Map<Object, Object> workMap = param.getMappingWorkArea();
		dataMap = (HashMap) workMap.get(JKKSvkeiShosaCC.AGING_WORK);

		// サービス契約内訳＜eo光ネット＞照査締結SC.ＩＳＰ認証ＩＤ ← ＩＳＰ認証ＩＤ
		if (parentTemplate.isNull(EKK0171C030CBSMsg.ISP_NINSHO_ID_O)) {
			dataMap.put(JKKSvkeiShosaCC.AGING_SBT_ISP_NINSHO_ID, null);
		} else {
			String ninsho_id = parentTemplate.getString(EKK0171C030CBSMsg.ISP_NINSHO_ID_O);
			ninsho_id = JKKBpCommon.getAgingNinshoId(ninsho_id);				//2012-02-23追加　IT障害1023対応
			dataMap.put(JKKSvkeiShosaCC.AGING_SBT_ISP_NINSHO_ID, ninsho_id);
		}
		
// 2012-11-01 IT1-2012-0001819 EDIT_END

		// エラー情報の設定
        param = editErrorInfoEKK0171C030(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}


	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param ekk0191a010Map 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.01.27
	 */
	public static HashMap<String, Object> editInMsgEKK0191C030(IRequestParameterReadOnly param, CAANMsg ekk0191a010Map, String idoDiv)
	throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0191C030CBSMsg.class.getName());



		// テンプレートID
		template.set(EKK0191C030CBSMsg.TEMPLATEID, TID_EKK0191C030);

		// 機能コード（デフォルト：１）
		template.set(EKK0191C030CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);



		String svc_kei_ucwk_no = ekk0191a010Map.getString(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO);
		String telno = ekk0191a010Map.getString(EKK0191A010CBSMsg1List.TELNO);
		String daihyo_telno = ekk0191a010Map.getString(EKK0191A010CBSMsg1List.DAIHYO_TELNO);
		String sip_user_id_del_zumi_flg = ekk0191a010Map.getString(EKK0191A010CBSMsg1List.SIP_USER_ID_DEL_ZUMI_FLG);
//↓↓↓2012-09-20削除　ロット１障害対応資材マージ＆断面合わせ↓↓↓
//		String tel_bas_host_id = ekk0191a010Map.getString(EKK0191A010CBSMsg1List.TEL_BAS_HOST_ID);
//↑↑↑2012-09-20削除　ロット１障害対応資材マージ＆断面合わせ↑↑↑

		// サービス契約内訳＜eo光電話＞照査締結SC.サービス契約内訳番号 → サービス契約内訳番号
		template.set(EKK0191C030CBSMsg.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);

		// サービス契約内訳＜eo光電話＞照査締結SC.異動区分 → 異動区分
		template.set(EKK0191C030CBSMsg.IDO_DIV, idoDiv);
		
		//電話番号
		template.set(EKK0191C030CBSMsg.TELNO, telno);
		
		//代表電話番号
		if (null == daihyo_telno || "".equals(daihyo_telno)) {
			template.setNull(EKK0191C030CBSMsg.DAIHYO_TELNO);
		} else {
			template.set(EKK0191C030CBSMsg.DAIHYO_TELNO, daihyo_telno);
		}

		//SIPユーザーID消去済フラグ
		if (null == sip_user_id_del_zumi_flg || "".equals(sip_user_id_del_zumi_flg)) {
			template.setNull(EKK0191C030CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG);
		} else {
			template.set(EKK0191C030CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG, sip_user_id_del_zumi_flg);
		}
//↓↓↓2012-09-20削除　ロット１障害対応資材マージ＆断面合わせ↓↓↓
//		//電話BASホストID
//		if (null == tel_bas_host_id || "".equals(tel_bas_host_id)) {
//			template.setNull(EKK0191C030CBSMsg.TEL_BAS_HOST_ID);
//		} else {
//			template.set(EKK0191C030CBSMsg.TEL_BAS_HOST_ID, tel_bas_host_id);
//		}
//↑↑↑2012-09-20削除　ロット１障害対応資材マージ＆断面合わせ↑↑↑

//		// サービス契約内訳＜eo光電話＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0191C030CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0191C030CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0191C030(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0191C030CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// サービス契約内訳＜eo光電話＞照査締結SC.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK0191C030CBSMsg.SVC_KEI_UCWK_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_ucwk_no_err")) {
				inMap.put("svc_kei_ucwk_no_err", template.getString(EKK0191C030CBSMsg.SVC_KEI_UCWK_NO_ERR));
			}
		}
		// サービス契約内訳＜eo光電話＞照査締結SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0191C030CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0191C030CBSMsg.IDO_DIV_ERR));
			}
		}
		// サービス契約内訳＜eo光電話＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
		if (!template.isNull(EKK0191C030CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0191C030CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK0191C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm, int pos) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		// サービス契約内訳＜eo光電話＞照査締結SC.世代登録年月日時分秒（サービス契約内訳） ← 世代登録年月日時分秒（サービス契約内訳）
		if (parentTemplate.isNull(EKK0191C030CBSMsg.KK0161_GENE_ADD_DTM)) {
			dataMap.put("kk0161_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0161_gene_add_dtm", parentTemplate.getString(EKK0191C030CBSMsg.KK0161_GENE_ADD_DTM));
		}

		// サービス契約内訳＜eo光電話＞照査締結SC.サービス契約内訳ステータス ← サービス契約内訳ステータス
		if (parentTemplate.isNull(EKK0191C030CBSMsg.SVC_KEI_UCWK_STAT)) {
			dataMap.put("svc_kei_ucwk_stat", new String());
		} else {
			dataMap.put("svc_kei_ucwk_stat", parentTemplate.getString(EKK0191C030CBSMsg.SVC_KEI_UCWK_STAT));
		}

		// サービス契約内訳＜eo光電話＞照査締結SC.照査年月日 ← 照査年月日
		if (parentTemplate.isNull(EKK0191C030CBSMsg.SHOSA_YMD)) {
			dataMap.put("shosa_ymd", new String());
		} else {
			dataMap.put("shosa_ymd", parentTemplate.getString(EKK0191C030CBSMsg.SHOSA_YMD));
		}

		// サービス契約内訳＜eo光電話＞照査締結SC.照査取消年月日 ← 照査取消年月日
		if (parentTemplate.isNull(EKK0191C030CBSMsg.SHOSA_CL_YMD)) {
			dataMap.put("shosa_cl_ymd", new String());
		} else {
			dataMap.put("shosa_cl_ymd", parentTemplate.getString(EKK0191C030CBSMsg.SHOSA_CL_YMD));
		}

		// サービス契約内訳＜eo光電話＞照査締結SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0191C030CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0191C030CBSMsg.RSV_APLY_YMD));
		}

		// サービス契約内訳＜eo光電話＞照査締結SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0191C030CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0191C030CBSMsg.RSV_APLY_CD));
		}

		// サービス契約内訳＜eo光電話＞照査締結SC.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0191C030CBSMsg.KEI_CNC_YMD)) {
			dataMap.put("kei_cnc_ymd", new String());
		} else {
			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0191C030CBSMsg.KEI_CNC_YMD));
		}

		// サービス契約内訳＜eo光電話＞照査締結SC.世代登録年月日時分秒（サービス契約内訳＜eo光電話＞） ← 世代登録年月日時分秒（サービス契約内訳＜eo光電話＞）
		if (parentTemplate.isNull(EKK0191C030CBSMsg.KK0191_GENE_ADD_DTM)) {
			dataMap.put("kk0191_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0191_gene_add_dtm", parentTemplate.getString(EKK0191C030CBSMsg.KK0191_GENE_ADD_DTM));
		}


		// サービス契約内訳＜eo光電話＞照査締結SC.SIPユーザーIDパスワード ← SIPユーザーIDパスワード
		if (parentTemplate.isNull(EKK0191C030CBSMsg.SIP_USER_ID_PWD)) {
			dataMap.put("sip_user_id_pwd", new String());
		} else {
			dataMap.put("sip_user_id_pwd", parentTemplate.getString(EKK0191C030CBSMsg.SIP_USER_ID_PWD));
		}

		// サービス契約内訳＜eo光電話＞照査締結SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0191C030CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0191C030CBSMsg.UPD_DTM));
		}


		//作業領域			2012-02-03追加
		Map<Object, Object> workMap = param.getMappingWorkArea();
		dataMap = (HashMap) workMap.get(JKKSvkeiShosaCC.AGING_WORK);

		// サービス契約内訳＜eo光電話＞照査締結SC.SIPユーザーID ← SIPユーザーID
		if (parentTemplate.isNull(EKK0191C030CBSMsg.SIP_USER_ID)) {
			dataMap.put(JKKSvkeiShosaCC.AGING_SBT_SIP_USER_ID + String.valueOf(pos), new String());
		} else {
			dataMap.put(JKKSvkeiShosaCC.AGING_SBT_SIP_USER_ID + String.valueOf(pos), parentTemplate.getString(EKK0191C030CBSMsg.SIP_USER_ID));
		}


		// エラー情報の設定
        param = editErrorInfoEKK0191C030(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}


	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param ekk0221a010Map 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.01.27
	 */
	public static HashMap<String, Object> editInMsgEKK0221C030(IRequestParameterReadOnly param, CAANMsg ekk0221a010Map, String idoDiv)
	throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0221C030CBSMsg.class.getName());




		// テンプレートID
		template.set(EKK0221C030CBSMsg.TEMPLATEID, TID_EKK0221C030);

		// 機能コード（デフォルト：１）
		template.set(EKK0221C030CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);




		String svc_kei_ucwk_no = ekk0221a010Map.getString(EKK0221A010CBSMsg1List.SVC_KEI_UCWK_NO);

		// サービス契約内訳＜eoADSL＞照査締結SC.サービス契約内訳番号 → サービス契約内訳番号
		template.set(EKK0221C030CBSMsg.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);

		// サービス契約内訳＜eoADSL＞照査締結SC.異動区分 → 異動区分
		template.set(EKK0221C030CBSMsg.IDO_DIV, idoDiv);

//		// サービス契約内訳＜eoADSL＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0221C030CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0221C030CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0221C030(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0221C030CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// サービス契約内訳＜eoADSL＞照査締結SC.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK0221C030CBSMsg.SVC_KEI_UCWK_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_ucwk_no_err")) {
				inMap.put("svc_kei_ucwk_no_err", template.getString(EKK0221C030CBSMsg.SVC_KEI_UCWK_NO_ERR));
			}
		}
		// サービス契約内訳＜eoADSL＞照査締結SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0221C030CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0221C030CBSMsg.IDO_DIV_ERR));
			}
		}
		// サービス契約内訳＜eoADSL＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
		if (!template.isNull(EKK0221C030CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0221C030CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK0221C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		// サービス契約内訳＜eoADSL＞照査締結SC.世代登録年月日時分秒（サービス契約内訳） ← 世代登録年月日時分秒（サービス契約内訳）
		if (parentTemplate.isNull(EKK0221C030CBSMsg.KK0161_GENE_ADD_DTM)) {
			dataMap.put("kk0161_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0161_gene_add_dtm", parentTemplate.getString(EKK0221C030CBSMsg.KK0161_GENE_ADD_DTM));
		}

		// サービス契約内訳＜eoADSL＞照査締結SC.サービス契約内訳ステータス ← サービス契約内訳ステータス
		if (parentTemplate.isNull(EKK0221C030CBSMsg.SVC_KEI_UCWK_STAT)) {
			dataMap.put("svc_kei_ucwk_stat", new String());
		} else {
			dataMap.put("svc_kei_ucwk_stat", parentTemplate.getString(EKK0221C030CBSMsg.SVC_KEI_UCWK_STAT));
		}

		// サービス契約内訳＜eoADSL＞照査締結SC.照査年月日 ← 照査年月日
		if (parentTemplate.isNull(EKK0221C030CBSMsg.SHOSA_YMD)) {
			dataMap.put("shosa_ymd", new String());
		} else {
			dataMap.put("shosa_ymd", parentTemplate.getString(EKK0221C030CBSMsg.SHOSA_YMD));
		}

		// サービス契約内訳＜eoADSL＞照査締結SC.照査取消年月日 ← 照査取消年月日
		if (parentTemplate.isNull(EKK0221C030CBSMsg.SHOSA_CL_YMD)) {
			dataMap.put("shosa_cl_ymd", new String());
		} else {
			dataMap.put("shosa_cl_ymd", parentTemplate.getString(EKK0221C030CBSMsg.SHOSA_CL_YMD));
		}

		// サービス契約内訳＜eoADSL＞照査締結SC.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0221C030CBSMsg.KEI_CNC_YMD)) {
			dataMap.put("kei_cnc_ymd", new String());
		} else {
			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0221C030CBSMsg.KEI_CNC_YMD));
		}

		// サービス契約内訳＜eoADSL＞照査締結SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0221C030CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0221C030CBSMsg.RSV_APLY_YMD));
		}

		// サービス契約内訳＜eoADSL＞照査締結SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0221C030CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0221C030CBSMsg.RSV_APLY_CD));
		}

		// サービス契約内訳＜eoADSL＞照査締結SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0221C030CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0221C030CBSMsg.UPD_DTM));
		}

		// サービス契約内訳＜eoADSL＞照査締結SC.世代登録年月日時分秒（サービス契約内訳＜eoADSL＞） ← 世代登録年月日時分秒（サービス契約内訳＜eoADSL＞）
		if (parentTemplate.isNull(EKK0221C030CBSMsg.KK0221_GENE_ADD_DTM)) {
			dataMap.put("kk0221_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0221_gene_add_dtm", parentTemplate.getString(EKK0221C030CBSMsg.KK0221_GENE_ADD_DTM));
		}


		// サービス契約内訳＜eoADSL＞照査締結SC.ADSL認証IDパスワード ← ADSL認証IDパスワード
		if (parentTemplate.isNull(EKK0221C030CBSMsg.ADSL_NINSHO_ID_PWD)) {
			dataMap.put("adsl_ninsho_id_pwd", new String());
		} else {
			dataMap.put("adsl_ninsho_id_pwd", parentTemplate.getString(EKK0221C030CBSMsg.ADSL_NINSHO_ID_PWD));
		}


		//作業領域			2012-02-03追加
		Map<Object, Object> workMap = param.getMappingWorkArea();
		dataMap = (HashMap) workMap.get(JKKSvkeiShosaCC.AGING_WORK);

		// サービス契約内訳＜eoADSL＞照査締結SC.ADSL認証ID ← ADSL認証ID
		if (parentTemplate.isNull(EKK0221C030CBSMsg.ADSL_NINSHO_ID)) {
			dataMap.put(JKKSvkeiShosaCC.AGING_SBT_ADSL_NINSHO_ID, new String());
		} else {
			dataMap.put(JKKSvkeiShosaCC.AGING_SBT_ADSL_NINSHO_ID, parentTemplate.getString(EKK0221C030CBSMsg.ADSL_NINSHO_ID));
		}


		// エラー情報の設定
        param = editErrorInfoEKK0221C030(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}


	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static HashMap<String, Object> editInMsgEKK0341C050(IRequestParameterReadOnly param, String mapNm)
	throws Throwable {

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0341C050CBSMsg.class.getName());

		HashMap inMap = null;


		// テンプレートID
		template.set(EKK0341C050CBSMsg.TEMPLATEID, TID_EKK0341C050);

		// 機能コード（デフォルト：１）
		template.set(EKK0341C050CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);


		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		
		if (inMap != null) {
			// 機能コード
			template.set(EKK0341C050CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
		}

		// 機器提供サービス契約照査締結SC.機器提供サービス契約番号 → 機器提供サービス契約番号
		if (inMap == null || inMap.get("kktk_svc_kei_no") == null || "".equals(inMap.get("kktk_svc_kei_no"))) {
			template.setNull(EKK0341C050CBSMsg.KKTK_SVC_KEI_NO);
		} else {
			template.set(EKK0341C050CBSMsg.KKTK_SVC_KEI_NO, (String) inMap.get("kktk_svc_kei_no"));
		}

		// 機器提供サービス契約照査締結SC.機器認証ID → 機器認証ID
		if (inMap == null || inMap.get("kiki_ninsho_id") == null || "".equals(inMap.get("kiki_ninsho_id"))) {
			template.setNull(EKK0341C050CBSMsg.KIKI_NINSHO_ID);
		} else {
			template.set(EKK0341C050CBSMsg.KIKI_NINSHO_ID, (String) inMap.get("kiki_ninsho_id"));
		}

		// 機器提供サービス契約照査締結SC.機器認証IDパスワード → 機器認証IDパスワード
		if (inMap == null || inMap.get("kiki_ninsho_id_pwd") == null || "".equals(inMap.get("kiki_ninsho_id_pwd"))) {
			template.setNull(EKK0341C050CBSMsg.KIKI_NINSHO_ID_PWD);
		} else {
			template.set(EKK0341C050CBSMsg.KIKI_NINSHO_ID_PWD, (String) inMap.get("kiki_ninsho_id_pwd"));
		}

		// 機器提供サービス契約照査締結SC.異動区分 → 異動区分
		if (inMap == null || inMap.get("ido_div") == null || "".equals(inMap.get("ido_div"))) {
			template.setNull(EKK0341C050CBSMsg.IDO_DIV);
		} else {
			template.set(EKK0341C050CBSMsg.IDO_DIV, (String) inMap.get("ido_div"));
		}

		// 機器提供サービス契約照査締結SC.更新年月日時分秒(更新前) → 更新年月日時分秒(更新前)
		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
			template.setNull(EKK0341C050CBSMsg.UPD_DTM_BF);
		} else {
			template.set(EKK0341C050CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0341C050(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0341C050CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// 機器提供サービス契約照査締結SC.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0341C050CBSMsg.KKTK_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("kktk_svc_kei_no_err")) {
				inMap.put("kktk_svc_kei_no_err", template.getString(EKK0341C050CBSMsg.KKTK_SVC_KEI_NO_ERR));
			}
		}
		// 機器提供サービス契約照査締結SC.機器認証ID → 機器認証ID のエラー情報返却
		if (!template.isNull(EKK0341C050CBSMsg.KIKI_NINSHO_ID_ERR)) {
			if (!inMap.containsKey("kiki_ninsho_id_err")) {
				inMap.put("kiki_ninsho_id_err", template.getString(EKK0341C050CBSMsg.KIKI_NINSHO_ID_ERR));
			}
		}
		// 機器提供サービス契約照査締結SC.機器認証IDパスワード → 機器認証IDパスワード のエラー情報返却
		if (!template.isNull(EKK0341C050CBSMsg.KIKI_NINSHO_ID_PWD_ERR)) {
			if (!inMap.containsKey("kiki_ninsho_id_pwd_err")) {
				inMap.put("kiki_ninsho_id_pwd_err", template.getString(EKK0341C050CBSMsg.KIKI_NINSHO_ID_PWD_ERR));
			}
		}
		// 機器提供サービス契約照査締結SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0341C050CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0341C050CBSMsg.IDO_DIV_ERR));
			}
		}
		// 機器提供サービス契約照査締結SC.更新年月日時分秒(更新前) → 更新年月日時分秒(更新前) のエラー情報返却
		if (!template.isNull(EKK0341C050CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0341C050CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK0341C050(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;


		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		// 機器提供サービス契約照査締結SC.世代登録年月日時分秒 ← 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0341C050CBSMsg.GENE_ADD_DTM)) {
			dataMap.put("gene_add_dtm", new String());
		} else {
			dataMap.put("gene_add_dtm", parentTemplate.getString(EKK0341C050CBSMsg.GENE_ADD_DTM));
		}

		// 機器提供サービス契約照査締結SC.機器提供サービス契約ステータス ← 機器提供サービス契約ステータス
		if (parentTemplate.isNull(EKK0341C050CBSMsg.KKTK_SVC_KEI_STAT)) {
			dataMap.put("kktk_svc_kei_stat", new String());
		} else {
			dataMap.put("kktk_svc_kei_stat", parentTemplate.getString(EKK0341C050CBSMsg.KKTK_SVC_KEI_STAT));
		}

		// 機器提供サービス契約照査締結SC.照査年月日 ← 照査年月日
		if (parentTemplate.isNull(EKK0341C050CBSMsg.SHOSA_YMD)) {
			dataMap.put("shosa_ymd", new String());
		} else {
			dataMap.put("shosa_ymd", parentTemplate.getString(EKK0341C050CBSMsg.SHOSA_YMD));
		}

		// 機器提供サービス契約照査締結SC.照査取消年月日 ← 照査取消年月日
		if (parentTemplate.isNull(EKK0341C050CBSMsg.SHOSA_CL_YMD)) {
			dataMap.put("shosa_cl_ymd", new String());
		} else {
			dataMap.put("shosa_cl_ymd", parentTemplate.getString(EKK0341C050CBSMsg.SHOSA_CL_YMD));
		}

		// 機器提供サービス契約照査締結SC.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0341C050CBSMsg.KEI_CNC_YMD)) {
			dataMap.put("kei_cnc_ymd", new String());
		} else {
			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0341C050CBSMsg.KEI_CNC_YMD));
		}

		// 機器提供サービス契約照査締結SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0341C050CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0341C050CBSMsg.RSV_APLY_YMD));
		}

		// 機器提供サービス契約照査締結SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0341C050CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0341C050CBSMsg.RSV_APLY_CD));
		}

		// 機器提供サービス契約照査締結SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0341C050CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0341C050CBSMsg.UPD_DTM));
		}

        
        // エラー情報の設定
        param = editErrorInfoEKK0341C050(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}


//	/**
//	 *<DL>
//	 *<DT>処理概要:
//	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
//	 *<DT>入力パラメータ説明:
//	 *<DD>特になし
//	 *<DT>入力パラメータ説明：
//	 *<DD>特になし
//	 *<DT>出力パラメータ説明:
//	 *<DD>特になし
//	 *</DL>
//	 * @param param (I) 業務データ取得用I/F
//	 * @return サービスコンポーネント実行用CAANMsg
//	 * @since 2012.01.27
//	 */
//	@SuppressWarnings("unchecked")
//	public static HashMap<String, Object> editInMsgEKK0361C030(IRequestParameterReadOnly param, String mapNm)
//	throws Throwable {
//
//		HashMap<String, Object> paramMap = new HashMap<String, Object>();
//
//		/* SCインプット共通データ */
//		// **********************************************
//		// 【取得元：電文ヘッダ(ヘッダ)】
//		// **********************************************
//		// 電文ID
//		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
//		// ユースケースID
//		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
//		// オペレーションID
//		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
//		// サービス呼び出し区分
//		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
//
//		// **********************************************
//		// 【取得元：ユーザエリア(コントロールマップ)】
//		// **********************************************
//		// 依頼先ホスト名
//		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
//		// 依頼元IPアドレス
//		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
//		// 依頼元画面ID
//		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
//		// オペレータID
//		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
//
//		CAANMsg template = new CAANMsg(EKK0361C030CBSMsg.class.getName());
//
//
//		HashMap inMap = null;
//
//
//		// テンプレートID
//		template.set(EKK0361C030CBSMsg.TEMPLATEID, TID_EKK0361C030);
//
//		// 機能コード（デフォルト：１）
//		template.set(EKK0361C030CBSMsg.FUNC_CODE, "1");
//
//		// オペレータID
//		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
//		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
//
//		// 運用日付
//		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
//		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
//
//		// 運用日時
//		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
//		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
//
//
//
//		/* ユーザデータ情報 */
//		inMap = (HashMap)param.getData(mapNm);
//		
//		if (inMap != null) {
//			// 機能コード
//			template.set(EKK0361C030CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.オプションサービス契約番号 → オプションサービス契約番号
//		if (inMap == null || inMap.get("op_svc_kei_no") == null || "".equals(inMap.get("op_svc_kei_no"))) {
//			template.setNull(EKK0361C030CBSMsg.OP_SVC_KEI_NO);
//		} else {
//			template.set(EKK0361C030CBSMsg.OP_SVC_KEI_NO, (String) inMap.get("op_svc_kei_no"));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.異動区分 → 異動区分
//		if (inMap == null || inMap.get("ido_div") == null || "".equals(inMap.get("ido_div"))) {
//			template.setNull(EKK0361C030CBSMsg.IDO_DIV);
//		} else {
//			template.set(EKK0361C030CBSMsg.IDO_DIV, (String) inMap.get("ido_div"));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.ダイヤルパッドID → ダイヤルパッドID
//		if (inMap == null || inMap.get("dpad_id") == null || "".equals(inMap.get("dpad_id"))) {
//			template.setNull(EKK0361C030CBSMsg.DPAD_ID);
//		} else {
//			template.set(EKK0361C030CBSMsg.DPAD_ID, (String) inMap.get("dpad_id"));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0361C030CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0361C030CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.事務手数料自動適用要否 → 事務手数料自動適用要否
//		if (inMap == null || inMap.get("rule0059_auto_aply") == null || "".equals(inMap.get("rule0059_auto_aply"))) {
//			template.setNull(EKK0361C030CBSMsg.RULE0059_AUTO_APLY);
//		} else {
//			template.set(EKK0361C030CBSMsg.RULE0059_AUTO_APLY, (String) inMap.get("rule0059_auto_aply"));
//		}
//			
//
//		CAANMsg[] templates = new CAANMsg[1];
//		templates[0] = template;
//		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
//
//		return paramMap;
//	}
//	
//	/**
//	 *<DL>
//	 *<DT>処理概要:
//	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
//	 *<DT>入力パラメータ説明:
//	 *<DD>特になし
//	 *<DT>入力パラメータ説明：
//	 *<DD>特になし
//	 *<DT>出力パラメータ説明:
//	 *<DD>特になし
//	 *</DL>
//	 * @param param (I) 業務データ取得・書込用I/F
//	 * @param templates (I) CAANMsgクラス配列
//	 * @param returnCode (I) リターンコード
//	 * @return 業務データ取得・書込用I/F
//	 * @since 2012.01.27
//	 */
//	@SuppressWarnings("unchecked")
//	public static IRequestParameterReadWrite editErrorInfoEKK0361C030(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
//	throws Throwable {
//		CAANMsg template = templates[0];
//
//		int templateStatus = template.getInt(EKK0361C030CBSMsg.STATUS);
//		if (returnCode != 0) {
//			templateStatus = 9000;
//		}
//		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
//			templateStatus = 0;
//		}
//		
//		int bpStatus = 0;
//		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
//		if (obj == null) {
//			bpStatus = -1;
//		} else {
//			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
//		}
//
//		if (templateStatus > bpStatus) {
//			// BPにサービスコンポーネントのステータスを設定する。
//			String formatStatus = String.format("%1$04d", templateStatus);
//			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
//			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
//			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
//		}
//		
//		HashMap inMap = null;
//
//		
//
//		/* ユーザデータ情報 */
//		inMap = (HashMap)param.getData(mapNm);
//		if (inMap == null) {
//			inMap = new HashMap();
//			param.setData(mapNm, inMap);
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
//		if (!template.isNull(EKK0361C030CBSMsg.OP_SVC_KEI_NO_ERR)) {
//			if (!inMap.containsKey("op_svc_kei_no_err")) {
//				inMap.put("op_svc_kei_no_err", template.getString(EKK0361C030CBSMsg.OP_SVC_KEI_NO_ERR));
//			}
//		}
//		// オプションサービス契約＜ISP＞照査締結SC.異動区分 → 異動区分 のエラー情報返却
//		if (!template.isNull(EKK0361C030CBSMsg.IDO_DIV_ERR)) {
//			if (!inMap.containsKey("ido_div_err")) {
//				inMap.put("ido_div_err", template.getString(EKK0361C030CBSMsg.IDO_DIV_ERR));
//			}
//		}
//		// オプションサービス契約＜ISP＞照査締結SC.ダイヤルパッドID → ダイヤルパッドID のエラー情報返却
//		if (!template.isNull(EKK0361C030CBSMsg.DPAD_ID_ERR)) {
//			if (!inMap.containsKey("dpad_id_err")) {
//				inMap.put("dpad_id_err", template.getString(EKK0361C030CBSMsg.DPAD_ID_ERR));
//			}
//		}
//		// オプションサービス契約＜ISP＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
//		if (!template.isNull(EKK0361C030CBSMsg.UPD_DTM_BF_ERR)) {
//			if (!inMap.containsKey("upd_dtm_bf_err")) {
//				inMap.put("upd_dtm_bf_err", template.getString(EKK0361C030CBSMsg.UPD_DTM_BF_ERR));
//			}
//		}
//		// オプションサービス契約＜ISP＞照査締結SC.事務手数料自動適用要否 → 事務手数料自動適用要否 のエラー情報返却
//		if (!template.isNull(EKK0361C030CBSMsg.RULE0059_AUTO_APLY_ERR)) {
//			if (!inMap.containsKey("rule0059_auto_aply_err")) {
//				inMap.put("rule0059_auto_aply_err", template.getString(EKK0361C030CBSMsg.RULE0059_AUTO_APLY_ERR));
//			}
//		}
//		return param;
//	}
//
//	/**
//	 *<DL>
//	 *<DT>処理概要:
//	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
//	 *<DT>入力パラメータ説明:
//	 *<DD>特になし
//	 *<DT>入力パラメータ説明：
//	 *<DD>特になし
//	 *<DT>出力パラメータ説明:
//	 *<DD>特になし
//	 *</DL>
//	 * @param msgList (I) CAANMsgクラス 
//	 * @param param (I) 業務データ取得・書込用I/F
//	 * @return 業務データ取得・書込用I/F
//	 * @since 2012.01.27
//	 */
//	@SuppressWarnings("unchecked")
//	public static ArrayList<Object> editResultRPEKK0361C030(Map<?, ?> msgList,
//			IRequestParameterReadWrite param, String mapNm) throws Throwable {
//
//		// SCからの戻り値からCAANMsgを取得する。
//		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
//		CAANMsg parentTemplate = templates[0];
//
//
//		// リターンコード取得
//		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
//		
//
//		// 結果を詰めるマップを取得。
//		HashMap dataMap = null;
//
//
//		/* 業務データ設定 */
//		dataMap = (HashMap)param.getData(mapNm);
//		if (dataMap == null) {
//			dataMap = new HashMap();
//			param.setData(mapNm, dataMap);
//		}
//		// オプションサービス契約＜ISP＞照査締結SC.世代登録年月日時分秒（オプションサービス契約） ← 世代登録年月日時分秒（オプションサービス契約）
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.KK0351_GENE_ADD_DTM)) {
//			dataMap.put("kk0351_gene_add_dtm", new String());
//		} else {
//			dataMap.put("kk0351_gene_add_dtm", parentTemplate.getString(EKK0361C030CBSMsg.KK0351_GENE_ADD_DTM));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.オプションサービス契約ステータス ← オプションサービス契約ステータス
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.OP_SVC_KEI_STAT)) {
//			dataMap.put("op_svc_kei_stat", new String());
//		} else {
//			dataMap.put("op_svc_kei_stat", parentTemplate.getString(EKK0361C030CBSMsg.OP_SVC_KEI_STAT));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.照査年月日 ← 照査年月日
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.SHOSA_YMD)) {
//			dataMap.put("shosa_ymd", new String());
//		} else {
//			dataMap.put("shosa_ymd", parentTemplate.getString(EKK0361C030CBSMsg.SHOSA_YMD));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.照査取消年月日 ← 照査取消年月日
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.SHOSA_CL_YMD)) {
//			dataMap.put("shosa_cl_ymd", new String());
//		} else {
//			dataMap.put("shosa_cl_ymd", parentTemplate.getString(EKK0361C030CBSMsg.SHOSA_CL_YMD));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.契約締結年月日 ← 契約締結年月日
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.KEI_CNC_YMD)) {
//			dataMap.put("kei_cnc_ymd", new String());
//		} else {
//			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0361C030CBSMsg.KEI_CNC_YMD));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.予約適用年月日 ← 予約適用年月日
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.RSV_APLY_YMD)) {
//			dataMap.put("rsv_aply_ymd", new String());
//		} else {
//			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0361C030CBSMsg.RSV_APLY_YMD));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.予約適用コード ← 予約適用コード
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.RSV_APLY_CD)) {
//			dataMap.put("rsv_aply_cd", new String());
//		} else {
//			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0361C030CBSMsg.RSV_APLY_CD));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.更新年月日時分秒 ← 更新年月日時分秒
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.UPD_DTM)) {
//			dataMap.put("upd_dtm", new String());
//		} else {
//			dataMap.put("upd_dtm", parentTemplate.getString(EKK0361C030CBSMsg.UPD_DTM));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.世代登録年月日時分秒（オプションサービス契約＜ISP＞） ← 世代登録年月日時分秒（オプションサービス契約＜ISP＞）
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.KK0361_GENE_ADD_DTM)) {
//			dataMap.put("kk0361_gene_add_dtm", new String());
//		} else {
//			dataMap.put("kk0361_gene_add_dtm", parentTemplate.getString(EKK0361C030CBSMsg.KK0361_GENE_ADD_DTM));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.初期POPIDパスワード ← 初期POPIDパスワード
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.SHK_POP_ID_PWD)) {
//			dataMap.put("shk_pop_id_pwd", new String());
//		} else {
//			dataMap.put("shk_pop_id_pwd", parentTemplate.getString(EKK0361C030CBSMsg.SHK_POP_ID_PWD));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.メールアドレス ← メールアドレス
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.MLAD)) {
//			dataMap.put("mlad", new String());
//		} else {
//			dataMap.put("mlad", parentTemplate.getString(EKK0361C030CBSMsg.MLAD));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.POPID ← POPID
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.POP_ID)) {
//			dataMap.put("pop_id", new String());
//		} else {
//			dataMap.put("pop_id", parentTemplate.getString(EKK0361C030CBSMsg.POP_ID));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.初期WebIDパスワード ← 初期WebIDパスワード
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.SHK_WEB_ID_PWD)) {
//			dataMap.put("shk_web_id_pwd", new String());
//		} else {
//			dataMap.put("shk_web_id_pwd", parentTemplate.getString(EKK0361C030CBSMsg.SHK_WEB_ID_PWD));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.WebID ← WebID
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.WEB_ID)) {
//			dataMap.put("web_id", new String());
//		} else {
//			dataMap.put("web_id", parentTemplate.getString(EKK0361C030CBSMsg.WEB_ID));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.ダイヤルパッドID（出力） ← ダイヤルパッドID（出力）
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.DPAD_ID_O)) {
//			dataMap.put("dpad_id_o", new String());
//		} else {
//			dataMap.put("dpad_id_o", parentTemplate.getString(EKK0361C030CBSMsg.DPAD_ID_O));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.ダイヤルパッドMAPID ← ダイヤルパッドMAPID
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.DPAD_MAPID)) {
//			dataMap.put("dpad_mapid", new String());
//		} else {
//			dataMap.put("dpad_mapid", parentTemplate.getString(EKK0361C030CBSMsg.DPAD_MAPID));
//		}
//
//		// オプションサービス契約＜ISP＞照査締結SC.ダイヤルアップ接続用認証ID ← ダイヤルアップ接続用認証ID
//		if (parentTemplate.isNull(EKK0361C030CBSMsg.DUPCON_NINSHO_ID)) {
//			dataMap.put("dupcon_ninsho_id", new String());
//		} else {
//			dataMap.put("dupcon_ninsho_id", parentTemplate.getString(EKK0361C030CBSMsg.DUPCON_NINSHO_ID));
//		}
//
//        
//        // エラー情報の設定
//        param = editErrorInfoEKK0361C030(param, templates, (Integer)return_code, mapNm);
//
//		//エラー情報のマップを取得
//		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
//		if(errList == null){
//			errList = new ArrayList<Object>();
//		}
//		// コントロールマップに設定
//		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
//        
//
//		return errList;
//	}



	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException 
	 * @since 2012.01.27
	 */
	public static HashMap<String, Object> editInMsgEKK0371C030(IRequestParameterReadOnly param, CAANMsg ekk0371a010Map, String idoDiv)
	throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0371C030CBSMsg.class.getName());


		// テンプレートID
		template.set(EKK0371C030CBSMsg.TEMPLATEID, TID_EKK0371C030);

		// 機能コード（デフォルト：１）
		template.set(EKK0371C030CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);


		String op_svc_kei_no = ekk0371a010Map.getString(EKK0371A010CBSMsg1List.OP_SVC_KEI_NO);
		String n_050_op_telno = ekk0371a010Map.getString(EKK0371A010CBSMsg1List.N_050_OP_TELNO);

		// オプションサービス契約＜電話＞照査締結SC.オプションサービス契約番号 → オプションサービス契約番号
		template.set(EKK0371C030CBSMsg.OP_SVC_KEI_NO, op_svc_kei_no);

		// オプションサービス契約＜電話＞照査締結SC.異動区分 → 異動区分
		template.set(EKK0371C030CBSMsg.IDO_DIV, idoDiv);

		//０５０オプション電話番号
		if (null == n_050_op_telno || "".equals(n_050_op_telno)) {
			template.setNull(EKK0371C030CBSMsg.N_050_OP_TELNO);
		} else {
			template.set(EKK0371C030CBSMsg.N_050_OP_TELNO, n_050_op_telno);
		}

		
//		// オプションサービス契約＜電話＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0371C030CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0371C030CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws RequestParameterException 
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0371C030(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0371C030CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;

		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// オプションサービス契約＜電話＞照査締結SC.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0371C030CBSMsg.OP_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("op_svc_kei_no_err")) {
				inMap.put("op_svc_kei_no_err", template.getString(EKK0371C030CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		// オプションサービス契約＜電話＞照査締結SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0371C030CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0371C030CBSMsg.IDO_DIV_ERR));
			}
		}
		// オプションサービス契約＜電話＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
		if (!template.isNull(EKK0371C030CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0371C030CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK0371C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];


		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		// オプションサービス契約＜電話＞照査締結SC.世代登録年月日時分秒（オプションサービス契約） ← 世代登録年月日時分秒（オプションサービス契約）
		if (parentTemplate.isNull(EKK0371C030CBSMsg.KK0351_GENE_ADD_DTM)) {
			dataMap.put("kk0351_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0351_gene_add_dtm", parentTemplate.getString(EKK0371C030CBSMsg.KK0351_GENE_ADD_DTM));
		}

		// オプションサービス契約＜電話＞照査締結SC.オプションサービス契約ステータス ← オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0371C030CBSMsg.OP_SVC_KEI_STAT)) {
			dataMap.put("op_svc_kei_stat", new String());
		} else {
			dataMap.put("op_svc_kei_stat", parentTemplate.getString(EKK0371C030CBSMsg.OP_SVC_KEI_STAT));
		}

		// オプションサービス契約＜電話＞照査締結SC.照査年月日 ← 照査年月日
		if (parentTemplate.isNull(EKK0371C030CBSMsg.SHOSA_YMD)) {
			dataMap.put("shosa_ymd", new String());
		} else {
			dataMap.put("shosa_ymd", parentTemplate.getString(EKK0371C030CBSMsg.SHOSA_YMD));
		}

		// オプションサービス契約＜電話＞照査締結SC.照査取消年月日 ← 照査取消年月日
		if (parentTemplate.isNull(EKK0371C030CBSMsg.SHOSA_CL_YMD)) {
			dataMap.put("shosa_cl_ymd", new String());
		} else {
			dataMap.put("shosa_cl_ymd", parentTemplate.getString(EKK0371C030CBSMsg.SHOSA_CL_YMD));
		}

		// オプションサービス契約＜電話＞照査締結SC.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0371C030CBSMsg.KEI_CNC_YMD)) {
			dataMap.put("kei_cnc_ymd", new String());
		} else {
			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0371C030CBSMsg.KEI_CNC_YMD));
		}

		// オプションサービス契約＜電話＞照査締結SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0371C030CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0371C030CBSMsg.RSV_APLY_YMD));
		}

		// オプションサービス契約＜電話＞照査締結SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0371C030CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0371C030CBSMsg.RSV_APLY_CD));
		}

		// オプションサービス契約＜電話＞照査締結SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0371C030CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0371C030CBSMsg.UPD_DTM));
		}

		// オプションサービス契約＜電話＞照査締結SC.世代登録年月日時分秒（オプションサービス契約＜電話＞） ← 世代登録年月日時分秒（オプションサービス契約＜電話＞）
		if (parentTemplate.isNull(EKK0371C030CBSMsg.KK0371_GENE_ADD_DTM)) {
			dataMap.put("kk0371_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0371_gene_add_dtm", parentTemplate.getString(EKK0371C030CBSMsg.KK0371_GENE_ADD_DTM));
		}

        
        // エラー情報の設定
        param = editErrorInfoEKK0371C030(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}


//	/**
//	 *<DL>
//	 *<DT>処理概要:
//	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
//	 *<DT>入力パラメータ説明:
//	 *<DD>特になし
//	 *<DT>入力パラメータ説明：
//	 *<DD>特になし
//	 *<DT>出力パラメータ説明:
//	 *<DD>特になし
//	 *</DL>
//	 * @param param (I) 業務データ取得用I/F
//	 * @return サービスコンポーネント実行用CAANMsg
//	 * @since 2012.01.27
//	 */
//	@SuppressWarnings("unchecked")
//	public static HashMap<String, Object> editInMsgEKK0411C040(IRequestParameterReadOnly param, String mapNm)
//	throws Throwable {
//
//		HashMap<String, Object> paramMap = new HashMap<String, Object>();
//
//		/* SCインプット共通データ */
//		// **********************************************
//		// 【取得元：電文ヘッダ(ヘッダ)】
//		// **********************************************
//		// 電文ID
//		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
//		// ユースケースID
//		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
//		// オペレーションID
//		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
//		// サービス呼び出し区分
//		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
//
//		// **********************************************
//		// 【取得元：ユーザエリア(コントロールマップ)】
//		// **********************************************
//		// 依頼先ホスト名
//		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
//		// 依頼元IPアドレス
//		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
//		// 依頼元画面ID
//		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
//		// オペレータID
//		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
//
//		CAANMsg template = new CAANMsg(EKK0411C040CBSMsg.class.getName());
//
//
//		HashMap inMap = null;
//
//
//		// テンプレートID
//		template.set(EKK0411C040CBSMsg.TEMPLATEID, TID_EKK0411C040);
//
//		// 機能コード（デフォルト：１）
//		template.set(EKK0411C040CBSMsg.FUNC_CODE, "1");
//
//		// オペレータID
//		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
//		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
//
//		// 運用日付
//		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
//		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
//
//		// 運用日時
//		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
//		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
//
//
//		/* ユーザデータ情報 */
//		inMap = (HashMap)param.getData(mapNm);
//		
//		if (inMap != null) {
//			// 機能コード
//			template.set(EKK0411C040CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.オプションサービス契約番号 → オプションサービス契約番号
//		if (inMap == null || inMap.get("op_svc_kei_no") == null || "".equals(inMap.get("op_svc_kei_no"))) {
//			template.setNull(EKK0411C040CBSMsg.OP_SVC_KEI_NO);
//		} else {
//			template.set(EKK0411C040CBSMsg.OP_SVC_KEI_NO, (String) inMap.get("op_svc_kei_no"));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.サブオプションサービス契約番号 → サブオプションサービス契約番号
//		if (inMap == null || inMap.get("sbop_svc_kei_no") == null || "".equals(inMap.get("sbop_svc_kei_no"))) {
//			template.setNull(EKK0411C040CBSMsg.SBOP_SVC_KEI_NO);
//		} else {
//			template.set(EKK0411C040CBSMsg.SBOP_SVC_KEI_NO, (String) inMap.get("sbop_svc_kei_no"));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.異動区分 → 異動区分
//		if (inMap == null || inMap.get("ido_div") == null || "".equals(inMap.get("ido_div"))) {
//			template.setNull(EKK0411C040CBSMsg.IDO_DIV);
//		} else {
//			template.set(EKK0411C040CBSMsg.IDO_DIV, (String) inMap.get("ido_div"));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0411C040CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0411C040CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
//			
//
//		CAANMsg[] templates = new CAANMsg[1];
//		templates[0] = template;
//		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
//
//		return paramMap;
//	}
//	
//	/**
//	 *<DL>
//	 *<DT>処理概要:
//	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
//	 *<DT>入力パラメータ説明:
//	 *<DD>特になし
//	 *<DT>入力パラメータ説明：
//	 *<DD>特になし
//	 *<DT>出力パラメータ説明:
//	 *<DD>特になし
//	 *</DL>
//	 * @param param (I) 業務データ取得・書込用I/F
//	 * @param templates (I) CAANMsgクラス配列
//	 * @param returnCode (I) リターンコード
//	 * @return 業務データ取得・書込用I/F
//	 * @since 2012.01.27
//	 */
//	@SuppressWarnings("unchecked")
//	public static IRequestParameterReadWrite editErrorInfoEKK0411C040(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
//	throws Throwable {
//		CAANMsg template = templates[0];
//
//		int templateStatus = template.getInt(EKK0411C040CBSMsg.STATUS);
//		if (returnCode != 0) {
//			templateStatus = 9000;
//		}
//		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
//			templateStatus = 0;
//		}
//		
//		int bpStatus = 0;
//		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
//		if (obj == null) {
//			bpStatus = -1;
//		} else {
//			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
//		}
//
//		if (templateStatus > bpStatus) {
//			// BPにサービスコンポーネントのステータスを設定する。
//			String formatStatus = String.format("%1$04d", templateStatus);
//			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
//			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
//			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
//		}
//		
//		HashMap inMap = null;
//
//		
//		// 作業項目領域
//		Map workMap = (Map)param.getMappingWorkArea();
//		if (workMap == null) {
//			workMap = new HashMap();
//			param.setMappingWorkArea(workMap);
//		}
//		
//		/* ユーザデータ情報 */
//		inMap = (HashMap)param.getData(mapNm);
//		if (inMap == null) {
//			inMap = new HashMap();
//			param.setData(mapNm, inMap);
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
//		if (!template.isNull(EKK0411C040CBSMsg.OP_SVC_KEI_NO_ERR)) {
//			if (!inMap.containsKey("op_svc_kei_no_err")) {
//				inMap.put("op_svc_kei_no_err", template.getString(EKK0411C040CBSMsg.OP_SVC_KEI_NO_ERR));
//			}
//		}
//		// サブオプションサービス契約＜ISP＞照査締結SC.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
//		if (!template.isNull(EKK0411C040CBSMsg.SBOP_SVC_KEI_NO_ERR)) {
//			if (!inMap.containsKey("sbop_svc_kei_no_err")) {
//				inMap.put("sbop_svc_kei_no_err", template.getString(EKK0411C040CBSMsg.SBOP_SVC_KEI_NO_ERR));
//			}
//		}
//		// サブオプションサービス契約＜ISP＞照査締結SC.異動区分 → 異動区分 のエラー情報返却
//		if (!template.isNull(EKK0411C040CBSMsg.IDO_DIV_ERR)) {
//			if (!inMap.containsKey("ido_div_err")) {
//				inMap.put("ido_div_err", template.getString(EKK0411C040CBSMsg.IDO_DIV_ERR));
//			}
//		}
//		// サブオプションサービス契約＜ISP＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
//		if (!template.isNull(EKK0411C040CBSMsg.UPD_DTM_BF_ERR)) {
//			if (!inMap.containsKey("upd_dtm_bf_err")) {
//				inMap.put("upd_dtm_bf_err", template.getString(EKK0411C040CBSMsg.UPD_DTM_BF_ERR));
//			}
//		}
//		return param;
//	}
//
//	/**
//	 *<DL>
//	 *<DT>処理概要:
//	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
//	 *<DT>入力パラメータ説明:
//	 *<DD>特になし
//	 *<DT>入力パラメータ説明：
//	 *<DD>特になし
//	 *<DT>出力パラメータ説明:
//	 *<DD>特になし
//	 *</DL>
//	 * @param msgList (I) CAANMsgクラス 
//	 * @param param (I) 業務データ取得・書込用I/F
//	 * @return 業務データ取得・書込用I/F
//	 * @since 2012.01.27
//	 */
//	@SuppressWarnings("unchecked")
//	public static ArrayList<Object> editResultRPEKK0411C040(Map<?, ?> msgList,
//			IRequestParameterReadWrite param, String mapNm) throws Throwable {
//
//		// SCからの戻り値からCAANMsgを取得する。
//		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
//		CAANMsg parentTemplate = templates[0];
//
//
//		// リターンコード取得
//		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
//		
//		// 作業領域の取得
//		Map workMap = (Map)param.getMappingWorkArea();
//		if (workMap == null) {
//			workMap = new HashMap();
//			param.setMappingWorkArea(workMap);
//		}
//		
//		// 結果を詰めるマップを取得。
//		HashMap dataMap = null;
//
//
//		/* 業務データ設定 */
//		dataMap = (HashMap)param.getData(mapNm);
//		if (dataMap == null) {
//			dataMap = new HashMap();
//			param.setData(mapNm, dataMap);
//		}
//		// サブオプションサービス契約＜ISP＞照査締結SC.世代登録年月日時分秒（サブオプションサービス契約） ← 世代登録年月日時分秒（サブオプションサービス契約）
//		if (parentTemplate.isNull(EKK0411C040CBSMsg.KK0401_GENE_ADD_DTM)) {
//			dataMap.put("kk0401_gene_add_dtm", new String());
//		} else {
//			dataMap.put("kk0401_gene_add_dtm", parentTemplate.getString(EKK0411C040CBSMsg.KK0401_GENE_ADD_DTM));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.サブオプションサービス契約ステータス ← サブオプションサービス契約ステータス
//		if (parentTemplate.isNull(EKK0411C040CBSMsg.SBOP_SVC_KEI_STAT)) {
//			dataMap.put("sbop_svc_kei_stat", new String());
//		} else {
//			dataMap.put("sbop_svc_kei_stat", parentTemplate.getString(EKK0411C040CBSMsg.SBOP_SVC_KEI_STAT));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.照査年月日 ← 照査年月日
//		if (parentTemplate.isNull(EKK0411C040CBSMsg.SHOSA_YMD)) {
//			dataMap.put("shosa_ymd", new String());
//		} else {
//			dataMap.put("shosa_ymd", parentTemplate.getString(EKK0411C040CBSMsg.SHOSA_YMD));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.照査取消年月日 ← 照査取消年月日
//		if (parentTemplate.isNull(EKK0411C040CBSMsg.SHOSA_CL_YMD)) {
//			dataMap.put("shosa_cl_ymd", new String());
//		} else {
//			dataMap.put("shosa_cl_ymd", parentTemplate.getString(EKK0411C040CBSMsg.SHOSA_CL_YMD));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.契約締結年月日 ← 契約締結年月日
//		if (parentTemplate.isNull(EKK0411C040CBSMsg.KEI_CNC_YMD)) {
//			dataMap.put("kei_cnc_ymd", new String());
//		} else {
//			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0411C040CBSMsg.KEI_CNC_YMD));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.予約適用年月日 ← 予約適用年月日
//		if (parentTemplate.isNull(EKK0411C040CBSMsg.RSV_APLY_YMD)) {
//			dataMap.put("rsv_aply_ymd", new String());
//		} else {
//			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0411C040CBSMsg.RSV_APLY_YMD));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.予約適用コード ← 予約適用コード
//		if (parentTemplate.isNull(EKK0411C040CBSMsg.RSV_APLY_CD)) {
//			dataMap.put("rsv_aply_cd", new String());
//		} else {
//			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0411C040CBSMsg.RSV_APLY_CD));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.更新年月日時分秒 ← 更新年月日時分秒
//		if (parentTemplate.isNull(EKK0411C040CBSMsg.UPD_DTM)) {
//			dataMap.put("upd_dtm", new String());
//		} else {
//			dataMap.put("upd_dtm", parentTemplate.getString(EKK0411C040CBSMsg.UPD_DTM));
//		}
//
//		// サブオプションサービス契約＜ISP＞照査締結SC.世代登録年月日時分秒（サブオプションサービス契約＜ISP＞） ← 世代登録年月日時分秒（サブオプションサービス契約＜ISP＞）
//		if (parentTemplate.isNull(EKK0411C040CBSMsg.KK0411_GENE_ADD_DTM)) {
//			dataMap.put("kk0411_gene_add_dtm", new String());
//		} else {
//			dataMap.put("kk0411_gene_add_dtm", parentTemplate.getString(EKK0411C040CBSMsg.KK0411_GENE_ADD_DTM));
//		}
//
//        
//        // エラー情報の設定
//        param = editErrorInfoEKK0411C040(param, templates, (Integer)return_code, mapNm);
//
//		//エラー情報のマップを取得
//		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
//		if(errList == null){
//			errList = new ArrayList<Object>();
//		}
//		// コントロールマップに設定
//		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
//        
//
//		return errList;
//	}


	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException 
	 * @since 2012.01.27
	 */
	public static HashMap<String, Object> editInMsgEKK0431C030(IRequestParameterReadOnly param, CAANMsg ekk0431a010Map, String idoDiv) throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK0431C030CBSMsg.class.getName());




		// テンプレートID
		template.set(EKK0431C030CBSMsg.TEMPLATEID, TID_EKK0431C030);

		// 機能コード（デフォルト：１）
		template.set(EKK0431C030CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);


		String op_svc_kei_no = ekk0431a010Map.getString(EKK0431A010CBSMsg1List.OP_SVC_KEI_NO);
		String sbop_svc_kei_no = ekk0431a010Map.getString(EKK0431A010CBSMsg1List.SBOP_SVC_KEI_NO);

		// サブオプションサービス契約＜電話＞照査締結SC.オプションサービス契約番号 → オプションサービス契約番号
		template.set(EKK0431C030CBSMsg.OP_SVC_KEI_NO, op_svc_kei_no);

		// サブオプションサービス契約＜電話＞照査締結SC.サブオプションサービス契約番号 → サブオプションサービス契約番号
		template.set(EKK0431C030CBSMsg.SBOP_SVC_KEI_NO, sbop_svc_kei_no);

		// サブオプションサービス契約＜電話＞照査締結SC.異動区分 → 異動区分
		template.set(EKK0431C030CBSMsg.IDO_DIV, idoDiv);

//		// サブオプションサービス契約＜電話＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前）
//		if (inMap == null || inMap.get("upd_dtm_bf") == null || "".equals(inMap.get("upd_dtm_bf"))) {
//			template.setNull(EKK0431C030CBSMsg.UPD_DTM_BF);
//		} else {
//			template.set(EKK0431C030CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
//		}
			

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK0431C030(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0431C030CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;

		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}

		// サブオプションサービス契約＜電話＞照査締結SC.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0431C030CBSMsg.OP_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("op_svc_kei_no_err")) {
				inMap.put("op_svc_kei_no_err", template.getString(EKK0431C030CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		// サブオプションサービス契約＜電話＞照査締結SC.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0431C030CBSMsg.SBOP_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("sbop_svc_kei_no_err")) {
				inMap.put("sbop_svc_kei_no_err", template.getString(EKK0431C030CBSMsg.SBOP_SVC_KEI_NO_ERR));
			}
		}
		// サブオプションサービス契約＜電話＞照査締結SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0431C030CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0431C030CBSMsg.IDO_DIV_ERR));
			}
		}
		// サブオプションサービス契約＜電話＞照査締結SC.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
		if (!template.isNull(EKK0431C030CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0431C030CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK0431C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;


		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		// サブオプションサービス契約＜電話＞照査締結SC.世代登録年月日時分秒（サブオプションサービス契約） ← 世代登録年月日時分秒（サブオプションサービス契約）
		if (parentTemplate.isNull(EKK0431C030CBSMsg.KK0401_GENE_ADD_DTM)) {
			dataMap.put("kk0401_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0401_gene_add_dtm", parentTemplate.getString(EKK0431C030CBSMsg.KK0401_GENE_ADD_DTM));
		}

		// サブオプションサービス契約＜電話＞照査締結SC.サブオプションサービス契約ステータス ← サブオプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0431C030CBSMsg.SBOP_SVC_KEI_STAT)) {
			dataMap.put("sbop_svc_kei_stat", new String());
		} else {
			dataMap.put("sbop_svc_kei_stat", parentTemplate.getString(EKK0431C030CBSMsg.SBOP_SVC_KEI_STAT));
		}

		// サブオプションサービス契約＜電話＞照査締結SC.照査年月日 ← 照査年月日
		if (parentTemplate.isNull(EKK0431C030CBSMsg.SHOSA_YMD)) {
			dataMap.put("shosa_ymd", new String());
		} else {
			dataMap.put("shosa_ymd", parentTemplate.getString(EKK0431C030CBSMsg.SHOSA_YMD));
		}

		// サブオプションサービス契約＜電話＞照査締結SC.照査取消年月日 ← 照査取消年月日
		if (parentTemplate.isNull(EKK0431C030CBSMsg.SHOSA_CL_YMD)) {
			dataMap.put("shosa_cl_ymd", new String());
		} else {
			dataMap.put("shosa_cl_ymd", parentTemplate.getString(EKK0431C030CBSMsg.SHOSA_CL_YMD));
		}

		// サブオプションサービス契約＜電話＞照査締結SC.契約締結年月日 ← 契約締結年月日
		if (parentTemplate.isNull(EKK0431C030CBSMsg.KEI_CNC_YMD)) {
			dataMap.put("kei_cnc_ymd", new String());
		} else {
			dataMap.put("kei_cnc_ymd", parentTemplate.getString(EKK0431C030CBSMsg.KEI_CNC_YMD));
		}

		// サブオプションサービス契約＜電話＞照査締結SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK0431C030CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK0431C030CBSMsg.RSV_APLY_YMD));
		}

		// サブオプションサービス契約＜電話＞照査締結SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0431C030CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0431C030CBSMsg.RSV_APLY_CD));
		}

		// サブオプションサービス契約＜電話＞照査締結SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0431C030CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0431C030CBSMsg.UPD_DTM));
		}

		// サブオプションサービス契約＜電話＞照査締結SC.世代登録年月日時分秒（サブオプションサービス契約＜電話＞） ← 世代登録年月日時分秒（サブオプションサービス契約＜電話＞）
		if (parentTemplate.isNull(EKK0431C030CBSMsg.KK0431_GENE_ADD_DTM)) {
			dataMap.put("kk0431_gene_add_dtm", new String());
		} else {
			dataMap.put("kk0431_gene_add_dtm", parentTemplate.getString(EKK0431C030CBSMsg.KK0431_GENE_ADD_DTM));
		}

        
        // エラー情報の設定
        param = editErrorInfoEKK0431C030(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}


	/**
	 * EZM0111D010 エイジング対象登録S-IF 入力マップ編集
	 * 
	 * @param param
	 * @param agingSbtCd
	 * @param agingValue
	 * @return
	 * @throws RequestParameterException
	 * @since 2012.02.03
	 */
	public static HashMap<String, Object> editInMsgEZM0111D010(IRequestParameterReadOnly param, String agingSbtCd, String agingValue)
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EZM0111D010CBSMsg.class.getName());


		// テンプレートID
		template.set(EZM0111D010CBSMsg.TEMPLATEID, JKKSvkeiShosaCC.MAP_KEY_EZM0111D010);


		// 機能コード（デフォルト：１）
		template.set(EZM0111D010CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

//		// 作業領域の取得
//		Map workMap = (Map)param.getMappingWorkArea();


		// エイジング対象登録マップ.エイジング種別コード → エイジング種別コード
		template.set(EZM0111D010CBSMsg.AGING_SBT_CD, agingSbtCd);

		// エイジング対象登録マップ.エイジング対象値 → エイジング対象値
		template.set(EZM0111D010CBSMsg.AGING_TG_VALUE, agingValue);

		// エイジング対象登録マップ.使用開始年月日時分秒 → 使用開始年月日時分秒
		template.set(EZM0111D010CBSMsg.USE_STA_DTM, JCCBPCommon.getOpeDateTimeStamp(null));


		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws RequestParameterException 
	 * @since 2012.02.03
	 */
	@SuppressWarnings("unchecked")
	private static IRequestParameterReadWrite editErrorInfoEZM0111D010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)
	throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EZM0111D010CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		/* ユーザデータ情報 */
		HashMap inMap = (HashMap)param.getData(JKKSvkeiShosaConstCC.TRGT_DATA);

		// エイジング対象登録マップ.エイジング種別コード → エイジング種別コード のエラー情報返却
		if (!template.isNull(EZM0111D010CBSMsg.AGING_SBT_CD_ERR)) {
			if (!inMap.containsKey("aging_sbt_cd_err")) {
				inMap.put("aging_sbt_cd_err", template.getString(EZM0111D010CBSMsg.AGING_SBT_CD_ERR));
			}
		}
		// エイジング対象登録マップ.エイジング対象値 → エイジング対象値 のエラー情報返却
		if (!template.isNull(EZM0111D010CBSMsg.AGING_TG_VALUE_ERR)) {
			if (!inMap.containsKey("aging_tg_value_err")) {
				inMap.put("aging_tg_value_err", template.getString(EZM0111D010CBSMsg.AGING_TG_VALUE_ERR));
			}
		}
		// エイジング対象登録マップ.使用開始年月日時分秒 → 使用開始年月日時分秒 のエラー情報返却
		if (!template.isNull(EZM0111D010CBSMsg.USE_STA_DTM_ERR)) {
			if (!inMap.containsKey("use_sta_dtm_err")) {
				inMap.put("use_sta_dtm_err", template.getString(EZM0111D010CBSMsg.USE_STA_DTM_ERR));
			}
		}
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Exception 
	 * @since 2012.02.03
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEZM0111D010(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);


//		// エイジング対象登録マップ.エイジング番号 ← エイジング番号
//		if (parentTemplate.isNull(EZM0111D010CBSMsg.AGING_NO)) {
//			dataMap.put("aging_no", new String());
//		} else {
//			dataMap.put("aging_no", parentTemplate.getString(EZM0111D010CBSMsg.AGING_NO));
//		}

        // エラー情報の設定
        param = editErrorInfoEZM0111D010(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}
	
	// ST1-2012-0000139 2012/07/17 start
	/**
	 * EZM0111C020 エイジング対象回復S-IF 入力マップ編集
	 * 
	 * @param param
	 * @param agingSbtCd
	 * @param agingValue
	 * @return
	 * @throws RequestParameterException
	 * @since 2012.02.03
	 */
	public static HashMap<String, Object> editInMsgEZM0111C020(IRequestParameterReadOnly param, 
			String agingSbtCd, String agingValue, String lastUpdDtmBf)
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EZM0111C020CBSMsg.class.getName());


		// テンプレートID
		template.set(EZM0111C020CBSMsg.TEMPLATEID, JKKSvkeiShosaCC.MAP_KEY_EZM0111C020);


		// 機能コード
		template.set(EZM0111C020CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);


		// エイジング対象回復マップ.エイジング種別コード → エイジング種別コード
		template.set(EZM0111C020CBSMsg.AGING_SBT_CD, agingSbtCd);

		// エイジング対象登録マップ.エイジング対象値 → エイジング対象値
		template.set(EZM0111C020CBSMsg.AGING_TG_VALUE, agingValue);

		// エイジング対象登録マップ.更新前最終年月日時分秒 → 更新前最終年月日時分秒
		template.set(EZM0111C020CBSMsg.LAST_UPD_DTM_BF, lastUpdDtmBf);


		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Exception 
	 * @since 2012.07.17
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEZM0111C020(Map<?, ?> msgList, IRequestParameterReadWrite param)
	throws Exception
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);


//		// エイジング対象登録マップ.エイジング番号 ← エイジング番号
//		if (parentTemplate.isNull(EZM0111C020CBSMsg.AGING_NO)) {
//			dataMap.put("aging_no", new String());
//		} else {
//			dataMap.put("aging_no", parentTemplate.getString(EZM0111C020CBSMsg.AGING_NO));
//		}

        // エラー情報の設定
        param = editErrorInfoEZM0111C020(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return errList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws RequestParameterException 
	 * @since 2012.02.03
	 */
	@SuppressWarnings("unchecked")
	private static IRequestParameterReadWrite editErrorInfoEZM0111C020(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)
	throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EZM0111C020CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		/* ユーザデータ情報 */
		HashMap inMap = (HashMap)param.getData(JKKSvkeiShosaConstCC.TRGT_DATA);

		// エイジング対象登録マップ.エイジング種別コード → エイジング種別コード のエラー情報返却
		if (!template.isNull(EZM0111C020CBSMsg.AGING_SBT_CD_ERR)) {
			if (!inMap.containsKey("aging_sbt_cd_err")) {
				inMap.put("aging_sbt_cd_err", template.getString(EZM0111C020CBSMsg.AGING_SBT_CD_ERR));
			}
		}
		// エイジング対象登録マップ.エイジング対象値 → エイジング対象値 のエラー情報返却
		if (!template.isNull(EZM0111C020CBSMsg.AGING_TG_VALUE_ERR)) {
			if (!inMap.containsKey("aging_tg_value_err")) {
				inMap.put("aging_tg_value_err", template.getString(EZM0111C020CBSMsg.AGING_TG_VALUE_ERR));
			}
		}
		// エイジング対象登録マップ.使用開始年月日時分秒 → 使用開始年月日時分秒 のエラー情報返却
		if (!template.isNull(EZM0111C020CBSMsg.LAST_UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("last_upd_dtm_bf")) {
				inMap.put("last_upd_dtm_bf", template.getString(EZM0111C020CBSMsg.LAST_UPD_DTM_BF_ERR));
			}
		}
		return param;
	}
	// ST1-2012-0000139 2012/07/17 end
	
// ANK0546-00-00 2012-09-24 ADD_START
	/**
	 *<DL>
	 *<DT>処理概要:割賦契約照査
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static ArrayList<Object> editResultRPEKK2541C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapNm) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];


		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapNm);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapNm, dataMap);
		}
		
		// 割賦契約照査SC.割賦契約ステータス ← 割賦契約ステータス
		if (parentTemplate.isNull(EKK2541C030CBSMsg.KAP_KEI_STAT)) {
			dataMap.put("kap_kei_stat", new String());
		} else {
			dataMap.put("kap_kei_stat", parentTemplate.getString(EKK2541C030CBSMsg.KAP_KEI_STAT));
		}
		
		// 割賦契約照査SC.異動区分 ← 異動区分
		if (parentTemplate.isNull(EKK2541C030CBSMsg.IDO_DIV)) {
			dataMap.put("ido_div", new String());
		} else {
			dataMap.put("ido_div", parentTemplate.getString(EKK2541C030CBSMsg.IDO_DIV));
		}
		
		// 割賦契約照査SC.世代登録年月日時分秒 ← 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK2541C030CBSMsg.GENE_ADD_DTM)) {
			dataMap.put("gene_add_dtm", new String());
		} else {
			dataMap.put("gene_add_dtm", parentTemplate.getString(EKK2541C030CBSMsg.GENE_ADD_DTM));
		}
		
		// 割賦契約照査SC.予約適用年月日 ← 予約適用年月日
		if (parentTemplate.isNull(EKK2541C030CBSMsg.RSV_APLY_YMD)) {
			dataMap.put("rsv_aply_ymd", new String());
		} else {
			dataMap.put("rsv_aply_ymd", parentTemplate.getString(EKK2541C030CBSMsg.RSV_APLY_YMD));
		}

		// 割賦契約照査SC.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK2541C030CBSMsg.RSV_APLY_CD)) {
			dataMap.put("rsv_aply_cd", new String());
		} else {
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK2541C030CBSMsg.RSV_APLY_CD));
		}

		// 割賦契約照査SC.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK2541C030CBSMsg.UPD_DTM)) {
			dataMap.put("upd_dtm", new String());
		} else {
			dataMap.put("upd_dtm", parentTemplate.getString(EKK2541C030CBSMsg.UPD_DTM));
		}
		
        // エラー情報の設定
        param = editErrorInfoEKK2541C030(param, templates, (Integer)return_code, mapNm);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        
		return errList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.27
	 */
	@SuppressWarnings("unchecked")
	public static IRequestParameterReadWrite editErrorInfoEKK2541C030(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String mapNm)
	throws Throwable {
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK2541C030CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapNm);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapNm, inMap);
		}
		
		// 割賦契約照査SC.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK2541C030CBSMsg.KAP_KEI_NO_ERR)) {
			if (!inMap.containsKey("kap_kei_no_err")) {
				inMap.put("kap_kei_no_err", template.getString(EKK2541C030CBSMsg.KAP_KEI_NO_ERR));
			}
		}
		
		// 割賦契約照査SC.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK2541C030CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK2541C030CBSMsg.IDO_DIV_ERR));
			}
		}
		
		// 割賦契約照査SC.更新年月日時分秒(更新前) → 更新年月日時分秒(更新前) のエラー情報返却
		if (!template.isNull(EKK2541C030CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK2541C030CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		
		return param;
	}
	
// ANK0546-00-00 2012-09-24 ADD_END
	
	// AMK-1578-00-00 ADD START
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param ekk0171a010Map 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.01.27
	 */
	public static HashMap<String, Object> editInMsgEKK2811C050(IRequestParameterReadOnly param, CAANMsg ekk2811a010Map, String idoDiv)
	throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg template = new CAANMsg(EKK2811C050CBSMsg.class.getName());



		// テンプレートID
		template.set(EKK2811C050CBSMsg.TEMPLATEID, TID_EKK2811C050);

		// 機能コード（デフォルト：１）
		template.set(EKK2811C050CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		String kkop_svc_kei_no = ekk2811a010Map.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_NO);

		// 機器オプションサービス契約照査締結SC.機器オプションサービス契約番号 → 機器オプションサービス契約番号
		template.set(EKK2811C050CBSMsg.KKOP_SVC_KEI_NO, kkop_svc_kei_no);

		// 機器オプションサービス契約照査締結SC.異動区分 → 異動区分
		template.set(EKK2811C050CBSMsg.IDO_DIV, idoDiv);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	// AMK-1578-00-00 ADD END
}
