/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSeikyKeiHenkoCC
*	ソースファイル名：JKKSeikyKeiHenkoCC.java
*	作成者			：FAP)馬場
*	日付			：2012年06月04日
*＜機能概要＞
*	請求契約変更の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/06/04	FJ)馬場		新規作成
*	v2.00.00	2012/09/01	FJ)磯俣		ST1-2012-0000496対応(オーソリ世代年月をクレジット審査依頼から取得)
*	v4.00.00	2012/09/27	FJ)磯俣		ANK-0398-00-00対応(住所登録)
*	v4.00.01	2012/10/09	FJ)磯俣		IT1-2012-1189(回線内訳内容変更の排他制御)
*	v4.00.02	2012/11/01	FJ)磯俣		ANK-1223(進捗登録への設定値変更)
*	v4.00.03	2012/11/20	FJ)磯俣		IT2-1732(CHW00101からの遷移対応)
*	v4.00.04	2012/11/30	FJ)磯俣		IT1-0002055(未来日で割引を呼ばない)
*	v4.00.05    2012/12/17  FJ)磯俣		契約ステータスの最大値追加
*	v4.00.06    2012/12/22  FJ)磯俣		クレジットおよび口座の更新年月日の設定値を変更
*	v4.00.07    2013/01/29  FJ)磯俣		ST2-2013-0000365 請求オプションの終了日を適用年月日で強制上書きする
*	v4.01.00    2013/02/20  FJ)間瀬		【ST3-2013-0000040】対応
*	v4.01.08    2013/02/20  FJ)間瀬		【ST3-2013-0000475】割引CC呼出しを最後で処理する
*	v4.00.09    2013/03/07  FJ)磯俣		【IT1-2013-0000396】クレカードチェックNGの場合エラーにする。
*	v4.00.10    2013/03/16  FJ)磯俣		【IT1-2013-0000496】審査スキーマ更新処理追加。
*	v4.00.11	2013/05/10	FJ)磯俣		【ST3-2013-0001194】初期表示時、適用年月日が非活性時の取得対応
*	v4.00.12	2013/05/30  FJ)磯俣		【IT1-2013-0001246】進捗修正
*	v4.00.13	2013/07/10	FJ)磯俣		【TG1-2013-0000658】プラン終了種別コードを削除
*	v4.00.14	2013/07/25	FJ)磯俣		【IT2-2013-0000665】審査結果を登録する
*	v4.00.15	2013/08/13	FJ)磯俣		【OT-2013-0000709】与信結果用の進捗登録追加
*	v4.00.16	2013/09/15	FJ)稲岡		【OT-2013-0001762】クレジット請求手続 項目追加(クレジットカード無効年月)
*	v4.00.17	2013/09/22	FJ)磯俣		【OM-2013-0002472】EKK0441C070呼び出し時のIN世代年月を各オプションのOUTから取得
*	v5.00.00	2013/11/22	FJ)磯俣		【OM-2013-0004505】
*	v6.00.00	2013/12/11	FJ)磯俣		【OM-2013-0004841】未来の場合、進捗年月日時分秒を設定する
*	v8.00.00	2014/03/07	FJ)磯俣		【IT1-2014-0000075】受付済の場合、呼び出さないＩＦをＭＩＮＥＯでは呼び出す
*	v8.00.01	2014/06/11	FJ)磯俣		【OM-2014-0002048】請求スキーマにあるSYSIDを使用しない
*	v8.00.02	2014/06/23	FJ)稲岡		【OM-2014-0002173】口座・クレジットカードスキーマレコード追加判定処理追加
*	v8.00.03	2014/07/11	FJ)山下		ANK-1989-00-00対応
*	v20.00.00	2015/09/17	FJ)山口		【ANK-2073-00-00】支払方法通知メール制御コード変更サービスＩＦの呼び出しを追加
*	v20.00.01	2015/11/20	FJ)川島		【ANK-2565-00-00】クレジットカード番号預かりサービス導入（Step3：預かり番号化）
*	v20.00.02	2015/12/15	FJ)川島		【IT1-2015-0000153】対応
*	v24.00.00	2015/10/16	FJ)柿坂		【ANK-2691-00-00】請求書発行手数料の見直し対応
*	v23.00.00	2016/02/18	FJ)中山		【OM-2016-0000145】請求契約変更の支払方法変更もれ対応
*	v23.00.01	2016/04/18	FJ)謝		【ANK-2810-00-00】クレジットカード番号並行保持期間終了に伴うマスク化対応
*	v36.00.00	2017/12/18	FJ)謝		【ANK-3313-00-00】クレジットカード非通過対応
*	v36.00.01	2018/04/09	FJ)黒田(耕)	【ANK-3411-00-00】【eo電気】電気単独時の照査前登録における進捗登録対応
*	v45.00.00	2019/07/18	FJ)上間		【ANK-3602-00-00】特定クレジットカードの売上オーソリ実施対応
*	v45.00.01	2019/09/27	FJ)謝		【OM-2019-0001078】対応
*	v58.00.00	2022/04/12	GDC)M. Gungog	【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
*	v58.00.01	2022/06/07	FJ)謝		【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
*   v58.00.02   2022/07/25   FJ)星野     【IT1-2022-0000041】オーソリNG時、カード受付情報の登録不可事象への対応
*	v58.00.03	2022/08/19	FJ)謝		【ST-2022-0000014】対応
*	v66.00.00   2023/05/19   FJ)謝      【ANK-4408-00-00】口振請求及びWeb申込システム移行 事前対応
*	v67.00.00	2023/07/04	FJ)辻野		【ANK-4415-00-00】口振請求及びWeb申込システム移行 STEP1
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.ErrorInfoMapKeys;
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.common.constant.JKKFamiilyPackConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKCommonUtil;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B011CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441C070CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441C210CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441C230CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441C240CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491C240CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491C250CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0501C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0501C080CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0501C090CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0501D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0521A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0521A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0521C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0521C110CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0521C120CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0521D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0531A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0531A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1031D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0010003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0010004CBSMsg;


/**
 * 請求契約変更処理を行います。<p>
 * <BR>
 * @author 富士通
 */
public class JKKSeikyKeiHenkoCC extends AbstractCommonComponent
{
	
	/** テンプレートID(EKK0011D020) 申込内容承認登録 */
	private static final String TEMPLATE_ID_EKK0011D020 = "EKK0011D020";
	/** テンプレートID(EKK0491C060) 請求契約内容変更 */
	private static final String TEMPLATE_ID_EKK0491C060 = "EKK0491C060";
	/** テンプレートID(EKK0501D010) 口振手続 */
	private static final String TEMPLATE_ID_EKK0501D010 = "EKK0501D010";
	/** テンプレートID(EKK0501C030) 口振審査依頼 */
	private static final String TEMPLATE_ID_EKK0501C030 = "EKK0501C030";
	/** テンプレートID(EKK0501C080) 口振審査結果OK登録 */
	private static final String TEMPLATE_ID_EKK0501C080 = "EKK0501C080";
	/** テンプレートID(EKK0501C090) 口振審査結果NG登録 */
	private static final String TEMPLATE_ID_EKK0501C090 = "EKK0501C090";
	/** テンプレートID(EKK0521D010) クレジット請求手続 */
	private static final String TEMPLATE_ID_EKK0521D010 = "EKK0521D010";
	/** テンプレートID(EKK0521C030) クレジット審査依頼 */
	private static final String TEMPLATE_ID_EKK0521C030 = "EKK0521C030";
	/** テンプレートID(EKK0521C110) クレジット審査結果OK登録 */
	private static final String TEMPLATE_ID_EKK0521C110 = "EKK0521C110";
	/** テンプレートID(EKK0521C120) クレジット審査結果NG登録 */
	private static final String TEMPLATE_ID_EKK0521C120 = "EKK0521C120";
	/** テンプレートID(EKK0491C240) 請求支払先変更 */
	private static final String TEMPLATE_ID_EKK0491C240 = "EKK0491C240";
	/** テンプレートID(EKK1031D010) クレジット初回オーソリ登録 */
	private static final String TEMPLATE_ID_EKK1031D010 = "EKK1031D010";
	/** テンプレートID(EKK0441D010) 請求オプションサービス契約登録 */
	private static final String TEMPLATE_ID_EKK0441D010 = "EKK0441D010";
	/** テンプレートID(EKK0441C030) 請求オプションサービス契約照査 */
	private static final String TEMPLATE_ID_EKK0441C030 = "EKK0441C030";
	/** テンプレートID(EKK0441C040) 請求オプションサービス契約締結 */
	private static final String TEMPLATE_ID_EKK0441C040 = "EKK0441C040";
	/** テンプレートID(EKK0441C070) 請求オプションサービス契約開始 */
	private static final String TEMPLATE_ID_EKK0441C070 = "EKK0441C070";
	/** テンプレートID(EKK0441C060) 請求オプションサービス契約予約適用年月日 */
	private static final String TEMPLATE_ID_EKK0441C060 = "EKK0441C060";
	/** テンプレートID(EKK0441C210) 請求オプションサービス契約キャンセル */
	private static final String TEMPLATE_ID_EKK0441C210 = "EKK0441C210";
	/** テンプレートID(EKK0441C230) 請求オプションサービス契約解約 */
	private static final String TEMPLATE_ID_EKK0441C230 = "EKK0441C230";
	/** テンプレートID(EKK0441C240) 請求オプションサービス契約解約確定 */
	private static final String TEMPLATE_ID_EKK0441C240 = "EKK0441C240";
	/** テンプレートID(EKK1091D010) 進捗登録 */
	private static final String TEMPLATE_ID_EKK1091D010 = "EKK1091D010";
	/* ++++++++++ v8.00.03 追加開始 ++++++++++ */
	/** テンプレートID(EKK0021B011) 申込書番号存在チェック一覧照会 */
	private static final String TEMPLATE_ID_EKK0021B011 = "EKK0021B011";
	/* ++++++++++ v8.00.03 追加開始 ++++++++++ */
	/** テンプレートID(EKK0021C060) 申込明細照査後続業務依頼 */
	private static final String TEMPLATE_ID_EKK0021C060 = "EKK0021C060";
	/** テンプレートID(EKK0251A010_) サービス契約回線内訳一意照会 */
	private static final String TEMPLATE_ID_EKK0251A010 = "EKK0251A010";
	/** テンプレートID(EKK0251C030) サービス契約回線内訳内容変更 */
	private static final String TEMPLATE_ID_EKK0251C030 = "EKK0251C030";
	
	/* ++++++++++ v4.00.10 追加開始 ++++++++++ */
	/** 審査結果反映CC 連携キー */
	private static final String JUDGE_UPDATE_MAP = "judge_update_map";
	/* ++++++++++ v4.00.10 追加完了 ++++++++++ */

	// ANK-2073-00-00 ADD START
	/** テンプレートID(EKK0491C250) 支払方法通知メール制御コード変更 */
	private static final String TEMPLATE_ID_EKK0491C250 = "EKK0491C250";
	// ANK-2073-00-00 ADD END
	
// ANK-2565-00-00 ADD START
// ANK-3313-00-00 DEL START
//	/** テンプレートID(EKK0531B502) 仕向先会社コード一覧照会 */
//	private static final String TEMPLATE_ID_EKK0531B502 = "EKK0531B502";
// ANK-3313-00-00 DEL END
// ANK-3846-00-00 MOD START
//	/** テンプレートID(EKKA0010001) 初回オーソリ依頼 */
//	private static final String TEMPLATE_ID_EKKA0010001 = "EKKA0010001";
	/** テンプレートID(EKKA0010004) 決済オーソリ依頼 */
	private static final String TEMPLATE_ID_EKKA0010004 = "EKKA0010004";
// ANK-3846-00-00 MOD END
// ANK-3846-00-00 MOD START
	/** テンプレートID(EKKA0010003) 預かりオーソリ依頼 */
	private static final String TEMPLATE_ID_EKKA0010003 = "EKKA0010003";
// ANK-3846-00-00 MOD END
// ANK-3313-00-00 ADD START
	/** テンプレートID(EKK0531A010) クレジットカード会社一意照会 */
	private static final String TEMPLATE_ID_EKK0531A010 = "EKK0531A010";
// ANK-3313-00-00 ADD END
// OM-2019-0001078 ADD START
	/** テンプレートID(EKK0521A010) クレジットカード一意照会 */
	private static final String TEMPLATE_ID_EKK0521A010 = "EKK0521A010";
// OM-2019-0001078 ADD END
	
// ANK-3313-00-00 DEL START
//	/** マップキー(KKSV040530SC) 仕向先会社コード一覧照会マップ */
//	private static final String MAP_KEY_KKSV040530SC = "KKSV040530SC";
// ANK-3313-00-00 DEL END
	/** マップキー(KKSV040531SC) 初回オーソリ依頼マップ */
	private static final String MAP_KEY_KKSV040531SC = "KKSV040531SC";
// ANK-3313-00-00 ADD START
	/** マップキー(KKSV040532SC) クレジットカード会社一意照会マップ */
	private static final String MAP_KEY_KKSV040532SC = "KKSV040532SC";
// ANK-3313-00-00 ADD END
	
	/** プレフィックス クレジット請求手続マップ */
	private static final String PREFIX_KKSV040510 = "kksv040510_";
	/** プレフィックス クレジットオーソリ実績登録 */
	private static final String PREFIX_KKSV040512 = "kksv040512_";
	
	/** 承認結果コード オーソリＯＫ */
	public static final String SNN_RSLT_CD_OK = "0";
	/** 承認結果コード オーソリＯＫ */
	public static final String SNN_RSLT_CD_NG = "1";
	/** 承認結果コード システムエラー */
	public static final String SNN_RSLT_CD_ERR = "9";
	
