# ⑥ 業務ロジック — Mapping (InMsg/OutMsg): 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-mappingEKK0251B001SCInMsg"></a>
### mappingEKK0251B001SCInMsg()

---

#### 1. 役割

サービス契約回線内訳一覧照会（サービス契約番号）SIFに渡すための入力メッセージ（CAANMsgオブジェクト）を生成するマッピングメソッドである。  
具体的には、テンプレートメッセージの全フィールドをNullで初期化したうえで、テンプレートID（EKK0251B001）、機能コード、サービス契約番号（SVC_KEI_NO）をinHashから取得してセットする。  
本メソッドはCAANMsgテンプレートの該当項目に正しく値を投入する共通部品であり、SC呼出前のリクエスト生成を担う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0251B001SCInMsg（template, inHash, funcCode）"] --> S1["Step1: fillCAANMSGNullMapping（template, new EKK0251B001CBSMsg（）.getContents（））\n（全条件Nullマッピング）"]
  S1 --> S2["Step2: テンプレートIDをセット\nEKK0251B001CBSMsg.TEMPLATEID = JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001"]
  S2 --> S3["Step3: 機能コードをセット\nEKK0251B001CBSMsg.FUNC_CODE = funcCode"]
  S3 --> S4["Step4: サービス契約番号をセット\nEKK0251B001CBSMsg.KEY_SVC_KEI_NO = inHash.get（JKKHakkoSODConstCC.SVC_KEI_NO）"]
  S4 --> END["完了"]

  S2 -.- NOTE1["TEMPLATE_ID_EKK0251B001 = 'EKK0251B001' （サービス契約回線内訳一覧照会）"]
  S3 -.- NOTE2["FUNC_CODE = 機能コード（値は呼出元より）"]
  S4 -.- NOTE3["SVC_KEI_NO = 'svc_kei_no' （サービス契約番号）"]

  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0251B001CBSMsg().getContents())` を呼び出し、全項目をNull初期化する（全条件Nullマッピング）。
2. テンプレートID（EKK0251B001CBSMsg.TEMPLATEID）に定数 `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001 = "EKK0251B001"` をセットする。
3. 機能コード（EKK0251B001CBSMsg.FUNC_CODE）に引数 `funcCode` をセットする（どのSC機能かを指定）。
4. サービス契約番号（EKK0251B001CBSMsg.KEY_SVC_KEI_NO）に、inHashから `JKKHakkoSODConstCC.SVC_KEI_NO = "svc_kei_no"` キーで値を取得しセットする。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型              | 業務説明                              |
| --- | ------------ | --------------- | ------------------------------------- |
| 1   | template     | CAANMsg         | SCへの入力テンプレートメッセージ      |
| 2   | inHash       | HashMap<String, Object> | 入力パラメータマップ（呼出元から渡される）|
| 3   | funcCode     | String          | SCの機能コード                        |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0251B001SC` | private | サービス契約回線内訳一覧照会（サービス契約番号）SIFを呼び出し |
### mappingEZM0411A010SCOutMsg()

---

#### 1. 役割

