# ⑥ 業務ロジック — Service Call (SC): 10 methods

| 項目 | 内容 |
|---|---|
| 完全修飾名 | `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC` |
| レイヤー | CC（Common Component、パッケージ名およびクラス名から判定） |
| モジュール | common（パッケージ名：com.fujitsu.futurity.bp.custom.commonより） |


<style>
.mermaid { display: flex !important; justify-content: center !important; overflow-x: auto !important; overflow-y: hidden; background: #f9f9f9; padding: 20px; border-radius: 8px; margin: 0 auto; }
.mermaid svg { max-width: 100% !important; height: auto !important; width: fit-content !important; margin: 0 auto; }
.node rect { fill: #e1f5fe !important; stroke: #01579b !important; }
.label { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
</style>

<a id="method-callEKK0341B029SC"></a>
### callEKK0341B029SC()

---

#### 1. 役割

機器提供サービス契約一覧照会（機器変更番号）処理。  
具体的には、指定された機器提供サービス契約番号（kktkSvcKeiNo）、機器変更番号（kikiChgNo）、予約適用年月日（rsvAplyYmd）を使って入力マップを編集し、サービスインターフェース（SC）を呼び出し、戻り値のCAANMsg配列から最初の1件を返却する。  
本メソッドは、機器変更に関連する情報を照会したいときに利用される共通処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0341B029SC（handle, param, funcCd, kktkSvcKeiNo, kikiChgNo, rsvAplyYmd）"] --> S1["Step1: editInMsgEKK0341B029（param, funcCd, kktkSvcKeiNo, kikiChgNo, rsvAplyYmd）で入力マップ作成"]
  S1 --> S2["Step2: callSvcInter（handle, param, inMap, new EKK0341B029CBSMsg（）.getContents（））でSC呼出"]
  S2 --> S3["Step3: outMsg.getCAANMsgList（EKK0341B029CBSMsg.EKK0341B029CBSMSG1LIST）で配列取得"]
  S3 --> IF1{"outMsgList != null && outMsgList.length > 0"}
  IF1 -->|"Yes"| S4["Step4: result = outMsgList[0]をセット"]
  IF1 -->|"No"| S5["Step5: result = nullのまま"]
  S4 --> RET["return result"]
  S5 --> RET
```

**処理ステップ詳細:**

1. 入力パラメータ（param, funcCd, kktkSvcKeiNo, kikiChgNo, rsvAplyYmd）を使い、editInMsgEKK0341B029でSC呼出用の入力マップを生成。
2. callSvcInterを利用し、上記パラメータでSC（EKK0341B029CBSMsg）を呼び出す。
3. SC呼出の戻り値（CAANMsg）から、EKK0341B029CBSMsg.EKK0341B029CBSMSG1LIST配列を取得。
4. 配列がnullでなく、かつ1件以上の場合は1件目（outMsgList[0]）を返却。そうでなければnullを返す。

---

#### 3. パラメータ分析

| No  | パラメータ名    | 型               | 業務説明                                                      |
| --- | --------------- | ---------------- | ------------------------------------------------------------- |
| 1   | handle          | SessionHandle    | セッション管理ハンドル（サービスIFの呼出時に必要な制御情報）   |
| 2   | param           | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3   | funcCd          | String           | 機能コード（サービスIF呼出の種別指定用）                        |
| 4   | kktkSvcKeiNo    | String           | 機器提供サービス契約番号                                       |
| 5   | kikiChgNo       | String           | 機器変更番号                                                  |
| 6   | rsvAplyYmd      | String           | 予約適用年月日                                                |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B029SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `checkTakinoRT` | protected | 多機能ルーター情報ルータ機能有無チェック<br> <br> サービス契約番号に紐付いている多機能ルータのルータ機能設定有無 <br> <br> |
| 2 | `getVAkikiInfo` | private | VA機器を取得します |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK0341B029SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(outMsgList != null && outMsgList.length > 0)` (L39381)

> 📌 結果を返却

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `result = outMsgList[0];` |

> **合計**: 1 blocks (1 depth levels)

### callEKK2091A010SC()

---

#### 1. 役割

住所変更一意照会を呼び出す。  
具体的には、入力パラメータであるinHashから住所変更番号（ADCHG_NO）をテンプレートにセットし、SC（EKK2091A010CBSMsg）を呼び出して、照会結果を取得する。呼び出し結果のステータスやエラー情報等をparamのコントロールマップに詳細に反映し、取得結果をresultHashに格納する。  
本メソッドは、住所変更情報の一意照会（単一取得）を行う場合に使用される共通業務処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK2091A010SC（param, handle, inHash, resultHash）"] --> S1["Step1: editInMsgCmn（param）で共通情報を設定"]
  S1 --> S2["Step2: CAANMsg（EKK2091A010CBSMsg）テンプレート生成"]
  S2 --> S3["Step3: fillCAANMSGNullMappingで全条件Nullマッピング"]
  S3 --> S4["Step4: テンプレートにTEMPLATEID, FUNC_CODE, KEY_ADCHG_NO等をセット"]
  S4 --> S5["Step5: editBasicCmn（param, template）で基本情報を編集"]
  S5 --> S6["Step6: sIFRequest.put（JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S6 --> S7["Step7: ServiceComponentRequestInvokerでSC呼出"]
  S7 --> S8["Step8: 戻り値resultMsgsからステータス取得"]
  S8 --> IF1{"returnCode != 0"}
  IF1 -.-> NOTE1["returnCode: SIF呼出リターンコード"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF1 -->|"Yes"| S9["templateStatus=9000"]
  IF1 -->|"No"| S10["templateStatus取得"]
  S9 --> IF2{"JCMAPLConstMgr.getString（RETURN_MESSAGE_XXXX）==null"}
  S10 --> IF2
  IF2 -.-> NOTE2["RETURN_MESSAGE_XXXX: ステータスメッセージ"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF2 -->|"Yes"| S11["templateStatus=0"]
  IF2 -->|"No"| S12["templateStatusそのまま"]
  S11 --> S13["bpStatus取得"]
  S12 --> S13
  S13 --> IF3{"templateStatus > bpStatus"}
  IF3 -->|"Yes"| S14["paramにRETURN_CODE/RETURN_MESSAGEをセット"]
  IF3 -->|"No"| S15["何もしない"]
  S14 --> S16["エラー情報errListセット"]
  S15 --> S16
  S16 --> IF4{"status == 0"}
  IF4 -->|"Yes"| S17["resultHashに結果格納"]
  IF4 -->|"No"| S18["何もしない"]
  S17 --> RET["return status"]
  S18 --> RET
```

**処理ステップ詳細:**

1. editInMsgCmn(param)を呼び出し、サービスIF共通の情報を設定。
2. CAANMsg(EKK2091A010CBSMsg)のテンプレートを生成。
3. fillCAANMSGNullMappingで全条件をNullマッピング。
4. テンプレートにTEMPLATEID（JKKHakkoSODConstCC.TEMPLATE_ID_EKK2091A010）、FUNC_CODE（JKKHakkoSODConstCC.FUNC_CODE_1）、KEY_ADCHG_NO（inHash.get(JKKHakkoSODConstCC.ADCHG_NO)）などをセット。
5. editBasicCmn(param, template)で基本部項目を編集。
6. sIFRequestにテンプレートをput。
7. ServiceComponentRequestInvokerを使い、sIFResult = scCall.run(sIFRequest, handle)でSC呼び出し。
8. 戻り値からresultMsgs・status・returnCodeを取得。
9. returnCodeが0でなければtemplateStatus=9000、RETURN_MESSAGE_XXXXがnullならtemplateStatus=0。
10. param.getControlMapData(SCControlMapKeys.RETURN_CODE)からbpStatusを取得。
11. templateStatus > bpStatusの場合、paramにRETURN_CODE/RETURN_MESSAGEをセット。
12. paramのERROR_INFOにTemplateErrorUtil.getErrorInfoの結果をセット。
13. statusが0ならresultHashに結果を格納してreturn、0以外ならreturn status。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                         |
| --- | ------------ | -------------------------- | ------------------------------------------------ |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ                  |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                           |
| 3   | inHash       | HashMap<String, Object>    | SC呼出入力パラメータ（住所変更番号等を含む）     |
| 4   | resultHash   | HashMap<String, Object>    | 照会結果（呼出先からの結果格納用）              |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK2091A010SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getAdChgInfo` | private | 住所変更情報を取得する |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK2091A010SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(returnCode != 0)` (L38224)

> 📌 リターンコード取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 9000;` |

##### Block 2 — 🔀 IF `(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)` [JCMAPLC="JCMAPLC", RETURN_MESSAGE_="return_message_"] (L38228)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 0;` |

##### Block 3 — 🔀 IF `(obj == null)` (L38235)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = -1;` |

##### Block 4 — ↪️ ELSE `(else)` (L38240)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));` [➔ RETURN_CODE="returnCode" (リターンコード)] |

##### Block 5 — 🔀 IF `(templateStatus > bpStatus)` (L38244)

> 📌 BPにサービスコンポーネントのステータスを設定する。

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `String formatStatus = String.format("%1$04d", templateStatus);` |
| 2 | 📦 VAR | `String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);` [➔ RETURN_MESSAGE_="return_message_"] |
| 3 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);` [➔ RETURN_CODE="returnCode" (リターンコード)] |
| 4 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);` [➔ RETURN_MESSAGE="returnMessage" (リターンメッセージ)] |

##### Block 6 — 🔀 IF `(errList == null)` (L38255)

> 📌 エラー情報のマップを取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `errList = new ArrayList<Object>();` |

##### Block 7 — 🔀 IF `(status == 0)` (L38263)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `resultHash.put(` |
| 2 | ⚡ EXEC | `mappingCommonOutMsgFirst(EKK2091A010CBSMsg.EKK2091A010CBSMSG1LIST, resultMsgs));` |

> **合計**: 7 blocks (1 depth levels)

### callEKU0081B010SC()

---

#### 1. 役割

サービス契約_工事案件一覧照会。  
具体的には、入力パラメータからサービス契約番号（SVC_KEI_NO）をテンプレートにセットし、EKU0081B010CBSMsgでSCを呼び出す。呼出結果のエラー・ステータスを制御マップに反映し、結果をresultHashに格納する。  
サービス契約に紐づく工事案件の一覧情報を取得するための共通処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKU0081B010SC（param, handle, inHash, resultHash）"] --> S1["Step1: editInMsgCmn（param）で共通情報セット"]
  S1 --> S2["Step2: CAANMsg（EKU0081B010CBSMsg）テンプレート生成"]
  S2 --> S3["Step3: fillCAANMSGNullMapping、TEMPLATEID、FUNC_CODE、KEY_SVC_KEI_NOセット"]
  S3 --> S4["Step4: editBasicCmn（param, template）実行"]
  S4 --> S5["Step5: sIFRequest.put（TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S5 --> S6["Step6: ServiceComponentRequestInvokerでSC呼出"]
  S6 --> S7["Step7: 戻り値からresultMsgs、status、returnCode取得"]
  S7 --> IF1{"returnCode != 0"}
  IF1 -.-> NOTE1["returnCode: SIF呼出リターンコード"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF1 -->|"Yes"| S8["templateStatus=9000"]
  IF1 -->|"No"| S9["templateStatus取得"]
  S8 --> IF2{"JCMAPLConstMgr.getString（RETURN_MESSAGE_XXXX）==null"}
  S9 --> IF2
  IF2 -.-> NOTE2["RETURN_MESSAGE_XXXX: ステータスメッセージ"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF2 -->|"Yes"| S10["templateStatus=0"]
  IF2 -->|"No"| S11["templateStatusそのまま"]
  S10 --> S12["bpStatus取得"]
  S11 --> S12
  S12 --> IF3{"templateStatus > bpStatus"}
  IF3 -->|"Yes"| S13["paramにRETURN_CODE/RETURN_MESSAGEセット"]
  IF3 -->|"No"| S14["何もしない"]
  S13 --> S15["エラー情報errListセット"]
  S14 --> S15
  S15 --> IF4{"status == 0"}
  IF4 -->|"Yes"| S16["resultHashに結果格納"]
  IF4 -->|"No"| S17["何もしない"]
  S16 --> RET["return status"]
  S17 --> RET
```

**処理ステップ詳細:**

1. editInMsgCmn(param)でサービスIF共通の情報を設定。
2. CAANMsg(EKU0081B010CBSMsg)テンプレート生成。
3. fillCAANMSGNullMapping、TEMPLATEID（JKKHakkoSODConstCC.TEMPLATE_ID_EKU0081B010）、FUNC_CODE（JKKHakkoSODConstCC.FUNC_CODE_1）、KEY_SVC_KEI_NO（inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)）をセット。
4. editBasicCmn(param, template)で基本情報編集。
5. sIFRequestにテンプレートをput。
6. ServiceComponentRequestInvokerでSC呼び出し。
7. 戻り値からresultMsgs、status、returnCodeを取得。
8. returnCodeの判定やRETURN_MESSAGE_XXXXの有無によってtemplateStatusを決定。
9. param.getControlMapData(SCControlMapKeys.RETURN_CODE)からbpStatus取得。
10. templateStatus > bpStatusの場合はRETURN_CODE/RETURN_MESSAGEをparamにセット。
11. エラー情報のマップerrListをparamにセット。
12. status==0ならresultHashに結果を格納しreturn、0以外はそのままreturn。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                      |
| --- | ------------ | -------------------------- | --------------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ               |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                        |
| 3   | inHash       | HashMap<String, Object>    | SC呼出入力パラメータ（サービス契約番号等）    |
| 4   | resultHash   | HashMap<String, Object>    | 照会結果（呼出先からの結果格納用）           |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKU0081B010SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getKojiakState` | private | 住所変更の工事案件情報を取得する。 |

---

#### 📋 Per-Branch 詳細ブロック — `callEKU0081B010SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(returnCode != 0)` (L38541)

> 📌 リターンコード取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 9000;` |

##### Block 2 — 🔀 IF `(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)` [JCMAPLC="JCMAPLC", RETURN_MESSAGE_="return_message_"] (L38545)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 0;` |

##### Block 3 — 🔀 IF `(obj == null)` (L38552)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = -1;` |

##### Block 4 — ↪️ ELSE `(else)` (L38557)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));` [➔ RETURN_CODE="returnCode" (リターンコード)] |

##### Block 5 — 🔀 IF `(templateStatus > bpStatus)` (L38561)

> 📌 BPにサービスコンポーネントのステータスを設定する。

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `String formatStatus = String.format("%1$04d", templateStatus);` |
| 2 | 📦 VAR | `String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);` [➔ RETURN_MESSAGE_="return_message_"] |
| 3 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);` [➔ RETURN_CODE="returnCode" (リターンコード)] |
| 4 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);` [➔ RETURN_MESSAGE="returnMessage" (リターンメッセージ)] |

##### Block 6 — 🔀 IF `(errList == null)` (L38572)

> 📌 エラー情報のマップを取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `errList = new ArrayList<Object>();` |

##### Block 7 — 🔀 IF `(status == 0)` (L38580)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `resultHash.put(` |
| 2 | ⚡ EXEC | `mappingCommonOutMsgAll(EKU0081B010CBSMsg.EKU0081B010CBSMSG1LIST, resultMsgs));` |

> **合計**: 7 blocks (1 depth levels)

### callEKU0011A010SC()

---

#### 1. 役割

工事案件一意照会。  
具体的には、inHashから工事案件番号（KOJIAK_NO）をテンプレートにセットし、EKU0011A010CBSMsgでSCを呼び出す。呼出結果のエラーやステータスをparamに反映し、結果をresultHashに格納する。  
工事案件のユニークな情報を取得するための共通処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKU0011A010SC（param, handle, inHash, resultHash）"] --> S1["Step1: editInMsgCmn（param）で共通情報セット"]
  S1 --> S2["Step2: CAANMsg（EKU0011A010CBSMsg）テンプレート生成"]
  S2 --> S3["Step3: fillCAANMSGNullMapping、TEMPLATEID、FUNC_CODE、KEY_KOJIAK_NOセット"]
  S3 --> S4["Step4: editBasicCmn（param, template）実行"]
  S4 --> S5["Step5: sIFRequest.put（TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S5 --> S6["Step6: ServiceComponentRequestInvokerでSC呼出"]
  S6 --> S7["Step7: 戻り値からresultMsgs、status、returnCode取得"]
  S7 --> IF1{"returnCode != 0"}
  IF1 -.-> NOTE1["returnCode: SIF呼出リターンコード"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF1 -->|"Yes"| S8["templateStatus=9000"]
  IF1 -->|"No"| S9["templateStatus取得"]
  S8 --> IF2{"JCMAPLConstMgr.getString（RETURN_MESSAGE_XXXX）==null"}
  S9 --> IF2
  IF2 -.-> NOTE2["RETURN_MESSAGE_XXXX: ステータスメッセージ"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF2 -->|"Yes"| S10["templateStatus=0"]
  IF2 -->|"No"| S11["templateStatusそのまま"]
  S10 --> S12["bpStatus取得"]
  S11 --> S12
  S12 --> IF3{"templateStatus > bpStatus"}
  IF3 -->|"Yes"| S13["paramにRETURN_CODE/RETURN_MESSAGEセット"]
  IF3 -->|"No"| S14["何もしない"]
  S13 --> S15["エラー情報errListセット"]
  S14 --> S15
  S15 --> IF4{"status == 0"}
  IF4 -->|"Yes"| S16["resultHashに結果格納"]
  IF4 -->|"No"| S17["何もしない"]
  S16 --> RET["return status"]
  S17 --> RET
```

**処理ステップ詳細:**

1. editInMsgCmn(param)でサービスIF共通情報をセット。
2. CAANMsg(EKU0011A010CBSMsg)テンプレート生成。
3. fillCAANMSGNullMapping、TEMPLATEID（JKKHakkoSODConstCC.TEMPLATE_ID_EKU0011A010）、FUNC_CODE（JKKHakkoSODConstCC.FUNC_CODE_1）、KEY_KOJIAK_NO（inHash.get(JKKHakkoSODConstCC.KOJIAK_NO)）をセット。
4. editBasicCmn(param, template)で基本部編集。
5. sIFRequestにテンプレートをput。
6. ServiceComponentRequestInvokerでSC呼出。
7. 戻り値からresultMsgs、status、returnCode取得。
8. returnCodeの判定やRETURN_MESSAGE_XXXXの有無でtemplateStatusを決定。
9. paramのRETURN_CODEからbpStatus取得。
10. templateStatus > bpStatusの場合、paramにRETURN_CODE/RETURN_MESSAGEをセット。
11. エラー情報errListをparamにセット。
12. status==0ならresultHashに格納してreturn、0以外はそのままreturn。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                   |
| --- | ------------ | -------------------------- | ------------------------------------------ |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ            |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                     |
| 3   | inHash       | HashMap<String, Object>    | SC呼出入力パラメータ（工事案件番号等）     |
| 4   | resultHash   | HashMap<String, Object>    | 照会結果（呼出先からの結果格納用）        |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKU0011A010SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getKojiakState` | private | 住所変更の工事案件情報を取得する。 |

---

#### 📋 Per-Branch 詳細ブロック — `callEKU0011A010SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(returnCode != 0)` (L38436)

> 📌 リターンコード取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 9000;` |

##### Block 2 — 🔀 IF `(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)` [JCMAPLC="JCMAPLC", RETURN_MESSAGE_="return_message_"] (L38440)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 0;` |

##### Block 3 — 🔀 IF `(obj == null)` (L38447)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = -1;` |

##### Block 4 — ↪️ ELSE `(else)` (L38452)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));` [➔ RETURN_CODE="returnCode" (リターンコード)] |

##### Block 5 — 🔀 IF `(templateStatus > bpStatus)` (L38456)

> 📌 BPにサービスコンポーネントのステータスを設定する。

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `String formatStatus = String.format("%1$04d", templateStatus);` |
| 2 | 📦 VAR | `String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);` [➔ RETURN_MESSAGE_="return_message_"] |
| 3 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);` [➔ RETURN_CODE="returnCode" (リターンコード)] |
| 4 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);` [➔ RETURN_MESSAGE="returnMessage" (リターンメッセージ)] |

##### Block 6 — 🔀 IF `(errList == null)` (L38467)

> 📌 エラー情報のマップを取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `errList = new ArrayList<Object>();` |

##### Block 7 — 🔀 IF `(status == 0)` (L38475)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `resultHash.put(` |
| 2 | ⚡ EXEC | `mappingCommonOutMsgFirst(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST, resultMsgs));` |

> **合計**: 7 blocks (1 depth levels)

### callEKK2101B001SC()

---

#### 1. 役割

住所変更明細一覧照会。  
具体的には、入力パラメータから住所変更番号（ADCHG_NO）をテンプレートにセットし、EKK2101B001CBSMsgでSCを呼び出す。呼出結果のエラーやステータスをparamに反映し、結果をresultHashに格納する。  
住所変更に紐づく工事案件番号ごとの明細一覧を取得するための共通業務処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK2101B001SC（param, handle, inHash, resultHash）"] --> S1["Step1: editInMsgCmn（param）で共通情報セット"]
  S1 --> S2["Step2: CAANMsg（EKK2101B001CBSMsg）テンプレート生成"]
  S2 --> S3["Step3: fillCAANMSGNullMapping、TEMPLATEID、FUNC_CODE、KEY_ADCHG_DTL_SBT_CD（ADCHG_DTL_SBT_CD_06）、KEY_ADCHG_NOセット"]
  S3 --> S4["Step4: editBasicCmn（param, template）実行"]
  S4 --> S5["Step5: sIFRequest.put（TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S5 --> S6["Step6: ServiceComponentRequestInvokerでSC呼出"]
  S6 --> S7["Step7: 戻り値からresultMsgs、status、returnCode取得"]
  S7 --> IF1{"returnCode != 0"}
  IF1 -.-> NOTE1["returnCode: SIF呼出リターンコード"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF1 -->|"Yes"| S8["templateStatus=9000"]
  IF1 -->|"No"| S9["templateStatus取得"]
  S8 --> IF2{"JCMAPLConstMgr.getString（RETURN_MESSAGE_XXXX）==null"}
  S9 --> IF2
  IF2 -.-> NOTE2["RETURN_MESSAGE_XXXX: ステータスメッセージ"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF2 -->|"Yes"| S10["templateStatus=0"]
  IF2 -->|"No"| S11["templateStatusそのまま"]
  S10 --> S12["bpStatus取得"]
  S11 --> S12
  S12 --> IF3{"templateStatus > bpStatus"}
  IF3 -->|"Yes"| S13["paramにRETURN_CODE/RETURN_MESSAGEセット"]
  IF3 -->|"No"| S14["何もしない"]
  S13 --> S15["エラー情報errListセット"]
  S14 --> S15
  S15 --> IF4{"status == 0"}
  IF4 -->|"Yes"| S16["resultHashに結果格納"]
  IF4 -->|"No"| S17["何もしない"]
  S16 --> RET["return status"]
  S17 --> RET
```

**処理ステップ詳細:**

1. editInMsgCmn(param)でサービスIF共通情報を設定。
2. CAANMsg(EKK2101B001CBSMsg)テンプレートを生成。
3. fillCAANMSGNullMapping、TEMPLATEID（JKKHakkoSODConstCC.TEMPLATE_ID_EKK2101B001）、FUNC_CODE（JKKHakkoSODConstCC.FUNC_CODE_1）、KEY_ADCHG_DTL_SBT_CD（JKKHakkoSODConstCC.ADCHG_DTL_SBT_CD_06）、KEY_ADCHG_NO（inHash.get(JKKHakkoSODConstCC.ADCHG_NO)）をセット。
4. editBasicCmn(param, template)で基本部編集。
5. sIFRequestにテンプレートをput。
6. ServiceComponentRequestInvokerでSC呼出。
7. 戻り値からresultMsgs、status、returnCode取得。
8. returnCodeの判定やRETURN_MESSAGE_XXXXの有無でtemplateStatusを決定。
9. paramのRETURN_CODEからbpStatus取得。
10. templateStatus > bpStatusの場合はparamにRETURN_CODE/RETURN_MESSAGEをセット。
11. エラー情報errListをparamにセット。
12. status==0ならresultHashに格納しreturn、0以外はそのままreturn。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                 |
| --- | ------------ | -------------------------- | ---------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ          |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                   |
| 3   | inHash       | HashMap<String, Object>    | SC呼出入力パラメータ（住所変更番号等）   |
| 4   | resultHash   | HashMap<String, Object>    | 照会結果（呼出先からの結果格納用）      |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B001SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getKojiakState` | private | 住所変更の工事案件情報を取得する。 |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK2101B001SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(returnCode != 0)` (L38331)

> 📌 リターンコード取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 9000;` |

##### Block 2 — 🔀 IF `(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)` [JCMAPLC="JCMAPLC", RETURN_MESSAGE_="return_message_"] (L38335)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 0;` |

##### Block 3 — 🔀 IF `(obj == null)` (L38342)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = -1;` |

##### Block 4 — ↪️ ELSE `(else)` (L38347)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));` [➔ RETURN_CODE="returnCode" (リターンコード)] |

##### Block 5 — 🔀 IF `(templateStatus > bpStatus)` (L38351)

> 📌 BPにサービスコンポーネントのステータスを設定する。

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `String formatStatus = String.format("%1$04d", templateStatus);` |
| 2 | 📦 VAR | `String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);` [➔ RETURN_MESSAGE_="return_message_"] |
| 3 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);` [➔ RETURN_CODE="returnCode" (リターンコード)] |
| 4 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);` [➔ RETURN_MESSAGE="returnMessage" (リターンメッセージ)] |

##### Block 6 — 🔀 IF `(errList == null)` (L38362)

> 📌 エラー情報のマップを取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `errList = new ArrayList<Object>();` |

##### Block 7 — 🔀 IF `(status == 0)` (L38370)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `resultHash.put(` |
| 2 | ⚡ EXEC | `mappingCommonOutMsgAll(EKK2101B001CBSMsg.EKK2101B001CBSMSG1LIST, resultMsgs));` |

> **合計**: 7 blocks (1 depth levels)

### callEKK2101B002SC()

---

#### 1. 役割

住所変更明細一覧照会（変更前識別番号）の取得。  
具体的には、inHashからサービス契約内訳番号（SVC_KEI_UCWK_NO）をテンプレートにセットし、EKK2101B002CBSMsgでSCを呼び出す。呼出結果のエラーやステータスをparamに反映し、結果をresultHashに格納する。  
変更前のサービス契約内訳番号に紐づく住所変更明細一覧を取得する業務処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK2101B002SC（param, handle, inHash, resultHash）"] --> S1["Step1: editInMsgCmn（param）で共通情報セット"]
  S1 --> S2["Step2: CAANMsg（EKK2101B002CBSMsg）テンプレート生成"]
  S2 --> S3["Step3: fillCAANMSGNullMapping、TEMPLATEID、FUNC_CODE_2、KEY_ADCHG_DTL_SBT_CD（ADCHG_DTL_SBT_CD_02）、KEY_CHBF_SKBT_NOセット"]
  S3 --> S4["Step4: editBasicCmn（param, template）実行"]
  S4 --> S5["Step5: sIFRequest.put（TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S5 --> S6["Step6: ServiceComponentRequestInvokerでSC呼出"]
  S6 --> S7["Step7: 戻り値からresultMsgs、status、returnCode取得"]
  S7 --> IF1{"returnCode != 0"}
  IF1 -.-> NOTE1["returnCode: SIF呼出リターンコード"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF1 -->|"Yes"| S8["templateStatus=9000"]
  IF1 -->|"No"| S9["templateStatus取得"]
  S8 --> IF2{"JCMAPLConstMgr.getString（RETURN_MESSAGE_XXXX）==null"}
  S9 --> IF2
  IF2 -.-> NOTE2["RETURN_MESSAGE_XXXX: ステータスメッセージ"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF2 -->|"Yes"| S10["templateStatus=0"]
  IF2 -->|"No"| S11["templateStatusそのまま"]
  S10 --> S12["bpStatus取得"]
  S11 --> S12
  S12 --> IF3{"templateStatus > bpStatus"}
  IF3 -->|"Yes"| S13["paramにRETURN_CODE/RETURN_MESSAGEセット"]
  IF3 -->|"No"| S14["何もしない"]
  S13 --> S15["エラー情報errListセット"]
  S14 --> S15
  S15 --> IF4{"status == 0"}
  IF4 -->|"Yes"| S16["resultHashに結果格納"]
  IF4 -->|"No"| S17["何もしない"]
  S16 --> RET["return status"]
  S17 --> RET
```

**処理ステップ詳細:**

1. editInMsgCmn(param)でサービスIF共通情報を設定。
2. CAANMsg(EKK2101B002CBSMsg)テンプレート生成。
3. fillCAANMSGNullMapping、TEMPLATEID（JKKHakkoSODConstCC.TEMPLATE_ID_EKK2101B002）、FUNC_CODE_2（JKKHakkoSODConstCC.FUNC_CODE_2）、KEY_ADCHG_DTL_SBT_CD（JKKHakkoSODConstCC.ADCHG_DTL_SBT_CD_02）、KEY_CHBF_SKBT_NO（inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO)）をセット。
4. editBasicCmn(param, template)で基本部編集。
5. sIFRequestにテンプレートをput。
6. ServiceComponentRequestInvokerでSC呼出。
7. 戻り値からresultMsgs、status、returnCode取得。
8. returnCodeの判定やRETURN_MESSAGE_XXXXの有無でtemplateStatusを決定。
9. paramのRETURN_CODEからbpStatus取得。
10. templateStatus > bpStatusの場合はparamにRETURN_CODE/RETURN_MESSAGEをセット。
11. エラー情報errListをparamにセット。
12. status==0ならresultHashに格納しreturn、0以外はそのままreturn。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                         |
| --- | ------------ | -------------------------- | ------------------------------------------------ |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ                  |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                           |
| 3   | inHash       | HashMap<String, Object>    | SC呼出入力パラメータ（サービス契約内訳番号等）   |
| 4   | resultHash   | HashMap<String, Object>    | 照会結果（呼出先からの結果格納用）              |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK2101B002SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getAdChgInfo` | private | 住所変更情報を取得する |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK2101B002SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(returnCode != 0)` (L38119)

> 📌 リターンコード取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 9000;` |

##### Block 2 — 🔀 IF `(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)` [JCMAPLC="JCMAPLC", RETURN_MESSAGE_="return_message_"] (L38123)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 0;` |

##### Block 3 — 🔀 IF `(obj == null)` (L38130)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = -1;` |

##### Block 4 — ↪️ ELSE `(else)` (L38135)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));` [➔ RETURN_CODE="returnCode" (リターンコード)] |

##### Block 5 — 🔀 IF `(templateStatus > bpStatus)` (L38139)

> 📌 BPにサービスコンポーネントのステータスを設定する。

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `String formatStatus = String.format("%1$04d", templateStatus);` |
| 2 | 📦 VAR | `String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);` [➔ RETURN_MESSAGE_="return_message_"] |
| 3 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);` [➔ RETURN_CODE="returnCode" (リターンコード)] |
| 4 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);` [➔ RETURN_MESSAGE="returnMessage" (リターンメッセージ)] |

##### Block 6 — 🔀 IF `(errList == null)` (L38150)

> 📌 エラー情報のマップを取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `errList = new ArrayList<Object>();` |

##### Block 7 — 🔀 IF `(status == 0)` (L38158)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `resultHash.put(` |
| 2 | ⚡ EXEC | `mappingCommonOutMsgFirst(EKK2101B002CBSMsg.EKK2101B002CBSMSG1LIST, resultMsgs));` |

> **合計**: 7 blocks (1 depth levels)

### callEKK1081E010SC()

---

#### 1. 役割

EKK1081E010 オーダ発行条件論理削除S-IFを実行します。  
具体的には、指定された機能コード（funcCode）、オーダ発行条件番号（odrHakkoJokenNo）、更新前年月日時分秒（updDtmBf）をもとに入力テンプレートを生成し、サービスIF呼出し共通情報を付与したうえでSCを呼び出し、結果をeditResultRP_EKK1081E010SCで編集して返却する業務処理です。  
オーダ発行条件の論理削除（物理削除ではなく有効フラグ等での論理的な無効化）を行うための共通処理です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK1081E010SC（param, handle, funcCode, odrHakkoJokenNo, updDtmBf）"] --> S1["Step1: mappingEKK1081E010SCInMsg（funcCode, odrHakkoJokenNo, updDtmBf）で入力テンプレート作成"]
  S1 --> S2["Step2: editBasicCmn（param, template）で共通項目をセット"]
  S2 --> S3["Step3: editInMsgCmn（param）でサービスIF共通情報をセット"]
  S3 --> S4["Step4: sIFRequest.put（TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S4 --> S5["Step5: ServiceComponentRequestInvokerでSC呼出"]
  S5 --> S6["Step6: editResultRP_EKK1081E010SC（sIFResult, param）で結果整形"]
  S6 --> RET["return result"]
```

**処理ステップ詳細:**

1. mappingEKK1081E010SCInMsgで機能コード・オーダ発行条件番号・更新前日時をもとに入力テンプレート（CAANMsg）を生成。
2. editBasicCmnでparamの基本情報をテンプレートに反映。
3. editInMsgCmn(param)でサービスIF共通情報（sIFRequest）を生成。
4. sIFRequestにテンプレートをput。
5. ServiceComponentRequestInvokerでSC呼び出し。
6. 戻り値をeditResultRP_EKK1081E010SCで編集し、最終結果として返却。

---

#### 3. パラメータ分析

| No  | パラメータ名      | 型                         | 業務説明                                      |
| --- | ----------------- | -------------------------- | --------------------------------------------- |
| 1   | param             | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ               |
| 2   | handle            | SessionHandle              | セッション管理ハンドル                        |
| 3   | funcCode          | String                     | 機能コード（操作種別指定）                    |
| 4   | odrHakkoJokenNo   | String                     | オーダ発行条件番号                            |
| 5   | updDtmBf          | String                     | 更新前年月日時分秒（論理削除の対象バージョン）|

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081E010SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `dslOdrCtrl` | private | 解約オーダ制御処理<br> |
### callEKK0251B003SC()

---

#### 1. 役割

サービス契約回線内訳一覧照会（現在利用中）SIFを呼び出し。  
具体的には、EKK0251B003CBSMsgの入力テンプレートにinHashの情報をマッピングし、editBasicCmnで基本情報を編集、SCを呼び出す。正常時はresultHashにCAANMsg[]を格納する。  
サービス契約回線内訳（現在有効なもの）の一覧データを取得するための共通業務処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0251B003SC（param, handle, inHash, resultHash, funcCode）"] --> S1["Step1: editInMsgCmn（param）で共通情報セット"]
  S1 --> S2["Step2: CAANMsg（EKK0251B003CBSMsg）テンプレート生成"]
  S2 --> S3["Step3: mappingEKK0251B003SCInMsg（template, inHash, funcCode）で項目マッピング"]
  S3 --> S4["Step4: editBasicCmn（param, template）実行"]
  S4 --> S5["Step5: sIFRequest.put（TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S5 --> S6["Step6: ServiceComponentRequestInvokerでSC呼出"]
  S6 --> S7["Step7: 戻り値からresultMsgsとstatus取得"]
  S7 --> IF1{"status == 0"}
  IF1 -->|"Yes"| S8["resultHashにCAANMsg[]を格納"]
  IF1 -->|"No"| S9["何もしない"]
  S8 --> RET["return status"]
  S9 --> RET
```

**処理ステップ詳細:**

1. editInMsgCmn(param)でサービスIF共通情報作成。
2. CAANMsg(EKK0251B003CBSMsg)のテンプレート生成。
3. mappingEKK0251B003SCInMsg(template, inHash, funcCode)でinHash（サービス契約回線内訳情報）をテンプレートにマッピング。
4. editBasicCmn(param, template)で共通部項目をセット。
5. sIFRequestにテンプレートをput。
6. ServiceComponentRequestInvokerでSC呼出し。
7. 戻り値resultMsgsとstatus取得、status==0ならresultHashにCAANMsg[]を格納しreturn。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                         |
| --- | ------------ | -------------------------- | ------------------------------------------------ |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ                  |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                           |
| 3   | inHash       | HashMap<String, Object>    | SC呼出入力パラメータ（サービス契約内訳情報等）   |
| 4   | resultHash   | HashMap<String, Object>    | 照会結果（呼出先からの結果格納用）              |
| 5   | funcCode     | String                     | 機能コード                                       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0251B003SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getEKK0251B003SC` | private | サービス契約回線内訳一覧照会（サービス契約番号）取得処理<br> |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK0251B003SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(status == 0)` (L37122)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `resultHash.put(` |
| 2 | ⚡ EXEC | `mappingEKK0251B003SCOutMsg(resultMsgs));` |

> **合計**: 1 blocks (1 depth levels)

### callEKK0081B004SC()

---

#### 1. 役割

EKK0081B004 サービス契約一覧照会（SYSID）S-IFを実行します。  
具体的には、sysid（システムID）をもとにテンプレートを作成し、editBasicCmnで共通項目を反映したうえでサービスIF共通情報を作成し、SCを呼び出す。呼出結果はeditResultRP_EKK0081B004SCで編集して返却される。  
システムID単位でサービス契約の一覧を取得する業務処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0081B004SC（param, handle, sysid）"] --> S1["Step1: mappingEKK0081B004SCInMsg（sysid）で入力テンプレート作成"]
  S1 --> S2["Step2: editBasicCmn（param, template）で共通項目をセット"]
  S2 --> S3["Step3: editInMsgCmn（param）でサービスIF共通情報をセット"]
  S3 --> S4["Step4: sIFRequest.put（TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S4 --> S5["Step5: ServiceComponentRequestInvokerでSC呼出"]
  S5 --> S6["Step6: editResultRP_EKK0081B004SC（sIFResult, param）で結果整形"]
  S6 --> RET["return result"]
```

**処理ステップ詳細:**

1. mappingEKK0081B004SCInMsg(sysid)でsysidをもとに入力テンプレート（CAANMsg）を生成。
2. editBasicCmn(param, template)で共通項目をテンプレートに反映。
3. editInMsgCmn(param)でサービスIF共通情報（sIFRequest）を作成。
4. sIFRequestにテンプレートをput。
5. ServiceComponentRequestInvokerでSC呼出し。
6. 戻り値をeditResultRP_EKK0081B004SCで編集し、最終結果として返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                      |
| --- | ------------ | -------------------------- | --------------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ               |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                        |
| 3   | sysid        | String                     | システムID                                    |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0081B004SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `judgeOdrHakkoJoken4WiFiSpot` | private | Wi-FiスポットSODのオーダ発行条件コードを決定します |
### callEKK1081B001SC()

---

#### 1. 役割

EKK1081B001 オーダ発行条件一覧照会を実行します。  
具体的には、指定されたパラメータ（orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo）で入力テンプレートを作成し、editBasicCmnで共通項目を反映したうえで、サービスIF共通情報を作成し、SCを呼び出す。戻り値はeditResultRP_EKK1081B001SCで編集され返却される。  
オーダ発行条件の一覧（複数条件）を照会するための共通処理です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK1081B001SC（param, handle, orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo）"] --> S1["Step1: mappingEKK1081B001SCInMsg（orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo）で入力テンプレート作成"]
  S1 --> S2["Step2: editBasicCmn（param, template）で共通項目をセット"]
  S2 --> S3["Step3: editInMsgCmn（param）でサービスIF共通情報をセット"]
  S3 --> S4["Step4: sIFRequest.put（TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S4 --> S5["Step5: ServiceComponentRequestInvokerでSC呼出"]
  S5 --> S6["Step6: editResultRP_EKK1081B001SC（sIFResult, param）で結果整形"]
  S6 --> RET["return result"]
```

**処理ステップ詳細:**

1. mappingEKK1081B001SCInMsg(orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo)で入力テンプレート（CAANMsg）を生成。
2. editBasicCmn(param, template)で共通項目をテンプレートに反映。
3. editInMsgCmn(param)でサービスIF共通情報（sIFRequest）を作成。
4. sIFRequestにテンプレートをput。
5. ServiceComponentRequestInvokerでSC呼出し。
6. 戻り値をeditResultRP_EKK1081B001SCで編集し、最終結果として返却。

---

#### 3. パラメータ分析

| No  | パラメータ名      | 型                         | 業務説明                                      |
| --- | ----------------- | -------------------------- | --------------------------------------------- |
| 1   | param             | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ               |
| 2   | handle            | SessionHandle              | セッション管理ハンドル                        |
| 3   | orderSbtCd        | String                     | オーダ種別コード                              |
| 4   | svcOrderCd        | String                     | サービスオーダコード                          |
| 5   | odrHakkoJokenCd   | String                     | オーダ発行条件コード                          |
| 6   | svcKeiNo          | String                     | サービス契約番号                              |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK1081B001SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `dslOdrCtrl` | private | 解約オーダ制御処理<br> |
| 2 | `judgeOdrHakkoJoken4WiFiSpot` | private | Wi-FiスポットSODのオーダ発行条件コードを決定します |
| 3 | `kaihkOdrCtrl` | private | 回復オーダ制御処理<br> |
| 4 | `newEoMobile` | private | モバイルサービス新規契約処理<br> <br> (1)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(2)(3)、それ以外の場合は(3)の処理を行う。<br> (2)料金グループが「ｅｏモバイル（ＥＭ… |
| 5 | `newKeiOdrCtrl` | private | 新規契約オーダ制御処理<br> |
---

---

## 📋 全分岐詳細 (deterministic per-branch table)

> 以下のテーブルはソースコードから deterministic に生成されたものです。全条件分岐を網羅します。

### 📞 Screen/Batch 呼び出し元 (External Entry Points)

> このクラスを呼び出すScreen/Batchの一覧です（クラスレベルの呼び出し元）。
> **「呼出チェーン」列**: CC直接エントリメソッド → IntraClass経由 → 本チャンクの対象メソッド（**太字**）の実際の呼出パス。
> ※ 例: `CCエントリメソッド → 中間メソッド → **対象メソッド**` — 左端がCC入口、太字が本チャンクの対象メソッド。
> **「種別」列**: BPCheck＝業務確認チェック, Batch＝バッチ処理, Operation＝オペレーション, CC＝制御クラス。

| # | Screen/Batch | 種別 | 呼び出しクラス | 呼び出しメソッド | 呼出チェーン（CC入口 → IntraClass → 対象） |
|---|---|---|---|---|---|
| 1 | `KKSV0004` | BPCheck | `KKSV0004OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 2 | `KKSV0008` | BPCheck | `KKSV0008OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 3 | `KKSV0009` | BPCheck | `KKSV0009OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 4 | `KKSV0031` | BPCheck | `KKSV0031OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 5 | `KKSV0073` | BPCheck | `KKSV0073OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 6 | `KKSV0136` | BPCheck | `KKSV0136OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 7 | `KKSV0162` | BPCheck | `KKSV0162OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 8 | `KKSV0428` | BPCheck | `KKSV0428OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 9 | `KKSV0429` | BPCheck | `KKSV0429OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 10 | `KKSV0430` | BPCheck | `KKSV0430OPBPCheck` | `invokeCheck` | `getInvokeCBS` |

## ③.6 制御フロー分岐 (Control Flow Branching)

### `callEKK2091A010SC()` (L38178) — 8 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (returnCode != 0) | - | - | - | L38224 |
| 2 | 🔀 IF | D0 | (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) | - | - | - | L38228 |
| 3 | 🔀 IF | D0 | (obj == null) | - | - | - | L38235 |
| 4 | 🔀 ELSE | D0 | (else) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38240 |
| 5 | 🔀 IF | D0 | (templateStatus > bpStatus) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38244 |
| 6 | 🔀 IF | D0 | (errList == null) | エラー情報のマップを取得 | - | - | L38255 |
| 7 | 🔀 IF | D0 | (status == 0) | ステータスが0以外はエラーとなっている | - | `mappingCommonOutMsgFirst()` | L38263 |
| 8 | ↩️ RETURN | D0 | status | - | - | - | L38269 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["callEKK2091A010SC()"] --> CF0{"制御フロー分岐"}
  B0["IF: （returnCode != 0）"]
  CF0 -->|"L38224"| B0
  B1["IF: （JCMAPLConstMgr.getString（'RETURN_MESSAG…"]
  CF0 -->|"L38228"| B1
  B2["IF: （obj == null）"]
  CF0 -->|"L38235"| B2
  B3["ELSE"]
  CF0 -->|"L38240"| B3
  B4["IF: （templateStatus > bpStatus）"]
  CF0 -->|"L38244"| B4
  B5["IF: （errList == null）"]
  CF0 -->|"L38255"| B5
  B6["IF: （status == 0）"]
  CF0 -->|"L38263"| B6
  B7["RETURN: status"]
  CF0 -->|"L38269"| B7
```

### `callEKK2101B001SC()` (L38283) — 8 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (returnCode != 0) | - | - | - | L38331 |
| 2 | 🔀 IF | D0 | (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) | - | - | - | L38335 |
| 3 | 🔀 IF | D0 | (obj == null) | - | - | - | L38342 |
| 4 | 🔀 ELSE | D0 | (else) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38347 |
| 5 | 🔀 IF | D0 | (templateStatus > bpStatus) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38351 |
| 6 | 🔀 IF | D0 | (errList == null) | エラー情報のマップを取得 | - | - | L38362 |
| 7 | 🔀 IF | D0 | (status == 0) | ステータスが0以外はエラーとなっている | - | `mappingCommonOutMsgAll()` | L38370 |
| 8 | ↩️ RETURN | D0 | status | - | - | - | L38376 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["callEKK2101B001SC()"] --> CF0{"制御フロー分岐"}
  B0["IF: （returnCode != 0）"]
  CF0 -->|"L38331"| B0
  B1["IF: （JCMAPLConstMgr.getString（'RETURN_MESSAG…"]
  CF0 -->|"L38335"| B1
  B2["IF: （obj == null）"]
  CF0 -->|"L38342"| B2
  B3["ELSE"]
  CF0 -->|"L38347"| B3
  B4["IF: （templateStatus > bpStatus）"]
  CF0 -->|"L38351"| B4
  B5["IF: （errList == null）"]
  CF0 -->|"L38362"| B5
  B6["IF: （status == 0）"]
  CF0 -->|"L38370"| B6
  B7["RETURN: status"]
  CF0 -->|"L38376"| B7
```

### `callEKK2101B002SC()` (L38070) — 8 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (returnCode != 0) | - | - | - | L38119 |
| 2 | 🔀 IF | D0 | (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) | - | - | - | L38123 |
| 3 | 🔀 IF | D0 | (obj == null) | - | - | - | L38130 |
| 4 | 🔀 ELSE | D0 | (else) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38135 |
| 5 | 🔀 IF | D0 | (templateStatus > bpStatus) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38139 |
| 6 | 🔀 IF | D0 | (errList == null) | エラー情報のマップを取得 | - | - | L38150 |
| 7 | 🔀 IF | D0 | (status == 0) | ステータスが0以外はエラーとなっている | - | `mappingCommonOutMsgFirst()` | L38158 |
| 8 | ↩️ RETURN | D0 | status | - | - | - | L38164 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["callEKK2101B002SC()"] --> CF0{"制御フロー分岐"}
  B0["IF: （returnCode != 0）"]
  CF0 -->|"L38119"| B0
  B1["IF: （JCMAPLConstMgr.getString（'RETURN_MESSAG…"]
  CF0 -->|"L38123"| B1
  B2["IF: （obj == null）"]
  CF0 -->|"L38130"| B2
  B3["ELSE"]
  CF0 -->|"L38135"| B3
  B4["IF: （templateStatus > bpStatus）"]
  CF0 -->|"L38139"| B4
  B5["IF: （errList == null）"]
  CF0 -->|"L38150"| B5
  B6["IF: （status == 0）"]
  CF0 -->|"L38158"| B6
  B7["RETURN: status"]
  CF0 -->|"L38164"| B7
```

### `callEKU0011A010SC()` (L38390) — 8 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (returnCode != 0) | - | - | - | L38436 |
| 2 | 🔀 IF | D0 | (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) | - | - | - | L38440 |
| 3 | 🔀 IF | D0 | (obj == null) | - | - | - | L38447 |
| 4 | 🔀 ELSE | D0 | (else) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38452 |
| 5 | 🔀 IF | D0 | (templateStatus > bpStatus) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38456 |
| 6 | 🔀 IF | D0 | (errList == null) | エラー情報のマップを取得 | - | - | L38467 |
| 7 | 🔀 IF | D0 | (status == 0) | ステータスが0以外はエラーとなっている | - | `mappingCommonOutMsgFirst()` | L38475 |
| 8 | ↩️ RETURN | D0 | status | - | - | - | L38481 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["callEKU0011A010SC()"] --> CF0{"制御フロー分岐"}
  B0["IF: （returnCode != 0）"]
  CF0 -->|"L38436"| B0
  B1["IF: （JCMAPLConstMgr.getString（'RETURN_MESSAG…"]
  CF0 -->|"L38440"| B1
  B2["IF: （obj == null）"]
  CF0 -->|"L38447"| B2
  B3["ELSE"]
  CF0 -->|"L38452"| B3
  B4["IF: （templateStatus > bpStatus）"]
  CF0 -->|"L38456"| B4
  B5["IF: （errList == null）"]
  CF0 -->|"L38467"| B5
  B6["IF: （status == 0）"]
  CF0 -->|"L38475"| B6
  B7["RETURN: status"]
  CF0 -->|"L38481"| B7
```

### `callEKU0081B010SC()` (L38495) — 8 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (returnCode != 0) | - | - | - | L38541 |
| 2 | 🔀 IF | D0 | (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) | - | - | - | L38545 |
| 3 | 🔀 IF | D0 | (obj == null) | - | - | - | L38552 |
| 4 | 🔀 ELSE | D0 | (else) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38557 |
| 5 | 🔀 IF | D0 | (templateStatus > bpStatus) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L38561 |
| 6 | 🔀 IF | D0 | (errList == null) | エラー情報のマップを取得 | - | - | L38572 |
| 7 | 🔀 IF | D0 | (status == 0) | ステータスが0以外はエラーとなっている | - | `mappingCommonOutMsgAll()` | L38580 |
| 8 | ↩️ RETURN | D0 | status | - | - | - | L38586 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["callEKU0081B010SC()"] --> CF0{"制御フロー分岐"}
  B0["IF: （returnCode != 0）"]
  CF0 -->|"L38541"| B0
  B1["IF: （JCMAPLConstMgr.getString（'RETURN_MESSAG…"]
  CF0 -->|"L38545"| B1
  B2["IF: （obj == null）"]
  CF0 -->|"L38552"| B2
  B3["ELSE"]
  CF0 -->|"L38557"| B3
  B4["IF: （templateStatus > bpStatus）"]
  CF0 -->|"L38561"| B4
  B5["IF: （errList == null）"]
  CF0 -->|"L38572"| B5
  B6["IF: （status == 0）"]
  CF0 -->|"L38580"| B6
  B7["RETURN: status"]
  CF0 -->|"L38586"| B7
```

> **制御フロー合計**: 5 methods, 40 branches