	/** オーソリ判定用コード ＯＫ */
	private static final String AUTHORI_CD_OK = "00";
	/** オーソリ判定用コード ＮＧ<br>
	 * ・1000100(承認不可(残他不足、割賦指定誤り、他))<br>
	 * ・1000101(承認不可(有効期限エラー))<br>
	 * ・1000110(承認不可(取引金額制限、他))<br>
	 * ・1000121(承認不可(カード番号エラー))<br>
	 * ・1000200(承認不可(カード事故、無効カード、他))<br>
	 * */
	private static final String[] AUTHORI_CD_NG = {"1000100", "1000101", "1000110", "1000121", "1000200"};
// ANK-2565-00-00 ADD END
// ANK-3846-00-00 ADD START
	// マーチャントＩＤ
	private static final String PY_MERCHANT_ID = "PAYGENT_MERCHANT_ID";
	// 接続ID
	private static final String PY_CONNECT_ID = "PAYGENT_CONNECT_ID";
	// 接続パスワード
	private static final String PY_CONNECT_PASSWORD = "PAYGENT_CONNECT_PASSWORD";
	// 電文バージョン番号
	private static final String PY_TELEGRAM_VERSION = "PAYGENT_TELEGRAM_VERSION";
	// 決済金額
	private static final String PY_PAYMENT_AMOUNT = "1";
	// サイトID
	private static final String PY_SITE_ID = "4211";
// ANK-3846-00-00 ADD END
// ANK-3846-00-00 ADD START
	/** セキュリティコード利用:利用しない */
	private static final String PY_SECURITY_CODE_USE_NO = "0";
	/** EKKA0010003/EKKA0010004：処理結果コード  */
	private static final String PY_RESULTCODE = "py_resultcode";
	/** EKKA0010003/EKKA0010004：レスポンスコード */
	private static final String PY_RESPONSE_CODE = "py_response_code";
	/** EKKA0010003/EKKA0010004：レスポンス詳細 */
	private static final String PY_RESPONSE_DETAIL = "py_response_detail";
	/** EKKA0010003/EKKA0010004：イシュア区分 */
	private static final String PY_ISSUR_CLASS = "py_issur_class";
	/** EKKA0010003/EKKA0010004：取扱カード会社コード */
	private static final String PY_ACQ_ID = "py_acq_id";
	/** EKKA0010003/EKKA0010004：マスクされたカード番号 */
	private static final String PY_MASKED_CARD_NUMBER = "py_masked_card_number";
	/** EKKA0010003/EKKA0010004：カード有効期限 */
	private static final String PY_CARD_VALID_TERM = "py_card_valid_term";
	/** EKKA0010003/EKKA0010004：デビット・プリペイド判定結果 */
	private static final String PY_DEBIT_PREPAID_TYPE = "py_debit_prepaid_type";
	/** EKKA0010003/EKKA0010004：カードブランド */
	private static final String PY_CARD_BRAND = "py_card_brand";
// ANK-3846-00-00 ADD END

	
	/**
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite seikyKeiHenko(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 実行判定用の値を取得する
		// 機能コード
		String funcCd = (String)ccMsg.get("func_code");
		
		// サービス契約ステータスコード（ネット）
		int svcKeiStatCdNet = 0;
//		if(ccMsg.containsKey("kksv0405work_svc_kei_stat_cd_net"))
//		{
//			svcKeiStatCdNet = Integer.parseInt(ccMsg.get("kksv0405work_svc_kei_stat_cd_net").toString());
//		}
		// サービス契約ステータスコード
		String stateCdMax = (String)ccMsg.get("svc_kei_stat_cd_max");
		if(stateCdMax != null && !"".equals(stateCdMax))
		{
			svcKeiStatCdNet = Integer.parseInt(stateCdMax);
		}
		// 支払方法コード
		String paywayCd = (String)ccMsg.get("kksv0405work_payway_cd");
		// 支払審査結果コード
		String paywayPaySkekkaCd = (String)ccMsg.get("kksv0405work_payway_pay_skekka_cd");
		// 請求オプションサービス契約登録フラグ
		String seiOpSvcKeiInsFlg = (String)ccMsg.get("kksv0405work_seiopsvc_kei_ins_flg");
		// 請求オプションサービス契約解約フラグ
		String seiOpSvcKeiDslFlg = (String)ccMsg.get("kksv0405work_seiopsvc_kei_dsl_flg");
		// 請求オプションサービス契約ステータス
		String seiOpSvcKeiStat = (String)ccMsg.get("kksv0405work_seiopsvc_kei_stat");
		// 未来日実行フラグ
		String futureFlg = (String)ccMsg.get("kksv0405work_future_flg");
		// サービス契約回線内訳実行フラグ
		String ekk0251RunFlg = (String)ccMsg.get("ekk0251_run_flg");
		// 異動区分
		String ido_div = (String)ccMsg.get("kksv0405work_ido_div");
// ++++++++++ v8.00.02 追加開始 ++++++++++
		// 口座・クレジットカードスキーマレコード追加判定フラグ
		boolean recordAddFlg = (Boolean)ccMsg.get("record_add_flg");
// ++++++++++ v8.00.02 追加終了 ++++++++++
		
		
		// 割引ＣＣ呼び出し判定フラグ
		boolean optKaiyaku = false;
		boolean optTouroku = false;
		
// ANK-2565-00-00 ADD START
		// 初回オーソリ実行フラグ
		boolean isFauthori = false;
// ANK-2565-00-00 ADD END
		
		// 明細情報の取得
		ArrayList<HashMap<String, Object>> svc_list = (ArrayList)ccMsg.get("KKSV040501CCList"); 
		HashMap<String, Object> childMap = new HashMap<String, Object>();
		
		if(svc_list != null && svc_list.size() > 0)
		{
			childMap = svc_list.get(0);
			
			// サービス契約リスト.サービス契約ステータスコード
			String listSvcstateCd = (String)childMap.get("kksv040501_svc_kei_stat_cd");
			
// ++++++++++ v8.00.00 変更開始 ++++++++++
			// サービスコード
			String svc_cd = (String) ccMsg.get("kksv0405work_svc_cd");
			// 受付済の場合に行う処理フラグ
			boolean ukState = false;
			
			// サービス契約ステータスが「受付済」の場合
			if("010".equals(listSvcstateCd))
			{
// ANK-3411-00-00 MOD START
//				// サービスがＭＩＮＥＯの場合
//				if(svc_cd.equals("51"))
				// サービスがＭＩＮＥＯ、電気の場合
				if(svc_cd.equals("51") || svc_cd.equals(JKKStrConst.CD00130_05))
// ANK-3411-00-00 MOD END
				{
					ukState = true;
				}
			}
			else
			{
				ukState = true;
			}
			
			// サービス契約ステータスが「受付済」でない場合か、「受付済」でＭＩＮＥＯ、電気の場合
//			if(!"010".equals(listSvcstateCd))
			if(ukState)
			{
// ++++++++++ v8.00.00 変更終了 ++++++++++
				
				// 申込内容承認登録
				execEKK0011D020(handle, param, scCall, ccMsg, childMap);
			}
			
			
			// 登録／変更区分
			String optKaiyakuCd = "";
			String optKaiyakuSvckeiStat = "";
			// 登録／変更区分
			String optTourokuCd = "";
			String opTourokuSvckeiStat = "";
			
			// 請求契約内容変更
			execEKK0491C060(handle, param, scCall, ccMsg, childMap);
			
// ++++++++++ v8.00.02 変更開始 ++++++++++
			// 支払方法コードが"2"か"3"の場合
			if("2".equals(paywayCd) || "3".equals(paywayCd))
			{
				if(recordAddFlg)
				{
					// 口振手続作成時新規コード取得CC
					execKozaNewCd(handle, param, ccMsg, childMap);
					
					// 口振手続
					execEKK0501D010(handle, param, scCall, ccMsg, childMap);
					
					// 口振審査依頼
					execEKK0501C030(handle, param, scCall, ccMsg, childMap);
					
					// 支払審査結果コードが"0"の場合
					if("0".equals(paywayPaySkekkaCd))
					{
						// 口振審査結果OK登録
						execEKK0501C080(handle, param, scCall, ccMsg, childMap);
					}
					// 支払審査結果コードが"1"の場合
					else if("1".equals(paywayPaySkekkaCd))
					{
						// 口振審査結果NG登録
						execEKK0501C090(handle, param, scCall, ccMsg, childMap);
					}
				}
			}
			// 支払方法コードが"4"の場合
			else if("4".equals(paywayCd))
			{
				if(recordAddFlg)
				{
// ANK-2565-00-00 ADD START
					// 審査結果コードが未設定の場合
					if(JKKCommonUtil.isNull(paywayPaySkekkaCd))
					{
// ANK-3313-00-00 DEL START
//						// 仕向先会社コード一覧照会
//						execEKK0531B502(handle, param, scCall, ccMsg, childMap);
// ANK-3313-00-00 DEL END
						
						// 更新モードの場合
						if(JPCModelConstant.FUNC_CD_1.equals(ccMsg.get(JCMConstants.FUNC_CODE_KEY)))
						{
// ANK-3846-00-00 MOD START
//							// 初回オーソリ依頼
//							execEKKA0010001(handle, param, scCall, ccMsg, childMap);
							// 初回オーソリ依頼マップ
							HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
							
							// トークン
							String token = (String)kksv040531sc.get("token");
							
							if (JKKCommonUtil.isNull(token))
							{
								// 決済オーソリ依頼
								execEKKA0010004(handle, param, scCall, ccMsg, childMap);
							}
							else
							{
								// 預かりオーソリ依頼
								execEKKA0010003(handle, param, scCall, ccMsg, childMap);
							}
// ANK-3846-00-00 MOD END
							
							// 初回オーソリ依頼実行判定
// ANK-3846-00-00 DEL START
//							// 初回オーソリ依頼マップ
//							HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
// ANK-3846-00-00 DEL END
// ANK-3846-00-00 MOD START
							// 処理結果コード
//							String trnRsltCd = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_RESULTCODE);
							String trnRsltCd = (String)kksv040531sc.get(PY_RESULTCODE);
// ANK-3846-00-00 MOD END
							// 承認結果コード
							String snnRsltCd = getFauthoriSnnRsltCd(trnRsltCd);
							
// ANK-3846-00-00 ADD START
							// response_codeに上記(2)で取得したレスポンスコードを設定する。
							String rspnsCd = (String)kksv040531sc.get(PY_RESPONSE_CODE);
							ccMsg.put("response_code", rspnsCd);
							// response_detailに上記(2)で取得したレスポンス詳細を設定する。
							String rspnsDtl = (String)kksv040531sc.get(PY_RESPONSE_DETAIL);
							ccMsg.put("response_detail", rspnsDtl);
// IT1-2022-0000041対応 20220725 星野 ADD START
							ccMsg.put(MAP_KEY_KKSV040531SC, kksv040531sc);
// IT1-2022-0000041対応 20220725 星野 ADD END
// ANK-3846-00-00 ADD END

							
							// 承認結果コードがシステムエラーの場合
							if(SNN_RSLT_CD_ERR.equals(snnRsltCd))
							{
								// エラーフラグを設定して処理を終了する。
								ccMsg.put("err_flg", "E_AUTHORI_ERR");
								editErrInfo(param);
								throw new CCException("サービスコンポーネントエラー", new Exception());
							}
							// 承認結果コードがオーソリＮＧの場合
							else if(SNN_RSLT_CD_NG.equals(snnRsltCd))
							{
								// エラーフラグを設定して処理を終了する。
								ccMsg.put("err_flg", "E_AUTHORI_NG");
								editErrInfo(param);
								throw new CCException("サービスコンポーネントエラー", new Exception());
							}
							
							// 進捗設定
							ccMsg.put("prg_stat", JKKFamiilyPackConst.CD00647_0800);
							
							isFauthori = true;
							
// ANK-3313-00-00 ADD START
							// クレジットカード会社一意照会
							execEKK0531A010(handle, param, scCall, ccMsg, childMap);
// ANK-3313-00-00 ADD END
						}
						
						// 支払い審査結果コードに審査ＯＫを設定
						childMap.put("kksv040513_pay_skekka_cd", JKKFamiilyPackConst.CD00249_40);
					}
// ANK-2565-00-00 ADD END
					
// ANK-3313-00-00 ADD START
					// 更新モードの場合
					if(JPCModelConstant.FUNC_CD_1.equals(ccMsg.get(JCMConstants.FUNC_CODE_KEY)))
					{
// ANK-3313-00-00 ADD END
// OM-2019-0001078 ADD START
						// 初回オーソリ依頼マップ
						HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
// ANK-3846-00-00 MOD START
//						// カード種別
//						String crecardSbtCd = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_CARD_TYPE);
//						// イシュア区分
//						String crdtIssuerDiv = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_ISSUER_CLASS);
						
						// デビット・プリペイド判定結果
						String crecardSbtCd = (String)kksv040531sc.get(PY_DEBIT_PREPAID_TYPE);
						// イシュア区分
						String crdtIssuerDiv = (String)kksv040531sc.get(PY_ISSUR_CLASS);
// ANK-3846-00-00 MOD END
						// カード種別、イシュア区分のどちらかが存在しない場合
						if (JKKCommonUtil.isNull(crecardSbtCd) || JKKCommonUtil.isNull(crdtIssuerDiv))
						{
							// クレジットカード一意照会
							execEKK0521A010(handle, param, scCall, ccMsg, childMap);
						}
// OM-2019-0001078 ADD END
						// クレジット請求手続
						execEKK0521D010(handle, param, scCall, ccMsg, childMap);
// ANK-3313-00-00 ADD START
					}
// ANK-3313-00-00 ADD END
					
					// クレジット審査依頼
					execEKK0521C030(handle, param, scCall, ccMsg, childMap);
					
// ANK-2565-00-00 MOD START
//					// 支払審査結果コードが"0"の場合
//					if("0".equals(paywayPaySkekkaCd))
					
					// 支払審査結果コードが未設定、または支払審査結果コードが"0"の場合
					if(JKKCommonUtil.isNull(paywayPaySkekkaCd) || "0".equals(paywayPaySkekkaCd))
// ANK-2565-00-00 MOD END
					{
						// クレジット審査結果OK登録
						execEKK0521C110(handle, param, scCall, ccMsg, childMap);
					}
					// 支払審査結果コードが"1"の場合
					else if("1".equals(paywayPaySkekkaCd))
					{
						// クレジット審査結果NG登録
						execEKK0521C120(handle, param, scCall, ccMsg, childMap);
					}
				}
			}
			
			
			if(recordAddFlg)
			{
				// 請求支払先変更
				execEKK0491C240(handle, param, scCall, ccMsg, childMap);
				
				// 支払方法コードが"4"かつ支払審査結果コードが設定されていない場合
				if("4".equals(paywayCd) && ("".equals(paywayPaySkekkaCd) || paywayPaySkekkaCd == null))
				{
// ANK-3313-00-00 ADD START
					// 更新モードの場合
					if(JPCModelConstant.FUNC_CD_1.equals(ccMsg.get(JCMConstants.FUNC_CODE_KEY)))
					{
// ANK-3313-00-00 ADD END
						// クレジット初回オーソリ登録
						execEKK1031D010(handle, param, scCall, ccMsg, childMap);
// ANK-3313-00-00 ADD START
					}
// ANK-3313-00-00 ADD END
				}
			}
// ++++++++++ v8.00.02 変更終了 ++++++++++
			
			// 請求契約変更で料金グループが更新対象のグループの場合
			if("00015".equals(ido_div) && "1".equals(ekk0251RunFlg))
			{
				// サービス契約回線内訳一意照会検索を行いカレントを登録する
				execEKK0251A010(handle, param, scCall, ccMsg, childMap);
				
				// サービス契約回線内訳内容変更
				execEKK0251C030(handle, param, scCall, ccMsg, childMap);
			}
			
			
			
			// 請求オプションサービス契約解約フラグが"1"の場合
			if("1".equals(seiOpSvcKeiDslFlg))
			{
				// 請求オプションサービス契約ステータスが"受付済"か"照査済"の場合
				if("010".equals(seiOpSvcKeiStat) || "020".equals(seiOpSvcKeiStat))
				{
					// 請求オプションサービス契約キャンセル
					execEKK0441C210(handle, param, scCall, ccMsg, childMap);
					optKaiyakuCd = "05";
				}
				else
				{
					// 請求オプションサービス契約解約
					execEKK0441C230(handle, param, scCall, ccMsg, childMap);
					
					// 確定処理の場合
					if("1".equals(funcCd))
					{
						// 請求オプションサービス契約解約確定
						execEKK0441C240(handle, param, scCall, ccMsg, childMap);
					}
					optKaiyakuCd = "03";
				}
				
				// 予約が登録される場合呼ばない(未来日の場合)
				if(!"1".equals(futureFlg))
				{
					optKaiyaku = true;
					optKaiyakuSvckeiStat = (String)childMap.get("wrisvcautoaplycc_seiopsvc_kei_stat");
					// 割引CC（請求オプションキャンセル、解約）
//					execWrisvcAutoAply(handle, param, ccMsg, childMap);
				}
			}
			
			
			
			// 請求オプションサービス契約登録フラグが"1"の場合
			if("1".equals(seiOpSvcKeiInsFlg))
			{
				
				// 請求オプションサービス契約登録
				execEKK0441D010(handle, param, scCall, ccMsg, childMap);
				
				// サービス契約ステータスコード（ネット）が"020"以上の場合
				if(20 <= svcKeiStatCdNet)
				{
					// 請求オプションサービス契約照査
					execEKK0441C030(handle, param, scCall, ccMsg, childMap);
				}
				
				// サービス契約ステータスコード（ネット）が"030"以上の場合
				if(30 <= svcKeiStatCdNet)
				{
					// 請求オプションサービス契約締結
					execEKK0441C040(handle, param, scCall, ccMsg, childMap);
				}
				
				// サービス契約ステータスコード（ネット）が"100"以上の場合
				if(100 <= svcKeiStatCdNet && svcKeiStatCdNet <= 220)
				{
					// 初回請求月
					String seikyYm = (String)childMap.get("kksv040505_first_seiky_ym");
					String svcChrgYmd = (String)childMap.get("kksv040519_svc_chrg_staymd");
					
					// 初回請求月が入力されておりサービス課金開始年月日がない場合エラーにする。
					if((seikyYm != null && !"".equals(seikyYm)) && (svcChrgYmd == null || "".equals(svcChrgYmd)))
					{
						ccMsg.put("err_flg","E_CHRG");
						return param;
					}
					
					// 請求オプションサービス契約開始
					execEKK0441C070(handle, param, scCall, ccMsg, childMap);
				}
				
				// 未来日実行フラグが"1"の場合
				if("1".equals(futureFlg))
				{
					// 請求オプションサービス契約予約適用年月日
					execEKK0441C060(handle, param, scCall, ccMsg, childMap);
				}
				
				// 予約が登録される場合呼ばない(未来日の場合)
				if(!"1".equals(futureFlg))
				{
					optTourokuCd = "01";
					optTouroku = true;
					opTourokuSvckeiStat = (String)childMap.get("wrisvcautoaplycc_seiopsvc_kei_stat");
					// 割引CC（請求オプション登録）
//					execWrisvcAutoAply(handle, param, ccMsg, childMap);
				}
			}
			
			// ANK-2073-00-00 ADD START
			// 支払方法通知メール制御コードが設定されている場合
			if(childMap.get("kksv040529_paywaytcml_ctl_cd") != null)
			{
				// 支払方法通知メール制御コード変更
				execEKK0491C250(handle, param, scCall, ccMsg, childMap);
			}
			// ANK-2073-00-00 ADD END
			
// ++++++++++ v8.00.00 変更開始 ++++++++++
			// サービス契約ステータスが「受付済」でない場合か、「受付済」でＭＩＮＥＯ、電気の場合
//			if(!"010".equals(listSvcstateCd))
			if(ukState)
			{
// ++++++++++ v8.00.00 変更終了 ++++++++++
				
				// 進捗登録
				execEKK1091D010(handle, param, scCall, ccMsg, childMap);
				
				
				// 審査結果反映確定フラグ
				String jdg_flg = (String)ccMsg.get("jdg_flg");
// ANK-2565-00-00 MOD START
//				if("1".equals(jdg_flg))
				if("1".equals(jdg_flg) || isFauthori)
// ANK-2565-00-00 MOD END
				{
					// 審査結果反映画面用進捗登録
					execEKK1091D010_jdg(handle, param, scCall, ccMsg, childMap);
				}
				
				// ++++++++++ v8.00.03 追加開始 ++++++++++
				// 申込書番号
				String mskmshoNo = (String) childMap.get("kksv040524_mskmsho_no");
				
				// 申込書番号が設定されている場合
				if (null != mskmshoNo && 0 < mskmshoNo.length())
				{
					// 申込書番号存在チェック一覧照会
					execEKK0021B011(handle, param, scCall, ccMsg, childMap);
					
					if (ccMsg.containsKey("EKK0021B011CBSMSG1LIST"))
					{
						CAANMsg[] templateList = (CAANMsg[]) ccMsg.get("EKK0021B011CBSMSG1LIST");
						
						// 検索結果が1件以上ある場合、エラー
						if (null != templateList && 0 < templateList.length)
						{
							ccMsg.put("err_flg","E_MSKMSHONO");
							return param;
						}
					}
				}
				// ++++++++++ v8.00.03 追加終了 ++++++++++
				
				// 申込明細照査・後続業務依頼
				execEKK0021C060(handle, param, scCall, ccMsg, childMap);
			}
			
			
// ++++++++++ v24.00.00 削除開始 ++++++++++
//			// 請求オプションのキャンセルか解約を行った場合
//			if(optKaiyaku)
//			{
//				// 割引CC（請求オプションキャンセル、解約）
//				execWrisvcAutoAply(handle, param, ccMsg, childMap, optKaiyakuCd, optKaiyakuSvckeiStat);
//			}
//			
//			// 請求オプションの登録を行った場合
//			if(optTouroku)
//			{
//				// 割引CC（請求オプションキャンセル、解約）
//				execWrisvcAutoAply(handle, param, ccMsg, childMap, optTourokuCd, opTourokuSvckeiStat);
//			}
// ++++++++++ v24.00.00 削除終了 ++++++++++
		}
		
		
		childMap = new HashMap<String, Object>();
		
		// 確定処理の場合
		if("1".equals(funcCd))
		{
			// 新規契約かサービス追加の場合
			if("00001".equals(ido_div) || "00002".equals(ido_div))
			{
				/* ++++++++++ v4.00.10 追加開始 ++++++++++ */
				// 審査結果反映CCにセットする内容を取得
				param.setData(JUDGE_UPDATE_MAP, new HashMap<String, Object>());
				HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JUDGE_UPDATE_MAP);
				/* ++++++++++ v4.00.10 追加終了 ++++++++++ */
				
				ArrayList<String> svcKeiList = new ArrayList<String>();
				for(int i = 0; i < svc_list.size(); i++)
				{
					childMap = svc_list.get(i);
					
					// 申込画面入力支援ワーク情報更新CC呼出し
					String scvkei = updMkmScinsprtWkCall(handle, param, ccMsg, childMap);
					svcKeiList.add(scvkei);
				}
				
				for(int j = 0; j < svcKeiList.size(); j++)
				{
					// サービス契約番号1
					outMap.put("key_svc_kei_no" + (j + 1), svcKeiList.get(j));
				}
				
				if(svcKeiList.size() == 1)
				{
					outMap.put("key_svc_kei_no2", "");
					outMap.put("key_svc_kei_no3", "");
					outMap.put("key_svc_kei_no4", "");
				}
				else if(svcKeiList.size() == 2)
				{
					outMap.put("key_svc_kei_no3", "");
					outMap.put("key_svc_kei_no4", "");
				}
				else if(svcKeiList.size() == 3)
				{
					outMap.put("key_svc_kei_no4", "");
				}
				
				// インスタンスの生成
				JKKUpdateJudgeTranCC jkkupdatejudgetrancc = new JKKUpdateJudgeTranCC();
				jkkupdatejudgetrancc.execUpdateJudge(handle, param, JUDGE_UPDATE_MAP);
			}
		}
		
		return param;
	}
	
	/**
	 * 申込内容承認登録サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0011D020(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0011D020(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (申込内容承認登録)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0011D020(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 申込内容承認登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0011D020(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0011D020CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0011D020CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0011D020);

		template.set(EKK0011D020CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0011D020CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));

// ++++++++++ v8.00.01 変更開始 ++++++++++
		// 申込内容承認登録マップ.SYSID → SYSID
//		if ("".equals(childMap.get("kksv040501_sysid"))) 
//		{
//			template.setNull(EKK0011D020CBSMsg.SYSID);
//		} else {
//			template.set(EKK0011D020CBSMsg.SYSID, (String)childMap.get("kksv040501_sysid"));
//		}
		if ("".equals(dataMap.get("sysid"))) 
		{
			template.setNull(EKK0011D020CBSMsg.SYSID);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.SYSID, (String)dataMap.get("sysid"));
		}
// ++++++++++ v8.00.01 変更終了 ++++++++++

		// 申込内容承認登録マップ.申込種別コード → 申込種別コード
		if ("".equals(childMap.get("kksv040501_mskm_sbt_cd"))) 
		{
			template.setNull(EKK0011D020CBSMsg.MSKM_SBT_CD);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.MSKM_SBT_CD, (String)childMap.get("kksv040501_mskm_sbt_cd"));
		}

		// 申込内容承認登録マップ.申込書到着年月日 → 申込書到着年月日
		if ("".equals(childMap.get("kksv040501_mskmsho_ariv_ymd"))) 
		{
			template.setNull(EKK0011D020CBSMsg.MSKMSHO_ARIV_YMD);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.MSKMSHO_ARIV_YMD, (String)childMap.get("kksv040501_mskmsho_ariv_ymd"));
		}

		// 申込内容承認登録マップ.申込受付年月日時分秒 → 申込受付年月日時分秒
		if ("".equals(childMap.get("kksv040501_mskm_uk_dtm"))) 
		{
			template.setNull(EKK0011D020CBSMsg.MSKM_UK_DTM);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.MSKM_UK_DTM, (String)childMap.get("kksv040501_mskm_uk_dtm"));
		}

		// 申込内容承認登録マップ.申込受付担当ユーザーID → 申込受付担当ユーザーID
		if ("".equals(childMap.get("kksv040501_mskm_uk_tnt_user_id"))) 
		{
			template.setNull(EKK0011D020CBSMsg.MSKM_UK_TNT_USER_ID);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.MSKM_UK_TNT_USER_ID, (String)childMap.get("kksv040501_mskm_uk_tnt_user_id"));
		}

		// 申込内容承認登録マップ.申込年月日 → 申込年月日
		if ("".equals(childMap.get("kksv040501_mskm_ymd"))) 
		{
			template.setNull(EKK0011D020CBSMsg.MSKM_YMD);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.MSKM_YMD, (String)childMap.get("kksv040501_mskm_ymd"));
		}

		// 申込内容承認登録マップ.総合営業センター受付番号 → 総合営業センター受付番号
		if ("".equals(childMap.get("kksv040501_ttl_business_center_uk_no"))) 
		{
			template.setNull(EKK0011D020CBSMsg.TTL_BUSINESS_CENTER_UK_NO);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.TTL_BUSINESS_CENTER_UK_NO, (String)childMap.get("kksv040501_ttl_business_center_uk_no"));
		}

		// 申込内容承認登録マップ.総合営業申込契機コード → 総合営業申込契機コード
		if ("".equals(childMap.get("kksv040501_ttl_business_mskm_opt_cd"))) 
		{
			template.setNull(EKK0011D020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD, (String)childMap.get("kksv040501_ttl_business_mskm_opt_cd"));
		}

		// 申込内容承認登録マップ.申込連絡先電話番号 → 申込連絡先電話番号
		if ("".equals(childMap.get("kksv040501_mskm_rrks_telno"))) 
		{
			template.setNull(EKK0011D020CBSMsg.MSKM_RRKS_TELNO);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.MSKM_RRKS_TELNO, (String)childMap.get("kksv040501_mskm_rrks_telno"));
		}

		// 申込内容承認登録マップ.申込実施者種別コード → 申込実施者種別コード
		if ("".equals(childMap.get("kksv040501_mskm_jssis_sbt_cd"))) 
		{
			template.setNull(EKK0011D020CBSMsg.MSKM_JSSIS_SBT_CD);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.MSKM_JSSIS_SBT_CD, (String)childMap.get("kksv040501_mskm_jssis_sbt_cd"));
		}

		// 申込内容承認登録マップ.お客様ご要望事項 → お客様ご要望事項
		if ("".equals(childMap.get("kksv040501_cust_yobo_jiko"))) 
		{
			template.setNull(EKK0011D020CBSMsg.CUST_YOBO_JIKO);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.CUST_YOBO_JIKO, (String)childMap.get("kksv040501_cust_yobo_jiko"));
		}

		// 申込内容承認登録マップ.電話連絡希望時間帯コード → 電話連絡希望時間帯コード
		if ("".equals(childMap.get("kksv040501_tel_rrk_kibo_time_cd"))) 
		{
			template.setNull(EKK0011D020CBSMsg.TEL_RRK_KIBO_TIME_CD);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.TEL_RRK_KIBO_TIME_CD, (String) childMap.get("kksv040501_tel_rrk_kibo_time_cd"));
		}

		// 申込内容承認登録マップ.宅内調査希望時間帯コード → 宅内調査希望時間帯コード
		if ("".equals(childMap.get("kksv040501_takcho_kibo_time_cd"))) 
		{
			template.setNull(EKK0011D020CBSMsg.TAKCHO_KIBO_TIME_CD);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.TAKCHO_KIBO_TIME_CD, (String) childMap.get("kksv040501_takcho_kibo_time_cd"));
		}

		// 申込内容承認登録マップ.仮申込フラグ → 仮申込フラグ
		if ("".equals(childMap.get("kksv040501_kari_mskm_flg"))) 
		{
			template.setNull(EKK0011D020CBSMsg.KARI_MSKM_FLG);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.KARI_MSKM_FLG, (String) childMap.get("kksv040501_kari_mskm_flg"));
		}

		// 申込内容承認登録マップ.リファラー → リファラー
		if ("".equals(childMap.get("kksv040501_referer"))) 
		{
			template.setNull(EKK0011D020CBSMsg.REFERER);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.REFERER, (String) childMap.get("kksv040501_referer"));
		}

		// 申込内容承認登録マップ.関西電力お客様情報授受同意有無 → 関西電力お客様情報授受同意有無
		if ("".equals(childMap.get("kksv040501_kepco_custinfo_juju_doi_um"))) 
		{
			template.setNull(EKK0011D020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM, (String) childMap.get("kksv040501_kepco_custinfo_juju_doi_um"));
		}

		// 申込内容承認登録マップ.コンシューマ営業用申込状態識別コード → コンシューマ営業用申込状態識別コード
		if ("".equals(childMap.get("kksv040501_consmbsn_mskm_stat_skbt_cd"))) 
		{
			template.setNull(EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD);
		} 
		else 
		{
			template.set(EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD, (String) childMap.get("kksv040501_consmbsn_mskm_stat_skbt_cd"));
		}
		
		template.setNull(EKK0011D020CBSMsg.TAKCHO_KIBOD_SBT_CD);
		template.setNull(EKK0011D020CBSMsg.TEL_RRK_KIBOD_SBT_CD);
		template.setNull(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_YH);
		template.setNull(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO);
		template.setNull(EKK0011D020CBSMsg.USE_SVC_KEIZK_SBT_CD);
		template.setNull(EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO);
		template.setNull(EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD);
		template.setNull(EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD);


		inList = (ArrayList)childMap.get("kksv040501_EKK0011D020CBSMsg1List");
		if (inList == null) 
		{
			templateArray = new CAANMsg[1];
			templateArray[0] = new CAANMsg(EKK0011D020CBSMsg1List.class.getName());
			
			// 申込書番号
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MSKMSHO_NO);
			// WEB受付番号
			templateArray[0].setNull(EKK0011D020CBSMsg1List.WEB_UK_NO);
			// 申込形態コード
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MSKM_FORM_CD);
			// 申込明細種別コード
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MSKM_DTL_SBT_CD);
			// 連絡先携帯電話番号
			templateArray[0].setNull(EKK0011D020CBSMsg1List.RRKS_KTAI_TELNO);
			// 連絡先勤務先名
			templateArray[0].setNull(EKK0011D020CBSMsg1List.RRKS_OFFC_NM);
			// 昼間連絡先電話番号
			templateArray[0].setNull(EKK0011D020CBSMsg1List.DT_RRKS_TELNO);
			// 新規申込種別コード
			templateArray[0].setNull(EKK0011D020CBSMsg1List.NEW_MSKM_SBT_CD);
			// 申込契機コード
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MSKM_OPTNTY_CD);
			// 宅内調査希望アポ期限年月日
			templateArray[0].setNull(EKK0011D020CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD);
			// 	工事アポ連絡先指定コード
			templateArray[0].setNull(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD);
			// 工事アポ連絡先電話番号
			templateArray[0].setNull(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_TELNO);
			// 連絡事項登録年月日時分秒
			templateArray[0].setNull(EKK0011D020CBSMsg1List.RRK_JIKO_ADD_DTM);
			// 申込連絡先メールアドレス
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MSKM_RRKS_MLAD);
			// 工事進捗通知メールアドレス
			templateArray[0].setNull(EKK0011D020CBSMsg1List.KOJI_PRG_TCHI_MLAD);
			// 連絡事項
			templateArray[0].setNull(EKK0011D020CBSMsg1List.RRK_JIKO);
			// 工事進捗通知携帯メールアドレス
			templateArray[0].setNull(EKK0011D020CBSMsg1List.KJSC_TCH_KTAI_MLAD);
			// メール送信除外フラグ
			templateArray[0].setNull(EKK0011D020CBSMsg1List.ML_SEND_JGI_FLG);
			// メール送信除外理由メモ
			templateArray[0].setNull(EKK0011D020CBSMsg1List.ML_SEND_JGI_RSN_MEMO);
			// 番ポ申込連絡先電話番号
			templateArray[0].setNull(EKK0011D020CBSMsg1List.BMP_MSKM_RRKS_TLN);
			// 連絡手段補記
			templateArray[0].setNull(EKK0011D020CBSMsg1List.RRK_WAY_HOKI);
			// 新築物件コード
			templateArray[0].setNull(EKK0011D020CBSMsg1List.NEWCONST_BUKKEN_CD);
			// 復活案件フラグ
			templateArray[0].setNull(EKK0011D020CBSMsg1List.HUKKAT_ANKEN_FLG);
			// 同一設備再申込コード
			templateArray[0].setNull(EKK0011D020CBSMsg1List.SAME_EQUIP_RE_MSKM_CD);
			
			templateArray[0].setNull(EKK0011D020CBSMsg1List.OP_SVC_HKTGI_UM);
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MSKMSHO_SBT_CD);
			templateArray[0].setNull(EKK0011D020CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM);
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MAP_TEMP_UM);
			templateArray[0].setNull(EKK0011D020CBSMsg1List.KCN_STB_KIND_CD);
			templateArray[0].setNull(EKK0011D020CBSMsg1List.KCN_STB_MSKM_CNT);
			templateArray[0].setNull(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD);
			
			// 契約付加コード
			templateArray[0].setNull(EKK0011D020CBSMsg1List.KEI_HUKA_CD);
			// マンション設備システム連携用記事欄
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN);
			// マンションID
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MANSION_ID);
			// CAT-ID
			templateArray[0].setNull(EKK0011D020CBSMsg1List.CATID);
			// 申込受付種別コード
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MKM_UK_SBT_CD);
			// 申込書取扱情報担当者名
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM);
			// 申込書取扱情報電話番号
			templateArray[0].setNull(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO);
			
			template.set(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST, templateArray);
			
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0011D020(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		// 申込番号WORK(EKK0011D020) ← 申込番号
		if (parentTemplate.isNull(EKK0011D020CBSMsg.MSKM_NO)) 
		{
			childMap.put("ekk0011d020_mskm_no", new String());
		} 
		else 
		{
			childMap.put("ekk0011d020_mskm_no", parentTemplate.getString(EKK0011D020CBSMsg.MSKM_NO));
		}
		// 更新年月日時分秒WORK(EKK0011D020) ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0011D020CBSMsg.UPD_DTM)) 
		{
			childMap.put("ekk0011d020_upd_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0011d020_upd_dtm", parentTemplate.getString(EKK0011D020CBSMsg.UPD_DTM));
		}
		
		templateArray = parentTemplate.getCAANMsgList(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST);
		
		if (templateArray != null) 
		{
			for (int i = 0; i < templateArray.length; i++) 
			{
				CAANMsg childTemplate = templateArray[i];
				
				// 申込明細番号WORK(EKK0011D020) ← 申込登録明細.申込明細番号
				if (childTemplate.isNull(EKK0011D020CBSMsg1List.MSKM_DTL_NO)) 
				{
					childMap.put("ekk0011d020_mskm_dtl_no", new String());
				} 
				else 
				{
					childMap.put("ekk0011d020_mskm_dtl_no", childTemplate.getString(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
				}
				break;
			}
		}
		
		// エラー情報の設定
        param = editErrorInfo_EKK0011D020(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 申込内容承認登録エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0011D020(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0011D020CBSMsg.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);
		}

		// SYSID
		setErrDataMap(childMap, template, EKK0011D020CBSMsg.SYSID_ERR);
		// 申込種別コード
		setErrDataMap(childMap, template, EKK0011D020CBSMsg.MSKM_SBT_CD_ERR);
		// 申込受付年月日時分秒
		setErrDataMap(childMap, template, EKK0011D020CBSMsg.MSKM_UK_DTM_ERR);
		// 申込年月日
		setErrDataMap(childMap, template, EKK0011D020CBSMsg.MSKM_YMD_ERR);
		// コンシューマ営業用申込状態識別コード
		setErrDataMap(childMap, template, EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD_ERR);
		
		return param;
	}
	
	/**
	 * 請求契約内容変更サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0491C060(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0491C060(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求契約内容変更)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0491C060(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求契約内容変更のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0491C060(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0491C060CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0491C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0491C060);

		template.set(EKK0491C060CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0491C060CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求契約内容変更マップ.申込明細番号 → 申込明細番号
		if ("".equals(childMap.get("ekk0011d020_mskm_dtl_no")) || !childMap.containsKey("ekk0011d020_mskm_dtl_no")) 
		{
			if ("".equals(childMap.get("kksv040505_mskm_dtl_no"))) 
			{
				template.setNull(EKK0491C060CBSMsg.MSKM_DTL_NO);
			}
			else
			{
				template.set(EKK0491C060CBSMsg.MSKM_DTL_NO, (String)childMap.get("kksv040505_mskm_dtl_no"));
			}
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.MSKM_DTL_NO, (String)childMap.get("ekk0011d020_mskm_dtl_no"));
		}
		
		// 請求契約内容変更マップ.請求契約番号 → 請求契約番号
		if ("".equals(childMap.get("kksv040505_seiky_kei_no"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SEIKY_KEI_NO);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SEIKY_KEI_NO, (String)childMap.get("kksv040505_seiky_kei_no"));
		}

		// 請求契約内容変更マップ.請求契約カナ名 → 請求契約カナ名
		if ("".equals(childMap.get("kksv040505_seiky_kei_kana"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SEIKY_KEI_KANA);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SEIKY_KEI_KANA, (String)childMap.get("kksv040505_seiky_kei_kana"));
		}

		// 請求契約内容変更マップ.情報表示コード → 情報表示コード
		if ("".equals(childMap.get("kksv040505_info_dsp_cd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.INFO_DSP_CD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.INFO_DSP_CD, (String)childMap.get("kksv040505_info_dsp_cd"));
		}

		// 請求契約内容変更マップ.請求書発行要否 → 請求書発行要否
		if ("".equals(childMap.get("kksv040505_seikyus_hakko_yh"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SEIKYUS_HAKKO_YH);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SEIKYUS_HAKKO_YH, (String)childMap.get("kksv040505_seikyus_hakko_yh"));
		}

		// 請求契約内容変更マップ.請求書送付先＿契約者住所差異フラグ → 請求書送付先_契約者住所差異フラグ
		if ("".equals(childMap.get("kksv040505_sks_shs_ksh_ad_sai_flg"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SKS_SHS_KSH_AD_SAI_FLG);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SKS_SHS_KSH_AD_SAI_FLG, (String)childMap.get("kksv040505_sks_shs_ksh_ad_sai_flg"));
		}

		// 請求契約内容変更マップ.請求書送付先名＿お客様名差異フラグ → 請求書送付先名_お客様名差異フラグ
		if ("".equals(childMap.get("kksv040505_sks_shs_nm_cust_nm_sai_flg"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SKS_SHS_NM_CUST_NM_SAI_FLG);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SKS_SHS_NM_CUST_NM_SAI_FLG, (String)childMap.get("kksv040505_sks_shs_nm_cust_nm_sai_flg"));
		}

		// 請求契約内容変更マップ.送付先法人格種別コード → 送付先法人格種別コード
		if ("".equals(childMap.get("kksv040505_shs_hojin_sbt_cd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SHS_HOJIN_SBT_CD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SHS_HOJIN_SBT_CD, (String)childMap.get("kksv040505_shs_hojin_sbt_cd"));
		}

		// 請求契約内容変更マップ.送付先法人格前後指定コード → 送付先法人格前後指定コード
		if ("".equals(childMap.get("kksv040505_shs_hojin_zengo_shitei_cd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SHS_HOJIN_ZENGO_SHITEI_CD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SHS_HOJIN_ZENGO_SHITEI_CD, (String)childMap.get("kksv040505_shs_hojin_zengo_shitei_cd"));
		}

		// 請求契約内容変更マップ.送付先カナ名 → 送付先カナ名
		if ("".equals(childMap.get("kksv040505_shs_kana"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SHS_KANA);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SHS_KANA, (String)childMap.get("kksv040505_shs_kana"));
		}

		// 請求契約内容変更マップ.送付先名 → 送付先名
		if ("".equals(childMap.get("kksv040505_sohus_nm"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_NM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_NM, (String)childMap.get("kksv040505_sohus_nm"));
		}
		
		// 請求契約内容変更マップ.送付先部課名 → 送付先部課名
		if ("".equals(childMap.get("kksv040505_sohus_bkm"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_BKM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_BKM, (String)childMap.get("kksv040505_sohus_bkm"));
		}
		
		// 請求契約内容変更マップ.送付先担当者名 → 送付先担当者名
		if ("".equals(childMap.get("kksv040505_sohus_tntsha_nm"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_TNTSHA_NM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_TNTSHA_NM, (String)childMap.get("kksv040505_sohus_tntsha_nm"));
		}

		// 請求契約内容変更マップ.送付先住所コード → 送付先住所コード
		if ("".equals(childMap.get("kksv040505_sohus_ad_cd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_AD_CD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_AD_CD, (String)childMap.get("kksv040505_sohus_ad_cd"));
		}

		// 請求契約内容変更マップ.送付先郵便番号 → 送付先郵便番号
		if ("".equals(childMap.get("kksv040505_sohus_pcd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_PCD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_PCD, (String)childMap.get("kksv040505_sohus_pcd"));
		}

		// 請求契約内容変更マップ.送付先都道府県名 → 送付先都道府県名
		if ("".equals(childMap.get("kksv040505_sohus_state_nm"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_STATE_NM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_STATE_NM, (String)childMap.get("kksv040505_sohus_state_nm"));
		}

		// 請求契約内容変更マップ.送付先市区町村名 → 送付先市区町村名
		if ("".equals(childMap.get("kksv040505_sohus_city_nm"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_CITY_NM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_CITY_NM, (String)childMap.get("kksv040505_sohus_city_nm"));
		}

		// 請求契約内容変更マップ.送付先大字通称名 → 送付先大字通称名
		if ("".equals(childMap.get("kksv040505_sohus_oaztsu_nm"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_OAZTSU_NM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_OAZTSU_NM, (String)childMap.get("kksv040505_sohus_oaztsu_nm"));
		}

		// 請求契約内容変更マップ.送付先字丁目名 → 送付先字丁目名
		if ("".equals(childMap.get("kksv040505_sohus_azcho_nm"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_AZCHO_NM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_AZCHO_NM, (String)childMap.get("kksv040505_sohus_azcho_nm"));
		}

		// 請求契約内容変更マップ.送付先住所補記・建物名 → 送付先住所補記・建物名
		if ("".equals(childMap.get("kksv040505_sohus_adrttm"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_ADRTTM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_ADRTTM, (String)childMap.get("kksv040505_sohus_adrttm"));
		}

		// 請求契約内容変更マップ.送付先住所補記・部屋番号 → 送付先住所補記・部屋番号
		if ("".equals(childMap.get("kksv040505_sohus_adrrm"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_ADRRM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_ADRRM, (String)childMap.get("kksv040505_sohus_adrrm"));
		}

		// 請求契約内容変更マップ.送付先番地号 → 送付先番地号
		if ("".equals(childMap.get("kksv040505_sohus_bnchigo"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_BNCHIGO);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_BNCHIGO, (String)childMap.get("kksv040505_sohus_bnchigo"));
		}

		// 請求契約内容変更マップ.送付先電話番号 → 送付先電話番号
		if ("".equals(childMap.get("kksv040505_sohus_telno"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_TELNO);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_TELNO, (String)childMap.get("kksv040505_sohus_telno"));
		}

		// 請求契約内容変更マップ.送付先FAX番号 → 送付先FAX番号
		if ("".equals(childMap.get("kksv040505_sohus_fax_no"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_FAX_NO);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_FAX_NO, (String)childMap.get("kksv040505_sohus_fax_no"));
		}

		// 請求契約内容変更マップ.送付先メールアドレス → 送付先メールアドレス
		if ("".equals(childMap.get("kksv040505_sohus_mlad"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_MLAD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_MLAD, (String)childMap.get("kksv040505_sohus_mlad"));
		}

		// 請求契約内容変更マップ.送付先住所手動入力フラグ → 送付先住所手動入力フラグ
		if ("".equals(childMap.get("kksv040505_sohus_ad_man_input_flg"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SOHUS_AD_MAN_INPUT_FLG);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SOHUS_AD_MAN_INPUT_FLG, (String)childMap.get("kksv040505_sohus_ad_man_input_flg"));
		}

		/* ++++++++++ v4.00.00 追加開始 ANK-0398++++++++++ */
		// 請求契約内容変更マップ.送付先住所チェックレベル → 住所チェックレベル
		// ++++++++++ v4.01.00 修正開始 ++++++++++
//				if ("".equals(childMap.get("ad_chk_lv"))) 
				if ("".equals(childMap.get("sohus_ad_chk_lv"))) 
		// ++++++++++ v4.01.00 修正終了 ++++++++++
				{
					template.setNull(EKK0491C060CBSMsg.SOHUS_AD_CHK_LV);
				} 
				else 
				{
		// ++++++++++ v4.01.00 修正開始 ++++++++++
//					template.set(EKK0491C060CBSMsg.SOHUS_AD_CHK_LV, (String)childMap.get("ad_chk_lv"));
					template.set(EKK0491C060CBSMsg.SOHUS_AD_CHK_LV, (String)childMap.get("sohus_ad_chk_lv"));
		// ++++++++++ v4.01.00 修正終了 ++++++++++
				}
		/* ++++++++++ v4.00.00 追加終了 ANK-0398++++++++++ */

		// 請求契約内容変更マップ.請求書送付先変更年月日 → 請求書送付先変更年月日
		if ("".equals(childMap.get("kksv040505_seikyus_sohus_chge_ymd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SEIKYUS_SOHUS_CHGE_YMD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SEIKYUS_SOHUS_CHGE_YMD, (String)childMap.get("kksv040505_seikyus_sohus_chge_ymd"));
		}
		
		// 請求契約内容変更マップ.請求方法適用調整年月日 → 請求方法適用調整年月日
		if ("".equals(childMap.get("kksv040505_seiky_way_aply_adj_ymd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.SEIKY_WAY_APLY_ADJ_YMD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.SEIKY_WAY_APLY_ADJ_YMD, (String)childMap.get("kksv040505_seiky_way_aply_adj_ymd"));
		}

		// 請求契約内容変更マップ.予約適用開始希望年月日 → 予約適用開始希望年月日
		if ("".equals(childMap.get("kksv040505_rsv_tsta_kibo_ymd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.RSV_TSTA_KIBO_YMD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.RSV_TSTA_KIBO_YMD, (String)childMap.get("kksv040505_rsv_tsta_kibo_ymd"));
		}
		
		// 請求契約内容変更マップ.予約適用年月日 → 予約適用年月日
		if ("".equals(childMap.get("kksv040505_rsv_aply_ymd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.RSV_APLY_YMD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.RSV_APLY_YMD, (String)childMap.get("kksv040505_rsv_aply_ymd"));
		}

		// 請求契約内容変更マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040505_ido_div"))) 
		{
			template.setNull(EKK0491C060CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.IDO_DIV, (String)childMap.get("kksv040505_ido_div"));
		}

		// 請求契約内容変更マップ.初回請求年月 → 初回請求年月
		if ("".equals(childMap.get("kksv040505_first_seiky_ym"))) 
		{
			template.setNull(EKK0491C060CBSMsg.FIRST_SEIKY_YM);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.FIRST_SEIKY_YM, (String)childMap.get("kksv040505_first_seiky_ym"));
		}
		// 請求契約内容変更マップ.初回支払申込書送付要否 → 初回支払申込書送付要否
		if ("".equals(childMap.get("kksv040505_first_pay_mskmsho_sohu_yh"))) 
		{
			template.setNull(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH, (String)childMap.get("kksv040505_first_pay_mskmsho_sohu_yh"));
		}

		// 請求契約内容変更マップ.初回支払申込書送付年月日 → 初回支払申込書送付年月日
		if ("".equals(childMap.get("kksv040505_first_pay_mskmsho_sohu_ymd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YMD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YMD, (String)childMap.get("kksv040505_first_pay_mskmsho_sohu_ymd"));
		}

		// 請求契約内容変更マップ.初回支払申込書受領年月日 → 初回支払申込書受領年月日
		if ("".equals(childMap.get("kksv040505_first_pay_mskmsho_rcp_ymd"))) 
		{
			template.setNull(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD, (String)childMap.get("kksv040505_first_pay_mskmsho_rcp_ymd"));
		}

		// 請求契約内容変更マップ.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("kksv040505_upd_dtm_bf"))) 
		{
			template.setNull(EKK0491C060CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.UPD_DTM_BF, (String)childMap.get("kksv040505_upd_dtm_bf"));
		}
		
		// 請求契約内容変更マップ.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前)
//		if("".equals(childMap.get("ekk0491c240_upd_dtm")) || !childMap.containsKey("ekk0491c240_upd_dtm"))
//		{
//			template.setNull(EKK0491C060CBSMsg.UPD_DTM_BF);
//		}
//		else 
//		{
//			template.set(EKK0491C060CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c240_upd_dtm"));
//		}

//OM-2016-0000145 ADD START
		// 請求契約内容変更マップ.引継元予約適用年月日 → 引継元予約適用年月日
		if ("".equals(childMap.get("hktgim_rsv_aply_ymd")))
		{
			template.setNull(EKK0491C060CBSMsg.HKTGIM_RSV_APLY_YMD);
		} 
		else 
		{
			template.set(EKK0491C060CBSMsg.HKTGIM_RSV_APLY_YMD, (String)childMap.get("hktgim_rsv_aply_ymd"));
		}
//OM-2016-0000145 ADD END
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0491C060(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		// 世代登録年月日時分秒WORK(EKK0491C060) ← 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0491C060CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("ekk0491c060_gene_add_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0491c060_gene_add_dtm", parentTemplate.getString(EKK0491C060CBSMsg.GENE_ADD_DTM));
		}
		// 更新年月日時分秒WORK(EKK0491C060) ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0491C060CBSMsg.UPD_DTM)) 
		{
			childMap.put("ekk0491c060_upd_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0491c060_upd_dtm", parentTemplate.getString(EKK0491C060CBSMsg.UPD_DTM));
		}
 		
        // エラー情報の設定
        param = editErrorInfo_EKK0491C060(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求契約内容変更エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0491C060(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0491C060CBSMsg.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);
		}

		// 請求契約番号
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SEIKY_KEI_NO_ERR);
		// 申込明細番号
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.MSKM_DTL_NO_ERR);
		// 請求契約カナ名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SEIKY_KEI_KANA_ERR);
		// 情報表示コード
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.INFO_DSP_CD_ERR);
		// 請求書発行要否
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SEIKYUS_HAKKO_YH_ERR);
		// 請求書送付先_契約者住所差異フラグ
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SKS_SHS_KSH_AD_SAI_FLG_ERR);
		// 請求書送付先名_お客様名差異フラグ
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SKS_SHS_NM_CUST_NM_SAI_FLG_ERR);
		// 送付先法人格種別コード
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SHS_HOJIN_SBT_CD_ERR);
		// 送付先法人格前後指定コード
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SHS_HOJIN_ZENGO_SHITEI_CD_ERR);
		// 送付先カナ名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SHS_KANA_ERR);
		// 送付先名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_NM_ERR);
		// 送付先部課名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_BKM_ERR);
		// 送付先担当者名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_TNTSHA_NM_ERR);
		// 送付先住所コード
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_AD_CD_ERR);
		// 送付先郵便番号
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_PCD_ERR);
		// 送付先都道府県名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_STATE_NM_ERR);
		// 送付先市区町村名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_CITY_NM_ERR);
		// 送付先大字通称名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_OAZTSU_NM_ERR);
		// 送付先字丁目名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_AZCHO_NM_ERR);
		// 送付先住所補記・建物名
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_ADRTTM_ERR);
		// 送付先住所補記・部屋番号
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_ADRRM_ERR);
		// 送付先番地号
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_BNCHIGO_ERR);
		// 送付先電話番号
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_TELNO_ERR);
		// 送付先FAX番号
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_FAX_NO_ERR);
		// 送付先メールアドレス
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_MLAD_ERR);
		// 送付先住所手動入力フラグ
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_AD_MAN_INPUT_FLG_ERR);
		// 送付先住所チェックレベル
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SOHUS_AD_CHK_LV_ERR);
		// 請求書送付先変更年月日
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SEIKYUS_SOHUS_CHGE_YMD_ERR);
		// 請求方法適用調整年月日
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.SEIKY_WAY_APLY_ADJ_YMD_ERR);
		// 予約適用開始希望年月日
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.RSV_TSTA_KIBO_YMD_ERR);
		// 予約適用年月日
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.RSV_APLY_YMD_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.IDO_DIV_ERR);
		// 初回請求年月
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.FIRST_SEIKY_YM_ERR);
		// 初回支払申込書送付要否
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH_ERR);
		// 初回支払申込書送付年月日
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YMD_ERR);
		// 初回支払申込書受領年月日
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.UPD_DTM_BF_ERR);
//OM-2016-0000145 ADD START
		// 引継元予約適用年月日
		setErrDataMap(childMap, template, EKK0491C060CBSMsg.HKTGIM_RSV_APLY_YMD_ERR);