EZM0411A010（宅内機器型式一意照会）サービスインターフェース呼出結果（CAANMsg配列）から、1件目のデータオブジェクトから宅内機器型式情報リスト（EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST）を取得し、最初の要素の情報（HashMap）を返すマッピング処理。  
具体的には、SCから返却された複数の宅内機器型式情報のうち、1件目を業務処理用のHashMapとして返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEZM0411A010SCOutMsg（resultMsgs）"] --> S1["Step1: 1件目のCAANMsg（msg）を抽出"]
  S1 --> S2["Step2: msg.getMsgData（）.get（EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST）でmsgList取得"]
  S2 --> IF1{"msgListがnullまたは要素数0か？"}
  IF1 -.- NOTE1["EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST = 宅内機器型式情報リスト"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF1 -->|"Yes"| S3["Step3: retHash = 新規HashMap（空）を作成"]
  IF1 -->|"No"| S4["Step4: retHash = msgList[0].getMsgData（）"]
  S3 --> END["return retHash"]
  S4 --> END

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultMsgs[0]` で1件目のCAANMsgインスタンス `msg` を抽出。
2. `msg.getMsgData().get(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST)` から宅内機器型式リスト（CAANMsg[]）を取得。
3. 取得したリストがnull、または要素数0の場合は、空のHashMapを返却する。
4. それ以外の場合、リストの最初の要素（msgList[0]）の `getMsgData()` で宅内機器型式情報（HashMap）を返却する。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型         | 業務説明                                        |
| --- | ------------ | ---------- | ----------------------------------------------- |
| 1   | resultMsgs   | CAANMsg[]  | 宅内機器型式一意照会のSC結果（CAANMsg配列）     |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEZM0411A010SC` | private | 宅内機器型式一意照会SIFを呼び出し |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEZM0411A010SCOutMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(null == msgList || 0 == msgList.length)` (L30615)

> 📌 結果の取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = new HashMap<String, Object>();` |

##### Block 2 — ↪️ ELSE `(else)` (L30620)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = msgList[0].getMsgData();` |

> **合計**: 2 blocks (1 depth levels)

### mappingETU0011B010SCOutMsg()

---

#### 1. 役割

ETU0011B010（番ポ工事一覧照会）サービスインターフェース呼出結果（CAANMsg配列）から、1件目のデータオブジェクトから番ポ工事一覧照会リスト（ETU0011B010CBSMsg.ETU0011B010CBSMSG1LIST）を取得し、その配列（CAANMsg[]）を返すマッピング処理。  
具体的には、SCから返却された複数の番ポ工事データのうち、全件のリスト（CAANMsg[]）をそのまま返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingETU0011B010SCOutMsg（resultMsgs）"] --> S1["Step1: 1件目のCAANMsg（msg）を抽出"]
  S1 --> S2["Step2: msg.getMsgData（）.get（ETU0011B010CBSMsg.ETU0011B010CBSMSG1LIST）でmsgList取得"]
  S2 --> END["return msgList"]

  S2 -.- NOTE1["ETU0011B010CBSMsg.ETU0011B010CBSMSG1LIST = 番ポ工事一覧照会明細リスト"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. `resultMsgs[0]` で1件目のCAANMsgインスタンス `msg` を抽出。
2. `msg.getMsgData().get(ETU0011B010CBSMsg.ETU0011B010CBSMSG1LIST)` から番ポ工事一覧照会リスト（CAANMsg[]）を取得。
3. 取得したCAANMsg[]を返却する。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型         | 業務説明                                     |
| --- | ------------ | ---------- | -------------------------------------------- |
| 1   | resultMsgs   | CAANMsg[]  | 番ポ工事一覧照会のSC結果（CAANMsg配列）      |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callETU0011B010SC` | private | 番ポ工事一覧照会SIFを呼び出し |
### mappingEKK1041B001SCInMsg()

---

#### 1. 役割

EKK1041B001（オーダ設定一覧照会）サービスインターフェース呼出用の入力メッセージ（CAANMsgオブジェクト）を生成するマッピングメソッドである。  
具体的には、テンプレートメッセージの全フィールドをNullで初期化し、テンプレートID、機能コード、オーダ種別コード・サービスオーダコード・最新要求種別コード・サービス契約番号・宅内機器型式コード・機器製造番号等を引数の値からセットする。  
IT2-2013-0000592対応で未出荷VAのOLS設定・VA変更オーダ発行時の宅内機器型式コード・機器製造番号のNull制御や、未指定項目のNullセット処理が含まれる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK1041B001SCInMsg（orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo）"] 
    --> S1["Step1: CAANMsg（EKK1041B001CBSMsg）インスタンス生成"]
    --> S2["Step2: テンプレートIDをセット\nEKK1041B001CBSMsg.TEMPLATEID = 'EKK1041B001'"]
    --> S3["Step3: 機能コードをセット\nEKK1041B001CBSMsg.FUNC_CODE = JPCModelConstant.FUNC_CD_1"]
    --> S4["Step4: オーダ種別コードセット\nEKK1041B001CBSMsg.KEY_ORDER_SBT_CD = orderSbtCd or Null"]
    --> S5["Step5: サービスオーダコードセット\nEKK1041B001CBSMsg.KEY_SVC_ORDER_CD = svcOrderCd or Null"]
    --> S6["Step6: 最新要求種別コードセット\nEKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD = yokyuSbtCd or Null"]
    --> S7["Step7: サービス契約番号セット\nEKK1041B001CBSMsg.KEY_SVC_KEI_NO = svc_kei_no or Null"]
    --> S8["Step8: 宅内機器型式コードセット\nEKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD = taknkikiModelCd or Null"]
    --> S9["Step9: 機器製造番号セット\nEKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO = kikiSeizoNo or Null"]
    --> S10["Step10: その他未使用項目Nullセット（サービス契約内訳番号、オプションサービス契約番号、メールアドレス等）"]
    --> END["return template"]

  S2 -.- NOTE1["TEMPLATEID = 'EKK1041B001' （オーダ設定一覧照会）"]
  S3 -.- NOTE2["FUNC_CODE = JPCModelConstant.FUNC_CD_1"]
  S4 -.- NOTE3["KEY_ORDER_SBT_CD = orderSbtCd"]
  S5 -.- NOTE4["KEY_SVC_ORDER_CD = svcOrderCd"]
  S6 -.- NOTE5["KEY_RCNT_YOKYU_SBT_CD = yokyuSbtCd"]
  S7 -.- NOTE6["KEY_SVC_KEI_NO = svc_kei_no"]
  S8 -.- NOTE7["KEY_TAKNKIKI_MODEL_CD = taknkikiModelCd"]
  S9 -.- NOTE8["KEY_KIKI_SEIZO_NO = kikiSeizoNo"]

  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE4 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE5 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE6 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE7 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE8 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. `CAANMsg(EKK1041B001CBSMsg)` インスタンス `template` を生成。
2. テンプレートID（EKK1041B001CBSMsg.TEMPLATEID）に `"EKK1041B001"` をセット。
3. 機能コード（EKK1041B001CBSMsg.FUNC_CODE）に `JPCModelConstant.FUNC_CD_1` をセット。
4. オーダ種別コード（EKK1041B001CBSMsg.KEY_ORDER_SBT_CD）に `orderSbtCd` をセット。なければNull。
5. サービスオーダコード（EKK1041B001CBSMsg.KEY_SVC_ORDER_CD）に `svcOrderCd` をセット。なければNull。
6. 最新要求種別コード（EKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD）に `yokyuSbtCd` をセット。なければNull。
7. サービス契約番号（EKK1041B001CBSMsg.KEY_SVC_KEI_NO）に `svc_kei_no` をセット。なければNull。
8. 宅内機器型式コード（EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD）に `taknkikiModelCd` をセット。なければNull。
9. 機器製造番号（EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO）に `kikiSeizoNo` をセット。なければNull。
10. 残る未使用項目（サービス契約内訳番号、オプションサービス契約番号、メールアドレス、機器提供サービス契約番号、スポットログインSYSID）を全てNullでセット。
11. 生成したテンプレートを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名        | 型       | 業務説明                                           |
| --- | ------------------- | -------- | -------------------------------------------------- |
| 1   | orderSbtCd          | String   | オーダ種別コード                                   |
| 2   | svcOrderCd          | String   | サービスオーダコード                               |
| 3   | yokyuSbtCd          | String   | 最新要求種別コード                                 |
| 4   | svc_kei_no          | String   | サービス契約番号                                   |
| 5   | taknkikiModelCd     | String   | 宅内機器型式コード                                 |
| 6   | kikiSeizoNo         | 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 → mappingEKK1041B001SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041B001SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041B001SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041B001SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041B001SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041B001SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041B001SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041B001SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041B001SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041B001SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK1041B001SC` | private | EKK1041B001 オーダ設定一覧照会を実行します |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK1041B001SCInMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(null != orderSbtCd)` (L30944)

> 📌 ＫＥＹ＿オーダ種別コード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1041B001CBSMsg.KEY_ORDER_SBT_CD, orderSbtCd);` [➔ KEY_ORDER_SBT_CD="key_order_sbt_cd"] \| |

##### Block 2 — ↪️ ELSE `(else)` (L30949)

> 📌 ＫＥＹ＿サービスオーダコード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1041B001CBSMsg.KEY_ORDER_SBT_CD);` [➔ KEY_ORDER_SBT_CD="key_order_sbt_cd"] \| |

##### Block 3 — 🔀 IF `(null != svcOrderCd)` (L30954)

> 📌 ＫＥＹ＿サービスオーダコード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD, svcOrderCd);` [➔ KEY_SVC_ORDER_CD="key_svc_order_cd"] \| |

##### Block 4 — ↪️ ELSE `(else)` (L30959)

> 📌 ＫＥＹ＿最新要求種別コード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD);` [➔ KEY_SVC_ORDER_CD="key_svc_order_cd"] \| |

##### Block 5 — 🔀 IF `(null != yokyuSbtCd)` (L30964)

> 📌 ＫＥＹ＿最新要求種別コード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD, yokyuSbtCd);` [➔ KEY_RCNT_YOKYU_SBT_CD="key_rcnt_yokyu_sbt_cd"] \| |

##### Block 6 — ↪️ ELSE `(else)` (L30969)

> 📌 IT2-2013-0000592 ③未出荷のVAに対してOLS設定・VA変更オーダが発行される 2013/07/11 START

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD);` [➔ KEY_RCNT_YOKYU_SBT_CD="key_rcnt_yokyu_sbt_cd"] \| |

##### Block 7 — 🔀 IF `(null != svc_kei_no)` (L30975)

> 📌 ＫＥＹ＿サービス契約番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1041B001CBSMsg.KEY_SVC_KEI_NO, svc_kei_no);` [➔ KEY_SVC_KEI_NO="key_svc_kei_no"] \| |

##### Block 8 — ↪️ ELSE `(else)` (L30980)

> 📌 ＫＥＹ＿宅内機器型式コード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1041B001CBSMsg.KEY_SVC_KEI_NO);` [➔ KEY_SVC_KEI_NO="key_svc_kei_no"] \| |

##### Block 9 — 🔀 IF `(!JKKStringUtil.isNullBlank(taknkikiModelCd))` (L30988)

> 📌 if (null != taknkikiModelCd)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, taknkikiModelCd);` [➔ KEY_TAKNKIKI_MODEL_CD="key_taknkiki_model_cd"] \| |

##### Block 10 — ↪️ ELSE `(else)` (L30994)