//OM-2016-0000145 ADD END
		
		return param;
	}
	
	/**
	 * 口振手続作成時新規コード取得CCを呼び出す。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMap
	 * @param childMap
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execKozaNewCd(SessionHandle handle,
									  IRequestParameterReadWrite param,
									  Map<String, Object> dataMap,
									  HashMap<String, Object> childMap) throws Throwable
	{
		// 口振手続作成時新規コード取得CC実行処理
		String workKozaNewCdDataKey = "KozaNewCdCC";
		param.setData(workKozaNewCdDataKey, new HashMap<String, Object>());
		
		HashMap<String, Object> ccMap = (HashMap<String, Object>)param.getData(workKozaNewCdDataKey);
		
		// 機能コード
		ccMap.put("func_code", (String)dataMap.get("func_code"));
		// 請求契約番号
		ccMap.put("key_seiky_kei_no", (String)childMap.get("kksv040525_key_seiky_kei_no"));
		// 金融機関コード
		ccMap.put("key_bank_cd", (String)childMap.get("kksv040525_key_bank_cd"));
		// 支店コード
		ccMap.put("key_bank_shiten_cd", (String)childMap.get("kksv040525_key_bank_shiten_cd"));
		// 預金種目コード
		ccMap.put("key_yokin_shumoku_cd", (String)childMap.get("kksv040525_key_yokin_shumoku_cd"));
		// 口座番号
		ccMap.put("key_koza_no", (String)childMap.get("kksv040525_key_koza_no"));
		// 新規コード
		ccMap.put("key_new_cd", (String)childMap.get("kksv040525_key_new_cd"));
		// 通帳記号
		ccMap.put("key_tsucho_symbol", (String)childMap.get("kksv040525_key_tsucho_symbol"));
		// 通帳番号
		ccMap.put("key_tsucho_no", (String)childMap.get("kksv040525_key_tsucho_no"));
		// 支払方法
		ccMap.put("shiharai_cd", (String)childMap.get("kksv040525_shiharai_cd"));
// ANK-4415-00-00 ADD START
		// 異動理由コード
		ccMap.put("ido_rsn_cd", (String)childMap.get("kksv040525_ido_rsn_cd"));
// ANK-4415-00-00 ADD END
		
		JKKSeikeiKozaNewCdCC seikeiKozaNewCdCC = new JKKSeikeiKozaNewCdCC();
		// ◇ CC呼出実行
		seikeiKozaNewCdCC.searchKozaInfo(handle, param, workKozaNewCdDataKey);
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) 
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* 作業領域データ設定 */
		HashMap ccOutMap = (HashMap)workMap.get("KozaNewCdCCWORK");
		if (ccOutMap == null) 
		{
			ccOutMap = new HashMap();
			workMap.put("KozaNewCdCCWORK", ccOutMap);
		}
		
		// CCの結果の新規コードを取得
		if(ccOutMap == null || ccOutMap.get("new_cd_work") == null || "".equals(ccOutMap.get("new_cd_work")))
		{
			childMap.put("kozanewcdcc_new_cd", new String());
		}
		else
		{
			childMap.put("kozanewcdcc_new_cd", (String)ccOutMap.get("new_cd_work"));
		}
		
		// マッピングした情報を削除
		param.removeData(workKozaNewCdDataKey);
	}
	
	/**
	 * 口振手続サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0501D010(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0501D010(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (口振手続)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0501D010(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 口振手続のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0501D010(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0501D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0501D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0501D010);

		template.set(EKK0501D010CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0501D010CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 新規コード
		if ("".equals(childMap.get("kozanewcdcc_new_cd")) || !childMap.containsKey("kozanewcdcc_new_cd")) 
		{
			template.setNull(EKK0501D010CBSMsg.NEW_CD);
		}
		else
		{
			template.set(EKK0501D010CBSMsg.NEW_CD, (String)childMap.get("kozanewcdcc_new_cd"));
		}
		
		// 口振手続マップ.金融機関コード → 金融機関コード
		if ("".equals(childMap.get("kksv040506_bank_cd"))) 
		{
			template.setNull(EKK0501D010CBSMsg.BANK_CD);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.BANK_CD, (String)childMap.get("kksv040506_bank_cd"));
		}

		// 口振手続マップ.金融機関支店コード → 金融機関支店コード
		if ("".equals(childMap.get("kksv040506_bank_shiten_cd"))) 
		{
			template.setNull(EKK0501D010CBSMsg.BANK_SHITEN_CD);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.BANK_SHITEN_CD, (String)childMap.get("kksv040506_bank_shiten_cd"));
		}

		// 口振手続マップ.預金種目コード → 預金種目コード
		if ("".equals(childMap.get("kksv040506_yokin_shumoku_cd"))) 
		{
			template.setNull(EKK0501D010CBSMsg.YOKIN_SHUMOKU_CD);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.YOKIN_SHUMOKU_CD, (String)childMap.get("kksv040506_yokin_shumoku_cd"));
		}

		// 口振手続マップ.口座番号 → 口座番号
		if ("".equals(childMap.get("kksv040506_koza_no"))) 
		{
			template.setNull(EKK0501D010CBSMsg.KOZA_NO);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.KOZA_NO, (String)childMap.get("kksv040506_koza_no"));
		}

		// 口振手続マップ.口座名義人（漢字） → 口座名義人(漢字)
		if ("".equals(childMap.get("kksv040506_koza_meigin_kanji"))) 
		{
			template.setNull(EKK0501D010CBSMsg.KOZA_MEIGIN_KANJI);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.KOZA_MEIGIN_KANJI, (String)childMap.get("kksv040506_koza_meigin_kanji"));
		}

		// 口振手続マップ.口座名義人カナ名 → 口座名義人カナ名
		if ("".equals(childMap.get("kksv040506_koza_meigin_kana"))) 
		{
			template.setNull(EKK0501D010CBSMsg.KOZA_MEIGIN_KANA);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.KOZA_MEIGIN_KANA, (String)childMap.get("kksv040506_koza_meigin_kana"));
		}

		// 口振手続マップ.通帳記号 → 通帳記号
		if ("".equals(childMap.get("kksv040506_tsucho_symbol"))) 
		{
			template.setNull(EKK0501D010CBSMsg.TSUCHO_SYMBOL);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.TSUCHO_SYMBOL, (String)childMap.get("kksv040506_tsucho_symbol"));
		}

		// 口振手続マップ.通帳番号 → 通帳番号
		if ("".equals(childMap.get("kksv040506_tsucho_no"))) 
		{
			template.setNull(EKK0501D010CBSMsg.TSUCHO_NO);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.TSUCHO_NO, (String)childMap.get("kksv040506_tsucho_no"));
		}

		// 口振手続マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040506_ido_div"))) 
		{
			template.setNull(EKK0501D010CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.IDO_DIV, (String)childMap.get("kksv040506_ido_div"));
		}
		
		// 口振手続マップ.更新年月日時分秒(更新前) → 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("kksv040506_upd_dtm_bf"))) 
		{
			template.setNull(EKK0501D010CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.UPD_DTM_BF, (String)childMap.get("kksv040506_upd_dtm_bf"));
		}
// ANK-4408-00-00 ADD START
		// 口振手続マップ.口座支払方法受付区分 → 口座支払方法受付区分
		if ("".equals(childMap.get("kksv040506_koza_payway_uk_div"))) 
		{
			template.setNull(EKK0501D010CBSMsg.KOZA_PAYWAY_UK_DIV);
		} 
		else 
		{
			template.set(EKK0501D010CBSMsg.KOZA_PAYWAY_UK_DIV, (String)childMap.get("kksv040506_koza_payway_uk_div"));
		}
// ANK-4408-00-00 ADD END
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0501D010(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		// 請求方法番号(口座)WORK(EKK0501D010) ← 請求方法番号(口座)
		if (parentTemplate.isNull(EKK0501D010CBSMsg.SEIKY_WAY_NO_KOZA)) 
		{
			childMap.put("ekk0501d010_seiky_way_no_koza", new String());
		} 
		else 
		{
			childMap.put("ekk0501d010_seiky_way_no_koza", parentTemplate.getString(EKK0501D010CBSMsg.SEIKY_WAY_NO_KOZA));
		}
		// 更新年月日時分秒WORK(EKK0501D010) ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0501D010CBSMsg.UPD_DTM)) 
		{
			childMap.put("ekk0501d010_upd_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0501d010_upd_dtm", parentTemplate.getString(EKK0501D010CBSMsg.UPD_DTM));
		}
 		
        // エラー情報の設定
        param = editErrorInfo_EKK0501D010(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 口振手続エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0501D010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0501D010CBSMsg.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);
		}

		// 金融機関コード
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.BANK_CD_ERR);
		// 金融機関支店コード
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.BANK_SHITEN_CD_ERR);
		// 預金種目コード
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.YOKIN_SHUMOKU_CD_ERR);
		// 口座番号
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.KOZA_NO_ERR);
		// 新規コード
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.NEW_CD_ERR);
		// 口座名義人(漢字)
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.KOZA_MEIGIN_KANJI_ERR);
		// 口座名義人カナ名
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.KOZA_MEIGIN_KANA_ERR);
		// 通帳記号
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.TSUCHO_SYMBOL_ERR);
		// 通帳番号
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.TSUCHO_NO_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.IDO_DIV_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.UPD_DTM_BF_ERR);
// ANK-4408-00-00 ADD START
		// 口座支払方法受付区分
		setErrDataMap(childMap, template, EKK0501D010CBSMsg.KOZA_PAYWAY_UK_DIV_ERR);
// ANK-4408-00-00 ADD END
		
		return param;
	}
	
	/**
	 * 口振審査依頼サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0501C030(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0501C030(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (口振審査依頼)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0501C030(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 口振審査依頼のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0501C030(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0501C030CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0501C030CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0501C030);

		template.set(EKK0501C030CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0501C030CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求方法番号（口座）
		if ("".equals(childMap.get("ekk0501d010_seiky_way_no_koza")) || !childMap.containsKey("ekk0501d010_seiky_way_no_koza")) 
		{
			template.setNull(EKK0501C030CBSMsg.SEIKY_WAY_NO_KOZA);
		} 
		else 
		{
			template.set(EKK0501C030CBSMsg.SEIKY_WAY_NO_KOZA, (String)childMap.get("ekk0501d010_seiky_way_no_koza"));
		}
		// 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0491c060_upd_dtm")) || !childMap.containsKey("ekk0491c060_upd_dtm")) 
		{
			template.setNull(EKK0501C030CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0501C030CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c060_upd_dtm"));
		}
//		if ("".equals(childMap.get("ekk0501d010_upd_dtm")) || !childMap.containsKey("ekk0501d010_upd_dtm")) 
//		{
//			template.setNull(EKK0501C030CBSMsg.UPD_DTM_BF);
//		} 
//		else 
//		{
//			template.set(EKK0501C030CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0501d010_upd_dtm"));
//		}
		
		// 口振審査依頼マップ.支払い審査依頼年月日 → 支払い審査依頼年月日
		if ("".equals(childMap.get("kksv040507_pay_judge_reqymd"))) 
		{
			template.setNull(EKK0501C030CBSMsg.PAY_JUDGE_REQYMD);
		} 
		else 
		{
			template.set(EKK0501C030CBSMsg.PAY_JUDGE_REQYMD, (String)childMap.get("kksv040507_pay_judge_reqymd"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0501C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
        // エラー情報の設定
        param = editErrorInfo_EKK0501C030(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 口振審査依頼エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0501C030(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0501C030CBSMsg.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);
		}

		// 請求方法番号(口座)
		setErrDataMap(childMap, template, EKK0501C030CBSMsg.SEIKY_WAY_NO_KOZA_ERR);
		// 支払い審査依頼年月日
		setErrDataMap(childMap, template, EKK0501C030CBSMsg.PAY_JUDGE_REQYMD_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0501C030CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * 口振審査結果OK登録サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0501C080(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0501C080(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (口振審査結果OK登録)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0501C080(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 口振審査結果OK登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0501C080(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0501C080CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0501C080CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0501C080);

		template.set(EKK0501C080CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0501C080CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求方法番号（口座）
		if ("".equals(childMap.get("ekk0501d010_seiky_way_no_koza")) || !childMap.containsKey("ekk0501d010_seiky_way_no_koza")) 
		{
			template.setNull(EKK0501C080CBSMsg.SEIKY_WAY_NO_KOZA);
		} 
		else 
		{
			template.set(EKK0501C080CBSMsg.SEIKY_WAY_NO_KOZA, (String)childMap.get("ekk0501d010_seiky_way_no_koza"));
		}
		// 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0491c060_upd_dtm")) || !childMap.containsKey("ekk0491c060_upd_dtm")) 
		{
			template.setNull(EKK0501C080CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0501C080CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c060_upd_dtm"));
		}
//		if ("".equals(childMap.get("ekk0501d010_upd_dtm")) || !childMap.containsKey("ekk0501d010_upd_dtm")) 
//		{
//			template.setNull(EKK0501C080CBSMsg.UPD_DTM_BF);
//		} 
//		else 
//		{
//			template.set(EKK0501C080CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0501d010_upd_dtm"));
//		}
		
		// 口振審査結果OK登録マップ.支払い審査結果コード → 支払い審査結果コード
		if ("".equals(childMap.get("kksv040508_pay_skekka_cd"))) 
		{
			template.setNull(EKK0501C080CBSMsg.PAY_SKEKKA_CD);
		} 
		else 
		{
			template.set(EKK0501C080CBSMsg.PAY_SKEKKA_CD, (String)childMap.get("kksv040508_pay_skekka_cd"));
		}

		// 口振審査結果OK登録マップ.外部口振審査完了年月日 → 外部口振審査完了年月日
		if ("".equals(childMap.get("kksv040508_out_khri_judge_fin_ymd"))) 
		{
			template.setNull(EKK0501C080CBSMsg.OUT_KHRI_JUDGE_FIN_YMD);
		} 
		else 
		{
			template.set(EKK0501C080CBSMsg.OUT_KHRI_JUDGE_FIN_YMD, (String)childMap.get("kksv040508_out_khri_judge_fin_ymd"));
		}

		// 口振審査結果OK登録マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040508_ido_div"))) 
		{
			template.setNull(EKK0501C080CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0501C080CBSMsg.IDO_DIV, (String)childMap.get("kksv040508_ido_div"));
		}

		// 口振審査結果OK登録マップ.予約適用年月日 → 予約適用年月日
		if ("".equals(childMap.get("kksv040508_rsv_aply_ymd"))) 
		{
			template.setNull(EKK0501C080CBSMsg.RSV_APLY_YMD);
		} 
		else 
		{
			template.set(EKK0501C080CBSMsg.RSV_APLY_YMD, (String)childMap.get("kksv040508_rsv_aply_ymd"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0501C080(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
        // エラー情報の設定
        param = editErrorInfo_EKK0501C080(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 口振審査結果OK登録エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0501C080(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0501C080CBSMsg.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);
		}

		// 請求方法番号(口座)
		setErrDataMap(childMap, template, EKK0501C080CBSMsg.SEIKY_WAY_NO_KOZA_ERR);
		// 支払い審査結果コード
		setErrDataMap(childMap, template, EKK0501C080CBSMsg.PAY_SKEKKA_CD_ERR);
		// 外部口振審査完了年月日
		setErrDataMap(childMap, template, EKK0501C080CBSMsg.OUT_KHRI_JUDGE_FIN_YMD_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0501C080CBSMsg.IDO_DIV_ERR);
		// 予約適用年月日
		setErrDataMap(childMap, template, EKK0501C080CBSMsg.RSV_APLY_YMD_ERR);
		// 更新年月日時分秒（更新前）
		setErrDataMap(childMap, template, EKK0501C080CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * 口振審査結果NG登録サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0501C090(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0501C090(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (口振審査結果NG登録)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0501C090(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 口振審査結果NG登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0501C090(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0501C090CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0501C090CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0501C090);

		template.set(EKK0501C090CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0501C090CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求方法番号（口座）
		if ("".equals(childMap.get("ekk0501d010_seiky_way_no_koza")) || !childMap.containsKey("ekk0501d010_seiky_way_no_koza")) 
		{
			template.setNull(EKK0501C090CBSMsg.SEIKY_WAY_NO_KOZA);
		} 
		else 
		{
			template.set(EKK0501C090CBSMsg.SEIKY_WAY_NO_KOZA, (String)childMap.get("ekk0501d010_seiky_way_no_koza"));
		}
		// 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0491c060_upd_dtm")) || !childMap.containsKey("ekk0491c060_upd_dtm")) 
		{
			template.setNull(EKK0501C090CBSMsg.UPD_DTM_BF);
		} 
		else
		{
			template.set(EKK0501C090CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c060_upd_dtm"));
		}
//		if ("".equals(childMap.get("ekk0501d010_upd_dtm")) || !childMap.containsKey("ekk0501d010_upd_dtm")) 
//		{
//			template.setNull(EKK0501C090CBSMsg.UPD_DTM_BF);
//		} 
//		else 
//		{
//			template.set(EKK0501C090CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0501d010_upd_dtm"));
//		}
		
		// 口振審査結果NG登録マップ.支払い審査結果コード → 支払い審査結果コード
		if ("".equals(childMap.get("kksv040509_pay_skekka_cd"))) 
		{
			template.setNull(EKK0501C090CBSMsg.PAY_SKEKKA_CD);
		} 
		else 
		{
			template.set(EKK0501C090CBSMsg.PAY_SKEKKA_CD, (String)childMap.get("kksv040509_pay_skekka_cd"));
		}

		// 口振審査結果NG登録マップ.支払い審査結果NG理由コード → 支払い審査結果NG理由コード
		if ("".equals(childMap.get("kksv040509_pay_skekka_ng_rsn_cd"))) 
		{
			template.setNull(EKK0501C090CBSMsg.PAY_SKEKKA_NG_RSN_CD);
		} 
		else 
		{
			template.set(EKK0501C090CBSMsg.PAY_SKEKKA_NG_RSN_CD, (String)childMap.get("kksv040509_pay_skekka_ng_rsn_cd"));
		}

		// 口振審査結果NG登録マップ.支払い審査結果NG理由メモ → 支払い審査結果NG理由メモ
		if ("".equals(childMap.get("kksv040509_pay_skekka_ng_rsn_memo"))) 
		{
			template.setNull(EKK0501C090CBSMsg.PAY_SKEKKA_NG_RSN_MEMO);
		} 
		else 
		{
			template.set(EKK0501C090CBSMsg.PAY_SKEKKA_NG_RSN_MEMO, (String)childMap.get("kksv040509_pay_skekka_ng_rsn_memo"));
		}

		// 口振審査結果NG登録マップ.外部口振審査完了年月日 → 外部口振審査完了年月日
		if ("".equals(childMap.get("kksv040509_out_khri_judge_fin_ymd"))) 
		{
			template.setNull(EKK0501C090CBSMsg.OUT_KHRI_JUDGE_FIN_YMD);
		} 
		else 
		{
			template.set(EKK0501C090CBSMsg.OUT_KHRI_JUDGE_FIN_YMD, (String)childMap.get("kksv040509_out_khri_judge_fin_ymd"));
		}

		// 口振審査結果NG登録マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040509_ido_div"))) 
		{
			template.setNull(EKK0501C090CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0501C090CBSMsg.IDO_DIV, (String)childMap.get("kksv040509_ido_div"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0501C090(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
        // エラー情報の設定
        param = editErrorInfo_EKK0501C090(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 口振審査結果NG登録エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0501C090(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0501C090CBSMsg.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);
		}

		// 請求方法番号（口座）
		setErrDataMap(childMap, template, EKK0501C090CBSMsg.SEIKY_WAY_NO_KOZA_ERR);
		// 支払い審査結果コード
		setErrDataMap(childMap, template, EKK0501C090CBSMsg.PAY_SKEKKA_CD_ERR);
		// 支払い審査結果NG理由コード
		setErrDataMap(childMap, template, EKK0501C090CBSMsg.PAY_SKEKKA_NG_RSN_CD_ERR);
		// 支払い審査結果NG理由メモ
		setErrDataMap(childMap, template, EKK0501C090CBSMsg.PAY_SKEKKA_NG_RSN_MEMO_ERR);
		// 外部口振審査完了年月日
		setErrDataMap(childMap, template, EKK0501C090CBSMsg.OUT_KHRI_JUDGE_FIN_YMD_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0501C090CBSMsg.IDO_DIV_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0501C090CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * クレジット請求手続サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0521D010(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0521D010(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (クレジット請求手続)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0521D010(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * クレジット請求手続のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0521D010(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0521D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0521D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0521D010);

		template.set(EKK0521D010CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
// ANK-3313-00-00 ADD START
		// 初回オーソリ依頼マップ
		HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
// ANK-3313-00-00 ADD END
// ANK-3846-00-00 ADD START
		// トークン
		String token = (String)kksv040531sc.get("token");
// ANK-3846-00-00 ADD END
// OM-2019-0001078 ADD START
		// クレジットカード一意照会マップ
		CAANMsg crecardMap = (CAANMsg)dataMap.get("EKK0521A010CBSMSG1LIST");
// OM-2019-0001078 ADD END
		
		// 機能コード
		template.set(EKK0521D010CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// クレジット請求手続マップ.クレジットカード事業コード → クレジットカード事業コード
		if ("".equals(childMap.get("kksv040510_crecard_jigyo_cd"))) 
		{
			template.setNull(EKK0521D010CBSMsg.CRECARD_JIGYO_CD);
		} 
		else 
		{
			template.set(EKK0521D010CBSMsg.CRECARD_JIGYO_CD, (String)childMap.get("kksv040510_crecard_jigyo_cd"));
		}

// ANK-3313-00-00 MOD START
//		// クレジット請求手続マップ.クレジットカード会社コード → クレジットカード会社コード
//		if ("".equals(childMap.get("kksv040510_crecard_comp_cd"))) 
//		{
//			template.setNull(EKK0521D010CBSMsg.CRECARD_COMP_CD);
//		} 
//		else 
//		{
//			template.set(EKK0521D010CBSMsg.CRECARD_COMP_CD, (String)childMap.get("kksv040510_crecard_comp_cd"));
//		}
// ANK-3846-00-00 MOD START
		// カードブランド
//		String crCardBrandOptcd = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_CARD_BRAND_OPTCD);
		String pyCardBrand = (String)kksv040531sc.get(PY_CARD_BRAND);
		
		// カードブランドが存在しない場合
//		if(JKKCommonUtil.isNull(crCardBrandOptcd))
		if(JKKCommonUtil.isNull(pyCardBrand))
// ANK-3846-00-00 MOD END
		{
			// クレジット請求手続マップ.クレジットカード会社コード → クレジットカード会社コード
			if ("".equals(childMap.get("kksv040510_crecard_comp_cd"))) 
			{
				template.setNull(EKK0521D010CBSMsg.CRECARD_COMP_CD);
			} 
			else 
			{
				template.set(EKK0521D010CBSMsg.CRECARD_COMP_CD, (String)childMap.get("kksv040510_crecard_comp_cd"));
			}
		}
		// カードブランドが存在する場合
		else
		{
			// クレジットカード会社コード
// ANK-3846-00-00 MOD START
//			template.set(EKK0521D010CBSMsg.CRECARD_COMP_CD, crCardBrandOptcd);
			template.set(EKK0521D010CBSMsg.CRECARD_COMP_CD, pyCardBrand);
// ANK-3846-00-00 MOD END
		}
// ANK-3313-00-00 MOD END

// ANK-2810-00-00 MOD START
//		// クレジット請求手続マップ.クレジットカード番号 → クレジットカード番号
//		if ("".equals(childMap.get("kksv040510_crecard_no"))) 
//		{
//			template.setNull(EKK0521D010CBSMsg.CRECARD_NO);
//		} 
//		else 
//		{
//			template.set(EKK0521D010CBSMsg.CRECARD_NO, (String)childMap.get("kksv040510_crecard_no"));
//		}
// ANK-3313-00-00 DEL START
//		// 初回オーソリ依頼マップ
//		HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
// ANK-3313-00-00 DEL END
		
// ANK-3846-00-00 MOD START
//		// 問合せ用カード番号
//		String crInquireCardNo = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_INQUIRE_CARD_NO);
//		// マスクされたカード番号
		String pyMaskedCardNumber = (String)kksv040531sc.get(PY_MASKED_CARD_NUMBER);
// ANK-3846-00-00 MOD END
		
		// 問合せ用カード番号が存在しない場合
// ANK-3846-00-00 MOD START
//		if(JKKCommonUtil.isNull(crInquireCardNo))
		if(JKKCommonUtil.isNull(pyMaskedCardNumber))
// ANK-3846-00-00 MOD END
		{
			// クレジット請求手続マップ.クレジットカード番号 → クレジットカード番号
			if ("".equals(childMap.get("kksv040510_crecard_no"))) 
			{
				template.setNull(EKK0521D010CBSMsg.CRECARD_NO);
			} 
			else
			{
				template.set(EKK0521D010CBSMsg.CRECARD_NO, (String)childMap.get("kksv040510_crecard_no"));
			}
		}
		// 問合せ用カード番号が存在する場合
		else
		{
			// クレジットカード番号
// ANK-3846-00-00 MOD START
//			template.set(EKK0521D010CBSMsg.CRECARD_NO, crInquireCardNo);
			template.set(EKK0521D010CBSMsg.CRECARD_NO, pyMaskedCardNumber);
// ANK-3846-00-00 MOD END
		}
// ANK-2810-00-00 MOD END

// ANK-3846-00-00 MOD START
//		// クレジット請求手続マップ.クレジットカード有効期限 → クレジットカード有効期限
//		if ("".equals(childMap.get("kksv040510_crecard_yk_kigen"))) 
//		{
//			template.setNull(EKK0521D010CBSMsg.CRECARD_YK_KIGEN);
//		} 
//		else 
//		{
//			template.set(EKK0521D010CBSMsg.CRECARD_YK_KIGEN, (String)childMap.get("kksv040510_crecard_yk_kigen"));
//		}
		// カード有効期限
		String pyCardValidTerm = (String)kksv040531sc.get(PY_CARD_VALID_TERM);
		if(JKKCommonUtil.isNull(pyCardValidTerm))
		{
			// クレジット請求手続マップ.クレジットカード有効期限 → クレジットカード有効期限
			if ("".equals(childMap.get("kksv040510_crecard_yk_kigen"))) {
				template.setNull(EKK0521D010CBSMsg.CRECARD_YK_KIGEN);
			} else {
				template.set(EKK0521D010CBSMsg.CRECARD_YK_KIGEN, (String) childMap.get("kksv040510_crecard_yk_kigen"));
			}
		}
		
		else
		{
			// カード有効期限(YYMM→20YYMM変換)
			template.set(EKK0521D010CBSMsg.CRECARD_YK_KIGEN, "20" + pyCardValidTerm);
		}
// ANK-3846-00-00 MOD END

		// クレジット請求手続マップ.クレジット交換コード → クレジット交換コード
		if ("".equals(childMap.get("kksv040510_credit_kokan_cd"))) 
		{
			template.setNull(EKK0521D010CBSMsg.CREDIT_KOKAN_CD);
		} 
		else 
		{
			template.set(EKK0521D010CBSMsg.CREDIT_KOKAN_CD, (String)childMap.get("kksv040510_credit_kokan_cd"));
		}

		// クレジット請求手続マップ.クレジットカード名義（ローマ字） → クレジットカード名義(ローマ字)
		if ("".equals(childMap.get("kksv040510_crecard_nm_romaji"))) 
		{
			template.setNull(EKK0521D010CBSMsg.CRECARD_NM_ROMAJI);
		} 
		else 
		{
			template.set(EKK0521D010CBSMsg.CRECARD_NM_ROMAJI, (String)childMap.get("kksv040510_crecard_nm_romaji"));
		}

		// クレジット請求手続マップ.クレジットカード名義カナ名 → クレジットカード名義カナ名
		if ("".equals(childMap.get("kksv040510_crecard_nm_kana"))) 
		{
			template.setNull(EKK0521D010CBSMsg.CRECARD_NM_KANA);
		} 
		else 
		{
			template.set(EKK0521D010CBSMsg.CRECARD_NM_KANA, (String)childMap.get("kksv040510_crecard_nm_kana"));
		}

		// クレジット請求手続マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040510_ido_div"))) 
		{
			template.setNull(EKK0521D010CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0521D010CBSMsg.IDO_DIV, (String)childMap.get("kksv040510_ido_div"));
		}
		
		// クレジット請求手続マップ.クレジットカード無効年月 → クレジットカード無効年月
		if ("".equals(childMap.get("kksv040510_crecard_mk_ym"))) 
		{
			template.setNull(EKK0521D010CBSMsg.CRECA_MK_YM);
		} 
		else 
		{
			template.set(EKK0521D010CBSMsg.CRECA_MK_YM, (String)childMap.get("kksv040510_crecard_mk_ym"));
		}
		
		// 更新年月日時分秒
		if ("".equals(childMap.get("kksv040510_upd_dtm_bf"))) 
		{
			template.setNull(EKK0521D010CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0521D010CBSMsg.UPD_DTM_BF, (String)childMap.get("kksv040510_upd_dtm_bf"));
		}
		
// ANK-2565-00-00 ADD START
// ANK-2810-00-00 DEL START
//		// 初回オーソリ依頼マップ
//		HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
// ANK-2810-00-00 DEL END
// ANK-3846-00-00 MOD START
//		// カード預りID
//		String crSaveId = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_SAVE_ID_O);
//		
//		// カード預りIDが存在しない場合
//		if(JKKCommonUtil.isNull(crSaveId))
//		{
//			crSaveId = (String)childMap.get(PREFIX_KKSV040510 + EKK0521D010CBSMsg.CRECARD_NO_AZKRI_ID);
//		}
//		
//		// クレジットカード番号預りID
//		template.set(EKK0521D010CBSMsg.CRECARD_NO_AZKRI_ID, crSaveId);
		if (!JKKCommonUtil.isNull(token))
		{
			// 顧客ID
			String pyCustomerId = (String)kksv040531sc.get(EKKA0010003CBSMsg.PY_CUSTOMER_ID);
			// クレジットカード番号預りID
			template.set(EKK0521D010CBSMsg.CRECARD_NO_AZKRI_ID, pyCustomerId);
		}
		else
		{
			if ("".equals(childMap.get("kksv040510_crecard_no_azkri_id"))) {
				template.setNull(EKK0521D010CBSMsg.CRECARD_NO_AZKRI_ID);
			} else {
				template.set(EKK0521D010CBSMsg.CRECARD_NO_AZKRI_ID, (String) childMap.get("kksv040510_crecard_no_azkri_id"));
			}
		}
// ANK-3846-00-00 MOD END
		
		
// ANK-3313-00-00 MOD START
//		// 仕向先会社コード一覧照会マップ
//		HashMap<String, Object> kksv040530sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040530SC);
//		// 仕向先会社コード一覧照会明細
//		ArrayList<HashMap<String, Object>> ekk0531b502CBSMsgList =
//			(ArrayList<HashMap<String, Object>>)kksv040530sc.get(EKK0531B502CBSMsg.EKK0531B502CBSMSG1LIST);
//		// クレジット交換コード
//		String creditKokanCd = null;
//		
//		if(null != ekk0531b502CBSMsgList && 0 < ekk0531b502CBSMsgList.size())
//		{
//			creditKokanCd = (String)ekk0531b502CBSMsgList.get(0).get(EKK0531B502CBSMsg1List.CREDIT_KOKAN_CD);
//		}
// ANK-3846-00-00 MOD START
		// 仕向先カード会社コード
//		String creditKokanCd = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_BRANDCODE);
		// 取扱カード会社コード
		String pyAcqId = (String)kksv040531sc.get(PY_ACQ_ID);
// ANK-3313-00-00 MOD END
		
		// クレジット交換コードが存在しない場合
//		if(JKKCommonUtil.isNull(creditKokanCd))
		if(JKKCommonUtil.isNull(pyAcqId))
// ANK-3846-00-00 MOD END
		{
// ANK-3846-00-00 MOD START
//			creditKokanCd = (String)childMap.get(PREFIX_KKSV040510 + EKK0521D010CBSMsg.SHIKOSAKI_COMP_CD);
			pyAcqId = (String)childMap.get(PREFIX_KKSV040510 + EKK0521D010CBSMsg.SHIKOSAKI_COMP_CD);
// ANK-3846-00-00 MOD END
		}
		
		// 仕向先会社コード
// ANK-3846-00-00 MOD START
//		template.set(EKK0521D010CBSMsg.SHIKOSAKI_COMP_CD, creditKokanCd);
		template.set(EKK0521D010CBSMsg.SHIKOSAKI_COMP_CD, pyAcqId);
// ANK-3846-00-00 MOD END
// ANK-2565-00-00 ADD END
// ANK-3602-00-00 ADD START
// ANK-3846-00-00 MOD START
//		// カード種別
//		String crecardSbtCd = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_CARD_TYPE);
		// デビット・プリペイド判定結果
		String pyDebitPrepaidType = (String)kksv040531sc.get(PY_DEBIT_PREPAID_TYPE);
		
		// カード種別が存在しない場合
//		if(JKKCommonUtil.isNull(crecardSbtCd))
		if(JKKCommonUtil.isNull(pyDebitPrepaidType))
// ANK-3846-00-00 MOD END
		{
// OM-2019-0001078 MOD START
//			crecardSbtCd = (String)childMap.get(PREFIX_KKSV040510 + EKK0521D010CBSMsg.CRECARD_SBT_CD);
			if(null != crecardMap)
			{
// ANK-3846-00-00 MOD START
//				crecardSbtCd = crecardMap.getString(EKK0521A010CBSMsg1List.CRECARD_SBT_CD);
				pyDebitPrepaidType = crecardMap.getString(EKK0521A010CBSMsg1List.CRECARD_SBT_CD);
// ANK-3846-00-00 MOD END
			}
// OM-2019-0001078 MOD END
		}
		
		// クレジットカード種別コード
// ANK-3846-00-00 MOD START
//		template.set(EKK0521D010CBSMsg.CRECARD_SBT_CD, crecardSbtCd);
		template.set(EKK0521D010CBSMsg.CRECARD_SBT_CD, pyDebitPrepaidType);
		
		// イシュア区分
//		String crdtIssuerDiv = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_ISSUER_CLASS);
		String pyIssurClass = (String)kksv040531sc.get(PY_ISSUR_CLASS);
		
		// イシュア区分が存在しない場合
//		if(JKKCommonUtil.isNull(crdtIssuerDiv))
		if(JKKCommonUtil.isNull(pyIssurClass))
// ANK-3846-00-00 MOD END
		{
// OM-2019-0001078 MOD START
//			crdtIssuerDiv = (String)childMap.get(PREFIX_KKSV040510 + EKK0521D010CBSMsg.CRDT_ISSUER_DIV);
			if(null != crecardMap)
			{
// ANK-3846-00-00 MOD START
				pyIssurClass = crecardMap.getString(EKK0521A010CBSMsg1List.CRDT_ISSUER_DIV);
// ANK-3846-00-00 MOD END
			}
// OM-2019-0001078 MOD END
		}
		
		// クレジットイシュア区分
// ANK-3846-00-00 MOD START
//		template.set(EKK0521D010CBSMsg.CRDT_ISSUER_DIV, crdtIssuerDiv);
		template.set(EKK0521D010CBSMsg.CRDT_ISSUER_DIV, pyIssurClass);
// ANK-3846-00-00 MOD END
// ANK-3602-00-00 ADD END
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0521D010(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
		// 請求方法番号(クレジットカード)WORK(EKK0521D010) ← 請求方法番号(クレジットカード)
		if (parentTemplate.isNull(EKK0521D010CBSMsg.SEIKY_WAY_NO_CRECARD)) 
		{
			childMap.put("ekk0521d010_seiky_way_no_crecard", new String());
		} 
		else 
		{
			childMap.put("ekk0521d010_seiky_way_no_crecard", parentTemplate.getString(EKK0521D010CBSMsg.SEIKY_WAY_NO_CRECARD));
		}
		// 世代登録年月日時分秒WORK(EKK0521D010) ← 世代登録年月日時分秒
//		if (parentTemplate.isNull(EKK0521D010CBSMsg.GENE_ADD_DTM)) 
//		{
//			childMap.put("ekk0521d010_gene_add_dtm", new String());
//		} 
//		else 
//		{
//			childMap.put("ekk0521d010_gene_add_dtm", parentTemplate.getString(EKK0521D010CBSMsg.GENE_ADD_DTM));
//		}
		// 更新年月日時分秒WORK(EKK0521D010) ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0521D010CBSMsg.UPD_DTM)) 
		{
			childMap.put("ekk0521d010_upd_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0521d010_upd_dtm", parentTemplate.getString(EKK0521D010CBSMsg.UPD_DTM));
		}
		
        // エラー情報の設定
        param = editErrorInfo_EKK0521D010(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * クレジット請求手続エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0521D010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0521D010CBSMsg.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);
		}

		// クレジットカード事業コード
		setErrDataMap(childMap, template, EKK0521D010CBSMsg.CRECARD_JIGYO_CD_ERR);
		// クレジットカード会社コード
		setErrDataMap(childMap, template, EKK0521D010CBSMsg.CRECARD_COMP_CD_ERR);
		// クレジットカード番号
		setErrDataMap(childMap, template, EKK0521D010CBSMsg.CRECARD_NO_ERR);
		// クレジットカード有効期限
		setErrDataMap(childMap, template, EKK0521D010CBSMsg.CRECARD_YK_KIGEN_ERR);
		// クレジット交換コード
		setErrDataMap(childMap, template, EKK0521D010CBSMsg.CREDIT_KOKAN_CD_ERR);
		// クレジットカード名義(ローマ字)
		setErrDataMap(childMap, template, EKK0521D010CBSMsg.CRECARD_NM_ROMAJI_ERR);
		// クレジットカード名義カナ名
		setErrDataMap(childMap, template, EKK0521D010CBSMsg.CRECARD_NM_KANA_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0521D010CBSMsg.IDO_DIV_ERR);
		// 更新年月日時分秒（更新前）
		setErrDataMap(childMap, template, EKK0521D010CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * クレジット審査依頼サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0521C030(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0521C030(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (クレジット審査依頼)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0521C030(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * クレジット審査依頼のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0521C030(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0521C030CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0521C030CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0521C030);

		template.set(EKK0521C030CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0521C030CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求方法番号（クレジットカード）
		if ("".equals(childMap.get("ekk0521d010_seiky_way_no_crecard")) || !childMap.containsKey("ekk0521d010_seiky_way_no_crecard")) 
		{
			template.setNull(EKK0521C030CBSMsg.SEIKY_WAY_NO_CRECARD);
		} 
		else 
		{
			template.set(EKK0521C030CBSMsg.SEIKY_WAY_NO_CRECARD, (String)childMap.get("ekk0521d010_seiky_way_no_crecard"));
		}
		
		// 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0491c060_upd_dtm")) || !childMap.containsKey("ekk0491c060_upd_dtm")) 
		{
			template.setNull(EKK0521C030CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0521C030CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c060_upd_dtm"));
		}
//		if ("".equals(childMap.get("ekk0521d010_upd_dtm")) || !childMap.containsKey("ekk0521d010_upd_dtm")) 
//		{
//			template.setNull(EKK0521C030CBSMsg.UPD_DTM_BF);
//		} 
//		else 
//		{
//			template.set(EKK0521C030CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0521d010_upd_dtm"));
//		}
		
		// クレジット審査依頼マップ.支払い審査依頼年月日 → 支払い審査依頼年月日
		if ("".equals(childMap.get("kksv040511_pay_judge_reqymd"))) 
		{
			template.setNull(EKK0521C030CBSMsg.PAY_JUDGE_REQYMD);
		} 
		else 
		{
			template.set(EKK0521C030CBSMsg.PAY_JUDGE_REQYMD, (String)childMap.get("kksv040511_pay_judge_reqymd"));
		}

		// クレジット審査依頼マップ.記載不備審査結果コード → 記載不備審査結果コード
		if ("".equals(childMap.get("kksv040511_kshbi_skekka_cd"))) 
		{
			template.setNull(EKK0521C030CBSMsg.KSHBI_SKEKKA_CD);
		} 
		else 
		{
			template.set(EKK0521C030CBSMsg.KSHBI_SKEKKA_CD, (String)childMap.get("kksv040511_kshbi_skekka_cd"));
		}

		// クレジット審査依頼マップ.支払い審査結果コード → 支払い審査結果コード
		if ("".equals(childMap.get("kksv040511_pay_skekka_cd"))) 
		{
			template.setNull(EKK0521C030CBSMsg.PAY_SKEKKA_CD);
		} 
		else 
		{
			template.set(EKK0521C030CBSMsg.PAY_SKEKKA_CD, (String)childMap.get("kksv040511_pay_skekka_cd"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0521C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
		// 世代登録年月日時分秒WORK(EKK0521C030) ← 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0521C030CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("ekk0521c030_gene_add_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0521c030_gene_add_dtm", parentTemplate.getString(EKK0521C030CBSMsg.GENE_ADD_DTM));
		}
		
		
        // エラー情報の設定
        param = editErrorInfo_EKK0521C030(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * クレジット審査依頼エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0521C030(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0521C030CBSMsg.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);
		}

		// 請求方法番号(クレジットカード)
		setErrDataMap(childMap, template, EKK0521C030CBSMsg.SEIKY_WAY_NO_CRECARD_ERR);
		// 支払い審査依頼年月日
		setErrDataMap(childMap, template, EKK0521C030CBSMsg.PAY_JUDGE_REQYMD_ERR);
		// 記載不備審査結果コード
		setErrDataMap(childMap, template, EKK0521C030CBSMsg.KSHBI_SKEKKA_CD_ERR);
		// 支払い審査結果コード
		setErrDataMap(childMap, template, EKK0521C030CBSMsg.PAY_SKEKKA_CD_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0521C030CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * クレジット審査結果OK登録サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0521C110(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0521C110(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (クレジット審査結果OK登録)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0521C110(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * クレジット審査結果OK登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0521C110(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0521C110CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0521C110CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0521C110);

		template.set(EKK0521C110CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0521C110CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求方法番号（クレジットカード）
		if ("".equals(childMap.get("ekk0521d010_seiky_way_no_crecard")) || !childMap.containsKey("ekk0521d010_seiky_way_no_crecard")) 
		{
			template.setNull(EKK0521C110CBSMsg.SEIKY_WAY_NO_CRECARD);
		} 
		else 
		{
			template.set(EKK0521C110CBSMsg.SEIKY_WAY_NO_CRECARD, (String)childMap.get("ekk0521d010_seiky_way_no_crecard"));
		}
		// 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0491c060_upd_dtm")) || !childMap.containsKey("ekk0491c060_upd_dtm")) 
		{
			template.setNull(EKK0521C110CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0521C110CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c060_upd_dtm"));
		}
//		if ("".equals(childMap.get("ekk0521d010_upd_dtm")) || !childMap.containsKey("ekk0521d010_upd_dtm")) 
//		{
//			template.setNull(EKK0521C110CBSMsg.UPD_DTM_BF);
//		} 
//		else 
//		{
//			template.set(EKK0521C110CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0521d010_upd_dtm"));
//		}
		
		// クレジット審査結果OK登録マップ.支払い審査結果コード → 支払い審査結果コード
		if ("".equals(childMap.get("kksv040513_pay_skekka_cd"))) 
		{
			template.setNull(EKK0521C110CBSMsg.PAY_SKEKKA_CD);
		} 
		else 
		{
			template.set(EKK0521C110CBSMsg.PAY_SKEKKA_CD, (String)childMap.get("kksv040513_pay_skekka_cd"));
		}

// ANK-2565-00-00 ADD START
		// 初回オーソリ依頼マップ
		HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
// ANK-3846-00-00 MOD START
//		// オーソリ承認番号
//		String crAuthnumber = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_AUTHNUMBER);
		// トークン
		String token = (String)kksv040531sc.get("token");
		if (!JKKCommonUtil.isNull(token))
		{
			// オーソリ確認年月日時分秒
			template.set(EKK0521C110CBSMsg.AUTHORI_CFM_DTM, JCCBPCommon.getSysDateTimeStamp());
			// オーソリ承認番号
			template.setNull(EKK0521C110CBSMsg.AUTHORI_SHONIN_NO);
		}
		else
		{
			// オーソリ承認番号
			String crAuthnumber = (String)kksv040531sc.get(EKKA0010004CBSMsg.PY_SHONIN_NO);
// ANK-3846-00-00 MOD END
			
			// オーソリ承認番号が存在しない場合
			if(JKKCommonUtil.isNull(crAuthnumber))
			{
// ANK-2565-00-00 ADD END
				
				// クレジット審査結果OK登録マップ.オーソリ確認年月日時分秒 → オーソリ確認年月日時分秒
				if ("".equals(childMap.get("kksv040513_authori_cfm_dtm"))) 
				{
					template.setNull(EKK0521C110CBSMsg.AUTHORI_CFM_DTM);
				} 
				else 
				{
					template.set(EKK0521C110CBSMsg.AUTHORI_CFM_DTM, (String)childMap.get("kksv040513_authori_cfm_dtm"));
				}

					// クレジット審査結果OK登録マップ.オーソリ承認番号 → オーソリ承認番号
					if ("".equals(childMap.get("kksv040513_authori_shonin_no"))) 
					{
						template.setNull(EKK0521C110CBSMsg.AUTHORI_SHONIN_NO);
					} 
					else 
					{
						template.set(EKK0521C110CBSMsg.AUTHORI_SHONIN_NO, (String)childMap.get("kksv040513_authori_shonin_no"));
					}
// ANK-2565-00-00 ADD START
			}
			else
			{
				// オーソリ確認年月日時分秒
				template.set(EKK0521C110CBSMsg.AUTHORI_CFM_DTM, JCCBPCommon.getSysDateTimeStamp());
				// オーソリ承認番号
// ST-2022-0000014 MOD START
//				template.set(EKK0521C110CBSMsg.AUTHORI_SHONIN_NO, crAuthnumber);
				template.setNull(EKK0521C110CBSMsg.AUTHORI_SHONIN_NO);
// ST-2022-0000014 MOD END
			}
// ANK-2565-00-00 ADD END
// ANK-3846-00-00 MOD START
		}
// ANK-3846-00-00 MOD END

		// クレジット審査結果OK登録マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040513_ido_div"))) 
		{
			template.setNull(EKK0521C110CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0521C110CBSMsg.IDO_DIV, (String)childMap.get("kksv040513_ido_div"));
		}

		// クレジット審査結果OK登録マップ.予約適用年月日 → 予約適用年月日
		if ("".equals(childMap.get("kksv040513_rsv_aply_ymd"))) 
		{
			template.setNull(EKK0521C110CBSMsg.RSV_APLY_YMD);
		} 
		else 
		{
			template.set(EKK0521C110CBSMsg.RSV_APLY_YMD, (String)childMap.get("kksv040513_rsv_aply_ymd"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0521C110(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
        // エラー情報の設定
        param = editErrorInfo_EKK0521C110(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * クレジット審査結果OK登録エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0521C110(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0521C110CBSMsg.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);
		}

		// 請求方法番号(クレジットカード)
		setErrDataMap(childMap, template, EKK0521C110CBSMsg.SEIKY_WAY_NO_CRECARD_ERR);
		// 支払い審査結果コード
		setErrDataMap(childMap, template, EKK0521C110CBSMsg.PAY_SKEKKA_CD_ERR);
		// オーソリ確認年月日時分秒
		setErrDataMap(childMap, template, EKK0521C110CBSMsg.AUTHORI_CFM_DTM_ERR);
		// オーソリ承認番号
		setErrDataMap(childMap, template, EKK0521C110CBSMsg.AUTHORI_SHONIN_NO_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0521C110CBSMsg.IDO_DIV_ERR);
		// 予約適用年月日
		setErrDataMap(childMap, template, EKK0521C110CBSMsg.RSV_APLY_YMD_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0521C110CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * クレジット審査結果NG登録サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0521C120(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0521C120(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (クレジット審査結果NG登録)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0521C120(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * クレジット審査結果NG登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0521C120(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0521C120CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0521C120CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0521C120);

		template.set(EKK0521C120CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0521C120CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求方法番号（クレジットカード）
		if ("".equals(childMap.get("ekk0521d010_seiky_way_no_crecard")) || !childMap.containsKey("ekk0521d010_seiky_way_no_crecard")) 
		{
			template.setNull(EKK0521C120CBSMsg.SEIKY_WAY_NO_CRECARD);
		} 
		else 
		{
			template.set(EKK0521C120CBSMsg.SEIKY_WAY_NO_CRECARD, (String)childMap.get("ekk0521d010_seiky_way_no_crecard"));
		}
		// 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0491c060_upd_dtm")) || !childMap.containsKey("ekk0491c060_upd_dtm")) 
		{
			template.setNull(EKK0521C120CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0521C120CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c060_upd_dtm"));
		}
//		if ("".equals(childMap.get("ekk0521d010_upd_dtm")) || !childMap.containsKey("ekk0521d010_upd_dtm")) 
//		{
//			template.setNull(EKK0521C120CBSMsg.UPD_DTM_BF);
//		} 
//		else 
//		{
//			template.set(EKK0521C120CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0521d010_upd_dtm"));
//		}
		
		// クレジット審査結果NG登録マップ.支払い審査結果コード → 支払い審査結果コード
		if ("".equals(childMap.get("kksv040514_pay_skekka_cd"))) 
		{
			template.setNull(EKK0521C120CBSMsg.PAY_SKEKKA_CD);
		} 
		else 
		{
			template.set(EKK0521C120CBSMsg.PAY_SKEKKA_CD, (String)childMap.get("kksv040514_pay_skekka_cd"));
		}

		// クレジット審査結果NG登録マップ.支払い審査結果NG理由コード → 支払い審査結果NG理由コード
		if ("".equals(childMap.get("kksv040514_pay_skekka_ng_rsn_cd"))) 
		{
			template.setNull(EKK0521C120CBSMsg.PAY_SKEKKA_NG_RSN_CD);
		} 
		else 
		{
			template.set(EKK0521C120CBSMsg.PAY_SKEKKA_NG_RSN_CD, (String)childMap.get("kksv040514_pay_skekka_ng_rsn_cd"));
		}

		// クレジット審査結果NG登録マップ.支払い審査結果NG理由メモ → 支払い審査結果NG理由メモ
		if ("".equals(childMap.get("kksv040514_pay_skekka_ng_rsn_memo"))) 
		{
			template.setNull(EKK0521C120CBSMsg.PAY_SKEKKA_NG_RSN_MEMO);
		} 
		else 
		{
			template.set(EKK0521C120CBSMsg.PAY_SKEKKA_NG_RSN_MEMO, (String)childMap.get("kksv040514_pay_skekka_ng_rsn_memo"));
		}

		// クレジット審査結果NG登録マップ.オーソリ確認年月日時分秒 → オーソリ確認年月日時分秒
		if ("".equals(childMap.get("kksv040514_authori_cfm_dtm"))) 
		{
			template.setNull(EKK0521C120CBSMsg.AUTHORI_CFM_DTM);
		} 
		else 
		{
			template.set(EKK0521C120CBSMsg.AUTHORI_CFM_DTM, (String)childMap.get("kksv040514_authori_cfm_dtm"));
		}

		// クレジット審査結果NG登録マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040514_ido_div"))) 
		{
			template.setNull(EKK0521C120CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0521C120CBSMsg.IDO_DIV, (String)childMap.get("kksv040514_ido_div"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0521C120(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
        // エラー情報の設定
        param = editErrorInfo_EKK0521C120(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * クレジット審査結果NG登録エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0521C120(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0521C120CBSMsg.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);
		}

		// 請求方法番号(クレジットカード)
		setErrDataMap(childMap, template, EKK0521C120CBSMsg.SEIKY_WAY_NO_CRECARD_ERR);
		// 支払い審査結果コード
		setErrDataMap(childMap, template, EKK0521C120CBSMsg.PAY_SKEKKA_CD_ERR);
		// 支払い審査結果NG理由コード
		setErrDataMap(childMap, template, EKK0521C120CBSMsg.PAY_SKEKKA_NG_RSN_CD_ERR);
		// 支払い審査結果NG理由メモ
		setErrDataMap(childMap, template, EKK0521C120CBSMsg.PAY_SKEKKA_NG_RSN_MEMO_ERR);
		// オーソリ確認年月日時分秒
		setErrDataMap(childMap, template, EKK0521C120CBSMsg.AUTHORI_CFM_DTM_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0521C120CBSMsg.IDO_DIV_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0521C120CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * 請求支払先変更サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0491C240(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0491C240(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求支払先変更)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0491C240(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求支払先変更のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0491C240(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0491C240CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0491C240CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0491C240);

		template.set(EKK0491C240CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0491C240CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求支払先変更マップ.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前)
		if("".equals(childMap.get("ekk0491c060_upd_dtm")) || !childMap.containsKey("ekk0491c060_upd_dtm"))
		{
			template.setNull(EKK0491C240CBSMsg.UPD_DTM_BF);
		}
		else 
		{
			template.set(EKK0491C240CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c060_upd_dtm"));
		}
		// 作業項目.請求方法番号（口座） → 請求方法番号（口座）
		if ("".equals(childMap.get("ekk0501d010_seiky_way_no_koza")) || !childMap.containsKey("ekk0501d010_seiky_way_no_koza")) 
		{
			template.setNull(EKK0491C240CBSMsg.SEIKY_WAY_NO_KOZA);
		} 
		else 
		{
			template.set(EKK0491C240CBSMsg.SEIKY_WAY_NO_KOZA, (String)childMap.get("ekk0501d010_seiky_way_no_koza"));
		}
		// 作業項目.請求方法番号（クレジットカード） → 請求方法番号（クレジットカード）
		if ("".equals(childMap.get("ekk0521d010_seiky_way_no_crecard")) || !childMap.containsKey("ekk0521d010_seiky_way_no_crecard")) 
		{
			template.setNull(EKK0491C240CBSMsg.SEIKY_WAY_NO_CRECARD);
		} 
		else 
		{
			template.set(EKK0491C240CBSMsg.SEIKY_WAY_NO_CRECARD, (String)childMap.get("ekk0521d010_seiky_way_no_crecard"));
		}
		
		// 請求支払先変更マップ.請求方法番号 → 請求方法番号
		if ("".equals(childMap.get("kksv040515_seiky_kei_no"))) 
		{
			template.setNull(EKK0491C240CBSMsg.SEIKY_KEI_NO);
		} 
		else 
		{
			template.set(EKK0491C240CBSMsg.SEIKY_KEI_NO, (String)childMap.get("kksv040515_seiky_kei_no"));
		}

		// 請求支払先変更マップ.請求方法コード → 請求方法コード
		if ("".equals(childMap.get("kksv040515_seiky_way_cd"))) 
		{
			template.setNull(EKK0491C240CBSMsg.SEIKY_WAY_CD);
		} 
		else 
		{
			template.set(EKK0491C240CBSMsg.SEIKY_WAY_CD, (String)childMap.get("kksv040515_seiky_way_cd"));
		}

		// 請求支払先変更マップ.予約適用開始希望年月日 → 予約適用開始希望年月日
		if ("".equals(childMap.get("kksv040515_rsv_tsta_kibo_ymd"))) 
		{
			template.setNull(EKK0491C240CBSMsg.RSV_TSTA_KIBO_YMD);
		} 
		else 
		{
			template.set(EKK0491C240CBSMsg.RSV_TSTA_KIBO_YMD, (String)childMap.get("kksv040515_rsv_tsta_kibo_ymd"));
		}

		// 請求支払先変更マップ.予約適用年月日 → 予約適用年月日
		if ("".equals(childMap.get("kksv040515_rsv_aply_ymd"))) 
		{
			template.setNull(EKK0491C240CBSMsg.RSV_APLY_YMD);
		} 
		else 
		{
			template.set(EKK0491C240CBSMsg.RSV_APLY_YMD, (String)childMap.get("kksv040515_rsv_aply_ymd"));
		}

		// 請求支払先変更マップ.初回支払申込書送付要否 → 初回支払申込書送付要否
//		if ("".equals(childMap.get("kksv040505_first_pay_mskmsho_sohu_yh"))) 
//		{
//			template.setNull(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH);
//		} 
//		else 
//		{
//			template.set(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH, (String)childMap.get("kksv040505_first_pay_mskmsho_sohu_yh"));
//		}

		// 請求支払先変更マップ.初回支払申込書送付年月日 → 初回支払申込書送付年月日
		if ("".equals(childMap.get("kksv040505_first_pay_mskmsho_rcp_ymd"))) 
		{
			template.setNull(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD);
		} 
		else 
		{
			template.set(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD, (String)childMap.get("kksv040505_first_pay_mskmsho_rcp_ymd"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0491C240(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		// 世代登録年月日時分秒WORK(EKK0491C240) ← 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0491C240CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("ekk0491c240_gene_add_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0491c240_gene_add_dtm", parentTemplate.getString(EKK0491C240CBSMsg.GENE_ADD_DTM));
		}
		// 更新年月日時分秒WORK(EKK0491C240) ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0491C240CBSMsg.UPD_DTM)) 
		{
			childMap.put("ekk0491c240_upd_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0491c240_upd_dtm", parentTemplate.getString(EKK0491C240CBSMsg.UPD_DTM));
		}
		
        // エラー情報の設定
        param = editErrorInfo_EKK0491C240(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求支払先変更エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0491C240(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0491C240CBSMsg.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);
		}

		// 請求契約番号
		setErrDataMap(childMap, template, EKK0491C240CBSMsg.SEIKY_KEI_NO_ERR);
		// 請求方法コード
		setErrDataMap(childMap, template, EKK0491C240CBSMsg.SEIKY_WAY_CD_ERR);
		// 請求方法番号(口座)
		setErrDataMap(childMap, template, EKK0491C240CBSMsg.SEIKY_WAY_NO_KOZA_ERR);
		// 請求方法番号(クレジットカード)
		setErrDataMap(childMap, template, EKK0491C240CBSMsg.SEIKY_WAY_NO_CRECARD_ERR);
		// 予約適用開始希望年月日
		setErrDataMap(childMap, template, EKK0491C240CBSMsg.RSV_TSTA_KIBO_YMD_ERR);
		// 予約適用年月日
		setErrDataMap(childMap, template, EKK0491C240CBSMsg.RSV_APLY_YMD_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0491C240CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * クレジット初回オーソリ登録サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK1031D010(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK1031D010(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (クレジット初回オーソリ登録)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK1031D010(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * クレジット初回オーソリ登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK1031D010(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK1031D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK1031D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1031D010);

		template.set(EKK1031D010CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
// ANK-3313-00-00 ADD START
		// 初回オーソリ依頼マップ
		HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
// ANK-3313-00-00 ADD END
// ANK-3846-00-00 ADD START
		// トークン
		String token = (String)kksv040531sc.get("token");
// ANK-3846-00-00 ADD END
		
		// 機能コード
		template.set(EKK1031D010CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求契約世代登録年月日時分秒
		// チェックのみでも排他チェック実施してしまう。の対応
		String funcCd = (String)dataMap.get(JCMConstants.FUNC_CODE_KEY);
		if("2".equals(funcCd) || "".equals(childMap.get("ekk0491c240_gene_add_dtm")) || !childMap.containsKey("ekk0491c240_gene_add_dtm"))
		{
			template.setNull(EKK1031D010CBSMsg.SEIKY_KEI_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK1031D010CBSMsg.SEIKY_KEI_GENE_ADD_DTM, (String)childMap.get("ekk0491c240_gene_add_dtm"));
		}
		// 請求方法番号(クレジットカード)
		if ("".equals(childMap.get("ekk0521d010_seiky_way_no_crecard")) || !childMap.containsKey("ekk0521d010_seiky_way_no_crecard")) 
		{
			template.setNull(EKK1031D010CBSMsg.SEIKY_WAY_NO_CRECARD);
		} 
		else 
		{
			template.set(EKK1031D010CBSMsg.SEIKY_WAY_NO_CRECARD, (String)childMap.get("ekk0521d010_seiky_way_no_crecard"));
		}
		// クレジットカード世代登録年月日時分秒
		if ("".equals(childMap.get("ekk0521c030_gene_add_dtm")) || !childMap.containsKey("ekk0521c030_gene_add_dtm")) 
		{
			template.setNull(EKK1031D010CBSMsg.CRECARD_GENE_ADD_DTM);
		} 
		else 
		{
			template.set(EKK1031D010CBSMsg.CRECARD_GENE_ADD_DTM, (String)childMap.get("ekk0521c030_gene_add_dtm"));
		}
		
		// クレジット初回オーソリ登録マップ.請求契約番号 → 請求契約番号
		if ("".equals(childMap.get("kksv040512_seiky_kei_no"))) 
		{
			template.setNull(EKK1031D010CBSMsg.SEIKY_KEI_NO);
		} 
		else 
		{
			template.set(EKK1031D010CBSMsg.SEIKY_KEI_NO, (String)childMap.get("kksv040512_seiky_kei_no"));
		}

// ANK-3313-00-00 MOD START
//		// クレジット初回オーソリ登録マップ.クレジットカード会社コード → クレジットカード会社コード
//		if ("".equals(childMap.get("kksv040512_crecard_comp_cd"))) 
//		{
//			template.setNull(EKK1031D010CBSMsg.CRECARD_COMP_CD);
//		} 
//		else 
//		{
//			template.set(EKK1031D010CBSMsg.CRECARD_COMP_CD, (String)childMap.get("kksv040512_crecard_comp_cd"));
//		}
		// カードブランド
// ANK-3846-00-00 MOD START
//		String crCardBrandOptcd = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_CARD_BRAND_OPTCD);
		String pyCardBrand = (String)kksv040531sc.get(PY_CARD_BRAND);
		
		// クレジットカード会社コード
//		template.set(EKK1031D010CBSMsg.CRECARD_COMP_CD, crCardBrandOptcd);
		template.set(EKK1031D010CBSMsg.CRECARD_COMP_CD, pyCardBrand);
// ANK-3313-00-00 MOD END
// ANK-3846-00-00 MOD END

		// クレジット初回オーソリ登録マップ.オーソリ処理コード → オーソリ処理コード
		if ("".equals(childMap.get("kksv040512_auth_tran_cd"))) 
		{
			template.setNull(EKK1031D010CBSMsg.AUTH_TRAN_CD);
		} 
		else 
		{
			template.set(EKK1031D010CBSMsg.AUTH_TRAN_CD, (String)childMap.get("kksv040512_auth_tran_cd"));
		}

		// クレジット初回オーソリ登録マップ.売上オーソリ金額 → 売上オーソリ金額
		if ("".equals(childMap.get("kksv040512_sales_authori_amnt"))) 
		{
			template.setNull(EKK1031D010CBSMsg.SALES_AUTHORI_AMNT);
		} 
		else 
		{
			template.set(EKK1031D010CBSMsg.SALES_AUTHORI_AMNT, (String)childMap.get("kksv040512_sales_authori_amnt"));
		}

// ANK-2810-00-00 MOD START
//		// クレジット初回オーソリ登録マップ.クレジットカード番号 → クレジットカード番号
//		if ("".equals(childMap.get("kksv040512_crecard_no"))) 
//		{
//			template.setNull(EKK1031D010CBSMsg.CRECARD_NO);
//		} 
//		else 
//		{
//			template.set(EKK1031D010CBSMsg.CRECARD_NO, (String)childMap.get("kksv040512_crecard_no"));
//		}
// ANK-3313-00-00 DEL START
//		// 初回オーソリ依頼マップ
//		HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
// ANK-3313-00-00 DEL END
		
// ANK-3846-00-00 MOD START
//		// 問合せ用カード番号
//		String crInquireCardNo = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_INQUIRE_CARD_NO);
		// マスクされたカード番号
		String pyMaskedCardNumber = (String)kksv040531sc.get(PY_MASKED_CARD_NUMBER);
// ANK-3846-00-00 MOD END
		
		// クレジットカード番号
		if (JPCModelConstant.FUNC_CD_1.equals(dataMap.get(JCMConstants.FUNC_CODE_KEY)))
		{
			// 機能コードが"1"の場合、初回オーソリ依頼マップ.問合せ用カード番号を設定する
// ANK-3846-00-00 MOD START
//			template.set(EKK1031D010CBSMsg.CRECARD_NO, crInquireCardNo);
			template.set(EKK1031D010CBSMsg.CRECARD_NO, pyMaskedCardNumber);
// ANK-3846-00-00 MOD END
		}
		else if (JPCModelConstant.FUNC_CD_2.equals(dataMap.get(JCMConstants.FUNC_CODE_KEY)))
		{
			// 機能コードが"2"の場合、"0000000000000000"を設定する
			// 初回オーソリ依頼は確定時のみ実行されているため、チェック用の仮カード番号を設定する
			template.set(EKK1031D010CBSMsg.CRECARD_NO, "0000000000000000");
		}
// ANK-2810-00-00 MOD END

// ANK-3313-00-00 MOD START
//		// クレジット初回オーソリ登録マップ.加盟店番号 → 加盟店番号
//		if ("".equals(childMap.get("kksv040512_membstr_no"))) 
//		{
//			template.setNull(EKK1031D010CBSMsg.MEMBSTR_NO);
//		} 
//		else 
//		{
//			template.set(EKK1031D010CBSMsg.MEMBSTR_NO, (String)childMap.get("kksv040512_membstr_no"));
//		}
		// クレジットカード会社一意照会マップ
		HashMap<String, Object> kksv040532sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040532SC);
		// クレジットカード会社一意照会明細
		ArrayList<HashMap<String, Object>> ekk0531a010CBSMsgList =
			(ArrayList<HashMap<String, Object>>)kksv040532sc.get(EKK0531A010CBSMsg.EKK0531A010CBSMSG1LIST);
		// 加盟店番号(15桁)
		String membstrNo = null;
		
		if(null != ekk0531a010CBSMsgList && 0 < ekk0531a010CBSMsgList.size())
		{
			membstrNo = (String)ekk0531a010CBSMsgList.get(0).get(EKK0531A010CBSMsg1List.MEMBSTR_NO_15);
		}
		
		// 加盟店番号
		template.set(EKK1031D010CBSMsg.MEMBSTR_NO, membstrNo);
// ANK-3313-00-00 MOD END

// ANK-3846-00-00 MOD START
		// クレジット初回オーソリ登録マップ.クレジットカード有効期限 → クレジットカード有効期限
//		if ("".equals(childMap.get("kksv040512_crecard_yk_kigen"))) 
//		{
//			template.setNull(EKK1031D010CBSMsg.CRECARD_YK_KIGEN);
//		} 
//		else 
//		{
//			template.set(EKK1031D010CBSMsg.CRECARD_YK_KIGEN, (String)childMap.get("kksv040512_crecard_yk_kigen"));
//		}
		String pyCardValidTerm = (String)kksv040531sc.get(PY_CARD_VALID_TERM);
		if (JKKCommonUtil.isNull(pyCardValidTerm))
		{
			template.setNull(EKK1031D010CBSMsg.CRECARD_YK_KIGEN);
		} else {
			// カード有効期限(YYMM→20YYMM変換)
			template.set(EKK1031D010CBSMsg.CRECARD_YK_KIGEN, "20" + pyCardValidTerm);
		}
// ANK-3846-00-00 MOD END

		// クレジット初回オーソリ登録マップ.オーソリ要求コード → オーソリ要求コード
		if ("".equals(childMap.get("kksv040512_authori_yokyu_cd"))) 
		{
			template.setNull(EKK1031D010CBSMsg.AUTHORI_YOKYU_CD);
		} 
		else 
		{
			template.set(EKK1031D010CBSMsg.AUTHORI_YOKYU_CD, (String)childMap.get("kksv040512_authori_yokyu_cd"));
		}

		// クレジット初回オーソリ登録マップ.処理フラグ → 処理フラグ
		if ("".equals(childMap.get("kksv040512_trn_flg"))) 
		{
			template.setNull(EKK1031D010CBSMsg.TRN_FLG);
		} 
		else 
		{
			template.set(EKK1031D010CBSMsg.TRN_FLG, (String)childMap.get("kksv040512_trn_flg"));
		}

		// クレジット初回オーソリ登録マップ.抽出フラグ → 抽出フラグ
		if ("".equals(childMap.get("kksv040512_chsht_flg"))) 
		{
			template.setNull(EKK1031D010CBSMsg.CHSHT_FLG);
		} 
		else 
		{
			template.set(EKK1031D010CBSMsg.CHSHT_FLG, (String)childMap.get("kksv040512_chsht_flg"));
		}

		// クレジット初回オーソリ登録マップ.取消コード → 取消コード
		if ("".equals(childMap.get("kksv040512_cl_cd"))) 
		{
			template.setNull(EKK1031D010CBSMsg.CL_CD);
		} 
		else 
		{
			template.set(EKK1031D010CBSMsg.CL_CD, (String)childMap.get("kksv040512_cl_cd"));
		}
		
// ANK-2565-00-00 ADD START
// ANK-2810-00-00 DEL START
//		// 初回オーソリ依頼マップ
//		HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
// ANK-2810-00-00 DEL END
// ANK-3846-00-00 MOD START
//		// カード預りID
//		String crSaveId = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_SAVE_ID_O);
//		// クレジットカード番号預りID
//		template.set(EKK1031D010CBSMsg.CRECARD_NO_AZKRI_ID, crSaveId);
		if (!JKKCommonUtil.isNull(token))
		{
			// 顧客ID
			String pyCustomerId = (String)kksv040531sc.get(EKKA0010003CBSMsg.PY_CUSTOMER_ID);
			// クレジットカード番号預りID
			template.set(EKK1031D010CBSMsg.CRECARD_NO_AZKRI_ID, pyCustomerId);
		}
		else
		{
			// クレジットカード番号預りID
			if ("".equals(childMap.get("kksv040512_crecard_no_azkri_id"))) 
			{
				template.setNull(EKK1031D010CBSMsg.CRECARD_NO_AZKRI_ID);
			} 
			else 
			{
				template.set(EKK1031D010CBSMsg.CRECARD_NO_AZKRI_ID, (String)childMap.get("kksv040512_crecard_no_azkri_id"));
			}
		}
// ANK-3846-00-00 MOD END
		
		
// ANK-3313-00-00 MOD START
//		// 仕向先会社コード一覧照会マップ
//		HashMap<String, Object> kksv040530sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040530SC);
//		// 仕向先会社コード一覧照会明細
//		ArrayList<HashMap<String, Object>> ekk0531b502CBSMsgList =
//			(ArrayList<HashMap<String, Object>>)kksv040530sc.get(EKK0531B502CBSMsg.EKK0531B502CBSMSG1LIST);
//		// クレジット交換コード
//		String creditKokanCd = null;
//		
//		if(null != ekk0531b502CBSMsgList && 0 < ekk0531b502CBSMsgList.size())
//		{
//			creditKokanCd = (String)ekk0531b502CBSMsgList.get(0).get(EKK0531B502CBSMsg1List.CREDIT_KOKAN_CD);
//		}
//		
//		// クレジット交換コードが存在しない場合
//		if(JKKCommonUtil.isNull(creditKokanCd))
//		{
//			creditKokanCd = (String)childMap.get(PREFIX_KKSV040512 + EKK1031D010CBSMsg.SHIKOSAKI_COMP_CD);
//		}
// ANK-3846-00-00 MOD START
//		// 仕向先カード会社コード
//		String creditKokanCd = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_BRANDCODE);
		// 取扱カード会社コード
		String pyAcqId = (String)kksv040531sc.get(PY_ACQ_ID);
// ANK-3846-00-00 MOD END
// ANK-3313-00-00 MOD END
		
		// 仕向先会社コード
// ANK-3846-00-00 MOD START
		template.set(EKK1031D010CBSMsg.SHIKOSAKI_COMP_CD, pyAcqId);
// ANK-3846-00-00 MOD END
// ANK-2565-00-00 ADD END
// ANK-3846-00-00 ADD START
		if (!JKKCommonUtil.isNull(token))
		{
			// 決済ID
			template.setNull(EKK1031D010CBSMsg.PAYMENT_ID);
			// マーチャント取引ID
			template.setNull(EKK1031D010CBSMsg.MERCHANT_TRADING_ID);
		}
		else
		{
			// 決済ID
			String pyPaymentId = (String)kksv040531sc.get(EKKA0010004CBSMsg.PY_PAYMENT_ID);
			// 決済ID
			template.set(EKK1031D010CBSMsg.PAYMENT_ID, pyPaymentId);
			
			// マーチャント取引ID
			String pyTradingId = (String)kksv040531sc.get(EKKA0010004CBSMsg.PY_TRADING_ID);
			// マーチャント取引ID
			template.set(EKK1031D010CBSMsg.MERCHANT_TRADING_ID, pyTradingId);
		}
		
		// レスポンスコード
		String pyResponseCode = (String)kksv040531sc.get(PY_RESPONSE_CODE);
		// オーソリ結果応答コード
		template.set(EKK1031D010CBSMsg.AUTH_RSLT_RSP_CD, pyResponseCode);
		
		// レスポンス詳細
		String pyResponseDetail = (String)kksv040531sc.get(PY_RESPONSE_DETAIL);
		// オーソリ結果応答詳細
		template.set(EKK1031D010CBSMsg.AUTH_RSLT_RSP_DTL, pyResponseDetail);
// ANK-3846-00-00 ADD END
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK1031D010(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
        // エラー情報の設定
        param = editErrorInfo_EKK1031D010(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * クレジット初回オーソリ登録エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK1031D010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK1031D010CBSMsg.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);
		}

		// 請求契約番号
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.SEIKY_KEI_NO_ERR);
		// 請求契約世代登録年月日時分秒
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.SEIKY_KEI_GENE_ADD_DTM_ERR);
		// 請求方法番号(クレジットカード)
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.SEIKY_WAY_NO_CRECARD_ERR);
		// クレジットカード世代登録年月日時分秒
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.CRECARD_GENE_ADD_DTM_ERR);
		// クレジットカード会社コード
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.CRECARD_COMP_CD_ERR);
		// オーソリ処理コード
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.AUTH_TRAN_CD_ERR);
		// 売上オーソリ金額
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.SALES_AUTHORI_AMNT_ERR);
		// クレジットカード番号
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.CRECARD_NO_ERR);
		// 加盟店番号
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.MEMBSTR_NO_ERR);
		// クレジットカード有効期限
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.CRECARD_YK_KIGEN_ERR);
		// オーソリ要求コード
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.AUTHORI_YOKYU_CD_ERR);
		// 処理フラグ
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.TRN_FLG_ERR);
		// 抽出フラグ
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.CHSHT_FLG_ERR);
		// 取消コード
		setErrDataMap(childMap, template, EKK1031D010CBSMsg.CL_CD_ERR);
		
		return param;
	}
	
	/**
	 * 請求オプションサービス契約キャンセルサービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0441C210(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0441C210(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求オプションサービス契約キャンセル)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0441C210(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求オプションサービス契約キャンセルのメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0441C210(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0441C210CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0441C210CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C210);

		template.set(EKK0441C210CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0441C210CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求オプションサービス契約キャンセルマップ.申込明細番号 → 申込明細番号
		if ("".equals(childMap.get("ekk0011d020_mskm_dtl_no")) || !childMap.containsKey("ekk0011d020_mskm_dtl_no")) 
		{
			if ("".equals(childMap.get("kksv040521_mskm_dtl_no"))) 
			{
				template.setNull(EKK0441C210CBSMsg.MSKM_DTL_NO);
			}
			else
			{
				template.set(EKK0441C210CBSMsg.MSKM_DTL_NO, (String)childMap.get("kksv040521_mskm_dtl_no"));
			}
		} 
		else 
		{
			template.set(EKK0441C210CBSMsg.MSKM_DTL_NO, (String)childMap.get("ekk0011d020_mskm_dtl_no"));
		}
		
		// 更新年月日時分秒WORK(EKK0491C240) → 更新年月日時分秒（更新前）
		if ("".equals(childMap.get("ekk0491c240_upd_dtm")) || !childMap.containsKey("ekk0491c240_upd_dtm")) 
		{
			template.setNull(EKK0441C210CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0441C210CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c240_upd_dtm"));
		}
		
		// 請求オプションサービス契約キャンセルマップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号
		if ("".equals(childMap.get("seiopsvc_kei_no"))) 
		{
			template.setNull(EKK0441C210CBSMsg.SEIOPSVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK0441C210CBSMsg.SEIOPSVC_KEI_NO, (String)childMap.get("seiopsvc_kei_no"));
		}
		
		// 請求オプションサービス契約キャンセルマップ.サービスキャンセル理由コード → サービスキャンセル理由コード
		if ("".equals(childMap.get("kksv040521_svc_cancel_rsn_cd"))) 
		{
			template.setNull(EKK0441C210CBSMsg.SVC_CANCEL_RSN_CD);
		} 
		else 
		{
			template.set(EKK0441C210CBSMsg.SVC_CANCEL_RSN_CD, (String)childMap.get("kksv040521_svc_cancel_rsn_cd"));
		}
		
		// 請求オプションサービス契約キャンセルマップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040521_ido_div"))) 
		{
			template.setNull(EKK0441C210CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0441C210CBSMsg.IDO_DIV, (String)childMap.get("kksv040521_ido_div"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0441C210(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
		// 登録／変更区分(割引自動適用CC) ← "05"「キャンセル」
		childMap.put("wrisvcautoaplycc_add_chge_div", "05");
		// 請求オプションサービス契約ステータス(割引自動適用CC) ← 請求オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0441C210CBSMsg.SEIOPSVC_KEI_STAT)) 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", new String());
		} 
		else 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", parentTemplate.getString(EKK0441C210CBSMsg.SEIOPSVC_KEI_STAT));
		}
		
        // エラー情報の設定
        param = editErrorInfo_EKK0441C210(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求オプションサービス契約キャンセルエラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0441C210(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0441C210CBSMsg.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);
		}

		// 請求オプションサービス契約番号
		setErrDataMap(childMap, template, EKK0441C210CBSMsg.SEIOPSVC_KEI_NO_ERR);
		// 申込明細番号
		setErrDataMap(childMap, template, EKK0441C210CBSMsg.MSKM_DTL_NO_ERR);
		// サービスキャンセル理由コード
		setErrDataMap(childMap, template, EKK0441C210CBSMsg.SVC_CANCEL_RSN_CD_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0441C210CBSMsg.IDO_DIV_ERR);
		// 更新年月日時分秒（更新前）
		setErrDataMap(childMap, template, EKK0441C210CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * 請求オプションサービス契約解約サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0441C230(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0441C230(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求オプションサービス契約解約)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0441C230(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求オプションサービス契約解約のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0441C230(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0441C230CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0441C230CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C230);

		template.set(EKK0441C230CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0441C230CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求オプションサービス契約解約マップ.申込明細番号 → 申込明細番号
		if ("".equals(childMap.get("ekk0011d020_mskm_dtl_no")) || !childMap.containsKey("ekk0011d020_mskm_dtl_no")) 
		{
			if ("".equals(childMap.get("kksv040522_mskm_dtl_no"))) 
			{
				template.setNull(EKK0441C230CBSMsg.MSKM_DTL_NO);
			}
			else
			{
				template.set(EKK0441C230CBSMsg.MSKM_DTL_NO, (String)childMap.get("kksv040522_mskm_dtl_no"));
			}
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.MSKM_DTL_NO, (String)childMap.get("ekk0011d020_mskm_dtl_no"));
		}
		
		// 更新年月日時分秒WORK(EKK0491C060) → 更新年月日時分秒（更新前）
		if ("".equals(childMap.get("ekk0491c240_upd_dtm")) || !childMap.containsKey("ekk0491c240_upd_dtm")) 
		{
			template.setNull(EKK0441C230CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c240_upd_dtm"));
		}
		
		// 請求オプションサービス契約解約マップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号
		if ("".equals(childMap.get("seiopsvc_kei_no"))) 
		{
			template.setNull(EKK0441C230CBSMsg.SEIOPSVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.SEIOPSVC_KEI_NO, (String)childMap.get("seiopsvc_kei_no"));
		}

		// 請求オプションサービス契約解約マップ.予約適用開始希望年月日 → 予約適用開始希望年月日
		if ("".equals(childMap.get("kksv040522_rsv_tsta_kibo_ymd"))) 
		{
			template.setNull(EKK0441C230CBSMsg.RSV_TSTA_KIBO_YMD);
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.RSV_TSTA_KIBO_YMD, (String)childMap.get("kksv040522_rsv_tsta_kibo_ymd"));
		}

		// 請求オプションサービス契約解約マップ.サービス終了年月日 → サービス終了年月日
		if ("".equals(childMap.get("svc_endymd"))) 
		{
			template.setNull(EKK0441C230CBSMsg.SVC_ENDYMD);
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.SVC_ENDYMD, (String)childMap.get("svc_endymd"));
		}

		// 請求オプションサービス契約解約マップ.サービス課金終了年月日 → サービス課金終了年月日
		if ("".equals(childMap.get("svc_chrg_endymd"))) 
		{
			template.setNull(EKK0441C230CBSMsg.SVC_CHRG_ENDYMD);
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.SVC_CHRG_ENDYMD, (String)childMap.get("svc_chrg_endymd"));
		}

		// 請求オプションサービス契約解約マップ.プラン終了種別コード → プラン終了種別コード
//		if ("".equals(childMap.get("kksv040522_plan_end_sbt_cd"))) 
//		{
//			template.setNull(EKK0441C230CBSMsg.PLAN_END_SBT_CD);
//		} 
//		else 
//		{
//			template.set(EKK0441C230CBSMsg.PLAN_END_SBT_CD, (String)childMap.get("kksv040522_plan_end_sbt_cd"));
//		}

		// 請求オプションサービス契約解約マップ.サービス解約年月日 → サービス解約年月日
		if ("".equals(childMap.get("svc_dsl_ymd"))) 
		{
			template.setNull(EKK0441C230CBSMsg.SVC_DSL_YMD);
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.SVC_DSL_YMD, (String)childMap.get("svc_dsl_ymd"));
		}

		// 請求オプションサービス契約解約マップ.サービス解約理由コード → サービス解約理由コード
		if ("".equals(childMap.get("svc_dlre_cd"))) 
		{
			template.setNull(EKK0441C230CBSMsg.SVC_DLRE_CD);
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.SVC_DLRE_CD, (String)childMap.get("svc_dlre_cd"));
		}

		// 請求オプションサービス契約解約マップ.サービス解約理由メモ → サービス解約理由メモ
		if ("".equals(childMap.get("kksv040522_svc_dlre_memo"))) 
		{
			template.setNull(EKK0441C230CBSMsg.SVC_DLRE_MEMO);
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.SVC_DLRE_MEMO, (String)childMap.get("kksv040522_svc_dlre_memo"));
		}

		// 請求オプションサービス契約解約マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040522_ido_div"))) 
		{
			template.setNull(EKK0441C230CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0441C230CBSMsg.IDO_DIV, (String)childMap.get("kksv040522_ido_div"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0441C230(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		// 世代登録年月日時分秒WORK(EKK0441C230) ← 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0441C230CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("ekk0441c230_gene_add_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0441c230_gene_add_dtm", parentTemplate.getString(EKK0441C230CBSMsg.GENE_ADD_DTM));
		}
		// 更新年月日時分秒WORK(EKK0441C230) ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0441C230CBSMsg.UPD_DTM)) 
		{
			childMap.put("ekk0441c230_upd_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0441c230_upd_dtm", parentTemplate.getString(EKK0441C230CBSMsg.UPD_DTM));
		}
		
		// 登録／変更区分(割引自動適用CC) ← "03"「解約」
		childMap.put("wrisvcautoaplycc_add_chge_div", "03");
		// 請求オプションサービス契約ステータス(割引自動適用CC) ← 請求オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0441C230CBSMsg.SEIOPSVC_KEI_STAT)) 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", new String());
		} 
		else 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", parentTemplate.getString(EKK0441C230CBSMsg.SEIOPSVC_KEI_STAT));
		}
		
        // エラー情報の設定
        param = editErrorInfo_EKK0441C230(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求オプションサービス契約解約エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0441C230(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0441C230CBSMsg.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);
		}

		// 請求オプションサービス契約番号
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.SEIOPSVC_KEI_NO_ERR);
		// 申込明細番号
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.MSKM_DTL_NO_ERR);
		// 予約適用開始希望年月日
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.RSV_TSTA_KIBO_YMD_ERR);
		// サービス終了年月日
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.SVC_ENDYMD_ERR);
		// サービス課金終了年月日
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.SVC_CHRG_ENDYMD_ERR);
		// プラン終了種別コード
//		setErrDataMap(childMap, template, EKK0441C230CBSMsg.PLAN_END_SBT_CD_ERR);
		// サービス解約年月日
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.SVC_DSL_YMD_ERR);
		// サービス解約理由コード
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.SVC_DLRE_CD_ERR);
		// サービス解約理由メモ
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.SVC_DLRE_MEMO_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.IDO_DIV_ERR);
		// 更新年月日時分秒（更新前）
		setErrDataMap(childMap, template, EKK0441C230CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * 請求オプションサービス契約解約確定サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0441C240(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0441C240(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求オプションサービス契約解約確定)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0441C240(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求オプションサービス契約解約確定のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0441C240(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0441C240CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0441C240CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C240);

		template.set(EKK0441C240CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0441C240CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 世代登録年月日時分秒WORK(EKK0441C230) → 世代登録年月日時分秒
		if ("".equals(childMap.get("ekk0441c230_gene_add_dtm")) || !childMap.containsKey("ekk0441c230_gene_add_dtm")) 
		{
			template.setNull(EKK0441C240CBSMsg.GENE_ADD_DTM);
		} 
		else 
		{
			template.set(EKK0441C240CBSMsg.GENE_ADD_DTM, (String)childMap.get("ekk0441c230_gene_add_dtm"));
		}
		// 更新年月日時分秒WORK(EKK0441C230) → 更新年月日時分秒（更新前）
		if ("".equals(childMap.get("ekk0441c230_upd_dtm")) || !childMap.containsKey("ekk0441c230_upd_dtm")) 
		{
			template.setNull(EKK0441C240CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0441C240CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0441c230_upd_dtm"));
		}
		
		// 請求オプションサービス契約解約マップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号
		if ("".equals(childMap.get("seiopsvc_kei_no"))) 
		{
			template.setNull(EKK0441C240CBSMsg.SEIOPSVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK0441C240CBSMsg.SEIOPSVC_KEI_NO, (String)childMap.get("seiopsvc_kei_no"));
		}

		// 請求オプションサービス契約解約マップ.サービス終了年月日 → サービス終了年月日
		if ("".equals(childMap.get("svc_endymd"))) 
		{
			template.setNull(EKK0441C240CBSMsg.SVC_ENDYMD);
		} 
		else 
		{
			template.set(EKK0441C240CBSMsg.SVC_ENDYMD, (String)childMap.get("svc_endymd"));
		}

		// 請求オプションサービス契約解約マップ.サービス課金終了年月日 → サービス課金終了年月日
		if ("".equals(childMap.get("svc_chrg_endymd"))) 
		{
			template.setNull(EKK0441C240CBSMsg.SVC_CHRG_ENDYMD);
		} 
		else 
		{
			template.set(EKK0441C240CBSMsg.SVC_CHRG_ENDYMD, (String)childMap.get("svc_chrg_endymd"));
		}

		// 請求オプションサービス契約解約マップ.サービス解約年月日 → サービス解約年月日
		if ("".equals(childMap.get("svc_dsl_ymd"))) 
		{
			template.setNull(EKK0441C240CBSMsg.SVC_DSL_YMD);
		} 
		else 
		{
			template.set(EKK0441C240CBSMsg.SVC_DSL_YMD, (String)childMap.get("svc_dsl_ymd"));
		}

		// 請求オプションサービス契約解約マップ.サービス解約理由コード → サービス解約理由コード
		if ("".equals(childMap.get("svc_dlre_cd"))) 
		{
			template.setNull(EKK0441C240CBSMsg.SVC_DLRE_CD);
		} 
		else 
		{
			template.set(EKK0441C240CBSMsg.SVC_DLRE_CD, (String)childMap.get("svc_dlre_cd"));
		}

		// 請求オプションサービス契約解約マップ.サービス解約理由メモ → サービス解約理由メモ
		if ("".equals(childMap.get("kksv040526_svc_dlre_memo"))) 
		{
			template.setNull(EKK0441C240CBSMsg.SVC_DLRE_MEMO);
		} 
		else 
		{
			template.set(EKK0441C240CBSMsg.SVC_DLRE_MEMO, (String)childMap.get("kksv040526_svc_dlre_memo"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0441C240(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
 		
        // エラー情報の設定
        param = editErrorInfo_EKK0441C240(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求オプションサービス契約解約確定エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0441C240(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0441C240CBSMsg.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);
		}

		// 請求オプションサービス契約番号
		setErrDataMap(childMap, template, EKK0441C240CBSMsg.SEIOPSVC_KEI_NO_ERR);
		// 世代登録年月日時分秒
		setErrDataMap(childMap, template, EKK0441C240CBSMsg.GENE_ADD_DTM_ERR);
		// サービス終了年月日
		setErrDataMap(childMap, template, EKK0441C240CBSMsg.SVC_ENDYMD_ERR);
		// サービス課金終了年月日
		setErrDataMap(childMap, template, EKK0441C240CBSMsg.SVC_CHRG_ENDYMD_ERR);
		// サービス解約年月日
		setErrDataMap(childMap, template, EKK0441C240CBSMsg.SVC_DSL_YMD_ERR);
		// サービス解約理由コード
		setErrDataMap(childMap, template, EKK0441C240CBSMsg.SVC_DLRE_CD_ERR);
		// サービス解約理由メモ
		setErrDataMap(childMap, template, EKK0441C240CBSMsg.SVC_DLRE_MEMO_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0441C240CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * 請求オプションサービス契約登録サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0441D010(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0441D010(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求オプションサービス契約登録)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0441D010(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求オプションサービス契約登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0441D010(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0441D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0441D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441D010);

		template.set(EKK0441D010CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0441D010CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求契約登録マップ.申込明細番号 → 申込明細番号
		if ("".equals(childMap.get("ekk0011d020_mskm_dtl_no")) || !childMap.containsKey("ekk0011d020_mskm_dtl_no")) 
		{
			if ("".equals(childMap.get("kksv040516_mskm_dtl_no"))) 
			{
				template.setNull(EKK0441D010CBSMsg.MSKM_DTL_NO);
			}
			else
			{
				template.set(EKK0441D010CBSMsg.MSKM_DTL_NO, (String)childMap.get("kksv040516_mskm_dtl_no"));
			}
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.MSKM_DTL_NO, (String)childMap.get("ekk0011d020_mskm_dtl_no"));
		}
		
		// 更新年月日時分秒WORK(EKK0491C060) → 更新年月日時分秒（更新前）
		if ("".equals(childMap.get("ekk0491c240_upd_dtm")) || !childMap.containsKey("ekk0491c240_upd_dtm")) 
		{
			template.setNull(EKK0441D010CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c240_upd_dtm"));
		}
		
		// 請求オプションサービス契約登録マップ.請求契約番号 → 請求契約番号
		if ("".equals(childMap.get("kksv040516_seiky_kei_no"))) 
		{
			template.setNull(EKK0441D010CBSMsg.SEIKY_KEI_NO);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.SEIKY_KEI_NO, (String)childMap.get("kksv040516_seiky_kei_no"));
		}

// ++++++++++ v8.00.01 変更開始 ++++++++++
		// 請求オプションサービス契約登録マップ.SYSID → SYSID
//		if ("".equals(childMap.get("kksv040516_sysid"))) 
//		{
//			template.setNull(EKK0441D010CBSMsg.SYSID);
//		} else {
//			template.set(EKK0441D010CBSMsg.SYSID, (String)childMap.get("kksv040516_sysid"));
//		}
		if ("".equals(dataMap.get("sysid"))) 
		{
			template.setNull(EKK0441D010CBSMsg.SYSID);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.SYSID, (String)dataMap.get("sysid"));
		}
// ++++++++++ v8.00.01 変更終了 ++++++++++

		// 請求オプションサービス契約登録マップ.請求オプションサービスコード → 請求オプションサービスコード
		if ("".equals(childMap.get("kksv040516_seiopsvc_cd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.SEIOPSVC_CD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.SEIOPSVC_CD, (String)childMap.get("kksv040516_seiopsvc_cd"));
		}

		// 請求オプションサービス契約登録マップ.料金コースコード → 料金コースコード
		if ("".equals(childMap.get("kksv040516_pcrs_cd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.PCRS_CD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.PCRS_CD, (String)childMap.get("kksv040516_pcrs_cd"));
		}

		// 請求オプションサービス契約登録マップ.料金プランコード → 料金プランコード
		if ("".equals(childMap.get("kksv040516_pplan_cd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.PPLAN_CD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.PPLAN_CD, (String)childMap.get("kksv040516_pplan_cd"));
		}

		// 請求オプションサービス契約登録マップ.サービス契約番号 → サービス契約番号
		if ("".equals(childMap.get("kksv040516_svc_kei_no"))) 
		{
			template.setNull(EKK0441D010CBSMsg.SVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.SVC_KEI_NO, (String)childMap.get("kksv040516_svc_kei_no"));
		}

		// 請求オプションサービス契約登録マップ.試用加入年月日 → 試用加入年月日
		if ("".equals(childMap.get("kksv040516_ftrial_kanyu_ymd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.FTRIAL_KANYU_YMD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.FTRIAL_KANYU_YMD, (String)childMap.get("kksv040516_ftrial_kanyu_ymd"));
		}

		// 請求オプションサービス契約登録マップ.試用期間終了年月日 → 試用期間終了年月日
		if ("".equals(childMap.get("kksv040516_ftrial_prd_endymd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.FTRIAL_PRD_ENDYMD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.FTRIAL_PRD_ENDYMD, (String)childMap.get("kksv040516_ftrial_prd_endymd"));
		}

		// 請求オプションサービス契約登録マップ.本加入年月日 → 本加入年月日
		if ("".equals(childMap.get("kksv040516_honkanyu_ymd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.HONKANYU_YMD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.HONKANYU_YMD, (String)childMap.get("kksv040516_honkanyu_ymd"));
		}

		// 請求オプションサービス契約登録マップ.本加入移行期限年月日 → 本加入移行期限年月日
		if ("".equals(childMap.get("kksv040516_honkanyu_iko_kigen_ymd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.HONKANYU_IKO_KIGEN_YMD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.HONKANYU_IKO_KIGEN_YMD, (String)childMap.get("kksv040516_honkanyu_iko_kigen_ymd"));
		}

		// 請求オプションサービス契約登録マップ.サービス利用開始希望年月日 → サービス利用開始希望年月日
		if ("".equals(childMap.get("kksv040516_svc_use_sta_kibo_ymd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.SVC_USE_STA_KIBO_YMD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.SVC_USE_STA_KIBO_YMD, (String)childMap.get("kksv040516_svc_use_sta_kibo_ymd"));
		}

		// 請求オプションサービス契約登録マップ.予約適用開始希望年月日 → 予約適用開始希望年月日
		if ("".equals(childMap.get("kksv040516_rsv_tsta_kibo_ymd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.RSV_TSTA_KIBO_YMD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.RSV_TSTA_KIBO_YMD, (String)childMap.get("kksv040516_rsv_tsta_kibo_ymd"));
		}

		// 請求オプションサービス契約登録マップ.違約金発生コード → 違約金発生コード
		if ("".equals(childMap.get("kksv040516_pnlty_hassei_cd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.PNLTY_HASSEI_CD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.PNLTY_HASSEI_CD, (String)childMap.get("kksv040516_pnlty_hassei_cd"));
		}

		// 請求オプションサービス契約登録マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040516_ido_div"))) 
		{
			template.setNull(EKK0441D010CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.IDO_DIV, (String)childMap.get("kksv040516_ido_div"));
		}

		// 請求オプションサービス契約登録マップ.料金項目コード → 料金項目コード
		if ("".equals(childMap.get("kksv040516_prc_kmk_cd"))) 
		{
			template.setNull(EKK0441D010CBSMsg.PRC_KMK_CD);
		} 
		else 
		{
			template.set(EKK0441D010CBSMsg.PRC_KMK_CD, (String)childMap.get("kksv040516_prc_kmk_cd"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0441D010(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		// 請求オプションサービス契約番号WORK(EKK0441D010) ← 請求オプションサービス契約番号
		if (parentTemplate.isNull(EKK0441D010CBSMsg.SEIOPSVC_KEI_NO)) 
		{
			childMap.put("ekk0441d010_seiopsvc_kei_no", new String());
		} 
		else 
		{
			childMap.put("ekk0441d010_seiopsvc_kei_no", parentTemplate.getString(EKK0441D010CBSMsg.SEIOPSVC_KEI_NO));
		}
// v4.00.17 Start
		// 世代登録年月日時分秒WORK(EKK0441D010) ← 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0441D010CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("out_opt_gene_add_dtm", new String());
		} 
		else 
		{
			childMap.put("out_opt_gene_add_dtm", parentTemplate.getString(EKK0441D010CBSMsg.GENE_ADD_DTM));
		}
// v4.00.17 End
		// 予約適用コードWORK(EKK0441D010) ← 予約適用コード
		if (parentTemplate.isNull(EKK0441D010CBSMsg.RSV_APLY_CD)) 
		{
			childMap.put("ekk0441d010_rsv_aply_cd", new String());
		} 
		else 
		{
			childMap.put("ekk0441d010_rsv_aply_cd", parentTemplate.getString(EKK0441D010CBSMsg.RSV_APLY_CD));
		}
		// 更新年月日時分秒WORK(EKK0441D010) ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0441D010CBSMsg.UPD_DTM)) 
		{
			childMap.put("ekk0441d010_upd_dtm", new String());
		} 
		else 
		{
			childMap.put("ekk0441d010_upd_dtm", parentTemplate.getString(EKK0441D010CBSMsg.UPD_DTM));
		}
		
		// 登録／変更区分(割引自動適用CC) ← "01"「登録」
		childMap.put("wrisvcautoaplycc_add_chge_div", "01");
		// 請求オプションサービス契約ステータス(割引自動適用CC) ← 請求オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0441D010CBSMsg.SEIOPSVC_KEI_STAT)) 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", new String());
		} 
		else 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", parentTemplate.getString(EKK0441D010CBSMsg.SEIOPSVC_KEI_STAT));
		}
		
        // エラー情報の設定
        param = editErrorInfo_EKK0441D010(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求オプションサービス契約登録エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0441D010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0441D010CBSMsg.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);
		}

		// 請求契約番号
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.SEIKY_KEI_NO_ERR);
		// SYSID
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.SYSID_ERR);
		// 請求オプションサービスコード
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.SEIOPSVC_CD_ERR);
		// 料金コースコード
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.PCRS_CD_ERR);
		// 料金プランコード
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.PPLAN_CD_ERR);
		// 申込明細番号
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.MSKM_DTL_NO_ERR);
		// サービス契約番号
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.SVC_KEI_NO_ERR);
		// 試用加入年月日
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.FTRIAL_KANYU_YMD_ERR);
		// 試用期間終了年月日
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.FTRIAL_PRD_ENDYMD_ERR);
		// 本加入年月日
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.HONKANYU_YMD_ERR);
		// 本加入移行期限年月日
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR);
		// サービス利用開始希望年月日
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR);
		// 予約適用開始希望年月日
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR);
		// 違約金発生コード
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.PNLTY_HASSEI_CD_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.IDO_DIV_ERR);
		// 料金項目コード
		setErrDataMap(childMap, template, EKK0441D010CBSMsg.PRC_KMK_CD_ERR);
		
		return param;
	}
	
	/**
	 * 請求オプションサービス契約照査サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0441C030(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0441C030(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求オプションサービス契約照査)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0441C030(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求オプションサービス契約照査のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0441C030(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0441C030CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0441C030CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C030);

		template.set(EKK0441C030CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0441C030CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求オプションサービス契約番号WORK(EKK0441D010) → 請求オプションサービス契約番号
		if ("".equals(childMap.get("ekk0441d010_seiopsvc_kei_no")) || !childMap.containsKey("ekk0441d010_seiopsvc_kei_no")) 
		{
			template.setNull(EKK0441C030CBSMsg.SEIOPSVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK0441C030CBSMsg.SEIOPSVC_KEI_NO, (String)childMap.get("ekk0441d010_seiopsvc_kei_no"));
		}
		// 更新年月日時分秒WORK(EKK0441D010) → 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0441d010_upd_dtm")) || !childMap.containsKey("ekk0441d010_upd_dtm")) 
		{
			template.setNull(EKK0441C030CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0441C030CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0441d010_upd_dtm"));
		}
		
		// 請求オプションサービス契約照査マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040517_ido_div"))) 
		{
			template.setNull(EKK0441C030CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0441C030CBSMsg.IDO_DIV, (String)childMap.get("kksv040517_ido_div"));
		}

		// 請求オプションサービス契約照査マップ.照査解約完了コード → 照査解約完了コード
		if ("".equals(childMap.get("kksv040517_shosa_dsl_fin_cd"))) 
		{
			template.setNull(EKK0441C030CBSMsg.SHOSA_DSL_FIN_CD);
		} 
		else 
		{
			template.set(EKK0441C030CBSMsg.SHOSA_DSL_FIN_CD, (String)childMap.get("kksv040517_shosa_dsl_fin_cd"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0441C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		// 請求オプションサービス契約ステータス(割引自動適用CC) ← 請求オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0441C030CBSMsg.SEIOPSVC_KEI_STAT)) 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", new String());
		} 
		else 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", parentTemplate.getString(EKK0441C030CBSMsg.SEIOPSVC_KEI_STAT));
		}
// v4.00.17 Start
		// 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0441C030CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("out_opt_gene_add_dtm", new String());
		} 
		else 
		{
			childMap.put("out_opt_gene_add_dtm", parentTemplate.getString(EKK0441C030CBSMsg.GENE_ADD_DTM));
		}
// v4.00.17 End
		
        // エラー情報の設定
        param = editErrorInfo_EKK0441C030(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求オプションサービス契約照査エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0441C030(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0441C030CBSMsg.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);
		}

		// 請求オプションサービス契約番号
		setErrDataMap(childMap, template, EKK0441C030CBSMsg.SEIOPSVC_KEI_NO_ERR);
		// 請求オプションサービス契約照査マップ.異動区分 → 異動区分 のエラー情報返却
		setErrDataMap(childMap, template, EKK0441C030CBSMsg.IDO_DIV_ERR);
		// 請求オプションサービス契約照査マップ.照査解約完了コード → 照査解約完了コード のエラー情報返却
		setErrDataMap(childMap, template, EKK0441C030CBSMsg.SHOSA_DSL_FIN_CD_ERR);
		// 請求オプションサービス契約照査マップ.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前) のエラー情報返却
		setErrDataMap(childMap, template, EKK0441C030CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * 請求オプションサービス契約締結サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0441C040(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0441C040(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求オプションサービス契約締結)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0441C040(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求オプションサービス契約締結のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0441C040(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0441C040CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0441C040CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C040);

		template.set(EKK0441C040CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0441C040CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求オプションサービス契約番号WORK(EKK0441D010) → 請求オプションサービス契約番号
		if ("".equals(childMap.get("ekk0441d010_seiopsvc_kei_no")) || !childMap.containsKey("ekk0441d010_seiopsvc_kei_no")) 
		{
			template.setNull(EKK0441C040CBSMsg.SEIOPSVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK0441C040CBSMsg.SEIOPSVC_KEI_NO, (String)childMap.get("ekk0441d010_seiopsvc_kei_no"));
		}
		// 更新年月日時分秒WORK(EKK0441D010) → 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0441d010_upd_dtm")) || !childMap.containsKey("ekk0441d010_upd_dtm")) 
		{
			template.setNull(EKK0441C040CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0441C040CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0441d010_upd_dtm"));
		}
		
		// 請求オプションサービス契約締結マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040518_ido_div"))) 
		{
			template.setNull(EKK0441C040CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0441C040CBSMsg.IDO_DIV, (String)childMap.get("kksv040518_ido_div"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0441C040(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		// 請求オプションサービス契約ステータス(割引自動適用CC) ← 請求オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0441C040CBSMsg.SEIOPSVC_KEI_STAT)) 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", new String());
		} 
		else 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", parentTemplate.getString(EKK0441C040CBSMsg.SEIOPSVC_KEI_STAT));
		}
// v4.00.17 Start
		// 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0441C040CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("out_opt_gene_add_dtm", new String());
		} 
		else 
		{
			childMap.put("out_opt_gene_add_dtm", parentTemplate.getString(EKK0441C040CBSMsg.GENE_ADD_DTM));
		}
// v4.00.17 End
		
        // エラー情報の設定
        param = editErrorInfo_EKK0441C040(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求オプションサービス契約締結エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0441C040(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0441C040CBSMsg.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);
		}

		// 請求オプションサービス契約番号
		setErrDataMap(childMap, template, EKK0441C040CBSMsg.SEIOPSVC_KEI_NO_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0441C040CBSMsg.IDO_DIV_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0441C040CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * 請求オプションサービス契約開始サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0441C070(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0441C070(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求オプションサービス契約開始)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0441C070(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求オプションサービス契約開始のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0441C070(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0441C070CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0441C070CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C070);

		template.set(EKK0441C070CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0441C070CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求オプションサービス契約番号WORK(EKK0441D010) → 請求オプションサービス契約番号
		if ("".equals(childMap.get("ekk0441d010_seiopsvc_kei_no")) || !childMap.containsKey("ekk0441d010_seiopsvc_kei_no")) 
		{
			template.setNull(EKK0441C070CBSMsg.SEIOPSVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK0441C070CBSMsg.SEIOPSVC_KEI_NO, (String)childMap.get("ekk0441d010_seiopsvc_kei_no"));
		}
		// 更新年月日時分秒WORK(EKK0441D010) → 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0441d010_upd_dtm")) || !childMap.containsKey("ekk0441d010_upd_dtm")) 
		{
			template.setNull(EKK0441C070CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0441C070CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0441d010_upd_dtm"));
		}
		
		// 請求オプションサービス契約開始マップ.サービス開始年月日 → サービス開始年月日
		if ("".equals(childMap.get("kksv040519_svc_sta_ymd"))) 
		{
			template.setNull(EKK0441C070CBSMsg.SVC_STA_YMD);
		} 
		else 
		{
			template.set(EKK0441C070CBSMsg.SVC_STA_YMD, (String)childMap.get("kksv040519_svc_sta_ymd"));
		}

		// 請求オプションサービス契約開始マップ.サービス課金開始年月日 → サービス課金開始年月日
		if ("".equals(childMap.get("kksv040519_svc_chrg_staymd"))) 
		{
			template.setNull(EKK0441C070CBSMsg.SVC_CHRG_STAYMD);
		} 
		else 
		{
			template.set(EKK0441C070CBSMsg.SVC_CHRG_STAYMD, (String)childMap.get("kksv040519_svc_chrg_staymd"));
		}

		// 請求オプションサービス契約開始マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040519_ido_div"))) 
		{
			template.setNull(EKK0441C070CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0441C070CBSMsg.IDO_DIV, (String)childMap.get("kksv040519_ido_div"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0441C070(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		// 請求オプションサービス契約ステータス(割引自動適用CC) ← 請求オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0441C070CBSMsg.SEIOPSVC_KEI_STAT)) 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", new String());
		} 
		else 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", parentTemplate.getString(EKK0441C070CBSMsg.SEIOPSVC_KEI_STAT));
		}
// v4.00.17 Start
		// 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0441C070CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("out_opt_gene_add_dtm", new String());
		} 
		else 
		{
			childMap.put("out_opt_gene_add_dtm", parentTemplate.getString(EKK0441C070CBSMsg.GENE_ADD_DTM));
		}
// v4.00.17 End
		
        // エラー情報の設定
        param = editErrorInfo_EKK0441C070(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求オプションサービス契約開始エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0441C070(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0441C070CBSMsg.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);
		}

		// 請求オプションサービス契約番号
		setErrDataMap(childMap, template, EKK0441C070CBSMsg.SEIOPSVC_KEI_NO_ERR);
		// サービス開始年月日
		setErrDataMap(childMap, template, EKK0441C070CBSMsg.SVC_STA_YMD_ERR);
		// サービス課金開始年月日
		setErrDataMap(childMap, template, EKK0441C070CBSMsg.SVC_CHRG_STAYMD_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0441C070CBSMsg.IDO_DIV_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0441C070CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
	/**
	 * 請求オプションサービス契約予約適用年月日サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0441C060(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0441C060(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (請求オプションサービス契約予約適用年月日)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0441C060(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求オプションサービス契約予約適用年月日のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0441C060(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0441C060CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0441C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441C060);

		template.set(EKK0441C060CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0441C060CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 請求オプションサービス契約予約適用年月日マップ.申込明細番号 → 申込明細番号
		if ("".equals(childMap.get("ekk0011d020_mskm_dtl_no")) || !childMap.containsKey("ekk0011d020_mskm_dtl_no")) 
		{
			if ("".equals(childMap.get("kksv040520_mskm_dtl_no"))) 
			{
				template.setNull(EKK0441C060CBSMsg.MSKM_DTL_NO);
			}
			else
			{
				template.set(EKK0441C060CBSMsg.MSKM_DTL_NO, (String)childMap.get("kksv040520_mskm_dtl_no"));
			}
		} 
		else 
		{
			template.set(EKK0441C060CBSMsg.MSKM_DTL_NO, (String)childMap.get("ekk0011d020_mskm_dtl_no"));
		}
		
		// 請求オプションサービス契約番号WORK(EKK0441D010) → 請求オプションサービス契約番号
		if ("".equals(childMap.get("ekk0441d010_seiopsvc_kei_no")) || !childMap.containsKey("ekk0441d010_seiopsvc_kei_no")) 
		{
			template.setNull(EKK0441C060CBSMsg.SEIOPSVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK0441C060CBSMsg.SEIOPSVC_KEI_NO, (String)childMap.get("ekk0441d010_seiopsvc_kei_no"));
		}
// 4.00.17 Start
		// 世代登録年月日時分秒WORK(EKK0441D010) → 世代登録年月日時分秒
		if ("".equals(childMap.get("out_opt_gene_add_dtm")) || !childMap.containsKey("out_opt_gene_add_dtm")) 
		{
			template.setNull(EKK0441C060CBSMsg.GENE_ADD_DTM);
		} 
		else 
		{
			template.set(EKK0441C060CBSMsg.GENE_ADD_DTM, (String)childMap.get("out_opt_gene_add_dtm"));
		}
// 4.00.17 End
		// 予約適用コードWORK(EKK0441D010) → 予約適用コード
		if ("".equals(childMap.get("ekk0441d010_rsv_aply_cd")) || !childMap.containsKey("ekk0441d010_rsv_aply_cd")) 
		{
			template.setNull(EKK0441C060CBSMsg.RSV_APLY_CD);
		} 
		else 
		{
			template.set(EKK0441C060CBSMsg.RSV_APLY_CD, (String)childMap.get("ekk0441d010_rsv_aply_cd"));
		}
		// 更新年月日時分秒WORK(EKK0441D010) → 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0441d010_upd_dtm")) || !childMap.containsKey("ekk0441d010_upd_dtm")) 
		{
			template.setNull(EKK0441C060CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0441C060CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0441d010_upd_dtm"));
		}
		
		// 請求オプションサービス契約予約適用年月日マップ.予約適用年月日 → 予約適用年月日
		if ("".equals(childMap.get("kksv040520_rsv_aply_ymd"))) 
		{
			template.setNull(EKK0441C060CBSMsg.RSV_APLY_YMD);
		} 
		else 
		{
			template.set(EKK0441C060CBSMsg.RSV_APLY_YMD, (String)childMap.get("kksv040520_rsv_aply_ymd"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0441C060(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
        // エラー情報の設定
        param = editErrorInfo_EKK0441C060(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 請求オプションサービス契約予約適用年月日エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0441C060(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0441C060CBSMsg.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);
		}

		// 請求オプションサービス契約番号
		setErrDataMap(childMap, template, EKK0441C060CBSMsg.SEIOPSVC_KEI_NO_ERR);
		// 世代登録年月日時分秒
		setErrDataMap(childMap, template, EKK0441C060CBSMsg.GENE_ADD_DTM_ERR);
		// 申込明細番号
		setErrDataMap(childMap, template, EKK0441C060CBSMsg.MSKM_DTL_NO_ERR);
		// 予約適用年月日
		setErrDataMap(childMap, template, EKK0441C060CBSMsg.RSV_APLY_YMD_ERR);
		// 予約適用コード
		setErrDataMap(childMap, template, EKK0441C060CBSMsg.RSV_APLY_CD_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0441C060CBSMsg.UPD_DTM_BF_ERR);
		
		return param;
	}
	
// ++++++++++ v24.00.00 削除開始 ++++++++++
//	/**
//	 * 割引自動適用CCを呼び出す。
//	 * 
//	 * @param handle
//	 * @param param
//	 * @param dataMap
//	 * @param childMap
//	 * @param optKaiyakuCd 登録／変更区分
//	 * @param optKaiyakuSvckeiStat 請求オプションサービス契約ステータス
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void execWrisvcAutoAply(SessionHandle handle,
//									  IRequestParameterReadWrite param,
//									  Map<String, Object> dataMap,
//									  HashMap<String, Object> childMap,
//									  String optKaiyakuCd,
//									  String optKaiyakuSvckeiStat) throws Throwable
//	{
//		// 割引サービス自動適用CC実行処理
//		String workWrisvcAutoAplyDataKey = "WrisvcAutoAplyCC";
//		param.setData(workWrisvcAutoAplyDataKey, new HashMap<String, Object>());
//		
//		HashMap<String, Object> ccMap = (HashMap<String, Object>)param.getData(workWrisvcAutoAplyDataKey);
//		
//		// ＳＹＳＩＤ
//// ++++++++++ v8.00.01 変更開始 ++++++++++
////		ccMap.put("sysid", (String)childMap.get("kksv040527_sysid"));
//		ccMap.put("sysid", (String)dataMap.get("sysid"));
//// ++++++++++ v8.00.01 変更終了 ++++++++++
//		
//		// 登録／変更区分
//		ccMap.put("add_chge_div", optKaiyakuCd);
//		// 申込番号
//		if ("".equals(childMap.get("ekk0011d020_mskm_no")) || !childMap.containsKey("ekk0011d020_mskm_no")) 
//		{
//			if ("".equals(childMap.get("kksv040527_mskm_no"))) 
//			{
//				ccMap.put("mskm_no", "");
//			}
//			else
//			{
//				ccMap.put("mskm_no", (String)childMap.get("kksv040527_mskm_no"));
//			}
//		} 
//		else 
//		{
//			ccMap.put("mskm_no", (String)childMap.get("ekk0011d020_mskm_no"));
//		}
//		// 申込種別コード
//		ccMap.put("mskm_sbt_cd", (String)childMap.get("kksv040527_mskm_sbt_cd"));
//		// 異動区分
//		ccMap.put("ido_div", (String)childMap.get("kksv040527_ido_div"));
//		// 機能コード
//		ccMap.put("func_code", dataMap.get(JCMConstants.FUNC_CODE_KEY));
//		// 請求オプションサービス契約解約の場合
////		if("03".equals((String)childMap.get("wrisvcautoaplycc_add_chge_div")))
//		if("03".equals(optKaiyakuCd))
//		{
//			// サービス解約理由コード
//			ccMap.put("svc_dlre_cd", (String)childMap.get("kksv040527_svc_dlre_cd"));
//		}
//		// 請求オプションサービス契約キャンセルの場合
////		if("05".equals((String)childMap.get("wrisvcautoaplycc_add_chge_div")))
//		if("05".equals(optKaiyakuCd))
//		{
//			// サービスキャンセル理由コード
//			ccMap.put("svc_cancel_rsn_cd", (String)childMap.get("kksv040527_svc_cancel_rsn_cd"));
//		}
//		
//		// サービス契約グループリスト
//		ArrayList<HashMap<String, Object>> workSvcKeiArray = new ArrayList<HashMap<String, Object>>();
//		HashMap<String, Object> workSvcKeiMap = new HashMap<String, Object>();
//		// グループ区分
//		workSvcKeiMap.put("grp_div", (String)childMap.get("kksv040527_grp_div"));
//		
//		// サービス契約リスト
//		ArrayList<HashMap<String, Object>> workSvcKeiList = new ArrayList<HashMap<String, Object>>();
//		HashMap<String, Object> workSvcKeiData = new HashMap<String, Object>();
//		// 対象契約識別コード
//		workSvcKeiData.put("tg_kei_skbt_cd", (String)childMap.get("kksv040527_tg_kei_skbt_cd"));
//		// 請求オプションサービス契約登録の場合
////		if("01".equals((String)childMap.get("wrisvcautoaplycc_add_chge_div")))
//		if("01".equals(optKaiyakuCd))
//		{
//			// 請求オプションサービス契約番号WORK(EKK0441D010)
//			workSvcKeiData.put("seiopsvc_kei_no", (String)childMap.get("ekk0441d010_seiopsvc_kei_no"));
//		}
//		else
//		{
//			// 請求オプションサービス契約番号
//			workSvcKeiData.put("seiopsvc_kei_no", (String)childMap.get("kksv040527_seiopsvc_kei_no"));
//		}
//		// 請求オプションサービス契約ステータス
////		workSvcKeiData.put("seiopsvc_kei_stat", (String)childMap.get("wrisvcautoaplycc_seiopsvc_kei_stat"));
//		workSvcKeiData.put("seiopsvc_kei_stat", optKaiyakuSvckeiStat);
//		// 請求オプションサービス契約登録の場合
////		if("01".equals((String)childMap.get("wrisvcautoaplycc_add_chge_div")))
//		if("01".equals(optKaiyakuCd))
//		{
//			// 料金コースコード
//			workSvcKeiData.put("pcrs_cd", (String)childMap.get("kksv040516_pcrs_cd"));
//			// 料金プランコード
//			workSvcKeiData.put("pplan_cd", (String)childMap.get("kksv040516_pplan_cd"));
//			// 請求オプションサービスコード
//			workSvcKeiData.put("seiopsvc_cd", (String)childMap.get("kksv040516_seiopsvc_cd"));
//		}
//		else
//		{
//			// 料金コースコード
//			workSvcKeiData.put("pcrs_cd", (String)childMap.get("kksv040527_pcrs_cd"));
//			// 料金プランコード
//			workSvcKeiData.put("pplan_cd", (String)childMap.get("kksv040527_pplan_cd"));
//			// 請求オプションサービスコード
//			workSvcKeiData.put("seiopsvc_cd", (String)childMap.get("kksv040527_seiopsvc_cd"));
//		}
//		
//		workSvcKeiList.add(workSvcKeiData);
//		workSvcKeiMap.put("svc_kei_list", workSvcKeiList);
//		workSvcKeiArray.add(workSvcKeiMap);
//		ccMap.put("svc_kei_grp_list", workSvcKeiArray);
//		
//		JKKWrisvcAutoAplyCC wrisvcAutoAplyCC = new JKKWrisvcAutoAplyCC();
//		wrisvcAutoAplyCC.execute(handle, param, workWrisvcAutoAplyDataKey);
//		
//		param.removeData(workWrisvcAutoAplyDataKey);
//	}
// ++++++++++ v24.00.00 削除終了 ++++++++++
	
	/**
	 * 進捗登録サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK1091D010(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK1091D010(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (進捗登録)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK1091D010(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 進捗登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK1091D010(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK1091D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK1091D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091D010);

		template.set(EKK1091D010CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK1091D010CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));

		// 申込明細番号WORK(EKK0011D020) → 申込明細番号
		if ("".equals(childMap.get("ekk0011d020_mskm_dtl_no")) || !childMap.containsKey("ekk0011d020_mskm_dtl_no")) 
		{
//			if ("".equals(childMap.get("kksv040523_mskm_dtl_no"))) 
//			{
				template.setNull(EKK1091D010CBSMsg.MSKM_DTL_NO);
//			}
//			else
//			{
//				template.set(EKK1091D010CBSMsg.MSKM_DTL_NO, (String)childMap.get("kksv040523_mskm_dtl_no"));
//			}
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.MSKM_DTL_NO, (String)childMap.get("ekk0011d020_mskm_dtl_no"));
		}
		// 請求方法番号(口座)WORK(EKK0501D010) → 請求方法番号（口座）
		if ("".equals(childMap.get("ekk0501d010_seiky_way_no_koza")) || !childMap.containsKey("ekk0501d010_seiky_way_no_koza")) 
		{
			template.setNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA, (String)childMap.get("ekk0501d010_seiky_way_no_koza"));
		}
		// 請求方法番号(クレジットカード)WORK(EKK0521D010) → 請求方法番号（クレジットカード）
		if ("".equals(childMap.get("ekk0521d010_seiky_way_no_crecard")) || !childMap.containsKey("ekk0521d010_seiky_way_no_crecard")) 
		{
			template.setNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD, (String)childMap.get("ekk0521d010_seiky_way_no_crecard"));
		}
		// 請求オプションサービス契約番号WORK(EKK0441D010) → 請求オプションサービス契約番号
		if ("".equals(childMap.get("ekk0441d010_seiopsvc_kei_no")) || !childMap.containsKey("ekk0441d010_seiopsvc_kei_no")) 
		{
			template.setNull(EKK1091D010CBSMsg.SEIOPSVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SEIOPSVC_KEI_NO, (String)childMap.get("ekk0441d010_seiopsvc_kei_no"));
		}

		// 進捗登録マップ.請求契約番号 → 請求契約番号
		if ("".equals(childMap.get("kksv040523_seiky_kei_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.SEIKY_KEI_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SEIKY_KEI_NO, (String)childMap.get("kksv040523_seiky_kei_no"));
		}

		// 進捗登録マップ.サービス契約番号 → サービス契約番号
		if ("".equals(childMap.get("kksv040523_svc_kei_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.SVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SVC_KEI_NO, (String)childMap.get("kksv040523_svc_kei_no"));
		}

		// 進捗登録マップ.サービス契約内訳番号 → サービス契約内訳番号
		if ("".equals(childMap.get("kksv040523_svc_kei_ucwk_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.SVC_KEI_UCWK_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SVC_KEI_UCWK_NO, (String)childMap.get("kksv040523_svc_kei_ucwk_no"));
		}

		// 進捗登録マップ.サービス契約回線内訳番号 → サービス契約回線内訳番号
		if ("".equals(childMap.get("kksv040523_svc_kei_kaisen_ucwk_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, (String)childMap.get("kksv040523_svc_kei_kaisen_ucwk_no"));
		}

		// 進捗登録マップ.機器提供サービス契約番号 → 機器提供サービス契約番号
		if ("".equals(childMap.get("kksv040523_kktk_svc_kei_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.KKTK_SVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.KKTK_SVC_KEI_NO, (String)childMap.get("kksv040523_kktk_svc_kei_no"));
		}

		// 進捗登録マップ.オプションサービス契約番号 → オプションサービス契約番号
		if ("".equals(childMap.get("kksv040523_op_svc_kei_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.OP_SVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.OP_SVC_KEI_NO, (String)childMap.get("kksv040523_op_svc_kei_no"));
		}

		// 進捗登録マップ.サブオプションサービス契約番号 → サブオプションサービス契約番号
		if ("".equals(childMap.get("kksv040523_sbop_svc_kei_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.SBOP_SVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SBOP_SVC_KEI_NO, (String)childMap.get("kksv040523_sbop_svc_kei_no"));
		}

		// 進捗登録マップ.割引サービス契約番号 → 割引サービス契約番号
		if ("".equals(childMap.get("kksv040523_wrib_svc_kei_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.WRIB_SVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.WRIB_SVC_KEI_NO, (String)childMap.get("kksv040523_wrib_svc_kei_no"));
		}

		// 進捗登録マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040523_ido_div"))) 
		{
			template.setNull(EKK1091D010CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.IDO_DIV, (String)childMap.get("kksv040523_ido_div"));
		}

		// 進捗登録マップ.異動年月日時分秒 → 異動年月日時分秒
		if ("".equals(dataMap.get("kksv040523_ido_dtm"))) 
		{
			template.setNull(EKK1091D010CBSMsg.IDO_DTM);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.IDO_DTM, (String)dataMap.get("kksv040523_ido_dtm"));
		}

		// 進捗登録マップ.進捗ステータス → 進捗ステータス
		if ("".equals(childMap.get("kksv040523_prg_stat"))) 
		{
			template.setNull(EKK1091D010CBSMsg.PRG_STAT);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.PRG_STAT, (String)childMap.get("kksv040523_prg_stat"));
		}

// ++++++++++ v6.00.00 追加開始 ++++++++++
		// 未来判定フラグ
		String fFlg = (String)dataMap.get("kksv0405work_future_flg");
		if("1".equals(fFlg))
		{
			// 適用年月日
			String rsv_apry_ymd = (String)dataMap.get("rsv_apry_ymd");
			
			// 進捗年月日時分秒
			template.set(EKK1091D010CBSMsg.PRG_DTM_I, rsv_apry_ymd + "000000000");
		}
// ++++++++++ v6.00.00 追加終了 ++++++++++

		// 進捗登録マップ.進捗メモ → 進捗メモ
		if ("".equals(childMap.get("kksv040523_prg_memo"))) 
		{
			template.setNull(EKK1091D010CBSMsg.PRG_MEMO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.PRG_MEMO, (String)childMap.get("kksv040523_prg_memo"));
		}

		// 進捗登録マップ.進捗特記事項1 → 進捗特記事項1
		if ("".equals(childMap.get("kksv040523_prg_tkjk_1"))) 
		{
			template.setNull(EKK1091D010CBSMsg.PRG_TKJK_1);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.PRG_TKJK_1, (String)childMap.get("kksv040523_prg_tkjk_1"));
		}

		// 進捗登録マップ.進捗特記事項2 → 進捗特記事項2
		if ("".equals(childMap.get("kksv040523_prg_tkjk_2"))) 
		{
			template.setNull(EKK1091D010CBSMsg.PRG_TKJK_2);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.PRG_TKJK_2, (String)childMap.get("kksv040523_prg_tkjk_2"));
		}
		
		// 異動理由明細
		inList = (ArrayList)childMap.get("kksv040523_EKK1091D010CBSMsg1List");
		
		if (inList == null) 
		{
			templateArray = new CAANMsg[1];
			templateArray[0] = new CAANMsg(EKK1091D010CBSMsg1List.class.getName());
			
			// 進捗登録マップ.異動理由コード → 異動理由コード
			if ("".equals(childMap.get("kksv040523_ido_rsn_cd"))) 
			{
				templateArray[0].setNull(EKK1091D010CBSMsg1List.IDO_RSN_CD);
			}
			else
			{
				templateArray[0].set(EKK1091D010CBSMsg1List.IDO_RSN_CD, (String)childMap.get("kksv040523_ido_rsn_cd"));
			}
			
			// 進捗登録マップ.異動理由メモ → 異動理由メモ
			if ("".equals(childMap.get("kksv040523_ido_rsn_memo"))) 
			{
				templateArray[0].setNull(EKK1091D010CBSMsg1List.IDO_RSN_MEMO);
			}
			else
			{
				templateArray[0].set(EKK1091D010CBSMsg1List.IDO_RSN_MEMO, (String)childMap.get("kksv040523_ido_rsn_memo"));
			}
			
			template.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST, templateArray);
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 進捗登録サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK1091D010_jdg(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK1091D010_jdg(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (サービス契約一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		editOutMsg_EKK1091D010(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 進捗登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK1091D010_jdg(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK1091D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK1091D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091D010);

		template.set(EKK1091D010CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		
		
		if (!childMap.containsKey("ekk0011d020_mskm_dtl_no") || "".equals(childMap.get("ekk0011d020_mskm_dtl_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK1091D010CBSMsg.MSKM_DTL_NO, (String)childMap.get("ekk0011d020_mskm_dtl_no"));
		}
		
		
		// 機能コード
		template.set(EKK1091D010CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));

		
		
		// 進捗登録マップ.請求契約番号 → 請求契約番号
		if ("".equals(childMap.get("kksv040523_seiky_kei_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.SEIKY_KEI_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SEIKY_KEI_NO, (String)childMap.get("kksv040523_seiky_kei_no"));
		}

		// 進捗登録マップ.サービス契約番号 → サービス契約番号
		if ("".equals(childMap.get("kksv040523_svc_kei_no"))) 
		{
			template.setNull(EKK1091D010CBSMsg.SVC_KEI_NO);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.SVC_KEI_NO, (String)childMap.get("kksv040523_svc_kei_no"));
		}

		// 請求方法番号（口座）
		template.setNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA);
		
		// 請求方法番号（クレジットカード）
		template.setNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD);

		// 進捗登録マップ.サービス契約内訳番号 → サービス契約内訳番号
		template.setNull(EKK1091D010CBSMsg.SVC_KEI_UCWK_NO);

		// 進捗登録マップ.サービス契約回線内訳番号 → サービス契約回線内訳番号
		template.setNull(EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO);

		// 進捗登録マップ.機器提供サービス契約番号 → 機器提供サービス契約番号
		template.setNull(EKK1091D010CBSMsg.KKTK_SVC_KEI_NO);

		// 進捗登録マップ.オプションサービス契約番号 → オプションサービス契約番号
		template.setNull(EKK1091D010CBSMsg.OP_SVC_KEI_NO);

		// 進捗登録マップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号
		template.setNull(EKK1091D010CBSMsg.SEIOPSVC_KEI_NO);

		// 進捗登録マップ.サブオプションサービス契約番号 → サブオプションサービス契約番号
		template.setNull(EKK1091D010CBSMsg.SBOP_SVC_KEI_NO);

		// 進捗登録マップ.割引サービス契約番号 → 割引サービス契約番号
		template.setNull(EKK1091D010CBSMsg.WRIB_SVC_KEI_NO);
			
		// 進捗登録マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040523_ido_div"))) 
		{
			template.setNull(EKK1091D010CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.IDO_DIV, (String)childMap.get("kksv040523_ido_div"));
		}

		// 進捗登録マップ.異動年月日時分秒 → 異動年月日時分秒
		if ("".equals(dataMap.get("kksv040523_ido_dtm"))) 
		{
			template.setNull(EKK1091D010CBSMsg.IDO_DTM);
		} 
		else 
		{
			template.set(EKK1091D010CBSMsg.IDO_DTM, (String)dataMap.get("kksv040523_ido_dtm"));
		}

		// 進捗登録マップ.進捗ステータス → 進捗ステータス
		if ("".equals(dataMap.get("prg_stat"))) {
			template.setNull(EKK1091D010CBSMsg.PRG_STAT);
		} else {
			template.set(EKK1091D010CBSMsg.PRG_STAT, (String) dataMap.get("prg_stat"));
		}

// ++++++++++ v6.00.00 追加開始 ++++++++++
		// 未来判定フラグ
		String fFlg = (String)dataMap.get("kksv0405work_future_flg");
		if("1".equals(fFlg))
		{
			// 適用年月日
			String rsv_apry_ymd = (String)dataMap.get("rsv_apry_ymd");
			
			// 進捗年月日時分秒
			template.set(EKK1091D010CBSMsg.PRG_DTM_I, rsv_apry_ymd + "000000000");
		}
// ++++++++++ v6.00.00 追加終了 ++++++++++

		// 進捗登録マップ.進捗メモ → 進捗メモ
		template.setNull(EKK1091D010CBSMsg.PRG_MEMO);

		// 進捗登録マップ.進捗特記事項1 → 進捗特記事項1
		if ("".equals(dataMap.get("prg_tkjk_1"))) {
			template.setNull(EKK1091D010CBSMsg.PRG_TKJK_1);
		} else {
			template.set(EKK1091D010CBSMsg.PRG_TKJK_1, (String) dataMap.get("prg_tkjk_1"));
		}

		// 進捗登録マップ.進捗特記事項2 → 進捗特記事項2
		if ("".equals(dataMap.get("prg_tkjk_2"))) {
			template.setNull(EKK1091D010CBSMsg.PRG_TKJK_2);
		} else {
			template.set(EKK1091D010CBSMsg.PRG_TKJK_2, (String) dataMap.get("prg_tkjk_2"));
		}
		
		// 異動理由明細
		inList = (ArrayList)childMap.get("EKK1091D010CBSMsg1List");
		
		if (inList == null) {
			templateArray = new CAANMsg[1];
			templateArray[0] = new CAANMsg(EKK1091D010CBSMsg1List.class.getName());
			
			// 進捗登録マップ.異動理由コード → 異動理由コード
			if ("".equals(childMap.get("kksv040523_ido_rsn_cd"))) {
				templateArray[0].setNull(EKK1091D010CBSMsg1List.IDO_RSN_CD);
			}else{
				templateArray[0].set(EKK1091D010CBSMsg1List.IDO_RSN_CD, (String) childMap.get("kksv040523_ido_rsn_cd"));
			}
			
			// 進捗登録マップ.異動理由メモ → 異動理由メモ
			if ("".equals(childMap.get("ido_rsn_memo"))) {
				templateArray[0].setNull(EKK1091D010CBSMsg1List.IDO_RSN_MEMO);
			}else{
				templateArray[0].set(EKK1091D010CBSMsg1List.IDO_RSN_MEMO, (String) childMap.get("ido_rsn_memo"));
			}
			
			template.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST, templateArray);
		}
		
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK1091D010(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
        // エラー情報の設定
        param = editErrorInfo_EKK1091D010(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 進捗登録エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK1091D010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK1091D010CBSMsg.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);
		}

		// 申込明細番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.MSKM_DTL_NO_ERR);
		// 請求契約番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.SEIKY_KEI_NO_ERR);
		// 請求方法番号（口座）
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA_ERR);
		// 請求方法番号（クレジットカード）
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD_ERR);
		// サービス契約番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.SVC_KEI_NO_ERR);
		// サービス契約内訳番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.SVC_KEI_UCWK_NO_ERR);
		// サービス契約回線内訳番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR);
		// 機器提供サービス契約番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.KKTK_SVC_KEI_NO_ERR);
		// オプションサービス契約番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.OP_SVC_KEI_NO_ERR);
		// 請求オプションサービス契約番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.SEIOPSVC_KEI_NO_ERR);
		// サブオプションサービス契約番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.SBOP_SVC_KEI_NO_ERR);
		// 割引サービス契約番号
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.WRIB_SVC_KEI_NO_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.IDO_DIV_ERR);
		// 異動年月日時分秒
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.IDO_DTM_ERR);
		// 進捗ステータス
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.PRG_STAT_ERR);
		// 進捗メモ
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.PRG_MEMO_ERR);
		// 進捗特記事項1
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.PRG_TKJK_1_ERR);
		// 進捗特記事項2
		setErrDataMap(childMap, template, EKK1091D010CBSMsg.PRG_TKJK_2_ERR);
		
		return param;
	}
	
	// ++++++++++ v8.00.03 追加開始 ++++++++++
	/**
	 * 申込書番号存在チェック一覧照会サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0021B011(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0021B011(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (申込書番号存在チェック一覧照会)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		editOutMsg_EKK0021B011(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	// ++++++++++ v8.00.03 追加終了 ++++++++++
	
	// ++++++++++ v8.00.03 追加開始 ++++++++++
	/**
	 * 申込書番号存在チェック一覧照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0021B011(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0021B011CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0021B011CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021B011);

		// オペレータ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(EKK0021B011CBSMsg.FUNC_CODE, "1");

		// 申込書番号
		if (childMap.get("kksv040524_mskmsho_no") == null || "".equals(childMap.get("kksv040524_mskmsho_no"))) {
			template.setNull(EKK0021B011CBSMsg.KEY_MSKMSHO_NO);
		} else {
			template.set(EKK0021B011CBSMsg.KEY_MSKMSHO_NO, (String) childMap.get("kksv040524_mskmsho_no"));
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	// ++++++++++ v8.00.03 追加終了 ++++++++++
	
	// ++++++++++ v8.00.03 追加開始 ++++++++++
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2011.11.25
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0021B011(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		templateArray = parentTemplate.getCAANMsgList(EKK0021B011CBSMsg.EKK0021B011CBSMSG1LIST);

		if (templateArray != null && templateArray.length != 0) {
			
			dataMap.put("EKK0021B011CBSMSG1LIST", templateArray);
		}
		
		// エラー情報の設定
        param = editErrorInfo_EKK0021B011(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	// ++++++++++ v8.00.03 追加終了 ++++++++++
	
	// ++++++++++ v8.00.03 追加開始 ++++++++++
	/**
	 * 申込書番号存在チェック一覧照会エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0021B011(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0021B011CBSMsg.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);
		}

		// 申込書番号
		setErrDataMap(childMap, template, EKK0021B011CBSMsg.KEY_MSKMSHO_NO_ERR);
		
		return param;
	}
	// ++++++++++ v8.00.03 追加終了 ++++++++++
	
	/**
	 * 申込明細照査・後続業務依頼サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0021C060(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0021C060(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (申込明細照査・後続業務依頼)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0021C060(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 申込明細照査・後続業務依頼のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0021C060(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0021C060CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0021C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021C060);

		template.set(EKK0021C060CBSMsg.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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0021C060CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));

		// 申込明細番号WORK(EKK0011D020) → 申込明細番号
		if ("".equals(childMap.get("ekk0011d020_mskm_dtl_no")) || !childMap.containsKey("ekk0011d020_mskm_dtl_no")) 
		{
			template.setNull(EKK0021C060CBSMsg.MSKM_DTL_NO);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.MSKM_DTL_NO, (String)childMap.get("ekk0011d020_mskm_dtl_no"));
		}
		
		// ++++++++++ v8.00.03 追加開始 ++++++++++
		// 申込明細照査・後続業務依頼マップ.申込書番号 → 申込書番号
		if ("".equals(childMap.get("kksv040524_mskmsho_no"))) 
		{
			template.setNull(EKK0021C060CBSMsg.MSKMSHO_NO);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.MSKMSHO_NO, (String)childMap.get("kksv040524_mskmsho_no"));
		}
		// ++++++++++ v8.00.03 追加終了 ++++++++++
		
		// 更新年月日時分秒WORK(EKK0011D020) → 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("ekk0011d020_upd_dtm")) || !childMap.containsKey("ekk0011d020_upd_dtm")) 
		{
			template.setNull(EKK0021C060CBSMsg.UPD_DTM_BF);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0011d020_upd_dtm"));
		}
		
		// 申込明細照査・後続業務依頼マップ.連絡事項登録年月日時分秒 → 連絡事項登録年月日時分秒
		if ("".equals(childMap.get("kksv040524_rrk_jiko_add_dtm"))) 
		{
			template.setNull(EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM, (String)childMap.get("kksv040524_rrk_jiko_add_dtm"));
		}

		// 申込明細照査・後続業務依頼マップ.後続業務依頼年月日 → 後続業務依頼年月日
		if ("".equals(childMap.get("kksv040524_kzkwrk_reqymd"))) 
		{
			template.setNull(EKK0021C060CBSMsg.KZKWRK_REQYMD);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.KZKWRK_REQYMD, (String)childMap.get("kksv040524_kzkwrk_reqymd"));
		}

		// 申込明細照査・後続業務依頼マップ.連絡事項 → 連絡事項
		if ("".equals(childMap.get("kksv040524_rrk_jiko"))) 
		{
			template.setNull(EKK0021C060CBSMsg.RRK_JIKO);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.RRK_JIKO, (String)childMap.get("kksv040524_rrk_jiko"));
		}

		// 申込明細照査・後続業務依頼マップ.異動区分 → 異動区分
		if ("".equals(childMap.get("kksv040524_ido_div"))) 
		{
			template.setNull(EKK0021C060CBSMsg.IDO_DIV);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.IDO_DIV, (String)childMap.get("kksv040524_ido_div"));
		}

		// 申込明細照査・後続業務依頼マップ.電話番号 → 電話番号
		if ("".equals(childMap.get("kksv040524_telno"))) 
		{
			template.setNull(EKK0021C060CBSMsg.TELNO);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.TELNO, (String)childMap.get("kksv040524_telno"));
		}

		// 申込明細照査・後続業務依頼マップ.代表電話番号 → 代表電話番号
		if ("".equals(childMap.get("kksv040524_daihyo_telno"))) 
		{
			template.setNull(EKK0021C060CBSMsg.DAIHYO_TELNO);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.DAIHYO_TELNO, (String)childMap.get("kksv040524_daihyo_telno"));
		}

		// 申込明細照査・後続業務依頼マップ.電話番号使用場所番号 → 電話番号使用場所番号
		if ("".equals(childMap.get("kksv040524_telno_use_place_no"))) 
		{
			template.setNull(EKK0021C060CBSMsg.TELNO_USE_PLACE_NO);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.TELNO_USE_PLACE_NO, (String)childMap.get("kksv040524_telno_use_place_no"));
		}

		// 申込明細照査・後続業務依頼マップ.SIPユーザーID消去済フラグ → SIPユーザーID消去済フラグ
		if ("".equals(childMap.get("kksv040524_sip_user_id_del_zumi_flg"))) 
		{
			template.setNull(EKK0021C060CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG, (String)childMap.get("kksv040524_sip_user_id_del_zumi_flg"));
		}

		// 申込明細照査・後続業務依頼マップ.電話BASホストID → 電話BASホストID
		if ("".equals(childMap.get("kksv040524_tel_bas_host_id"))) 
		{
			template.setNull(EKK0021C060CBSMsg.TEL_BAS_HOST_ID);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.TEL_BAS_HOST_ID, (String)childMap.get("kksv040524_tel_bas_host_id"));
		}

		// 申込明細照査・後続業務依頼マップ.050オプション電話番号 → 050オプション電話番号
		if ("".equals(childMap.get("kksv040524_n_050_op_telno"))) 
		{
			template.setNull(EKK0021C060CBSMsg.N_050_OP_TELNO);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.N_050_OP_TELNO, (String)childMap.get("kksv040524_n_050_op_telno"));
		}

		// 申込明細照査・後続業務依頼マップ.機器認証ID → 機器認証ID
		if ("".equals(childMap.get("kksv040524_kiki_ninsho_id"))) 
		{
			template.setNull(EKK0021C060CBSMsg.KIKI_NINSHO_ID);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.KIKI_NINSHO_ID, (String)childMap.get("kksv040524_kiki_ninsho_id"));
		}

		// 申込明細照査・後続業務依頼マップ.機器認証IDパスワード → 機器認証IDパスワード
		if ("".equals(childMap.get("kksv040524_kiki_ninsho_id_pwd"))) 
		{
			template.setNull(EKK0021C060CBSMsg.KIKI_NINSHO_ID_PWD);
		} 
		else 
		{
			template.set(EKK0021C060CBSMsg.KIKI_NINSHO_ID_PWD, (String)childMap.get("kksv040524_kiki_ninsho_id_pwd"));
		}
		
		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
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0021C060(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
        // エラー情報の設定
        param = editErrorInfo_EKK0021C060(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 申込明細照査・後続業務依頼エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0021C060(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0021C060CBSMsg.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);
		}

		// 申込明細番号
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.MSKM_DTL_NO_ERR);
		// 連絡事項登録年月日時分秒
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM_ERR);
		// 後続業務依頼年月日
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.KZKWRK_REQYMD_ERR);
		// 連絡事項
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.RRK_JIKO_ERR);
		// 更新年月日時分秒（更新前）
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.UPD_DTM_BF_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.IDO_DIV_ERR);
		// 電話番号
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.TELNO_ERR);
		// 代表電話番号
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.DAIHYO_TELNO_ERR);
		// 電話番号使用場所番号
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.TELNO_USE_PLACE_NO_ERR);
		// SIPユーザーID消去済フラグ
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG_ERR);
		// 電話BASホストID
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.TEL_BAS_HOST_ID_ERR);
		// 050オプション電話番号
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.N_050_OP_TELNO_ERR);
		// 機器認証ID
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.KIKI_NINSHO_ID_ERR);
		// 機器認証IDパスワード
		setErrDataMap(childMap, template, EKK0021C060CBSMsg.KIKI_NINSHO_ID_PWD_ERR);
		
		return param;
	}
	
	/**
	 * サービス契約回線内訳一意照会サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0251A010(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0251A010(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (サービス契約一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		editOutMsg_EKK0251A010(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * サービス契約回線内訳一意照会のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0251A010(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0251A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0251A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251A010);


		// オペレータ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);

		CAANMsg[] templateArray = null;
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		
		// 機能コード
		template.set(EKK0251A010CBSMsg.FUNC_CODE, "2");

		// サービス契約回線内訳番号
		if (childMap.get("svc_kei_kaisen_ucwk_no") == null || "".equals(childMap.get("svc_kei_kaisen_ucwk_no"))) {
			template.setNull(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO);
		} else {
			template.set(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String) childMap.get("svc_kei_kaisen_ucwk_no"));
		}
		
		template.setNull(EKK0251A010CBSMsg.KEY_GENE_ADD_DTM);
		
		
		
		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
	 * @since 2011.11.25
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0251A010(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
		
		
		
		templateArray = parentTemplate.getCAANMsgList(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST);
//		dataList = (ArrayList)dataMap.get("KKSV054601SCWORKLIST");
		
		if (templateArray != null && templateArray.length != 0) {
			
			CAANMsg childTemplate = templateArray[0];
			
			dataMap.put("EKK0251A010CBSMSG1LIST", (CAANMsg)childTemplate);
//			dataList.add(new HashMap());
//			
//			HashMap resultMap = (HashMap)dataList.get(0);
//			
//			// 申込内容承認登録マップ.申込登録明細.申込明細番号 ← 申込登録明細.申込明細番号
//			if (childTemplate.isNull(EKK0011D020CBSMsg1List.MSKM_DTL_NO)) {
//				resultMap.put("ekk0011d020_mskm_dtl_no", new String());
//			} else {
//				resultMap.put("ekk0011d020_mskm_dtl_no", childTemplate.getString(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
//			}
		}
		
		
		
		// エラー情報の設定
        param = editErrorInfo_EKK0251A010(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * サービス契約回線内訳一意照会エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0251A010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0251A010CBSMsg.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);
		}

		// サービス契約回線内訳番号
		setErrDataMap(childMap, template, EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR);
		// 世代登録年月日時分秒
		setErrDataMap(childMap, template, EKK0251A010CBSMsg.KEY_GENE_ADD_DTM_ERR);
		
		
		return param;
	}
	
	/**
	 * サービス契約回線内訳内容変更サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @param templateArray 検索結果
	 * @throws Exception 
	 */
	private void execEKK0251C030(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0251C030(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (サービス契約一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		editOutMsg_EKK0251C030(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * サービス契約回線内訳内容変更のメッセージを作成します。
	 * 
	 * @param param
	 * @param inMap
	 * @param templateArray
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0251C030(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0251C030CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0251C030CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251C030);

		template.set(EKK0251C030CBSMsg.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);

		
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		
		
		// 機能コード
		template.set(EKK0251C030CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));

//		CAANMsg childTemplate = templateArray[0];
		
		CAANMsg childTemplate = (CAANMsg)dataMap.get("EKK0251A010CBSMSG1LIST");
		
		// サービス契約回線内訳内容変更マップ.サービス契約回線内訳番号 
		if ("".equals(childMap.get("svc_kei_kaisen_ucwk_no"))) {
			template.setNull(EKK0251C030CBSMsg.SVC_KEI_KAISEN_UCWK_NO);
		} else {
			template.set(EKK0251C030CBSMsg.SVC_KEI_KAISEN_UCWK_NO, (String)childMap.get("svc_kei_kaisen_ucwk_no"));
		}
		
		
		// 申込明細番号
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.MSKM_DTL_NO)) {
			template.setNull(EKK0251C030CBSMsg.MSKM_DTL_NO);
		} else {
			template.set(EKK0251C030CBSMsg.MSKM_DTL_NO, childTemplate.getString(EKK0251A010CBSMsg1List.MSKM_DTL_NO));
		}
		
		
		// 回線場所住所未確定フラグ
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KISN_PLC_AD_MI_FIX_FLG)) {
			template.setNull(EKK0251C030CBSMsg.KISN_PLC_AD_MI_FIX_FLG);
		} else {
			template.set(EKK0251C030CBSMsg.KISN_PLC_AD_MI_FIX_FLG, childTemplate.getString(EKK0251A010CBSMsg1List.KISN_PLC_AD_MI_FIX_FLG));
		}
		// 回線場所住所未確定解除年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KISN_PLC_AD_MI_FIX_RLS_YMD)) {
			template.setNull(EKK0251C030CBSMsg.KISN_PLC_AD_MI_FIX_RLS_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.KISN_PLC_AD_MI_FIX_RLS_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.KISN_PLC_AD_MI_FIX_RLS_YMD));
		}
		// 回線場所_契約者住所差異フラグ
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLC_KSH_AD_SAI_FLG)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLC_KSH_AD_SAI_FLG);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLC_KSH_AD_SAI_FLG, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLC_KSH_AD_SAI_FLG));
		}
		// お客様申告住所未確定フラグcust_skk_ad_mi_fix_flg
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.CUST_SKK_AD_MI_FIX_FLG)) {
			template.setNull(EKK0251C030CBSMsg.CUST_SKK_AD_MI_FIX_FLG);
		} else {
			template.set(EKK0251C030CBSMsg.CUST_SKK_AD_MI_FIX_FLG, childTemplate.getString(EKK0251A010CBSMsg1List.CUST_SKK_AD_MI_FIX_FLG));
		}
		// お客様SOS利用有無cust_sos_use_um
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.CUST_SOS_USE_UM)) {
			template.setNull(EKK0251C030CBSMsg.CUST_SOS_USE_UM);
		} else {
			template.set(EKK0251C030CBSMsg.CUST_SOS_USE_UM, childTemplate.getString(EKK0251A010CBSMsg1List.CUST_SOS_USE_UM));
		}
		// マンション物件番号mansion_bukken_no
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.MANSION_BUKKEN_NO)) {
			template.setNull(EKK0251C030CBSMsg.MANSION_BUKKEN_NO);
		} else {
			template.set(EKK0251C030CBSMsg.MANSION_BUKKEN_NO, childTemplate.getString(EKK0251A010CBSMsg1List.MANSION_BUKKEN_NO));
		}
		// 回線場所電話番号kaisen_place_telno
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_TELNO)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_TELNO);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_TELNO, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_TELNO));
		}
		// 回線場所カナ名kaisen_plc_kana
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLC_KANA)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLC_KANA);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLC_KANA, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLC_KANA));
		}
		// 回線場所住所コードkaisen_place_ad_cd
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_AD_CD)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_AD_CD);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_AD_CD, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AD_CD));
		}
		// 回線場所郵便番号kaisen_place_pcd
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_PCD);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_PCD, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD));
		}
		// 回線場所都道府県名kaisen_place_state_nm
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_STATE_NM);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_STATE_NM, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM));
		}
		// 回線場所市区町村名kaisen_place_city_nm
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_CITY_NM);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_CITY_NM, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM));
		}
		// 回線場所大字通称名kaisen_place_oaztsu_nm
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_OAZTSU_NM);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_OAZTSU_NM, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
		}
		// 回線場所字丁目名kaisen_place_azcho_nm
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_AZCHO_NM);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_AZCHO_NM, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
		}
		// 回線場所番地号kaisen_place_bnchigo
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_BNCHIGO);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_BNCHIGO, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO));
		}
		// 回線場所住所補記・建物名kaisen_place_adrttm
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_ADRTTM);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_ADRTTM, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM));
		}
		// 回線場所住所補記・部屋番号kaisen_place_adrrm
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_ADRRM);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_ADRRM, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM));
		}
		// 回線場所番号kaisen_place_no
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KAISEN_PLACE_NO)) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_PLACE_NO);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_PLACE_NO, childTemplate.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_NO));
		}
		// 回線場所区画整理中フラグkisn_plc_kkk_seiri_chu_flg
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KISN_PLC_KKK_SEIRI_CHU_FLG)) {
			template.setNull(EKK0251C030CBSMsg.KISN_PLC_KKK_SEIRI_CHU_FLG);
		} else {
			template.set(EKK0251C030CBSMsg.KISN_PLC_KKK_SEIRI_CHU_FLG, childTemplate.getString(EKK0251A010CBSMsg1List.KISN_PLC_KKK_SEIRI_CHU_FLG));
		}
		// 回線場所補足コード1kisn_plc_hsk_cd_1
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KISN_PLC_HSK_CD_1)) {
			template.setNull(EKK0251C030CBSMsg.KISN_PLC_HSK_CD_1);
		} else {
			template.set(EKK0251C030CBSMsg.KISN_PLC_HSK_CD_1, childTemplate.getString(EKK0251A010CBSMsg1List.KISN_PLC_HSK_CD_1));
		}
		// 回線場所補足コード2kisn_plc_hsk_cd_2
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KISN_PLC_HSK_CD_2)) {
			template.setNull(EKK0251C030CBSMsg.KISN_PLC_HSK_CD_2);
		} else {
			template.set(EKK0251C030CBSMsg.KISN_PLC_HSK_CD_2, childTemplate.getString(EKK0251A010CBSMsg1List.KISN_PLC_HSK_CD_2));
		}
		// 回線場所補足メモ
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KISN_PLC_HSK_MEMO)) {
			template.setNull(EKK0251C030CBSMsg.KISN_PLC_HSK_MEMO);
		} else {
			template.set(EKK0251C030CBSMsg.KISN_PLC_HSK_MEMO, childTemplate.getString(EKK0251A010CBSMsg1List.KISN_PLC_HSK_MEMO));
		}
		// 住所形態コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.AD_FORM_CD)) {
			template.setNull(EKK0251C030CBSMsg.AD_FORM_CD);
		} else {
			template.set(EKK0251C030CBSMsg.AD_FORM_CD, childTemplate.getString(EKK0251A010CBSMsg1List.AD_FORM_CD));
		}
		// 竣工予定年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.SHUNKO_RSV_YMD)) {
			template.setNull(EKK0251C030CBSMsg.SHUNKO_RSV_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.SHUNKO_RSV_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.SHUNKO_RSV_YMD));
		}
		// 電力送電予定年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.EPOWER_SODEN_RSV_YMD)) {
			template.setNull(EKK0251C030CBSMsg.EPOWER_SODEN_RSV_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.EPOWER_SODEN_RSV_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.EPOWER_SODEN_RSV_YMD));
		}
		// 入居予定年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.NYUKYO_RSV_YMD)) {
			template.setNull(EKK0251C030CBSMsg.NYUKYO_RSV_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.NYUKYO_RSV_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.NYUKYO_RSV_YMD));
		}
		// 引渡し予定年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.HIKIWATASHI_RSV_YMD)) {
			template.setNull(EKK0251C030CBSMsg.HIKIWATASHI_RSV_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.HIKIWATASHI_RSV_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.HIKIWATASHI_RSV_YMD));
		}
		// 引越し予定年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.HIKKOSHI_RSV_YMD)) {
			template.setNull(EKK0251C030CBSMsg.HIKKOSHI_RSV_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.HIKKOSHI_RSV_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.HIKKOSHI_RSV_YMD));
		}
		// X座標
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.XZAHYO)) {
			template.setNull(EKK0251C030CBSMsg.XZAHYO);
		} else {
			template.set(EKK0251C030CBSMsg.XZAHYO, childTemplate.getString(EKK0251A010CBSMsg1List.XZAHYO));
		}
		// Y座標
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.YZAHYO)) {
			template.setNull(EKK0251C030CBSMsg.YZAHYO);
		} else {
			template.set(EKK0251C030CBSMsg.YZAHYO, childTemplate.getString(EKK0251A010CBSMsg1List.YZAHYO));
		}
		// 経度
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.LGTD)) {
			template.setNull(EKK0251C030CBSMsg.LGTD);
		} else {
			template.set(EKK0251C030CBSMsg.LGTD, childTemplate.getString(EKK0251A010CBSMsg1List.LGTD));
		}
		// 緯度
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.LTTD)) {
			template.setNull(EKK0251C030CBSMsg.LTTD);
		} else {
			template.set(EKK0251C030CBSMsg.LTTD, childTemplate.getString(EKK0251A010CBSMsg1List.LTTD));
		}
		// 座標補正有無
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.ZAHYO_HOSEI_UM)) {
			template.setNull(EKK0251C030CBSMsg.ZAHYO_HOSEI_UM);
		} else {
			template.set(EKK0251C030CBSMsg.ZAHYO_HOSEI_UM, childTemplate.getString(EKK0251A010CBSMsg1List.ZAHYO_HOSEI_UM));
		}
		// テレビ個別対応コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.TV_KOBET_TAIO_CD)) {
			template.setNull(EKK0251C030CBSMsg.TV_KOBET_TAIO_CD);
		} else {
			template.set(EKK0251C030CBSMsg.TV_KOBET_TAIO_CD, childTemplate.getString(EKK0251A010CBSMsg1List.TV_KOBET_TAIO_CD));
		}
		// TVアンテナ有無
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.TV_ANTENNA_UM)) {
			template.setNull(EKK0251C030CBSMsg.TV_ANTENNA_UM);
		} else {
			template.set(EKK0251C030CBSMsg.TV_ANTENNA_UM, childTemplate.getString(EKK0251A010CBSMsg1List.TV_ANTENNA_UM));
		}
		// 方角コード1
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.DIRECTION_CD_1)) {
			template.setNull(EKK0251C030CBSMsg.DIRECTION_CD_1);
		} else {
			template.set(EKK0251C030CBSMsg.DIRECTION_CD_1, childTemplate.getString(EKK0251A010CBSMsg1List.DIRECTION_CD_1));
		}
		// 方角コード2
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.DIRECTION_CD_2)) {
			template.setNull(EKK0251C030CBSMsg.DIRECTION_CD_2);
		} else {
			template.set(EKK0251C030CBSMsg.DIRECTION_CD_2, childTemplate.getString(EKK0251A010CBSMsg1List.DIRECTION_CD_2));
		}
		// 戸建建築階数コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KODATE_KCKU_FLR_CNT_CD)) {
			template.setNull(EKK0251C030CBSMsg.KODATE_KCKU_FLR_CNT_CD);
		} else {
			template.set(EKK0251C030CBSMsg.KODATE_KCKU_FLR_CNT_CD, childTemplate.getString(EKK0251A010CBSMsg1List.KODATE_KCKU_FLR_CNT_CD));
		}
		// 集合住宅入居階数コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.SHUGJ_NYUKYO_FLR_CNT_CD)) {
			template.setNull(EKK0251C030CBSMsg.SHUGJ_NYUKYO_FLR_CNT_CD);
		} else {
			template.set(EKK0251C030CBSMsg.SHUGJ_NYUKYO_FLR_CNT_CD, childTemplate.getString(EKK0251A010CBSMsg1List.SHUGJ_NYUKYO_FLR_CNT_CD));
		}
		// PON種別コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.PON_SBT_CD)) {
			template.setNull(EKK0251C030CBSMsg.PON_SBT_CD);
		} else {
			template.set(EKK0251C030CBSMsg.PON_SBT_CD, childTemplate.getString(EKK0251A010CBSMsg1List.PON_SBT_CD));
		}
		// 回線提供会社コード
		if ("".equals(childMap.get("kksv040325_kaisen_tk_comp_cd"))) {
			template.setNull(EKK0251C030CBSMsg.KAISEN_TK_COMP_CD);
		} else {
			template.set(EKK0251C030CBSMsg.KAISEN_TK_COMP_CD, (String)childMap.get("kksv040325_kaisen_tk_comp_cd"));
		}
		// VDSL利用電話回線種別コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.VDSL_USE_TEL_KISN_SBT_CD)) {
			template.setNull(EKK0251C030CBSMsg.VDSL_USE_TEL_KISN_SBT_CD);
		} else {
			template.set(EKK0251C030CBSMsg.VDSL_USE_TEL_KISN_SBT_CD, childTemplate.getString(EKK0251A010CBSMsg1List.VDSL_USE_TEL_KISN_SBT_CD));
		}
		// VDSL利用電話回線切替予定年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.VDSL_USE_DKSN_SWCH_RSV_YMD)) {
			template.setNull(EKK0251C030CBSMsg.VDSL_USE_DKSN_SWCH_RSV_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.VDSL_USE_DKSN_SWCH_RSV_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.VDSL_USE_DKSN_SWCH_RSV_YMD));
		}
		// VDSL利用対象電話番号回線種別コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.VDSL_USE_TG_DBKSN_SBT_CD)) {
			template.setNull(EKK0251C030CBSMsg.VDSL_USE_TG_DBKSN_SBT_CD);
		} else {
			template.set(EKK0251C030CBSMsg.VDSL_USE_TG_DBKSN_SBT_CD, childTemplate.getString(EKK0251A010CBSMsg1List.VDSL_USE_TG_DBKSN_SBT_CD));
		}
		// VDSL利用対象電話番号
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.VDSL_USE_TG_TELNO)) {
			template.setNull(EKK0251C030CBSMsg.VDSL_USE_TG_TELNO);
		} else {
			template.set(EKK0251C030CBSMsg.VDSL_USE_TG_TELNO, childTemplate.getString(EKK0251A010CBSMsg1List.VDSL_USE_TG_TELNO));
		}
		// 引越し年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.HIKKOSHI_YMD)) {
			template.setNull(EKK0251C030CBSMsg.HIKKOSHI_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.HIKKOSHI_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.HIKKOSHI_YMD));
		}
		// 該当エリアサービス開始年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.GAITO_AREA_SVC_STAYMD)) {
			template.setNull(EKK0251C030CBSMsg.GAITO_AREA_SVC_STAYMD);
		} else {
			template.set(EKK0251C030CBSMsg.GAITO_AREA_SVC_STAYMD, childTemplate.getString(EKK0251A010CBSMsg1List.GAITO_AREA_SVC_STAYMD));
		}
		// 撤去工事希望年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.TEKKYO_KOJI_KIBO_YMD)) {
			template.setNull(EKK0251C030CBSMsg.TEKKYO_KOJI_KIBO_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.TEKKYO_KOJI_KIBO_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.TEKKYO_KOJI_KIBO_YMD));
		}
		// 起点変電所コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KITEN_HDSHO_CD)) {
			template.setNull(EKK0251C030CBSMsg.KITEN_HDSHO_CD);
		} else {
			template.set(EKK0251C030CBSMsg.KITEN_HDSHO_CD, childTemplate.getString(EKK0251A010CBSMsg1List.KITEN_HDSHO_CD));
		}
		
		// 集約局コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.SHYAKK_CD)) {
			template.setNull(EKK0251C030CBSMsg.SHYAKK_CD);
		} else {
			template.set(EKK0251C030CBSMsg.SHYAKK_CD, childTemplate.getString(EKK0251A010CBSMsg1List.SHYAKK_CD));
		}
		// 関電営業所コード
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KEPCO_BUSIOFFICE_CD)) {
			template.setNull(EKK0251C030CBSMsg.KEPCO_BUSIOFFICE_CD);
		} else {
			template.set(EKK0251C030CBSMsg.KEPCO_BUSIOFFICE_CD, childTemplate.getString(EKK0251A010CBSMsg1List.KEPCO_BUSIOFFICE_CD));
		}
		// ST3-2013-475 START
		// 更新年月日時分秒(更新前)
		if ("".equals(childMap.get("last_upd_dtm_svc_kei"))) {
			template.setNull(EKK0251C030CBSMsg.UPD_DTM_BF);
		} else {
			template.set(EKK0251C030CBSMsg.UPD_DTM_BF, (String)childMap.get("last_upd_dtm_svc_kei"));
		}
		// ST3-2013-475 END
		// 請求書用回線場所住所部屋番号
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.SKS_YO_KISN_PLACE_AD_RM_NO)) {
			template.setNull(EKK0251C030CBSMsg.SKS_YO_KISN_PLACE_AD_RM_NO);
		} else {
			template.set(EKK0251C030CBSMsg.SKS_YO_KISN_PLACE_AD_RM_NO, childTemplate.getString(EKK0251A010CBSMsg1List.SKS_YO_KISN_PLACE_AD_RM_NO));
		}
		// 電話BASホストID
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.TEL_BAS_HOST_ID)) {
			template.setNull(EKK0251C030CBSMsg.TEL_BAS_HOST_ID);
		} else {
			template.set(EKK0251C030CBSMsg.TEL_BAS_HOST_ID, childTemplate.getString(EKK0251A010CBSMsg1List.TEL_BAS_HOST_ID));
		}
		// 電話VLAN-ID
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.TEL_VLAN_ID)) {
			template.setNull(EKK0251C030CBSMsg.TEL_VLAN_ID);
		} else {
			template.set(EKK0251C030CBSMsg.TEL_VLAN_ID, childTemplate.getString(EKK0251A010CBSMsg1List.TEL_VLAN_ID));
		}
		// VLAN-ID確定フラグ
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.VLAN_ID_FIX_FLG)) {
			template.setNull(EKK0251C030CBSMsg.VLAN_ID_FIX_FLG);
		} else {
			template.set(EKK0251C030CBSMsg.VLAN_ID_FIX_FLG, childTemplate.getString(EKK0251A010CBSMsg1List.VLAN_ID_FIX_FLG));
		}
		// 電話VLAN-ID取込年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.TEL_VLAN_ID_TRKM_YMD)) {
			template.setNull(EKK0251C030CBSMsg.TEL_VLAN_ID_TRKM_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.TEL_VLAN_ID_TRKM_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.TEL_VLAN_ID_TRKM_YMD));
		}
		// 請求書送付先住所変更有無
		if ("".equals(childMap.get("kksv040325_sks_shs_ad_chg_um"))) {
			template.setNull(EKK0251C030CBSMsg.SKS_SHS_AD_CHG_UM);
		} else {
			template.set(EKK0251C030CBSMsg.SKS_SHS_AD_CHG_UM, (String)childMap.get("kksv040325_sks_shs_ad_chg_um"));
		}
		// 請求書送付先住所変更希望年月日
		if ("".equals(childMap.get("kksv040325_kshad_chg_kibo_ymd"))) {
			template.setNull(EKK0251C030CBSMsg.SKS_SHS_AD_CHG_KIBO_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.SKS_SHS_AD_CHG_KIBO_YMD, (String)childMap.get("kksv040325_kshad_chg_kibo_ymd"));
		}
		// 契約者住所変更有無
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KSHAD_CHG_UM)) {
			template.setNull(EKK0251C030CBSMsg.KSHAD_CHG_UM);
		} else {
			template.set(EKK0251C030CBSMsg.KSHAD_CHG_UM, childTemplate.getString(EKK0251A010CBSMsg1List.KSHAD_CHG_UM));
		}
		// 契約者住所変更希望年月日
		if (childTemplate.isNull(EKK0251A010CBSMsg1List.KSHAD_CHG_KIBO_YMD)) {
			template.setNull(EKK0251C030CBSMsg.KSHAD_CHG_KIBO_YMD);
		} else {
			template.set(EKK0251C030CBSMsg.KSHAD_CHG_KIBO_YMD, childTemplate.getString(EKK0251A010CBSMsg1List.KSHAD_CHG_KIBO_YMD));
		}
		
		
		
		
		
		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
	 * @since 2011.11.25
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0251C030(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		}
		
        // エラー情報の設定
        param = editErrorInfo_EKK0251C030(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * サービス契約回線内訳内容変更エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0251C030(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0251C030CBSMsg.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);
		}

		// サービス契約回線内訳番号
		setErrDataMap(childMap, template, EKK0251C030CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR);
		// 回線提供会社コード
		setErrDataMap(childMap, template, EKK0251C030CBSMsg.KAISEN_TK_COMP_CD_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0251C030CBSMsg.UPD_DTM_BF_ERR);
		// 請求書送付先住所変更有無
		setErrDataMap(childMap, template, EKK0251C030CBSMsg.SKS_SHS_AD_CHG_UM_ERR);
		// 更新年月日時分秒（更新前）
		setErrDataMap(childMap, template, EKK0251C030CBSMsg.UPD_DTM_BF_ERR);
		// 請求書送付先住所変更希望年月日
		setErrDataMap(childMap, template, EKK0251C030CBSMsg.SKS_SHS_AD_CHG_KIBO_YMD_ERR);
		
		
		return param;
	}
	
	/**
	 * 申込画面入力支援ワーク情報更新CCを呼び出す。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMap
	 * @param childMap
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String updMkmScinsprtWkCall(SessionHandle handle,
									  IRequestParameterReadWrite param,
									  Map<String, Object> dataMap,
									  HashMap<String, Object> childMap) throws Throwable
	{
		// 申込画面入力支援ワーク情報更新CC実行処理
		String updMkmScinsprtWkReqChkKey = "UpdMkmScinsprtWkReqChk";
		param.setData(updMkmScinsprtWkReqChkKey, new HashMap<String, Object>());
		
		HashMap<String, Object> ccMap = (HashMap<String, Object>)param.getData(updMkmScinsprtWkReqChkKey);
		
		// 機能コード
		ccMap.put("func_code", dataMap.get(JCMConstants.FUNC_CODE_KEY));
		// サービス契約番号
		ccMap.put("key_svc_kei_no", (String)childMap.get("kksv040528_key_svc_kei_no"));
		// 支払方法タブ制御コード
		ccMap.put("pay_way_tab_ctl_cd", (String)childMap.get("kksv040528_pay_way_tab_ctl_cd"));
		
		JKKUpdMkmScinsprtWkCC updMkmScinsprtWkCC = new JKKUpdMkmScinsprtWkCC();
		updMkmScinsprtWkCC.updMkmScinsprtWk(handle, param, updMkmScinsprtWkReqChkKey);
		
		return (String)childMap.get("kksv040528_key_svc_kei_no");
//		param.removeData(updMkmScinsprtWkReqChkKey);
	}
	
	/**
	 * 共通項目の設定
	 * @param param
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文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));

		return paramMap;
	}
	
	/**
	 * IFの戻り値を判定し、結果が異常の場合、SCCallExceptionを発生させます。
	 * @param result CAANMsgクラス
	 * @param cnt CAANMsgの対象位置
	 * @throws Exception
	 */
	private void jdgErrRslt(Map<?, ?> result, int cnt) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[cnt];

		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		Integer zero = 0;

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && zero.equals(status)))
		{
// ++++++++++ v4.01.00 追加開始 ++++++++++
			// 住所最下層チェック
			if(!("0".equals(rtnCode.toString()) && 4 == status))
			{
// ++++++++++ v4.01.00 追加終了 ++++++++++
				SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
				throw scCallEx;
			}
		}
	}
	
	/**
	 * Mapにエラーデータを格納します。
	 * @param inMap データ格納Map
	 * @param template CAANMsgクラス
	 * @param mapKey 取得と格納するキー
	 */
	private void setErrDataMap(Map<String, Object> inMap, CAANMsg template, String mapKey)
	{
		if(!template.isNull(mapKey))
		{
			if(!inMap.containsKey(mapKey))
			{
				inMap.put(mapKey, template.getString(mapKey));
			}
		}
	}
	
	/**
	 * @param param
	 * @param mappingData
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
											   CAANMsg msg) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文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));
		
		// オペレータID
		msg.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		msg.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		msg.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));
		
		setNullToMsg(msg);
		
		CAANMsg[] templates = new CAANMsg[]{msg};
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		return paramMap;
	}
	
	/**
	 * @param msg
	 */
	@SuppressWarnings("unchecked")
	private void setNullToMsg(CAANMsg msg)
	{
		Iterator<String> caanMsgKeys = msg.getSchema().getSchemaKeySet().iterator();
		while (caanMsgKeys.hasNext())
		{
			String key = caanMsgKeys.next();
			if (key.endsWith("_err"))
			{
				String tmpKey = key.substring(0, key.length() - 4);
				
				if (!msg.containsKeyOfMsgData(tmpKey) || "".equals(msg.getObject(tmpKey)))
				{
					msg.setNull(tmpKey);
					continue;
				}
				Object obj = msg.getObject(tmpKey);
				if (obj instanceof CAANMsg[])
				{
					for (CAANMsg submsg : (CAANMsg[]) obj)
					{
						setNullToMsg(submsg);
					}
				}
			}
		}
	}
	
	/**
	 * 請求契約変更ＣＣのチェック処理用サービスインターフェイス作成。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	public  HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		List<CAANMsg> templates = new ArrayList<CAANMsg>();
		
		// チェック用サービスインターフェイス
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, Arrays.asList(templates));
		
		return paramMap;
	}
	
	// ANK-2073-00-00 ADD START
	
	/**
	 * 支払方法通知メール制御コード変更サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall SC呼び出し部品のインスタンス
	 * @param dataMap リクエストデータ
	 * @param childMap 更新対象マップ
	 * @throws Exception 例外
	 */
	private void execEKK0491C250(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0491C250(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (支払方法通知メール制御コード変更)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0491C250(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 支払方法通知メール制御コード変更のメッセージを作成します。
	 * 
	 * @param param リクエストパラメータ
	 * @param dataMap リクエストデータ
	 * @param childMap 更新対象マップ
	 * @return HashMap<String, Object> 支払方法通知メール制御コード変更のメッセージ
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0491C250(IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws RequestParameterException
	{
		
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0491C250CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0491C250CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0491C250);

		template.set(EKK0491C250CBSMsg.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<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0491C250CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 支払方法通知メール制御コード変更マップ.請求契約番号 → 請求契約番号
		if("".equals(childMap.get("kksv040529_seiky_kei_no")))
		{
			template.setNull(EKK0491C250CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0491C250CBSMsg.SEIKY_KEI_NO, (String)childMap.get("kksv040529_seiky_kei_no"));
		}
		
		// 支払方法通知メール制御コード変更マップ.予約適用年月日 → 予約適用年月日
		if("".equals(childMap.get("kksv040529_rsv_aply_ymd")))
		{
			template.setNull(EKK0491C250CBSMsg.RSV_APLY_YMD);
		}
		else
		{
			template.set(EKK0491C250CBSMsg.RSV_APLY_YMD, (String)childMap.get("kksv040529_rsv_aply_ymd"));
		}
		
		// 作業項目.更新年月日時分秒 → 更新年月日時分秒(更新前)
		if(!childMap.containsKey("ekk0491c240_upd_dtm") || "".equals(childMap.get("ekk0491c240_upd_dtm")))
		{
			template.set(EKK0491C250CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c060_upd_dtm"));
		}
		else 
		{
			template.set(EKK0491C250CBSMsg.UPD_DTM_BF, (String)childMap.get("ekk0491c240_upd_dtm"));
		}
		
		// 支払方法通知メール制御コード変更マップ.支払方法通知メール制御コード → 支払方法通知メール制御コード
		if("".equals(childMap.get("kksv040529_paywaytcml_ctl_cd")))
		{
			template.setNull(EKK0491C250CBSMsg.PAYWAYTCML_CTL_CD);
		}
		else
		{
			template.set(EKK0491C250CBSMsg.PAYWAYTCML_CTL_CD, (String)childMap.get("kksv040529_paywaytcml_ctl_cd"));
		}
		
		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
	 * @param dataMap リクエストデータ
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.09.17
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0491C250(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// 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);
		
		// 世代登録年月日時分秒WORK(EKK0491C250) ← 世代登録年月日時分秒
		if(parentTemplate.isNull(EKK0491C250CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("ekk0491c250_gene_add_dtm", new String());
		}
		else 
		{
			childMap.put("ekk0491c250_gene_add_dtm", parentTemplate.getString(EKK0491C250CBSMsg.GENE_ADD_DTM));
		}
		// 更新年月日時分秒WORK(EKK0491C250) ← 更新年月日時分秒
		if(parentTemplate.isNull(EKK0491C250CBSMsg.UPD_DTM)) 
		{
			childMap.put("ekk0491c250_upd_dtm", new String());
		}
		else
		{
			childMap.put("ekk0491c250_upd_dtm", parentTemplate.getString(EKK0491C250CBSMsg.UPD_DTM));
		}
		
		// エラー情報の設定
		param = editErrorInfo_EKK0491C250(param, dataMap, templates, (Integer)return_code, childMap);
		
		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 支払方法通知メール制御コード変更エラー処理メソッド
	 * @param param 業務データ取得・書込用I/F
	 * @param inMap リクエストデータ
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @param childMap 更新対象マップ
	 * @return IRequestParameterReadWrite 業務データ取得・書込用I/F
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0491C250(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0491C250CBSMsg.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);
		}
		
		// 請求契約番号
		setErrDataMap(childMap, template, EKK0491C250CBSMsg.SEIKY_KEI_NO_ERR);
		// 予約適用年月日
		setErrDataMap(childMap, template, EKK0491C250CBSMsg.RSV_APLY_YMD_ERR);
		// 更新年月日時分秒(更新前)
		setErrDataMap(childMap, template, EKK0491C250CBSMsg.UPD_DTM_BF_ERR);
		// 支払方法通知メール制御コード
		setErrDataMap(childMap, template, EKK0491C250CBSMsg.PAYWAYTCML_CTL_CD_ERR);
		
		return param;
	}
	// ANK-2073-00-00 ADD END

// ANK-2565-00-00 ADD START
// ANK-3313-00-00 DEL START
//	/**
//	 * 仕向先会社コード一覧照会サービスを実行し値を取得します。
//	 * @param handle セッションハンドル
//	 * @param param リクエストパラメータ
//	 * @param scCall SC呼び出し部品のインスタンス
//	 * @param dataMap リクエストデータ
//	 * @param childMap 処理対象マップ
//	 * @throws Exception 例外
//	 */
//	private void execEKK0531B502(SessionHandle handle,
//									IRequestParameterReadWrite param,
//									ServiceComponentRequestInvoker scCall,
//									Map<String, Object> dataMap,
//									HashMap<String, Object> childMap) throws Exception
//	{
//		// ◇ 上りマッピング処理
//		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
//		HashMap<String, Object> paramMap = editInMsg_EKK0531B502(param, dataMap, childMap);
//		
//		// ◇ SC呼出実行 (仕向先会社コード一覧照会)
//		Map<?, ?> result = scCall.run(paramMap, handle);
//		
//		// ◇ 下りマッピング処理
//		editOutMsg_EKK0531B502(result, param, dataMap, childMap);
//		
//		//処理結果判定
//		jdgErrRslt(result, 0);
//	}
//	
//	/**
//	 * 仕向先会社コード一覧照会のメッセージを作成します。
//	 * @param param リクエストパラメータ
//	 * @param dataMap リクエストデータ
//	 * @param childMap 処理対象マップ
//	 * @return HashMap<String, Object> 仕向先会社コード一覧照会のメッセージ
//	 * @throws RequestParameterException リクエストパラメータ例外
//	 */
//	@SuppressWarnings("unchecked")
//	private HashMap<String, Object> editInMsg_EKK0531B502(IRequestParameterReadWrite param,
//															Map<String, Object> dataMap,
//															HashMap<String, Object> childMap) throws RequestParameterException
//	{
//		// 共通領域の設定
//		HashMap<String, Object> paramMap = editInMsg(param);
//
//		CAANMsg template = new CAANMsg(EKK0531B502CBSMsg.class.getName());
//
//		// テンプレートID
//		template.set(EKK0531B502CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0531B502);
//
//		// オペレータ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<Object, Object> workMap = param.getMappingWorkArea();
//		
//		// 機能コード
//		template.set(EKK0531B502CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
//		
//		// 仕向先会社コード一覧照会マップ
//		HashMap<String, Object> map = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040530SC);
//		
//		// ＫＥＹ＿クレジットカード番号
//// IT1-2015-0000153 MOD START
////		setTemplate(template, map, EKK0531B502CBSMsg.CRECARD_NO);
//		String crecardNo = JPCUtilCommon.fillZero((String)map.get(EKK0531B502CBSMsg.CRECARD_NO), 16, false);
//		template.set(EKK0531B502CBSMsg.CRECARD_NO, crecardNo);
//// IT1-2015-0000153 MOD END
//		
//		// ＫＥＹ＿クレジットカード事業コード
//		template.set(EKK0531B502CBSMsg.CRECARD_JIGYO_CD, JKKStrConst.CD00420_CRECARD_JIGYO_FTTH);
//		
//		CAANMsg[] templates = new CAANMsg[1];
//		templates[0] = template;
//		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
//
//		return paramMap;
//	}
//	
//	/**
//	 * 仕向先会社コード一覧照会の結果を取得します。
//	 * @param msgList CAANMsgクラス 
//	 * @param param 業務データ取得・書込用I/F
//	 * @param dataMap リクエストデータ
//	 * @param childMap 処理対象マップ
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Exception
//	 */
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite editOutMsg_EKK0531B502(Map<?, ?> msgList,
//																IRequestParameterReadWrite param,
//																Map<String, Object> dataMap,
//																HashMap<String, Object> childMap) throws Exception
//	{
//		// SCからの戻り値からCAANMsgを取得する。
//		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
//		CAANMsg template = templates[0];
//		
//		// リターンコード取得
//		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
//		
//		// 仕向先会社コード一覧照会マップ
//		HashMap<String, Object> map = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040530SC);
//		
//		// 仕向先会社コード一覧照会明細
//		CAANMsg[] cbsMsgList = template.getCAANMsgList(EKK0531B502CBSMsg.EKK0531B502CBSMSG1LIST);
//		ArrayList<HashMap<String, Object>> ary = new ArrayList<HashMap<String, Object>>();
//		map.put(EKK0531B502CBSMsg.EKK0531B502CBSMSG1LIST, ary);
//		
//		if(null != cbsMsgList && 0 < cbsMsgList.length)
//		{
//			// 先頭のデータを取得
//			CAANMsg cbsMsg = cbsMsgList[0];
//			// 値設定用Map
//			HashMap<String, Object> valMap = new HashMap<String, Object>();
//			
//			// クレジット交換コード
//			setMap(cbsMsg, valMap, EKK0531B502CBSMsg1List.CREDIT_KOKAN_CD);
//			// クレジット契約番号
//			setMap(cbsMsg, valMap, EKK0531B502CBSMsg1List.CREDIT_KEI_NO);
//			
//			// 仕向先会社コード一覧照会明細に追加
//			ary.add(valMap);
//		}
//		
//		// エラー情報の設定
//		param = editErrorInfo_EKK0531B502(param, dataMap, templates, (Integer)return_code, childMap);
//		
//		//エラー情報のマップを取得
//		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;
//	}
//	
//	/**
//	 * 仕向先会社コード一覧照会エラー処理メソッド
//	 * @param param 業務データ取得・書込用I/F
//	 * @param inMap リクエストデータ
//	 * @param templates CAANMsgクラス配列
//	 * @param returnCode リターンコード
//	 * @param childMap 処理対象マップ
//	 * @return IRequestParameterReadWrite 業務データ取得・書込用I/F
//	 * @throws RequestParameterException リクエストパラメータ例外
//	 */
//	private IRequestParameterReadWrite editErrorInfo_EKK0531B502(IRequestParameterReadWrite param, 
//																	Map<String, Object> inMap,
//																	CAANMsg[] templates,
//																	int returnCode,
//																	HashMap<String, Object> childMap) throws RequestParameterException
//	{
//		CAANMsg template = templates[0];
//
//		int templateStatus = template.getInt(EKK0531B502CBSMsg.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);
//		}
//		
//		// ＫＥＹ＿クレジットカード番号
//		setErrDataMap(childMap, template, EKK0531B502CBSMsg.CRECARD_NO_ERR);
//		// ＫＥＹ＿クレジットカード事業コード
//		setErrDataMap(childMap, template, EKK0531B502CBSMsg.CRECARD_JIGYO_CD_ERR);
//		
//		return param;
//	}
// ANK-3313-00-00 DEL END
	
	/**
	 * 初回オーソリ依頼サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall SC呼び出し部品のインスタンス
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @throws Exception 例外
	 */
// ANK-3846-00-00 MOD START
//	private void execEKKA0010001(SessionHandle handle,
	private void execEKKA0010004(SessionHandle handle,
// ANK-3846-00-00 MOD END
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
// ANK-3846-00-00 MOD START		
//		HashMap<String, Object> paramMap = editInMsg_EKKA0010001(param, dataMap, childMap);
		HashMap<String, Object> paramMap = editInMsg_EKKA0010004(param, dataMap, childMap);
// ANK-3846-00-00 MOD END
		
		// ◇ SC呼出実行 (初回オーソリ依頼)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
// ANK-3846-00-00 MOD START	
//		editOutMsg_EKKA0010001(result, param, dataMap, childMap);
		editOutMsg_EKKA0010004(result, param, dataMap, childMap);
// ANK-3846-00-00 MOD END	
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 初回オーソリ依頼のメッセージを作成します。
	 * @param param リクエストパラメータ
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @return HashMap<String, Object> 初回オーソリ依頼のメッセージ
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
	@SuppressWarnings("unchecked")
// ANK-3846-00-00 MOD START
//	private HashMap<String, Object> editInMsg_EKKA0010001(IRequestParameterReadWrite param,
	private HashMap<String, Object> editInMsg_EKKA0010004(IRequestParameterReadWrite param,
// ANK-3846-00-00 MOD END
															Map<String, Object> dataMap,
															HashMap<String, Object> childMap) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

// ANK-3846-00-00 MOD START
//		CAANMsg template = new CAANMsg(EKKA0010001CBSMsg.class.getName());
		CAANMsg template = new CAANMsg(EKKA0010004CBSMsg.class.getName());
// ANK-3846-00-00 MOD END

		// テンプレートID
// ANK-3846-00-00 MOD START
//		template.set(EKKA0010001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0010001);
		template.set(EKKA0010004CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0010004);
// ANK-3846-00-00 MOD END

		// オペレータ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<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
// ANK-3846-00-00 MOD START
//		template.set(EKKA0010001CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		template.set(EKKA0010004CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
// ANK-3846-00-00 MOD END
		
		// 初回オーソリ依頼マップ
		HashMap<String, Object> map = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
		
// ANK-3846-00-00 DEL START
//		// 加盟店ID
//		template.set(EKKA0010001CBSMsg.CR_CPID, "CLEARPASS_CPID");
//		// 加盟店パスワード
//		template.set(EKKA0010001CBSMsg.CR_PASSWD, "CLEARPASS_PASS");
//		// 取引年月日
//		template.set(EKKA0010001CBSMsg.CR_ORDERDATE, JCCBPCommon.getOpeDate(null));
//		// 取引時間
//		template.set(EKKA0010001CBSMsg.CR_ORDERTIME, JCCBPCommon.getOpeDateTime(null).substring(8));
//		// 決済金額
//		template.set(EKKA0010001CBSMsg.CR_AMOUNT, "1");
//// ANK-3313-00-00 MOD START
////		// カード番号
////		setTemplate(template, map, EKKA0010001CBSMsg.CR_CARDNUMBER);
//		// カード預りID
//		setTemplate(template, map, EKKA0010001CBSMsg.CR_SAVE_ID);
//// ANK-3313-00-00 MOD END
//		// カード有効期限
//		setTemplate(template, map, EKKA0010001CBSMsg.CR_CARDEXP);
//		
// ANK-3313-00-00 DEL START
//		// 仕向先会社コード一覧照会マップ
//		HashMap<String, Object> kksv040530sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040530SC);
//		// 仕向先会社コード一覧照会明細
//		ArrayList<HashMap<String, Object>> ekk0531b502CBSMsgList =
//			(ArrayList<HashMap<String, Object>>)kksv040530sc.get(EKK0531B502CBSMsg.EKK0531B502CBSMSG1LIST);
//		// クレジット契約番号
//		String creditKeiNo = null;
//		
//		if(null != ekk0531b502CBSMsgList && 0 < ekk0531b502CBSMsgList.size())
//		{
//			creditKeiNo = (String)ekk0531b502CBSMsgList.get(0).get(EKK0531B502CBSMsg1List.CREDIT_KEI_NO);
//		}
//		
//		// クレジット契約番号が存在しない場合
//		if(JKKCommonUtil.isNull(creditKeiNo))
//		{
//			// クレジット会社コード
//			String crCompCd = (String)map.get("cr_comp_cd");
//			// 加盟店番号
//			String membstrNo = (String)map.get("membstr_no");
//			
//			// クレジット契約番号を取得
//			creditKeiNo = getCrdtKeiNo(crCompCd, membstrNo);
//		}
//		
//		// クレジット契約番号
//		template.set(EKKA0010001CBSMsg.CR_CCID, creditKeiNo);
// ANK-3313-00-00 DEL END
// ANK-3846-00-00 DEL END
// ANK-3846-00-00 ADD START
		// クレジットカード番号預りID
		String crecardNoAzkriId = (String)map.get("crecard_no_azkri_id");
		// 請求契約番号
		String seikyKeiNo = (String)map.get("seiky_kei_no");
		
		// マーチャントＩＤ
		template.set(EKKA0010004CBSMsg.PY_MERCHANT_ID, PY_MERCHANT_ID);
		// 接続ID
		template.set(EKKA0010004CBSMsg.PY_CONNECT_ID, PY_CONNECT_ID);
		// 接続パスワード
		template.set(EKKA0010004CBSMsg.PY_CONNECT_PASSWORD, PY_CONNECT_PASSWORD);
		// 電文バージョン番号
		template.set(EKKA0010004CBSMsg.PY_TELEGRAM_VERSION, PY_TELEGRAM_VERSION);
		// 決済金額
		template.set(EKKA0010004CBSMsg.PY_PAYMENT_AMOUNT, PY_PAYMENT_AMOUNT);
		// 顧客ID
		template.set(EKKA0010004CBSMsg.PY_CUSTOMER_ID, crecardNoAzkriId);
		// サイトID
		template.set(EKKA0010004CBSMsg.PY_SITE_ID, PY_SITE_ID);
		// 請求契約番号
		template.set(EKKA0010004CBSMsg.PY_SEIKY_KEI_NO, seikyKeiNo);
// ANK-3846-00-00 ADD END
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 初回オーソリ依頼の結果を取得します。
	 * @param msgList CAANMsgクラス 
	 * @param param 業務データ取得・書込用I/F
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
// ANK-3846-00-00 MOD START
//	private IRequestParameterReadWrite editOutMsg_EKKA0010001(Map<?, ?> msgList,
	private IRequestParameterReadWrite editOutMsg_EKKA0010004(Map<?, ?> msgList,
// ANK-3846-00-00 MOD END
																IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 初回オーソリ依頼マップ
		HashMap<String, Object> map = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
		
// ANK-3846-00-00 DEL START
//		// 処理結果コード
//		setMap(template, map, EKKA0010001CBSMsg.CR_RESULTCODE);
//		// オーソリ承認番号
//		setMap(template, map, EKKA0010001CBSMsg.CR_AUTHNUMBER);
//		// カード預りID
//		setMap(template, map, EKKA0010001CBSMsg.CR_SAVE_ID_O);
//// ANK-2810-00-00 ADD START
//		// 問合せ用カード番号
//		setMap(template, map, EKKA0010001CBSMsg.CR_INQUIRE_CARD_NO);
//// ANK-2810-00-00 ADD END
//// ANK-3313-00-00 ADD START
//		// 仕向先カード会社コード
//		setMap(template, map, EKKA0010001CBSMsg.CR_BRANDCODE);
//		// カードブランド
//		setMap(template, map, EKKA0010001CBSMsg.CR_CARD_BRAND_OPTCD);
//// ANK-3313-00-00 ADD END
//// ANK-3602-00-00 ADD START
//		// カード種別
//		setMap(template, map, EKKA0010001CBSMsg.CR_CARD_TYPE);
//		// イシュア区分
//		setMap(template, map, EKKA0010001CBSMsg.CR_ISSUER_CLASS);
// ANK-3602-00-00 ADD END
// ANK-3846-00-00 DEL END
// ANK-3846-00-00 ADD START
		// 処理結果コード
		setMap(template, map, EKKA0010004CBSMsg.PY_RESULTCODE);
		// レスポンスコード
		setMap(template, map, EKKA0010004CBSMsg.PY_RESPONSE_CODE);
		// レスポンス詳細
		setMap(template, map, EKKA0010004CBSMsg.PY_RESPONSE_DETAIL);
		// 決済ID
		setMap(template, map, EKKA0010004CBSMsg.PY_PAYMENT_ID);
		// マーチャント取引ID
		setMap(template, map, EKKA0010004CBSMsg.PY_TRADING_ID);
		// イシュア区分
		setMap(template, map, EKKA0010004CBSMsg.PY_ISSUR_CLASS);
		// 取扱カード会社コード
		setMap(template, map, EKKA0010004CBSMsg.PY_ACQ_ID);
		// マスクされたカード番号
		setMap(template, map, EKKA0010004CBSMsg.PY_MASKED_CARD_NUMBER);
		// カード有効期限
		setMap(template, map, EKKA0010004CBSMsg.PY_CARD_VALID_TERM);
		// 承認番号
		setMap(template, map, EKKA0010004CBSMsg.PY_SHONIN_NO);
		// デビット・プリペイド判定結果
		setMap(template, map, EKKA0010004CBSMsg.PY_DEBIT_PREPAID_TYPE);
		// カードブランド
		setMap(template, map, EKKA0010004CBSMsg.PY_CARD_BRAND);
// ANK-3846-00-00 ADD END
		
// IT1-2022-0000041対応 20220725 星野 ADD START
// mapへの設定項目追加 上り電文項目も WEB側後続処理で使用
		// マーチャントＩＤ
		setMap(template, map, EKKA0010004CBSMsg.PY_MERCHANT_ID);
		// 接続ID
		setMap(template, map, EKKA0010004CBSMsg.PY_CONNECT_ID);
		// 接続パスワード
		setMap(template, map, EKKA0010004CBSMsg.PY_CONNECT_PASSWORD);
		// 電文バージョン番号
		setMap(template, map, EKKA0010004CBSMsg.PY_TELEGRAM_VERSION);
		// 決済金額
		setMap(template, map, EKKA0010004CBSMsg.PY_PAYMENT_AMOUNT);
		// 顧客ID
		setMap(template, map, EKKA0010004CBSMsg.PY_CUSTOMER_ID);
		// サイトID
		setMap(template, map, EKKA0010004CBSMsg.PY_SITE_ID);
		// 請求契約番号
		setMap(template, map, EKKA0010004CBSMsg.PY_SEIKY_KEI_NO);
		
		//カード発行会社コード
		setMap(template, map, EKKA0010004CBSMsg.PY_ISSUR_ID);
		//カード発行会社名
		setMap(template, map, EKKA0010004CBSMsg.PY_ISSUR_NAME);
		//フィンガープリント
		setMap(template, map, EKKA0010004CBSMsg.PY_FINGERPRINT);
		//取扱カード会社名
		setMap(template, map, EKKA0010004CBSMsg.PY_ACQ_NAME);
		//FC取引有無
		setMap(template, map, EKKA0010004CBSMsg.PY_FC_AUTH_UMU);
		//代行提携コード
		setMap(template, map, EKKA0010004CBSMsg.PY_DAIKO_CODE);
		//カード種類コード
		setMap(template, map, EKKA0010004CBSMsg.PY_CARD_SHU_CODE);
		//カナカード名称
		setMap(template, map, EKKA0010004CBSMsg.PY_K_CARD_NAME);
		//ACS支払人認証要求Html
		setMap(template, map, EKKA0010004CBSMsg.PY_OUT_ACS_HTML);
		//Attempt区分
		setMap(template, map, EKKA0010004CBSMsg.PY_ATTEMPT_KBN);
// IT1-2022-0000041対応 20220725 星野 ADD END
		// エラー情報の設定
// ANK-3846-00-00 MOD START
//		param = editErrorInfo_EKKA0010001(param, dataMap, templates, (Integer)return_code, childMap);
		param = editErrorInfo_EKKA0010004(param, dataMap, templates, (Integer)return_code, childMap);
// ANK-3846-00-00 MOD END
		
		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 初回オーソリ依頼エラー処理メソッド
	 * @param param 業務データ取得・書込用I/F
	 * @param inMap リクエストデータ
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @param childMap 処理対象マップ
	 * @return IRequestParameterReadWrite 業務データ取得・書込用I/F
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
// ANK-3846-00-00 MOD START
//	private IRequestParameterReadWrite editErrorInfo_EKKA0010001(IRequestParameterReadWrite param,
	private IRequestParameterReadWrite editErrorInfo_EKKA0010004(IRequestParameterReadWrite param,
// ANK-3846-00-00 MOD END
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

// ANK-3846-00-00 MOD START
//		int templateStatus = template.getInt(EKKA0010001CBSMsg.STATUS);
		int templateStatus = template.getInt(EKKA0010004CBSMsg.STATUS);
// ANK-3846-00-00 MOD END
		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);
		}
		
		// ANK-3846-00-00 DEL START
//		// 加盟店ID
//		setErrDataMap(childMap, template, EKKA0010001CBSMsg.CR_CPID_ERR);
//		// 加盟店パスワード
//		setErrDataMap(childMap, template, EKKA0010001CBSMsg.CR_PASSWD_ERR);
//		// 取引年月日
//		setErrDataMap(childMap, template, EKKA0010001CBSMsg.CR_ORDERDATE_ERR);
//		// 取引時間
//		setErrDataMap(childMap, template, EKKA0010001CBSMsg.CR_ORDERTIME_ERR);
//		// 決済金額
//		setErrDataMap(childMap, template, EKKA0010001CBSMsg.CR_AMOUNT_ERR);
//		// カード預りID
//		setErrDataMap(childMap, template, EKKA0010001CBSMsg.CR_SAVE_ID_ERR);
//		// カード番号
//		setErrDataMap(childMap, template, EKKA0010001CBSMsg.CR_CARDNUMBER_ERR);
//		// カード有効期限
//		setErrDataMap(childMap, template, EKKA0010001CBSMsg.CR_CARDEXP_ERR);
//		// クレジット契約番号
//		setErrDataMap(childMap, template, EKKA0010001CBSMsg.CR_CCID_ERR);
// ANK-3846-00-00 DEL END
// ANK-3846-00-00 ADD START
		// マーチャントＩＤ
		setErrDataMap(childMap, template, EKKA0010004CBSMsg.PY_MERCHANT_ID_ERR);
		// 接続ID
		setErrDataMap(childMap, template, EKKA0010004CBSMsg.PY_CONNECT_ID_ERR);
		// 接続パスワード
		setErrDataMap(childMap, template, EKKA0010004CBSMsg.PY_CONNECT_PASSWORD_ERR);
		// 電文バージョン番号
		setErrDataMap(childMap, template, EKKA0010004CBSMsg.PY_TELEGRAM_VERSION_ERR);
		// 請求契約番号
		setErrDataMap(childMap, template, EKKA0010004CBSMsg.PY_SEIKY_KEI_NO_ERR);
		// 決済金額
		setErrDataMap(childMap, template, EKKA0010004CBSMsg.PY_PAYMENT_AMOUNT_ERR);
		// 顧客ID
		setErrDataMap(childMap, template, EKKA0010004CBSMsg.PY_CUSTOMER_ID_ERR);
		// サイトID
		setErrDataMap(childMap, template, EKKA0010004CBSMsg.PY_SITE_ID_ERR);
// ANK-3846-00-00 ADD END
		
		return param;
	}
// ANK-3846-00-00 ADD START
	/**
	 * 預かりオーソリ依頼サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall SC呼び出し部品のインスタンス
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @throws Exception 例外
	 */
	private void execEKKA0010003(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKKA0010003(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (預かりオーソリ依頼)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKKA0010003(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 預かりオーソリ依頼のメッセージを作成します。
	 * @param param リクエストパラメータ
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @return HashMap<String, Object> 預かりオーソリ依頼のメッセージ
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKKA0010003(IRequestParameterReadWrite param,
															Map<String, Object> dataMap,
															HashMap<String, Object> childMap) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKKA0010003CBSMsg.class.getName());

		// テンプレートID
		template.set(EKKA0010003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0010003);

		// オペレータ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<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKKA0010003CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));
		
		// 預かりオーソリ依頼マップ
		HashMap<String, Object> map = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
		
		// トークン
		String token = (String)map.get("token");
		
		// マーチャントＩＤ
		template.set(EKKA0010003CBSMsg.PY_MERCHANT_ID, PY_MERCHANT_ID);
		// 接続ID
		template.set(EKKA0010003CBSMsg.PY_CONNECT_ID, PY_CONNECT_ID);
		// 接続パスワード
		template.set(EKKA0010003CBSMsg.PY_CONNECT_PASSWORD, PY_CONNECT_PASSWORD);
		// 電文バージョン番号
		template.set(EKKA0010003CBSMsg.PY_TELEGRAM_VERSION, PY_TELEGRAM_VERSION);
		// サイトID
		template.set(EKKA0010003CBSMsg.PY_SITE_ID, PY_SITE_ID);
		// カード情報トークン
		template.set(EKKA0010003CBSMsg.PY_CARD_TOKEN, token);
		// セキュリティコード利用
		template.set(EKKA0010003CBSMsg.PY_SECURITY_CODE_USE, PY_SECURITY_CODE_USE_NO);
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 預かりオーソリ依頼の結果を取得します。
	 * @param msgList CAANMsgクラス 
	 * @param param 業務データ取得・書込用I/F
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg_EKKA0010003(Map<?, ?> msgList,
																IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 預かりオーソリ依頼マップ
		HashMap<String, Object> map = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
		
		// 処理結果コード
		setMap(template, map, EKKA0010003CBSMsg.PY_RESULTCODE);
		// レスポンスコード
		setMap(template, map, EKKA0010003CBSMsg.PY_RESPONSE_CODE);
		// レスポンス詳細
		setMap(template, map, EKKA0010003CBSMsg.PY_RESPONSE_DETAIL);
		// イシュア区分
		setMap(template, map, EKKA0010003CBSMsg.PY_ISSUR_CLASS);
		// 取扱カード会社コード
		setMap(template, map, EKKA0010003CBSMsg.PY_ACQ_ID);
		// マスクされたカード番号
		setMap(template, map, EKKA0010003CBSMsg.PY_MASKED_CARD_NUMBER);
		// カード有効期限
		setMap(template, map, EKKA0010003CBSMsg.PY_CARD_VALID_TERM);
		// デビット・プリペイド判定結果
		setMap(template, map, EKKA0010003CBSMsg.PY_DEBIT_PREPAID_TYPE);
		// カードブランド
		setMap(template, map, EKKA0010003CBSMsg.PY_CARD_BRAND);
		// 顧客ID
		setMap(template, map, EKKA0010003CBSMsg.PY_CUSTOMER_ID);
		
// IT1-2022-0000041対応 20220725 星野 ADD START
// mapへの設定項目追加 上り電文項目も WEB側後続処理で使用
		// マーチャントＩＤ
		setMap(template, map, EKKA0010003CBSMsg.PY_MERCHANT_ID);
		// 接続ID
		setMap(template, map, EKKA0010003CBSMsg.PY_CONNECT_ID);
		// 接続パスワード
		setMap(template, map, EKKA0010003CBSMsg.PY_CONNECT_PASSWORD);
		// 電文バージョン番号
		setMap(template, map, EKKA0010003CBSMsg.PY_TELEGRAM_VERSION);
		// 顧客ID
		setMap(template, map, EKKA0010003CBSMsg.PY_CUSTOMER_ID);
		// サイトID
		setMap(template, map, EKKA0010003CBSMsg.PY_SITE_ID);
		// カード情報トークン
		setMap(template, map, EKKA0010003CBSMsg.PY_CARD_TOKEN);
		// セキュリティコード利用
		setMap(template, map, EKKA0010003CBSMsg.PY_SECURITY_CODE_USE);
		
		//カード発行会社コード
		setMap(template, map, EKKA0010003CBSMsg.PY_ISSUR_ID);
		//カード発行会社名
		setMap(template, map, EKKA0010003CBSMsg.PY_ISSUR_NAME);
		//フィンガープリント
		setMap(template, map, EKKA0010003CBSMsg.PY_FINGERPRINT);
		//取扱カード会社名
		setMap(template, map, EKKA0010003CBSMsg.PY_ACQ_NAME);
		// 顧客カード数
		setMap(template, map, EKKA0010003CBSMsg.PY_NUM_OF_CARDS);
		// 顧客カードID
		setMap(template, map, EKKA0010003CBSMsg.PY_CUSTOMER_CARD_ID);
		// カード名義人
		setMap(template, map, EKKA0010003CBSMsg.PY_CARDHOLDER_NAME);
// IT1-2022-0000041対応 20220725 星野 ADD END
		
		// エラー情報の設定
		param = editErrorInfo_EKKA0010003(param, dataMap, templates, (Integer)return_code, childMap);
		
		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * 預かりオーソリ依頼エラー処理メソッド
	 * @param param 業務データ取得・書込用I/F
	 * @param inMap リクエストデータ
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @param childMap 処理対象マップ
	 * @return IRequestParameterReadWrite 業務データ取得・書込用I/F
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
	private IRequestParameterReadWrite editErrorInfo_EKKA0010003(IRequestParameterReadWrite param,
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		
		int templateStatus = template.getInt(EKKA0010003CBSMsg.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);
		}
		
		// マーチャントＩＤ
		setErrDataMap(childMap, template, EKKA0010003CBSMsg.PY_MERCHANT_ID_ERR);
		// 接続ID
		setErrDataMap(childMap, template, EKKA0010003CBSMsg.PY_CONNECT_ID_ERR);
		// 接続パスワード
		setErrDataMap(childMap, template, EKKA0010003CBSMsg.PY_CONNECT_PASSWORD_ERR);
		// 電文バージョン番号
		setErrDataMap(childMap, template, EKKA0010003CBSMsg.PY_TELEGRAM_VERSION_ERR);
		// サイトID
		setErrDataMap(childMap, template, EKKA0010003CBSMsg.PY_SITE_ID_ERR);
		// カード情報トークンエラー
		setErrDataMap(childMap, template, EKKA0010003CBSMsg.PY_CARD_TOKEN_ERR);
		// セキュリティコード利用エラー
		setErrDataMap(childMap, template, EKKA0010003CBSMsg.PY_SECURITY_CODE_USE_ERR);
		
		return param;
	}
// ANK-3846-00-00 ADD END
	
	/**
	 * メッセージキャリアに値を設定します。
	 * @param template メッセージキャリア
	 * @param map 設定値が格納されたマップ
	 * @param key キー名
	 */
	private void setTemplate(CAANMsg template, HashMap<String, Object> map, String key)
	{
		if("".equals(map.get(key)))
		{
			template.setNull(key);
		}
		else
		{
			template.set(key, map.get(key));
		}
	}
	
	/**
	 * マップにメッセージキャリアから取得した値を設定します。
	 * @param template メッセージキャリア
	 * @param map 設定先のマップ
	 * @param key キー名
	 */
	private void setMap(CAANMsg template, HashMap<String, Object> map, String key)
	{
		if(template.isNull(key)) 
		{
			map.put(key, "");
		}
		else 
		{
			map.put(key, template.getString(key));
		}
	}
	
	/**
	 * マップにメッセージキャリアから取得した値を設定します。
	 * @param template メッセージキャリア
	 * @param map 設定先のマップ
	 * @param setKey 取得用キー名
	 * @param getKey 設定用キー名
	 */
	private void setMap(CAANMsg template, HashMap<String, Object> map, String setKey, String getKey)
	{
		if(template.isNull(getKey)) 
		{
			map.put(setKey, "");
		}
		else 
		{
			map.put(setKey, template.getString(getKey));
		}
	}
	
	/**
	 * 初回オーソリ承認結果コード取得処理
	 * @param trnRsltCd 処理結果コード
	 * @return 承認結果コード<br>
	 * 0：オーソリＯＫ<br>
	 * 1：オーソリＮＧ<br>
	 * 9：システムエラー
	 */
	public static String getFauthoriSnnRsltCd(String trnRsltCd)
	{
		// 先頭２桁がＯＫコードの場合
		if(trnRsltCd.startsWith(AUTHORI_CD_OK))
		{
			// オーソリＯＫを返却
			return SNN_RSLT_CD_OK;
		}
		
		// ＮＧコードの場合
		boolean isNgCd = Arrays.asList(AUTHORI_CD_NG).contains(trnRsltCd);
		if(isNgCd)
		{
			// オーソリＮＧを返却
			return SNN_RSLT_CD_NG;
		}
		
		// システムエラーを返却
		return SNN_RSLT_CD_ERR;
	}
	
// ANK-3313-00-00 DEL START
//	/**
//	 * クレジット契約番号取得処理
//	 * @param crecardCompCd クレジットカード会社コード
//	 * @param membstrNo15 加盟店番号（１５桁）
//	 * @return クレジット契約番号
//	 */
//	public static String getCrdtKeiNo(String crecardCompCd, String membstrNo15)
//	{
//		String membstrNo = membstrNo15.trim();
//		
//		// クレジットカード会社がNICOSの場合
//		if(JKKFamiilyPackConst.KK0531_CRECARD_COMP_CD_00009.equals(crecardCompCd))
//		{
//			if(14 <= membstrNo.length())
//			{
//				// ４桁目以降を返却（１１桁を超える場合は末１桁は使用しない）
//				return membstrNo.substring(3, 14);
//			}
//			
//			// ４桁目以降を返却
//			return membstrNo.substring(3);
//		}
//		
//		if(membstrNo.length() < 11)
//		{
//			return membstrNo;
//		}
//		
//		// 上１１桁を返却
//		return membstrNo.substring(0, 11);
//	}
// ANK-3313-00-00 DEL END
	
	/**
	 * エラー情報を設定します。
	 * @param iparam IRequestParameterReadWrite
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrInfo(IRequestParameterReadWrite iparam) throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, JPCModelConstant.RELATION_ERR, JPCModelConstant.NORMAL_END);
		
		// エラー情報のリストを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		HashMap<String, Object> errorMap = new HashMap<String, Object>();
		HashMap<String, String> errorMapChild = new HashMap<String, String>();
		
		errorMap.put(ErrorInfoMapKeys.RETURN_CODE, JPCModelConstant.NORMAL_END);
		errorMap.put(ErrorInfoMapKeys.STATUS, JPCModelConstant.RELATION_ERR);
		
		errorMap.put(ErrorInfoMapKeys.ITEM_CHECK_ERRORS, errorMapChild);
		
		errList.add(errorMap);
		
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, errList);
		
		return param;
	}
	
	/**
	 * コントロールマップエラー情報格納処理を行います。
	 * @param param リクエストパラメータ
	 * @param itemplateStatus サービスインターフェイスステータス
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite setControlMapErrInfo(IRequestParameterReadWrite param, int itemplateStatus, int returnCode)
	throws RequestParameterException
	{
		int templateStatus = itemplateStatus;
		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);
		}
		
		return param;
	}
// ANK-2565-00-00 ADD END
// ANK-3313-00-00 ADD START
	/**
	 * クレジットカード会社一意照会サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall SC呼び出し部品のインスタンス
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @throws Exception 例外
	 */
	private void execEKK0531A010(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0531A010(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (クレジットカード会社一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0531A010(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * クレジットカード会社一意照会のメッセージを作成します。
	 * @param param リクエストパラメータ
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @return HashMap<String, Object> クレジットカード会社一意照会のメッセージ
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0531A010(IRequestParameterReadWrite param,
															Map<String, Object> dataMap,
															HashMap<String, Object> childMap) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0531A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0531A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0531A010);

		// オペレータ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<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0531A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2);
		
		// 初回オーソリ依頼マップ
		HashMap<String, Object> kksv040531sc = (HashMap<String, Object>)childMap.get(MAP_KEY_KKSV040531SC);
		
// ANK-3846-00-00 MOD START
		// カードブランド
//		String crCardBrandOptcd = (String)kksv040531sc.get(EKKA0010001CBSMsg.CR_CARD_BRAND_OPTCD);
		String pyCardBrand = (String)kksv040531sc.get(PY_CARD_BRAND);
		
		// ＫＥＹ＿クレジットカード会社コード
//		template.set(EKK0531A010CBSMsg.KEY_CRECARD_COMP_CD, crCardBrandOptcd);
		template.set(EKK0531A010CBSMsg.KEY_CRECARD_COMP_CD, pyCardBrand);
// ANK-3846-00-00 MOD END
		
		// ＫＥＹ＿クレジットカード事業コード
		template.set(EKK0531A010CBSMsg.KEY_CRECARD_JIGYO_CD, JKKStrConst.CD00420_CRECARD_JIGYO_FTTH);
		
		// ＫＥＹ＿予約適用年月日
		template.set(EKK0531A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
	}
	
	/**
	 * クレジットカード会社一意照会の結果を取得します。
	 * @param msgList CAANMsgクラス 
	 * @param param 業務データ取得・書込用I/F
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg_EKK0531A010(Map<?, ?> msgList,
																IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// クレジットカード会社一意照会マップ
		HashMap<String, Object> map = new HashMap<String, Object>();
		childMap.put(MAP_KEY_KKSV040532SC, map);
		
		// クレジットカード会社一意照会明細
		CAANMsg[] cbsMsgList = template.getCAANMsgList(EKK0531A010CBSMsg.EKK0531A010CBSMSG1LIST);
		ArrayList<HashMap<String, Object>> ary = new ArrayList<HashMap<String, Object>>();
		map.put(EKK0531A010CBSMsg.EKK0531A010CBSMSG1LIST, ary);
		
		if(null != cbsMsgList && 0 < cbsMsgList.length)
		{
			// 先頭のデータを取得
			CAANMsg cbsMsg = cbsMsgList[0];
			
			// 値設定用Map
			HashMap<String, Object> valMap = new HashMap<String, Object>();
			
			// 加盟店番号(15桁)
			setMap(cbsMsg, valMap, EKK0531A010CBSMsg1List.MEMBSTR_NO_15);
			
			// クレジットカード会社一意照会明細に追加
			ary.add(valMap);
		}
		
		// エラー情報の設定
		param = editErrorInfo_EKK0531A010(param, dataMap, templates, (Integer)return_code, childMap);
		
		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * クレジットカード会社一意照会エラー処理メソッド
	 * @param param 業務データ取得・書込用I/F
	 * @param inMap リクエストデータ
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @param childMap 処理対象マップ
	 * @return IRequestParameterReadWrite 業務データ取得・書込用I/F
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0531A010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];
		
		int templateStatus = template.getInt(EKK0531A010CBSMsg.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);
		}
		
		// ＫＥＹ＿クレジットカード会社コード
		setErrDataMap(childMap, template, EKK0531A010CBSMsg.KEY_CRECARD_COMP_CD_ERR);
		// ＫＥＹ＿クレジットカード事業コード
		setErrDataMap(childMap, template, EKK0531A010CBSMsg.KEY_CRECARD_JIGYO_CD_ERR);
		// ＫＥＹ＿予約適用年月日
		setErrDataMap(childMap, template, EKK0531A010CBSMsg.KEY_RSV_APLY_YMD_ERR);
		
		return param;
	}
// ANK-3313-00-00 ADD END
// OM-2019-0001078 ADD START
	/**
	 * クレジットカード一意照会サービスを実行し値を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall SC呼び出し部品のインスタンス
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @throws Exception 例外
	 */
	private void execEKK0521A010(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0521A010(param, dataMap, childMap);
		
		// ◇ SC呼出実行 (クレジットカード一意照会)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0521A010(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * クレジットカード一意照会のメッセージを作成します。
	 * @param param リクエストパラメータ
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @return HashMap<String, Object> クレジットカード会社一意照会のメッセージ
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0521A010(IRequestParameterReadWrite param,
															Map<String, Object> dataMap,
															HashMap<String, Object> childMap) throws RequestParameterException
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);

		CAANMsg template = new CAANMsg(EKK0521A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0521A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0521A010);

		// オペレータ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<Object, Object> workMap = param.getMappingWorkArea();
		
		// 機能コード
		template.set(EKK0521A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2);
		
		// ＫＥＹ＿請求方法番号(クレジットカード)
		if ("".equals(childMap.get("kksv040515_seiky_way_no_crecard"))) 
		{
			template.setNull(EKK0521A010CBSMsg.KEY_SEIKY_WAY_NO_CRECARD);
		} 
		else 
		{
			template.set(EKK0521A010CBSMsg.KEY_SEIKY_WAY_NO_CRECARD, (String)childMap.get("kksv040515_seiky_way_no_crecard"));
		}
		
		// ＫＥＹ＿世代登録年月日時分秒
		template.setNull(EKK0521A010CBSMsg.KEY_GENE_ADD_DTM);
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
	}
	
	/**
	 * クレジットカード一意照会の結果を取得します。
	 * @param msgList CAANMsgクラス 
	 * @param param 業務データ取得・書込用I/F
	 * @param dataMap リクエストデータ
	 * @param childMap 処理対象マップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editOutMsg_EKK0521A010(Map<?, ?> msgList,
																IRequestParameterReadWrite param,
																Map<String, Object> dataMap,
																HashMap<String, Object> childMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// クレジットカード一意照会明細
		CAANMsg[] templateArray = template.getCAANMsgList(EKK0521A010CBSMsg.EKK0521A010CBSMSG1LIST);
		
		if (templateArray != null && templateArray.length != 0) {
			
			CAANMsg childTemplate = templateArray[0];
			dataMap.put("EKK0521A010CBSMSG1LIST", (CAANMsg)childTemplate);
		}
		
		// エラー情報の設定
		param = editErrorInfo_EKK0521A010(param, dataMap, templates, (Integer)return_code, childMap);
		
		//エラー情報のマップを取得
		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;
	}
	
	/**
	 * クレジットカード一意照会エラー処理メソッド
	 * @param param 業務データ取得・書込用I/F
	 * @param inMap リクエストデータ
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @param childMap 処理対象マップ
	 * @return IRequestParameterReadWrite 業務データ取得・書込用I/F
	 * @throws RequestParameterException リクエストパラメータ例外
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0521A010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0521A010CBSMsg.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);
		}

		// ＫＥＹ＿請求方法番号(クレジットカード) 
		setErrDataMap(childMap, template, EKK0521A010CBSMsg.KEY_SEIKY_WAY_NO_CRECARD_ERR);
		// ＫＥＹ＿世代登録年月日時分秒
		setErrDataMap(childMap, template, EKK0521A010CBSMsg.KEY_GENE_ADD_DTM_ERR);

		return param;
	}
// OM-2019-0001078 ADD END
}