> 📌 ＫＥＹ＿機器製造番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD);` [➔ KEY_TAKNKIKI_MODEL_CD="key_taknkiki_model_cd"] \| |

##### Block 11 — 🔀 IF `(!JKKStringUtil.isNullBlank(kikiSeizoNo))` (L31002)

> 📌 if (null != kikiSeizoNo)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO, kikiSeizoNo);` [➔ KEY_KIKI_SEIZO_NO="key_kiki_seizo_no"] \| |

##### Block 12 — ↪️ ELSE `(else)` (L31008)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO);` [➔ KEY_KIKI_SEIZO_NO="key_kiki_seizo_no"] \| |

##### Block 13 — 🔁 FOR `(for)` (L31023)

> 📌 IT2-2013-0000592 ③未出荷のVAに対してOLS設定・VA変更オーダが発行される 2013/07/11 END

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(nullKeys[i]);` |

> **合計**: 13 blocks (1 depth levels)

### mappingETU0011B010SCInMsg()

---

#### 1. 役割

ETU0011B010（番ポ工事一覧照会）サービスインターフェース呼出用の入力メッセージ（CAANMsgオブジェクト）を生成するマッピングメソッドである。  
具体的には、テンプレートメッセージの全フィールドをNullで初期化し、テンプレートID、機能コード、サービス契約番号、NTT契約電話回線番号、番ポ工事ステータス、番ポ工事希望年月日時（FROM/TO）などをinHashから取得してセットする。また、最大検索件数・表示件数・表示ページ番号・検索パターンのデフォルト値も設定する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingETU0011B010SCInMsg（template, inHash, funcCode）"] --> S1["Step1: fillCAANMSGNullMapping（template, new ETU0011B010CBSMsg（）.getContents（））\n（全条件Nullマッピング）"]
  S1 --> S2["Step2: テンプレートIDをセット\nETU0011B010CBSMsg.TEMPLATEID = JKKHakkoSODConstCC.TEMPLATE_ID_ETU0011B010"]
  S2 --> S3["Step3: 機能コードをセット\nETU0011B010CBSMsg.FUNC_CODE = funcCode"]
  S3 --> S4["Step4: サービス契約番号をセット\nETU0011B010CBSMsg.KEY_SVC_KEI_NO = inHash.get（JKKHakkoSODConstCC.SVC_KEI_NO）"]
  S4 --> S5["Step5: NTT契約電話回線番号をセット\nETU0011B010CBSMsg.KEY_NTT_KEI_TEL_KAISEN_NO = inHash.get（JKKHakkoSODConstCC.NTT_KEI_TEL_KAISEN_NO）"]
  S5 --> S6["Step6: 番ポ工事ステータスをセット\nETU0011B010CBSMsg.KEY_BMP_KOJI_STAT = inHash.get（JKKHakkoSODConstCC.BMP_KOJI_STAT）"]
  S6 --> S7["Step7: 番ポ工事希望年月日時_FROMをセット\nETU0011B010CBSMsg.KEY_BMP_KOJI_KIBO_YMDH_FROM = inHash.get（JKKHakkoSODConstCC.BMP_KOJI_KIBO_YMDH_FROM）"]
  S7 --> S8["Step8: 番ポ工事希望年月日時_TOをセット\nETU0011B010CBSMsg.KEY_BMP_KOJI_KIBO_YMDH_TO = inHash.get（JKKHakkoSODConstCC.BMP_KOJI_KIBO_YMDH_TO）"]
  S8 --> S9["Step9: 最大検索件数 = '1000'"]
  S9 --> S10["Step10: 表示件数 = '100'"]
  S10 --> S11["Step11: 表示ページ番号 = '1'"]
  S11 --> S12["Step12: 検索パターン = JPCModelConstant.SAERCH_TYPE_BBN"]
  S12 --> END["完了"]

  S2 -.- NOTE1["TEMPLATE_ID_ETU0011B010 = 'ETU0011B010' （番ポ工事一覧照会）"]
  S3 -.- NOTE2["FUNC_CODE = funcCode （呼出元指定）"]
  S4 -.- NOTE3["SVC_KEI_NO = 'svc_kei_no' （サービス契約番号）"]
  S5 -.- NOTE4["NTT_KEI_TEL_KAISEN_NO = 'ntt_kei_tel_kaisen_no' （NTT契約電話回線番号）"]
  S6 -.- NOTE5["BMP_KOJI_STAT = 'bmp_koji_stat' （番ポ工事ステータス）"]
  S7 -.- NOTE6["BMP_KOJI_KIBO_YMDH_FROM = 'bmp_koji_kibo_ymdh_from' （番ポ工事希望年月日時FROM）"]
  S8 -.- NOTE7["BMP_KOJI_KIBO_YMDH_TO = 'bmp_koji_kibo_ymdh_to' （番ポ工事希望年月日時TO）"]

  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE4 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE5 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE6 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE7 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new ETU0011B010CBSMsg().getContents())` で全項目をNull初期化。
2. テンプレートID（ETU0011B010CBSMsg.TEMPLATEID）に `JKKHakkoSODConstCC.TEMPLATE_ID_ETU0011B010` をセット。
3. 機能コード（ETU0011B010CBSMsg.FUNC_CODE）に `funcCode` をセット。
4. サービス契約番号（ETU0011B010CBSMsg.KEY_SVC_KEI_NO）に inHashから値をセット。
5. NTT契約電話回線番号（ETU0011B010CBSMsg.KEY_NTT_KEI_TEL_KAISEN_NO）に値をセット。
6. 番ポ工事ステータス（ETU0011B010CBSMsg.KEY_BMP_KOJI_STAT）に値をセット。
7. 番ポ工事希望年月日時_FROM（ETU0011B010CBSMsg.KEY_BMP_KOJI_KIBO_YMDH_FROM）に値をセット。
8. 番ポ工事希望年月日時_TO（ETU0011B010CBSMsg.KEY_BMP_KOJI_KIBO_YMDH_TO）に値をセット。
9. 最大検索件数（ETU0011B010CBSMsg.MAX_SEARCH_NUM）に `"1000"` をセット。
10. 表示件数（ETU0011B010CBSMsg.DISPLAY_NUM）に `"100"` をセット。
11. 表示ページ番号（ETU0011B010CBSMsg.DISPLAY_PAGE_NUM）に `"1"` をセット。
12. 検索パターン（ETU0011B010CBSMsg.SEARCH_TYPE）に `JPCModelConstant.SAERCH_TYPE_BBN` をセット。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                     | 業務説明                                         |
| --- | ------------ | ---------------------- | ------------------------------------------------ |
| 1   | template     | CAANMsg                | SCへの入力テンプレートメッセージ                 |
| 2   | inHash       | HashMap<String, Object>| 入力パラメータマップ                             |
| 3   | funcCode     | String                 | SCの機能コード                                   |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingETU0011B010SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callETU0011B010SC` | private | 番ポ工事一覧照会SIFを呼び出し |
### mappingEZM0411A010SCInMsg()

---

#### 1. 役割

EZM0411A010（宅内機器型式一意照会）サービスインターフェース呼出用の入力メッセージ（CAANMsgオブジェクト）を生成するマッピングメソッドである。  
具体的には、テンプレートメッセージの全フィールドをNullで初期化し、テンプレートID、機能コード、宅内機器型式コードをinHashから取得してセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEZM0411A010SCInMsg（template, inHash, funcCode）"] --> S1["Step1: fillCAANMSGNullMapping（template, new EZM0411A010CBSMsg（）.getContents（））\n（全条件Nullマッピング）"]
  S1 --> S2["Step2: テンプレートIDをセット\nEZM0411A010CBSMsg.TEMPLATEID = JKKHakkoSODConstCC.TEMPLATE_ID_EZM0411A010"]
  S2 --> S3["Step3: 機能コードをセット\nEZM0411A010CBSMsg.FUNC_CODE = funcCode"]
  S3 --> S4["Step4: 宅内機器型式コードをセット\nEZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD = inHash.get（JKKHakkoSODConstCC.TAKNKIKI_MODEL_CD）"]
  S4 --> END["完了"]

  S2 -.- NOTE1["TEMPLATE_ID_EZM0411A010 = 'EZM0411A010' （宅内機器型式一意照会）"]
  S3 -.- NOTE2["FUNC_CODE = funcCode （呼出元指定）"]
  S4 -.- NOTE3["TAKNKIKI_MODEL_CD = 'taknkiki_model_cd' （宅内機器型式コード）"]

  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EZM0411A010CBSMsg().getContents())` で全項目をNull初期化。
2. テンプレートID（EZM0411A010CBSMsg.TEMPLATEID）に `JKKHakkoSODConstCC.TEMPLATE_ID_EZM0411A010` をセット。
3. 機能コード（EZM0411A010CBSMsg.FUNC_CODE）に `funcCode` をセット。
4. 宅内機器型式コード（EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD）に inHashから値をセット。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                     | 業務説明                                |
| --- | ------------ | ---------------------- | --------------------------------------- |
| 1   | template     | CAANMsg                | SCへの入力テンプレートメッセージ        |
| 2   | inHash       | HashMap<String, Object>| 入力パラメータマップ                    |
| 3   | funcCode     | String                 | SCの機能コード                         |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEZM0411A010SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEZM0411A010SC` | private | 宅内機器型式一意照会SIFを呼び出し |
### mappingEKK2811A010SCOutMsg()

---

#### 1. 役割

EKK2811A010（機器オプションサービス契約一意照会）サービスインターフェース呼出結果（CAANMsg配列）から、1件目のデータオブジェクトから機器オプションサービス契約情報リスト（EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST）を取得し、その配列（CAANMsg[]）を返すマッピング処理。  
具体的には、SCから返却された複数の機器オプションサービス契約データのうち、全件のリスト（CAANMsg[]）をそのまま返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK2811A010SCOutMsg（resultMsgs）"] --> S1["Step1: 1件目のCAANMsg（msg）を抽出"]
  S1 --> S2["Step2: msg.getMsgData（）.get（EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST）でmsgList取得"]
  S2 --> END["return msgList"]

  S2 -.- NOTE1["EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST = 機器オプションサービス契約一意照会明細リスト"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. `resultMsgs[0]` で1件目のCAANMsgインスタンス `msg` を抽出。
2. `msg.getMsgData().get(EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST)` から機器オプションサービス契約明細リスト（CAANMsg[]）を取得。
3. 取得したCAANMsg[]を返却する。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型         | 業務説明                                             |
| --- | ------------ | ---------- | ---------------------------------------------------- |
| 1   | resultMsgs   | CAANMsg[]  | 機器オプションサービス契約一意照会のSC結果（CAANMsg配列）|

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK2811A010SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK2811A010SC` | private | 機器オプションサービス契約一意照会SIFを呼び出し |
### mappingEKK1041A010SCInMsg()

---

#### 1. 役割

EKK1041A010（オーダ設定一意照会）サービスインターフェース呼出用の入力メッセージ（CAANMsgオブジェクト）を生成するマッピングメソッドである。  
具体的には、テンプレートメッセージの全フィールドをNullで初期化し、テンプレートID、機能コード、機器オプションサービス契約番号（ODR_SET_NO）をinHashから取得してセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK1041A010SCInMsg（template, inHash, funcCode）"] --> S1["Step1: fillCAANMSGNullMapping（template, new EKK1041A010CBSMsg（）.getContents（））\n（全条件Nullマッピング）"]
  S1 --> S2["Step2: テンプレートIDをセット\nEKK1041A010CBSMsg.TEMPLATEID = JKKHakkoSODConstCC.TEMPLATE_ID_EKK1041A010"]
  S2 --> S3["Step3: 機能コードをセット\nEKK1041A010CBSMsg.FUNC_CODE = funcCode"]
  S3 --> S4["Step4: 機器オプションサービス契約番号をセット\nEKK1041A010CBSMsg.KEY_ODR_SET_NO = inHash.get（JKKHakkoSODConstCC.ODR_SET_NO）"]
  S4 --> END["完了"]

  S2 -.- NOTE1["TEMPLATE_ID_EKK1041A010 = 'EKK1041A010' （オーダ設定一意照会）"]
  S3 -.- NOTE2["FUNC_CODE = funcCode （呼出元指定）"]
  S4 -.- NOTE3["ODR_SET_NO = 'odr_set_no' （機器オプションサービス契約番号）"]

  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK1041A010CBSMsg().getContents())` で全項目をNull初期化。
2. テンプレートID（EKK1041A010CBSMsg.TEMPLATEID）に `JKKHakkoSODConstCC.TEMPLATE_ID_EKK1041A010` をセット。
3. 機能コード（EKK1041A010CBSMsg.FUNC_CODE）に `funcCode` をセット。
4. 機器オプションサービス契約番号（EKK1041A010CBSMsg.KEY_ODR_SET_NO）に inHashから値をセット。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                     | 業務説明                                     |
| --- | ------------ | ---------------------- | -------------------------------------------- |
| 1   | template     | CAANMsg                | SCへの入力テンプレートメッセージ             |
| 2   | inHash       | HashMap<String, Object>| 入力パラメータマップ                         |
| 3   | funcCode     | String                 | SCの機能コード                              |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1041A010SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK1041A010SC` | private | オーダ設定一意照会SIFを呼び出し |
### mappingEKK0341B022SCInMsg()

---

#### 1. 役割

EKK0341B022（サービス対象機器提供サービス契約一覧照会）サービスインターフェース呼出用の入力メッセージ（CAANMsgオブジェクト）を生成するマッピングメソッドである。  
具体的には、テンプレートメッセージの全フィールドをNullで初期化し、テンプレートID、機能コード、サービス契約番号をinHashから取得してセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0341B022SCInMsg（template, inHash, funcCode）"] --> S1["Step1: fillCAANMSGNullMapping（template, new EKK0341B022CBSMsg（）.getContents（））\n（全条件Nullマッピング）"]
  S1 --> S2["Step2: テンプレートIDをセット\nEKK0341B022CBSMsg.TEMPLATEID = JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022"]
  S2 --> S3["Step3: 機能コードをセット\nEKK0341B022CBSMsg.FUNC_CODE = funcCode"]
  S3 --> S4["Step4: サービス契約番号をセット\nEKK0341B022CBSMsg.KEY_SVC_KEI_NO = inHash.get（JKKHakkoSODConstCC.SVC_KEI_NO）"]
  S4 --> END["完了"]

  S2 -.- NOTE1["TEMPLATE_ID_EKK0341B022 = 'EKK0341B022' （サービス対象機器提供サービス契約一覧照会）"]
  S3 -.- NOTE2["FUNC_CODE = funcCode （呼出元指定）"]
  S4 -.- NOTE3["SVC_KEI_NO = 'svc_kei_no' （サービス契約番号）"]

  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0341B022CBSMsg().getContents())` で全項目をNull初期化。
2. テンプレートID（EKK0341B022CBSMsg.TEMPLATEID）に `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022` をセット。
3. 機能コード（EKK0341B022CBSMsg.FUNC_CODE）に `funcCode` をセット。
4. サービス契約番号（EKK0341B022CBSMsg.KEY_SVC_KEI_NO）に inHashから値をセット。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                     | 業務説明                               |
| --- | ------------ | ---------------------- | -------------------------------------- |
| 1   | template     | CAANMsg                | SCへの入力テンプレートメッセージ       |
| 2   | inHash       | HashMap<String, Object>| 入力パラメータマップ                   |
| 3   | funcCode     | String                 | SCの機能コード                        |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B022SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0341B008SC` | private | 機器提供サービス契約一覧照会SIFを呼び出し 2012-11/21　ロット２IT1-2012-0002131（EKK0341B022 に差替え） |
### mappingEKK0341B504SCOutMsg()

---

#### 1. 役割

EKK0341B504（機器提供サービス契約一覧照会（サービス契約回線内訳））サービスインターフェース呼出結果（CAANMsg配列）から、1件目のデータオブジェクトから機器提供サービス契約明細リスト（EKK0341B504CBSMsg.EKK0341B504CBSMSG1LIST）を取得し、その配列（CAANMsg[]）を返すマッピング処理。  
具体的には、SCから返却された複数の機器提供サービス契約データのうち、全件のリスト（CAANMsg[]）をそのまま返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0341B504SCOutMsg（resultMsgs）"] --> S1["Step1: 1件目のCAANMsg（msg）を抽出"]
  S1 --> S2["Step2: msg.getMsgData（）.get（EKK0341B504CBSMsg.EKK0341B504CBSMSG1LIST）でmsgList取得"]
  S2 --> END["return msgList"]

  S2 -.- NOTE1["EKK0341B504CBSMsg.EKK0341B504CBSMSG1LIST = 機器提供サービス契約一覧照会明細リスト"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. `resultMsgs[0]` で1件目のCAANMsgインスタンス `msg` を抽出。
2. `msg.getMsgData().get(EKK0341B504CBSMsg.EKK0341B504CBSMSG1LIST)` から機器提供サービス契約一覧照会明細リスト（CAANMsg[]）を取得。
3. 取得したCAANMsg[]を返却する。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型         | 業務説明                                                 |
| --- | ------------ | ---------- | -------------------------------------------------------- |
| 1   | resultMsgs   | CAANMsg[]  | 機器提供サービス契約一覧照会（サービス契約回線内訳）のSC結果（CAANMsg配列）|

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0341B504SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0341B504SC` | private | 機器提供サービス契約一覧照会（サービス契約回線内訳）SIFを呼び出し |
---

---

## 📋 全分岐詳細 (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)

### `mappingEKK1041B001SCInMsg()` (L30932) — 14 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (null != orderSbtCd) | ＫＥＹ＿オーダ種別コード | - | - | L30944 |
| 2 | 🔀 ELSE | D0 | (else) | ＫＥＹ＿サービスオーダコード | - | - | L30949 |
| 3 | 🔀 IF | D0 | (null != svcOrderCd) | ＫＥＹ＿サービスオーダコード | - | - | L30954 |
| 4 | 🔀 ELSE | D0 | (else) | ＫＥＹ＿最新要求種別コード | - | - | L30959 |
| 5 | 🔀 IF | D0 | (null != yokyuSbtCd) | ＫＥＹ＿最新要求種別コード | - | - | L30964 |
| 6 | 🔀 ELSE | D0 | (else) | IT2-2013-0000592 ③未出荷のVAに対してOLS設定・VA変更オーダが発行される 2013/07/11 START | - | - | L30969 |
| 7 | 🔀 IF | D0 | (null != svc_kei_no) | ＫＥＹ＿サービス契約番号 | - | - | L30975 |
| 8 | 🔀 ELSE | D0 | (else) | ＫＥＹ＿宅内機器型式コード | - | - | L30980 |
| 9 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(taknkikiModelCd)) | ANK-3238-00-00 MOD END | - | - | L30988 |
| 10 | 🔀 ELSE | D0 | (else) | ＫＥＹ＿機器製造番号 | - | - | L30994 |
| 11 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(kikiSeizoNo)) | ANK-3238-00-00 MOD END | - | - | L31002 |
| 12 | 🔀 ELSE | D0 | (else) | - | - | - | L31008 |
| 13 | 🔁 FOR | D0 | (for-loop) | IT2-2013-0000592 ③未出荷のVAに対してOLS設定・VA変更オーダが発行される 2013/07/11 END | - | - | L31023 |
| 14 | ↩️ RETURN | D0 | template | - | - | - | L31028 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["mappingEKK1041B001SCInMsg()"] --> CF0{"制御フロー分岐"}
  B0["IF: （null != orderSbtCd）"]
  CF0 -->|"L30944"| B0
  B1["ELSE"]
  CF0 -->|"L30949"| B1
  B2["IF: （null != svcOrderCd）"]
  CF0 -->|"L30954"| B2
  B3["ELSE"]
  CF0 -->|"L30959"| B3
  B4["IF: （null != yokyuSbtCd）"]
  CF0 -->|"L30964"| B4
  B5["ELSE"]
  CF0 -->|"L30969"| B5
  B6["IF: （null != svc_kei_no）"]
  CF0 -->|"L30975"| B6
  B7["ELSE"]
  CF0 -->|"L30980"| B7
  B8["IF: （!JKKStringUtil.isNullBlank（taknkikiMode…"]
  CF0 -->|"L30988"| B8
  B9["ELSE"]
  CF0 -->|"L30994"| B9
  B10["IF: （!JKKStringUtil.isNullBlank（kikiSeizoNo）…"]
  CF0 -->|"L31002"| B10
  B11["ELSE"]
  CF0 -->|"L31008"| B11
  B12["FOR: …"]
  CF0 -->|"L31023"| B12
  B13["RETURN: template"]
  CF0 -->|"L31028"| B13
```

### `mappingEZM0411A010SCOutMsg()` (L30601) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (null == msgList ｜｜ 0 == msgList.length) | 結果の取得 | - | - | L30615 |
| 2 | 🔀 ELSE | D0 | (else) | - | - | - | L30620 |
| 3 | ↩️ RETURN | D0 | retHash | - | - | - | L30624 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["mappingEZM0411A010SCOutMsg()"] --> CF0{"制御フロー分岐"}
  B0["IF: （null == msgList || 0 == msgList.length）"]
  CF0 -->|"L30615"| B0
  B1["ELSE"]
  CF0 -->|"L30620"| B1
  B2["RETURN: retHash"]
  CF0 -->|"L30624"| B2
```

> **制御フロー合計**: 2 methods, 17 branches
