# ⑥ 業務ロジック — Edit (Transform): 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-editErrorInfoEKK0891A010CBS"></a>
### editErrorInfoEKK0891A010CBS()

---

#### 1. 役割

EKK0891A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする処理である。  
具体的には、SC（サービスコンポーネント）から返却されたエラー情報（テンプレートのSTATUS値やメッセージ）をもとに、業務側（BP）のコントロールマップへエラーコード・エラーメッセージを設定する。  
SCからのエラーコード（STATUS）がBP側で既に保持しているものより大きい場合のみ、SCの内容で上書きする。  
このメソッドは、SC実行結果の汎用エラー変換・設定処理として、複数のSCエラー編集メソッドから呼び出される共通ロジックである。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editErrorInfoEKK0891A010CBS（param, templates, returnCode）"] --> S1["Step1: templates[0]からSTATUS取得"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -->|Yes| S2["templateStatus = 9000に設定"]
  IF1 -->|No| S3["templateStatusはそのまま"]
  S2 --> S4
  S3 --> S4
  S4["Step2: メッセージリソース存在判定"] --> IF2{"JCMAPLConstMgr.getString（'RETURN_MESSAGE_' + templateStatus） == null"}
  IF2 -->|Yes| S5["templateStatus = 0に設定"]
  IF2 -->|No| S6["templateStatusはそのまま"]
  S5 --> S7
  S6 --> S7
  S7["Step3: BPのRETURN_CODE取得"]
  S7 --> IF3{"obj == null"}
  IF3 -->|Yes| S8["bpStatus = -1"]
  IF3 -->|No| S9["bpStatus = Integer.parseInt（obj）"]
  S8 --> S10
  S9 --> S10
  S10["Step4: templateStatus > bpStatus 判定"]
  S10 --> IF4{"templateStatus > bpStatus"}
  IF4 -->|Yes| S11["BPのコントロールマップにformatStatus/messageを設定"]
  IF4 -->|No| S12["何もせず次へ"]
  S11 --> RET["return param"]
  S12 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  S1 -.- NOTE1["EKK0891A010CBSMsg.STATUS = 'STATUS' （SC返却ステータス）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S4 -.- NOTE2["JCMAPLConstMgr.getString = メッセージリソース取得"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S7 -.- NOTE3["SCControlMapKeys.RETURN_CODE = 'RETURN_CODE' （BP保持ステータス）"]
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: `templates[0]` から STATUS（`EKK0891A010CBSMsg.STATUS`）を取得し、`templateStatus` とする。
2. **Step2**: `returnCode != 0` の場合、`templateStatus` を 9000 に強制設定する（異常終了を明示）。
3. **Step3**: メッセージリソース（`RETURN_MESSAGE_${templateStatus}`）が存在しない場合は `templateStatus` を0にリセット。
4. **Step4**: BP側で保持している `RETURN_CODE` を取得（`param.getControlMapData(SCControlMapKeys.RETURN_CODE)`）。値がなければ `bpStatus = -1`。
5. **Step5**: `templateStatus > bpStatus` の場合のみ、BPのコントロールマップ（`RETURN_CODE`, `RETURN_MESSAGE`）をSCの値で上書き。
6. **Step6**: 最終的に `param` を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型                         | 業務説明                                                                 |
| --- | -------------- | -------------------------- | ------------------------------------------------------------------------ |
| 1   | param          | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ。業務データ全般および制御情報を格納・取得。 |
| 2   | templates      | CAANMsg[]                  | SCから返却されたテンプレートメッセージ配列。                             |
| 3   | returnCode     | int                        | 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 → editErrorInfoEKK0891A010CBS` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0891A010CBS` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0891A010CBS` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0891A010CBS` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0891A010CBS` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0891A010CBS` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0891A010CBS` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0891A010CBS` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0891A010CBS` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0891A010CBS` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0891A010_SC` | private | 提供方式契約一意照会を呼び出す。 |

---

#### 📋 Per-Branch 詳細ブロック — `editErrorInfoEKK0891A010CBS()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(returnCode != 0)` (L41196)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 9000;` |

##### Block 2 — 🔀 IF `(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)` [JCMAPLC="JCMAPLC", RETURN_MESSAGE_="return_message_"] (L41200)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 0;` |

##### Block 3 — 🔀 IF `(obj == null)` (L41207)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = -1;` |

##### Block 4 — ↪️ ELSE `(else)` (L41212)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));` [➔ RETURN_CODE="returnCode" (リターンコード)] |

##### Block 5 — 🔀 IF `(templateStatus > bpStatus)` (L41216)

> 📌 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" (リターンメッセージ)] |

> **合計**: 5 blocks (1 depth levels)

### editErrorInfoEKK0881A010CBS()

---

#### 1. 役割

EKK0881A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする処理である。  
具体的には、SC（サービスコンポーネント）から返却されたエラー情報（テンプレートのSTATUS値やメッセージ）をもとに、業務側（BP）のコントロールマップへエラーコード・エラーメッセージを設定する。  
SCからのエラーコード（STATUS）がBP側で既に保持しているものより大きい場合のみ、SCの内容で上書きする。  
本メソッドは editErrorInfoEKK0891A010CBS などと同様、複数のSCのエラー編集メソッドから呼ばれる共通処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editErrorInfoEKK0881A010CBS（param, templates, returnCode）"] --> S1["Step1: templates[0]からSTATUS取得"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -->|Yes| S2["templateStatus = 9000に設定"]
  IF1 -->|No| S3["templateStatusはそのまま"]
  S2 --> S4
  S3 --> S4
  S4["Step2: メッセージリソース存在判定"] --> IF2{"JCMAPLConstMgr.getString（'RETURN_MESSAGE_' + templateStatus） == null"}
  IF2 -->|Yes| S5["templateStatus = 0に設定"]
  IF2 -->|No| S6["templateStatusはそのまま"]
  S5 --> S7
  S6 --> S7
  S7["Step3: BPのRETURN_CODE取得"]
  S7 --> IF3{"obj == null"}
  IF3 -->|Yes| S8["bpStatus = -1"]
  IF3 -->|No| S9["bpStatus = Integer.parseInt（obj）"]
  S8 --> S10
  S9 --> S10
  S10["Step4: templateStatus > bpStatus 判定"]
  S10 --> IF4{"templateStatus > bpStatus"}
  IF4 -->|Yes| S11["BPのコントロールマップにformatStatus/messageを設定"]
  IF4 -->|No| S12["何もせず次へ"]
  S11 --> RET["return param"]
  S12 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  S1 -.- NOTE1["EKK0881A010CBSMsg.STATUS = 'STATUS' （SC返却ステータス）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S4 -.- NOTE2["JCMAPLConstMgr.getString = メッセージリソース取得"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S7 -.- NOTE3["SCControlMapKeys.RETURN_CODE = 'RETURN_CODE' （BP保持ステータス）"]
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: `templates[0]` から STATUS（`EKK0881A010CBSMsg.STATUS`）を取得し、`templateStatus` とする。
2. **Step2**: `returnCode != 0` の場合、`templateStatus` を 9000 に強制設定する（異常終了を明示）。
3. **Step3**: メッセージリソース（`RETURN_MESSAGE_${templateStatus}`）が存在しない場合は `templateStatus` を0にリセット。
4. **Step4**: BP側で保持している `RETURN_CODE` を取得（`param.getControlMapData(SCControlMapKeys.RETURN_CODE)`）。値がなければ `bpStatus = -1`。
5. **Step5**: `templateStatus > bpStatus` の場合のみ、BPのコントロールマップ（`RETURN_CODE`, `RETURN_MESSAGE`）をSCの値で上書き。
6. **Step6**: 最終的に `param` を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型                         | 業務説明                                                                 |
| --- | -------------- | -------------------------- | ------------------------------------------------------------------------ |
| 1   | param          | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ。業務データ全般および制御情報を格納・取得。 |
| 2   | templates      | CAANMsg[]                  | SCから返却されたテンプレートメッセージ配列。                             |
| 3   | returnCode     | int                        | 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 → editErrorInfoEKK0881A010CBS` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0881A010CBS` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0881A010CBS` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0881A010CBS` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0881A010CBS` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0881A010CBS` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0881A010CBS` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0881A010CBS` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0881A010CBS` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEKK0881A010CBS` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0881A010_SC` | private | 回線使用契約一意照会SIFを呼び出し |

---

#### 📋 Per-Branch 詳細ブロック — `editErrorInfoEKK0881A010CBS()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(returnCode != 0)` (L41714)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 9000;` |

##### Block 2 — 🔀 IF `(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)` [JCMAPLC="JCMAPLC", RETURN_MESSAGE_="return_message_"] (L41718)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 0;` |

##### Block 3 — 🔀 IF `(obj == null)` (L41725)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = -1;` |

##### Block 4 — ↪️ ELSE `(else)` (L41730)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));` [➔ RETURN_CODE="returnCode" (リターンコード)] |

##### Block 5 — 🔀 IF `(templateStatus > bpStatus)` (L41734)

> 📌 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" (リターンメッセージ)] |

> **合計**: 5 blocks (1 depth levels)

### editErrorInfoEZM0321A010CBS()

---

#### 1. 役割

EZM0321A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする処理である。  
具体的には、SC（サービスコンポーネント）から返却されたエラー情報（テンプレートのSTATUS値やメッセージ）をもとに、業務側（BP）のコントロールマップへエラーコード・エラーメッセージを設定する。  
SCからのエラーコード（STATUS）がBP側で既に保持しているものより大きい場合のみ、SCの内容で上書きする。  
本メソッドは editErrorInfoEKK0891A010CBS などと同様、複数のSCのエラー編集メソッドから呼び出される共通処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editErrorInfoEZM0321A010CBS（param, templates, returnCode）"] --> S1["Step1: templates[0]からSTATUS取得"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -->|Yes| S2["templateStatus = 9000に設定"]
  IF1 -->|No| S3["templateStatusはそのまま"]
  S2 --> S4
  S3 --> S4
  S4["Step2: メッセージリソース存在判定"] --> IF2{"JCMAPLConstMgr.getString（'RETURN_MESSAGE_' + templateStatus） == null"}
  IF2 -->|Yes| S5["templateStatus = 0に設定"]
  IF2 -->|No| S6["templateStatusはそのまま"]
  S5 --> S7
  S6 --> S7
  S7["Step3: BPのRETURN_CODE取得"]
  S7 --> IF3{"obj == null"}
  IF3 -->|Yes| S8["bpStatus = -1"]
  IF3 -->|No| S9["bpStatus = Integer.parseInt（obj）"]
  S8 --> S10
  S9 --> S10
  S10["Step4: templateStatus > bpStatus 判定"]
  S10 --> IF4{"templateStatus > bpStatus"}
  IF4 -->|Yes| S11["BPのコントロールマップにformatStatus/messageを設定"]
  IF4 -->|No| S12["何もせず次へ"]
  S11 --> RET["return param"]
  S12 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  S1 -.- NOTE1["EZM0321A010CBSMsg.STATUS = 'STATUS' （SC返却ステータス）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S4 -.- NOTE2["JCMAPLConstMgr.getString = メッセージリソース取得"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S7 -.- NOTE3["SCControlMapKeys.RETURN_CODE = 'RETURN_CODE' （BP保持ステータス）"]
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: `templates[0]` から STATUS（`EZM0321A010CBSMsg.STATUS`）を取得し、`templateStatus` とする。
2. **Step2**: `returnCode != 0` の場合、`templateStatus` を 9000 に強制設定する（異常終了を明示）。
3. **Step3**: メッセージリソース（`RETURN_MESSAGE_${templateStatus}`）が存在しない場合は `templateStatus` を0にリセット。
4. **Step4**: BP側で保持している `RETURN_CODE` を取得（`param.getControlMapData(SCControlMapKeys.RETURN_CODE)`）。値がなければ `bpStatus = -1`。
5. **Step5**: `templateStatus > bpStatus` の場合のみ、BPのコントロールマップ（`RETURN_CODE`, `RETURN_MESSAGE`）をSCの値で上書き。
6. **Step6**: 最終的に `param` を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型                         | 業務説明                                                                 |
| --- | -------------- | -------------------------- | ------------------------------------------------------------------------ |
| 1   | param          | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ。業務データ全般および制御情報を格納・取得。 |
| 2   | templates      | CAANMsg[]                  | SCから返却されたテンプレートメッセージ配列。                             |
| 3   | returnCode     | int                        | 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 → editErrorInfoEZM0321A010CBS` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEZM0321A010CBS` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEZM0321A010CBS` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEZM0321A010CBS` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEZM0321A010CBS` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEZM0321A010CBS` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEZM0321A010CBS` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEZM0321A010CBS` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEZM0321A010CBS` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editErrorInfoEZM0321A010CBS` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEZM0321A010_SC` | private | 業務パラメータ一意照会検索を呼び出す。 |

---

#### 📋 Per-Branch 詳細ブロック — `editErrorInfoEZM0321A010CBS()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(returnCode != 0)` (L41450)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 9000;` |

##### Block 2 — 🔀 IF `(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)` [JCMAPLC="JCMAPLC", RETURN_MESSAGE_="return_message_"] (L41454)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 0;` |

##### Block 3 — 🔀 IF `(obj == null)` (L41461)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = -1;` |

##### Block 4 — ↪️ ELSE `(else)` (L41466)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));` [➔ RETURN_CODE="returnCode" (リターンコード)] |

##### Block 5 — 🔀 IF `(templateStatus > bpStatus)` (L41470)

> 📌 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" (リターンメッセージ)] |

> **合計**: 5 blocks (1 depth levels)

### editInMsgEKK0341B001()

---

#### 1. 役割

EKK0341B001_機器提供サービス契約一覧照会（機器製造番号）サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする。  
具体的には、paramから必要な業務パラメータおよび機器製造番号・宅内機器型式コードを取得し、SC（サービスコンポーネント）へ送信するCAANMsgテンプレートにセットする業務共通の編集処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editInMsgEKK0341B001（param, funcCd, kikiSeizoNo, taknkikiModelCd）"] --> S1["Step1: CAANMsgテンプレート（EKK0341B001CBSMsg）を生成"]
  S1 --> S2["Step2: fillCAANMSGNullMappingでNull初期化"]
  S2 --> S3["Step3: editBasicCmnで共通部を設定"]
  S3 --> S4["Step4: テンプレートID（EKK0341B001）をセット"]
  S4 --> S5["Step5: 機能コード（funcCd）をセット"]
  S5 --> IF1{"kikiSeizoNoがnull/空か判定"}
  IF1 -->|"No: 値あり"| S6["テンプレートにKEY_KIKI_SEIZO_NOへセット"]
  IF1 -->|"Yes: 値なし"| S7["何もせず"]
  S6 --> IF2{"taknkikiModelCdがnull/空か判定"}
  S7 --> IF2
  IF2 -->|"No: 値あり"| S8["テンプレートにKEY_TAKNKIKI_MODEL_CDへセット"]
  IF2 -->|"Yes: 値なし"| S9["何もせず"]
  S8 --> S10["editInMsgCmnで上り情報生成"]
  S9 --> S10
  S10 --> RET["return （editInMsgCmnの戻り値）"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  S4 -.- NOTE1["EKK0341B001CBSMsg.TEMPLATEID = 'EKK0341B001' （機器提供サービス契約一覧照会）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S5 -.- NOTE2["EKK0341B001CBSMsg.FUNC_CODE = funcCd"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: `CAANMsg` オブジェクト（`EKK0341B001CBSMsg`クラス）をインスタンス化。
2. **Step2**: `fillCAANMSGNullMapping()` でテンプレートの全フィールドをNull初期化。
3. **Step3**: `editBasicCmn(param, template)` で共通部（業務メタ情報）を設定。
4. **Step4**: テンプレートID（`TEMPLATEID`）に `"EKK0341B001"` をセット。
5. **Step5**: 機能コード（`FUNC_CODE`）に `funcCd` をセット。
6. **Step6**: `kikiSeizoNo`（機器製造番号）がnull/空でなければ、テンプレートの `KEY_KIKI_SEIZO_NO` にセット。
7. **Step7**: `taknkikiModelCd`（宅内機器型式コード）がnull/空でなければ、テンプレートの `KEY_TAKNKIKI_MODEL_CD` にセット。
8. **Step8**: `editInMsgCmn(param, template)` を呼び出し、SC上り用のマップデータを生成して返却。

---

#### 3. パラメータ分析

| No  | パラメータ名       | 型                         | 業務説明                                    |
| --- | ------------------ | -------------------------- | ------------------------------------------- |
| 1   | param              | IRequestParameterReadWrite | 業務共通データ、ユーザデータなどの保持     |
| 2   | funcCd             | String                     | 機能コード                                  |
| 3   | kikiSeizoNo        | String                     | 機器製造番号                                |
| 4   | taknkikiModelCd    | 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 → editInMsgEKK0341B001` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B001` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B001` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B001` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B001` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B001` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B001` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B001` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B001` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B001` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0341B001SC` | private | EKK0341B001_機器提供サービス契約一覧照会（機器製造番号）処理 <br> 機器提供サービス契約一覧照会サービスインターフェースを呼び出します。 <br> |

---

#### 📋 Per-Branch 詳細ブロック — `editInMsgEKK0341B001()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(!JKKStringUtil.isNullBlank(kikiSeizoNo))` (L40366)

> 📌 ＫＥＹ＿機器製造番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0341B001CBSMsg.KEY_KIKI_SEIZO_NO, kikiSeizoNo);` [➔ KEY_KIKI_SEIZO_NO="key_kiki_seizo_no"] \| |

##### Block 2 — 🔀 IF `(!JKKStringUtil.isNullBlank(taknkikiModelCd))` (L40372)

> 📌 ＫＥＹ＿宅内機器型式コード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0341B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, taknkikiModelCd);` [➔ KEY_TAKNKIKI_MODEL_CD="key_taknkiki_model_cd"] \| |

> **合計**: 2 blocks (1 depth levels)

### editInMsgEKK0341B021()

---

#### 1. 役割

EKK0341B021_機器提供サービス契約一覧照会（予約）サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする。  
具体的には、paramから必要な業務パラメータおよびサービス契約番号を取得し、SC（サービスコンポーネント）へ送信するCAANMsgテンプレートにセットする業務共通の編集処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editInMsgEKK0341B021（param, funcCd, svcKeiNo）"] --> S1["Step1: CAANMsgテンプレート（EKK0341B021CBSMsg）を生成"]
  S1 --> S2["Step2: fillCAANMSGNullMappingでNull初期化"]
  S2 --> S3["Step3: editBasicCmnで共通部を設定"]
  S3 --> S4["Step4: テンプレートID（EKK0341B021）をセット"]
  S4 --> S5["Step5: 機能コード（funcCd）をセット"]
  S5 --> IF1{"svcKeiNoがnull/空か判定"}
  IF1 -->|"No: 値あり"| S6["テンプレートにKEY_SVC_KEI_NOへセット"]
  IF1 -->|"Yes: 値なし"| S7["何もせず"]
  S6 --> S8["editInMsgCmnで上り情報生成"]
  S7 --> S8
  S8 --> RET["return （editInMsgCmnの戻り値）"]
  style IF1 fill:#ffcc00
  S4 -.- NOTE1["EKK0341B021CBSMsg.TEMPLATEID = 'EKK0341B021' （機器提供サービス契約一覧照会（予約））"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S5 -.- NOTE2["EKK0341B021CBSMsg.FUNC_CODE = funcCd"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: `CAANMsg` オブジェクト（`EKK0341B021CBSMsg`クラス）をインスタンス化。
2. **Step2**: `fillCAANMSGNullMapping()` でテンプレートの全フィールドをNull初期化。
3. **Step3**: `editBasicCmn(param, template)` で共通部（業務メタ情報）を設定。
4. **Step4**: テンプレートID（`TEMPLATEID`）に `"EKK0341B021"` をセット。
5. **Step5**: 機能コード（`FUNC_CODE`）に `funcCd` をセット。
6. **Step6**: `svcKeiNo`（サービス契約番号）がnull/空でなければ、テンプレートの `KEY_SVC_KEI_NO` にセット。
7. **Step7**: `editInMsgCmn(param, template)` を呼び出し、SC上り用のマップデータを生成して返却。

---

#### 3. パラメータ分析

| No  | パラメータ名       | 型                         | 業務説明                                    |
| --- | ------------------ | -------------------------- | ------------------------------------------- |
| 1   | param              | IRequestParameterReadWrite | 業務共通データ、ユーザデータなどの保持     |
| 2   | funcCd             | String                     | 機能コード                                  |
| 3   | 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 → editInMsgEKK0341B021` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B021` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B021` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B021` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B021` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B021` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B021` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B021` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B021` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B021` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0341B021SC` | private | EKK0341B021_機器提供サービス契約一覧照会（予約）処理 <br> 機器提供サービス契約一覧照会（予約）サービスインターフェースを呼び出します。 <br> |

---

#### 📋 Per-Branch 詳細ブロック — `editInMsgEKK0341B021()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(!JKKStringUtil.isNullBlank(svcKeiNo))` (L40557)

> 📌 ＫＥＹ＿サービス契約番号

> （直接の処理内容なし — ネストされた子ブロックを参照）

> **合計**: 1 blocks (1 depth levels)

### editInMsgEDK0301B060()

---

#### 1. 役割

EDK0301B060_返品機器取消一覧照会処理 サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする。  
具体的には、paramから必要な業務パラメータおよび機器提供サービス契約番号・機器変更番号を取得し、SC（サービスコンポーネント）へ送信するCAANMsgテンプレートにセットする業務共通の編集処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editInMsgEDK0301B060（param, funcCd, kktkSvcKeiNo, kikiChgNo）"] --> S1["Step1: CAANMsgテンプレート（EDK0301B060CBSMsg）を生成"]
  S1 --> S2["Step2: fillCAANMSGNullMappingでNull初期化"]
  S2 --> S3["Step3: editBasicCmnで共通部を設定"]
  S3 --> S4["Step4: テンプレートID（EDK0301B060）をセット"]
  S4 --> S5["Step5: 機能コード（funcCd）をセット"]
  S5 --> IF1{"kktkSvcKeiNoがnull/空か判定"}
  IF1 -->|"No: 値あり"| S6["テンプレートにKEY_KKTK_SVC_KEI_NOへセット"]
  IF1 -->|"Yes: 値なし"| S7["何もせず"]
  S6 --> IF2{"kikiChgNoがnull/空か判定"}
  S7 --> IF2
  IF2 -->|"No: 値あり"| S8["テンプレートにKEY_KIKI_CHG_NOへセット"]
  IF2 -->|"Yes: 値なし"| S9["何もせず"]
  S8 --> S10["editInMsgCmnで上り情報生成"]
  S9 --> S10
  S10 --> RET["return （editInMsgCmnの戻り値）"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  S4 -.- NOTE1["EDK0301B060CBSMsg.TEMPLATEID = 'EDK0301B060' （返品機器取消一覧照会）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S5 -.- NOTE2["EDK0301B060CBSMsg.FUNC_CODE = funcCd"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: `CAANMsg` オブジェクト（`EDK0301B060CBSMsg`クラス）をインスタンス化。
2. **Step2**: `fillCAANMSGNullMapping()` でテンプレートの全フィールドをNull初期化。
3. **Step3**: `editBasicCmn(param, template)` で共通部（業務メタ情報）を設定。
4. **Step4**: テンプレートID（`TEMPLATEID`）に `"EDK0301B060"` をセット。
5. **Step5**: 機能コード（`FUNC_CODE`）に `funcCd` をセット。
6. **Step6**: `kktkSvcKeiNo`（機器提供サービス契約番号）がnull/空でなければ、テンプレートの `KEY_KKTK_SVC_KEI_NO` にセット。
7. **Step7**: `kikiChgNo`（機器変更番号）がnull/空でなければ、テンプレートの `KEY_KIKI_CHG_NO` にセット。
8. **Step8**: `editInMsgCmn(param, template)` を呼び出し、SC上り用のマップデータを生成して返却。

---

#### 3. パラメータ分析

| No  | パラメータ名       | 型                         | 業務説明                                    |
| --- | ------------------ | -------------------------- | ------------------------------------------- |
| 1   | param              | IRequestParameterReadWrite | 業務共通データ、ユーザデータなどの保持     |
| 2   | funcCd             | String                     | 機能コード                                  |
| 3   | kktkSvcKeiNo       | String                     | 機器提供サービス契約番号                    |
| 4   | kikiChgNo          | 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 → editInMsgEDK0301B060` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEDK0301B060` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEDK0301B060` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEDK0301B060` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEDK0301B060` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEDK0301B060` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEDK0301B060` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEDK0301B060` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEDK0301B060` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEDK0301B060` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEDK0301B060SC` | private | EDK0301B060_返品機器取消一覧照会処理 <br> 返品機器取消一覧照会サービスインターフェースを呼び出します。 <br> |

---

#### 📋 Per-Branch 詳細ブロック — `editInMsgEDK0301B060()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(!JKKStringUtil.isNullBlank(kktkSvcKeiNo))` (L40454)

> 📌 ＫＥＹ＿機器提供サービス契約番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EDK0301B060CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);` [➔ KEY_KKTK_SVC_KEI_NO="key_kktk_svc_kei_no"] \| |

##### Block 2 — 🔀 IF `(!JKKStringUtil.isNullBlank(kikiChgNo))` (L40460)

> 📌 ＫＥＹ＿機器変更番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EDK0301B060CBSMsg.KEY_KIKI_CHG_NO, kikiChgNo);` [➔ KEY_KIKI_CHG_NO="key_kiki_chg_no"] \| |

> **合計**: 2 blocks (1 depth levels)

### editInMsgEKK0341B008()

---

#### 1. 役割

EKK0341B008_機器提供サービス契約一覧照会 サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする。  
具体的には、paramから必要な業務パラメータおよびサービス契約番号・機器提供サービス契約番号を取得し、SC（サービスコンポーネント）へ送信するCAANMsgテンプレートにセットする業務共通の編集処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editInMsgEKK0341B008（param, funcCd, svcKeiNo, kktkSvcKeiNo）"] --> S1["Step1: CAANMsgテンプレート（EKK0341B008CBSMsg）を生成"]
  S1 --> S2["Step2: fillCAANMSGNullMappingでNull初期化"]
  S2 --> S3["Step3: editBasicCmnで共通部を設定"]
  S3 --> S4["Step4: テンプレートID（EKK0341B008）をセット"]
  S4 --> S5["Step5: 機能コード（funcCd）をセット"]
  S5 --> IF1{"svcKeiNoがnull/空か判定"}
  IF1 -->|"No: 値あり"| S6["テンプレートにKEY_SVC_KEI_NOへセット"]
  IF1 -->|"Yes: 値なし"| S7["何もせず"]
  S6 --> IF2{"kktkSvcKeiNoがnull/空か判定"}
  S7 --> IF2
  IF2 -->|"No: 値あり"| S8["テンプレートにKEY_KKTK_SVC_KEI_NOへセット"]
  IF2 -->|"Yes: 値なし"| S9["何もせず"]
  S8 --> S10["editInMsgCmnで上り情報生成"]
  S9 --> S10
  S10 --> RET["return （editInMsgCmnの戻り値）"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  S4 -.- NOTE1["EKK0341B008CBSMsg.TEMPLATEID = 'EKK0341B008' （機器提供サービス契約一覧照会）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S5 -.- NOTE2["EKK0341B008CBSMsg.FUNC_CODE = funcCd"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: `CAANMsg` オブジェクト（`EKK0341B008CBSMsg`クラス）をインスタンス化。
2. **Step2**: `fillCAANMSGNullMapping()` でテンプレートの全フィールドをNull初期化。
3. **Step3**: `editBasicCmn(param, template)` で共通部（業務メタ情報）を設定。
4. **Step4**: テンプレートID（`TEMPLATEID`）に `"EKK0341B008"` をセット。
5. **Step5**: 機能コード（`FUNC_CODE`）に `funcCd` をセット。
6. **Step6**: `svcKeiNo`（サービス契約番号）がnull/空でなければ、テンプレートの `KEY_SVC_KEI_NO` にセット。
7. **Step7**: `kktkSvcKeiNo`（機器提供サービス契約番号）がnull/空でなければ、テンプレートの `KEY_KKTK_SVC_KEI_NO` にセット。
8. **Step8**: `editInMsgCmn(param, template)` を呼び出し、SC上り用のマップデータを生成して返却。

---

#### 3. パラメータ分析

| No  | パラメータ名       | 型                         | 業務説明                                    |
| --- | ------------------ | -------------------------- | ------------------------------------------- |
| 1   | param              | IRequestParameterReadWrite | 業務共通データ、ユーザデータなどの保持     |
| 2   | funcCd             | String                     | 機能コード                                  |
| 3   | svcKeiNo           | String                     | サービス契約番号                            |
| 4   | kktkSvcKeiNo       | 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 → editInMsgEKK0341B008` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B008` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B008` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B008` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B008` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B008` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B008` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B008` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B008` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B008` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0341B008SCRireki` | protected | EKK0341B008_機器提供サービス契約一覧照会(履歴照会)処理 <br> 機器提供サービス契約一覧照会サービスインターフェースを呼び出します。 <br> |

---

#### 📋 Per-Branch 詳細ブロック — `editInMsgEKK0341B008()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(!JKKStringUtil.isNullBlank(svcKeiNo))` (L40278)

> 📌 ＫＥＹ＿サービス契約番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0341B008CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);` [➔ KEY_SVC_KEI_NO="key_svc_kei_no"] \| |

##### Block 2 — 🔀 IF `(!JKKStringUtil.isNullBlank(kktkSvcKeiNo))` (L40284)

> 📌 ＫＥＹ＿機器提供サービス契約番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0341B008CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);` [➔ KEY_KKTK_SVC_KEI_NO="key_kktk_svc_kei_no"] \| |

> **合計**: 2 blocks (1 depth levels)

### editInMsgEKK0341B029()

---

#### 1. 役割

EKK0341B029_機器提供サービス契約一覧照会（機器変更番号）サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする。  
具体的には、paramから必要な業務パラメータと機器提供サービス契約番号・機器変更番号・予約適用年月日を取得し、SC（サービスコンポーネント）へ送信するCAANMsgテンプレートにセットする業務共通の編集処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editInMsgEKK0341B029（param, funcCd, kktkSvcKeiNo, kikiChgNo, rsvAplyYmd）"] --> S1["Step1: CAANMsgテンプレート（EKK0341B029CBSMsg）を生成"]
  S1 --> S2["Step2: fillCAANMSGNullMappingでNull初期化"]
  S2 --> S3["Step3: editBasicCmnで共通部を設定"]
  S3 --> S4["Step4: テンプレートID（EKK0341B029）をセット"]
  S4 --> S5["Step5: 機能コード（funcCd）をセット"]
  S5 --> IF1{"kktkSvcKeiNoがnull/空か判定"}
  IF1 -->|"No: 値あり"| S6["テンプレートにKEY_KKTK_SVC_KEI_NOへセット"]
  IF1 -->|"Yes: 値なし"| S7["何もせず"]
  S6 --> IF2{"kikiChgNoがnull/空か判定"}
  S7 --> IF2
  IF2 -->|"No: 値あり"| S8["テンプレートにKEY_KIKI_CHG_NOへセット"]
  IF2 -->|"Yes: 値なし"| S9["何もせず"]
  S8 --> IF3{"rsvAplyYmdがnull/空か判定"}
  S9 --> IF3
  IF3 -->|"No: 値あり"| S10["テンプレートにKEY_RSV_APLY_YMDへセット"]
  IF3 -->|"Yes: 値なし"| S11["何もせず"]
  S10 --> S12["editInMsgCmnで上り情報生成"]
  S11 --> S12
  S12 --> RET["return （editInMsgCmnの戻り値）"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  S4 -.- NOTE1["EKK0341B029CBSMsg.TEMPLATEID = 'EKK0341B029' （機器提供サービス契約一覧照会（機器変更番号））"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S5 -.- NOTE2["EKK0341B029CBSMsg.FUNC_CODE = funcCd"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: `CAANMsg` オブジェクト（`EKK0341B029CBSMsg`クラス）をインスタンス化。
2. **Step2**: `fillCAANMSGNullMapping()` でテンプレートの全フィールドをNull初期化。
3. **Step3**: `editBasicCmn(param, template)` で共通部（業務メタ情報）を設定。
4. **Step4**: テンプレートID（`TEMPLATEID`）に `"EKK0341B029"` をセット。
5. **Step5**: 機能コード（`FUNC_CODE`）に `funcCd` をセット。
6. **Step6**: `kktkSvcKeiNo`（機器提供サービス契約番号）がnull/空でなければ、テンプレートの `KEY_KKTK_SVC_KEI_NO` にセット。
7. **Step7**: `kikiChgNo`（機器変更番号）がnull/空でなければ、テンプレートの `KEY_KIKI_CHG_NO` にセット。
8. **Step8**: `rsvAplyYmd`（予約適用年月日）がnull/空でなければ、テンプレートの `KEY_RSV_APLY_YMD` にセット。
9. **Step9**: `editInMsgCmn(param, template)` を呼び出し、SC上り用のマップデータを生成して返却。

---

#### 3. パラメータ分析

| No  | パラメータ名       | 型                         | 業務説明                                    |
| --- | ------------------ | -------------------------- | ------------------------------------------- |
| 1   | param              | IRequestParameterReadWrite | 業務共通データ、ユーザデータなどの保持     |
| 2   | funcCd             | String                     | 機能コード                                  |
| 3   | kktkSvcKeiNo       | String                     | 機器提供サービス契約番号                    |
| 4   | kikiChgNo          | String                     | 機器変更番号                                |
| 5   | 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 → editInMsgEKK0341B029` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B029` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B029` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B029` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B029` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B029` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B029` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B029` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B029` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editInMsgEKK0341B029` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0341B029SC` | private | EKK0341B029_機器提供サービス契約一覧照会（機器変更番号）処理 <br> 機器提供サービス契約一覧照会（機器変更番号）サービスインターフェースを呼び出します。 <br> |

---

#### 📋 Per-Branch 詳細ブロック — `editInMsgEKK0341B029()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(!JKKStringUtil.isNullBlank(kktkSvcKeiNo))` (L39424)

> 📌 ＫＥＹ＿機器提供サービス契約番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0341B029CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);` [➔ KEY_KKTK_SVC_KEI_NO="key_kktk_svc_kei_no"] \| |

##### Block 2 — 🔀 IF `(!JKKStringUtil.isNullBlank(kikiChgNo))` (L39430)

> 📌 ＫＥＹ＿機器変更番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0341B029CBSMsg.KEY_KIKI_CHG_NO, kikiChgNo);` [➔ KEY_KIKI_CHG_NO="key_kiki_chg_no"] \| |

##### Block 3 — 🔀 IF `(!JKKStringUtil.isNullBlank(rsvAplyYmd))` (L39436)

> 📌 ＫＥＹ＿予約適用年月日

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0341B029CBSMsg.KEY_RSV_APLY_YMD, rsvAplyYmd);` [➔ KEY_RSV_APLY_YMD="key_rsv_aply_ymd"] \| |

> **合計**: 3 blocks (1 depth levels)

### editResultRP_EKK1081E010SC()

---

#### 1. 役割

EKK1081E010 オーダ発行条件論理削除S-IFの出力マッピングを行う。  
具体的には、SCの戻り値として返却されたテンプレート配列・STATUS・エラーコード・エラーメッセージをもとに、業務側（BP）のコントロールマップへ最終的なエラー情報・メッセージを設定する。  
また、コントロールマップにエラー情報リストをセットし、必要な場合はサービスコール例外（SCCallException）をthrowする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editResultRP_EKK1081E010SC（result, param）"] --> S1["Step1: テンプレート配列（templates）をresultから取得"]
  S1 --> S2["Step2: STATUS（templateStatus）を取得"]
  S2 --> IF1{"returnCode != 0"}
  IF1 -->|Yes| S3["templateStatus = 9000に設定"]
  IF1 -->|No| S4["templateStatusはそのまま"]
  S3 --> S5["メッセージリソース存在判定"]
  S4 --> S5
  S5 --> IF2{"JCMAPLConstMgr.getString（'RETURN_MESSAGE_' + templateStatus） == null"}
  IF2 -->|Yes| S6["templateStatus = 0に設定"]
  IF2 -->|No| S7["templateStatusはそのまま"]
  S6 --> S8
  S7 --> S8
  S8["Step3: BPのRETURN_CODE取得"]
  S8 --> IF3{"obj == null"}
  IF3 -->|Yes| S9["bpStatus = -1"]
  IF3 -->|No| S10["bpStatus = Integer.parseInt（obj）"]
  S9 --> S11
  S10 --> S11
  S11["Step4: templateStatus > bpStatus 判定"]
  S11 --> IF4{"templateStatus > bpStatus"}
  IF4 -->|Yes| S12["BPコントロールマップにformatStatus/messageを設定"]
  IF4 -->|No| S13["何もせず次へ"]
  S12 --> S14["エラー情報リスト取得・設定"]
  S13 --> S14
  S14 --> IF5{"0 != returnCode || 0 != templateStatus"}
  IF5 -->|Yes| S15["throw SCCallException"]
  IF5 -->|No| S16["template.getMsgData（）を返却"]
  S15 --> END["例外スロー"]
  S16 --> END
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  S2 -.- NOTE1["EKK1081B001CBSMsg.STATUS = 'STATUS' （SC返却ステータス）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S5 -.- NOTE2["JCMAPLConstMgr.getString = メッセージリソース取得"]
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  S8 -.- NOTE3["SCControlMapKeys.RETURN_CODE = 'RETURN_CODE' （BP保持ステータス）"]
  style NOTE3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: `result` からテンプレート配列（`CAANMsg[] templates`）を取得、1件目を `template` とする。
2. **Step2**: `template` から STATUS（`EKK1081B001CBSMsg.STATUS`）を取得し、`templateStatus` とする。
3. **Step3**: `returnCode != 0` の場合、`templateStatus` を 9000 に強制設定する。
4. **Step4**: メッセージリソース（`RETURN_MESSAGE_${templateStatus}`）が存在しなければ `templateStatus` を0にリセット。
5. **Step5**: BP側の `RETURN_CODE` を取得。なければ `bpStatus = -1`。
6. **Step6**: `templateStatus > bpStatus` であれば、BPコントロールマップにformatStatus/messageを設定。
7. **Step7**: エラー情報リスト（`ERROR_INFO`）を `param` から取得し、TemplateErrorUtil.getErrorInfoで再設定。
8. **Step8**: `returnCode` または `templateStatus` が0でなければ SCCallException をthrowする。
9. **Step9**: 例外がなければ `template.getMsgData()` を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型                         | 業務説明                                          |
| --- | -------------- | -------------------------- | ------------------------------------------------- |
| 1   | result         | Map<?, ?>                  | SC実行結果（テンプレート配列・returnCode等含む）  |
| 2   | param          | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ                   |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editResultRP_EKK1081E010SC` | - |

---

#### 📋 Per-Branch 詳細ブロック — `editResultRP_EKK1081E010SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(returnCode != 0)` (L37514)

> 📌 ステータスの検査

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 9000;` |

##### Block 2 — 🔀 IF `(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)` [JCMAPLC="JCMAPLC", RETURN_MESSAGE_="return_message_"] (L37517)

> 📌 ← `templateStatus = template.getInt(EKK1081B001CBSMsg.STATUS)`

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `templateStatus = 0;` |
| 2 | 📦 VAR | `int bpStatus = 0;` |

##### Block 3 — 🔀 IF `(obj == null)` (L37523)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = -1;` |

##### Block 4 — ↪️ ELSE `(else)` (L37525)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));` [➔ RETURN_CODE="returnCode" (リターンコード)] |

##### Block 5 — 🔀 IF `(templateStatus > bpStatus)` (L37529)

> 📌 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)` (L37539)

> 📌 エラー情報のマップを取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `errList = new ArrayList<Object>();` |
| 2 | ⚡ EXEC | `param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));` [➔ ERROR_INFO="error_info"] |

##### Block 7 — 🔀 IF `(0 != returnCode || 0 != templateStatus)` (L37546)

> 📌 必要なら例外発生

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 💥 THROW | `throw new SCCallException("サービスインターフェイス呼出しでエラー発生", returnCode.toString(), Integer.valueOf(templateStatus));` |

> **合計**: 7 blocks (1 depth levels)

### editInMsg_EKK0351B003CBS()

---

#### 1. 役割

上りマッピング（オプションサービス契約履歴一覧照会）。
サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする。
具体的には、paramからヘッダー情報やコントロールマップ情報、ワークデータ（HAKKOSODCCWORKMAP）を取得し、テンプレートID・機能コード・サービス契約番号をCAANMsgテンプレートにセットしてSC呼出用データを構築する共通処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["editInMsg_EKK0351B003CBS（param）"] --> S1["Step1: テンプレートID（EKK0351B003）設定"]
  S1 --> S2["Step2: paramMap初期化"]
  S2 --> S3["Step3: SCインプット共通データをparamMapへセット"]
  S3 --> S4["Step4: CAANMsg（EKK0351B003CBSMsg）テンプレート生成"]
  S4 --> S5["Step5: テンプレートID・機能コード（一覧照会）をテンプレートに設定"]
  S5 --> S6["Step6: editBasicCmnで共通部を設定"]
  S6 --> S7["Step7: ワークデータ（HAKKOSODCCWORKMAP）取得"]
  S7 --> IF1{"inMap == null ||inMap.get（'svc_kei_no'） == null|| ''"}
  IF1 -->|Yes| S8["テンプレートKEY_SVC_KEI_NOをNull設定"]
  IF1 -->|No| S9["テンプレートKEY_SVC_KEI_NOにinMapのsvc_kei_noをセット"]
  S8 --> S10["テンプレート配列に追加"]
  S9 --> S10
  S10 --> S11["paramMapにテンプレート配列をセット"]
  S11 --> RET["return paramMap"]
  style IF1 fill:#ffcc00
  S1 -.- NOTE1["template_id = 'EKK0351B003' （オプションサービス契約履歴一覧照会）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. **Step1**: テンプレートIDに `"EKK0351B003"` を設定。
2. **Step2**: paramMap（HashMap）を初期化。
3. **Step3**: param（IRequestParameterReadOnly）からヘッダー情報・コントロールマップ情報をparamMapに格納（電文ID、ユースケースID、オペレーションID、サービス呼出区分、依頼先ホスト名、依頼元IPアドレス、依頼元画面ID、オペレータID）。
4. **Step4**: CAANMsg（EKK0351B003CBSMsg）テンプレートを生成。
5. **Step5**: テンプレートにテンプレートID・機能コード（一覧照会）をセット。
6. **Step6**: editBasicCmn(param, template)で共通部を設定。
7. **Step7**: paramからワークデータ`HAKKOSODCCWORKMAP`を取得（inMap）。
8. **Step8**: inMapがnullまたは`svc_kei_no`がnull/空の場合はテンプレート`KEY_SVC_KEI_NO`をNull設定。そうでなければinMapの`svc_kei_no`をセット。
9. **Step9**: テンプレート配列をparamMapにセットし、paramMapを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                          | 業務説明                             |
| --- | ------------ | --------------------------- | ------------------------------------ |
| 1   | param        | IRequestParameterReadOnly   | ユーザ、コントロール、ワーク等の入力 |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → editInMsg_EKK0351B003CBS` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getOpSvcKeiList` | private | オプションサービス契約一覧照会（サービス契約番号）<br> <br> オプションサービス契約一覧照会（サービス契約番号）サービスインターフェイスにより<br> サービス契約番号に紐づくオプションサービス契約の一覧を取得します。<br> <b… |
| 2 | `getOpSvcKeiNotDslList` | private | オプションサービス契約一覧照会（サービス契約番号）<br> <br> オプションサービス契約一覧照会（サービス契約番号）サービスインターフェイスにより<br> サービス契約番号に紐づく解約済ではないオプションサービス契約の一覧を取得します。… |
---
---

#### 📋 Per-Branch 詳細ブロック — `editInMsg_EKK0351B003CBS()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))` (L35919)

> 📌 オプションサービス契約履歴一覧照会マップ.サービス契約番号 → ＫＥＹ＿サービス契約番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO);` [➔ KEY_SVC_KEI_NO="key_svc_kei_no"] \| |

##### Block 2 — ↪️ ELSE `(else)` (L35924)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0351B002CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));` [➔ KEY_SVC_KEI_NO="key_svc_kei_no"] \| |
| 2 | ⚡ EXEC | `CAANMsg[] templates = new CAANMsg[1];` |
| 3 | ⚡ EXEC | `templates[0] = template;` |
| 4 | 📋 SET | `paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);` [➔ TEMPLATE_LIST_KEY="template_list_key"] \| |

> **合計**: 2 blocks (1 depth levels)



---

## 📋 全分岐詳細 (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)

### `editErrorInfoEKK0881A010CBS()` (L41709) — 6 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (returnCode != 0) | - | - | - | L41714 |
| 2 | 🔀 IF | D0 | (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) | - | - | - | L41718 |
| 3 | 🔀 IF | D0 | (obj == null) | - | - | - | L41725 |
| 4 | 🔀 ELSE | D0 | (else) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L41730 |
| 5 | 🔀 IF | D0 | (templateStatus > bpStatus) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L41734 |
| 6 | ↩️ RETURN | D0 | param | - | - | - | L41743 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["editErrorInfoEKK0881A010CBS()"] --> CF0{"制御フロー分岐"}
  B0["IF: （returnCode != 0）"]
  CF0 -->|"L41714"| B0
  B1["IF: （JCMAPLConstMgr.getString（'RETURN_MESSAG…"]
  CF0 -->|"L41718"| B1
  B2["IF: （obj == null）"]
  CF0 -->|"L41725"| B2
  B3["ELSE"]
  CF0 -->|"L41730"| B3
  B4["IF: （templateStatus > bpStatus）"]
  CF0 -->|"L41734"| B4
  B5["RETURN: param"]
  CF0 -->|"L41743"| B5
```

### `editErrorInfoEKK0891A010CBS()` (L41191) — 6 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (returnCode != 0) | - | - | - | L41196 |
| 2 | 🔀 IF | D0 | (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) | - | - | - | L41200 |
| 3 | 🔀 IF | D0 | (obj == null) | - | - | - | L41207 |
| 4 | 🔀 ELSE | D0 | (else) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L41212 |
| 5 | 🔀 IF | D0 | (templateStatus > bpStatus) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L41216 |
| 6 | ↩️ RETURN | D0 | param | - | - | - | L41225 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["editErrorInfoEKK0891A010CBS()"] --> CF0{"制御フロー分岐"}
  B0["IF: （returnCode != 0）"]
  CF0 -->|"L41196"| B0
  B1["IF: （JCMAPLConstMgr.getString（'RETURN_MESSAG…"]
  CF0 -->|"L41200"| B1
  B2["IF: （obj == null）"]
  CF0 -->|"L41207"| B2
  B3["ELSE"]
  CF0 -->|"L41212"| B3
  B4["IF: （templateStatus > bpStatus）"]
  CF0 -->|"L41216"| B4
  B5["RETURN: param"]
  CF0 -->|"L41225"| B5
```

### `editErrorInfoEZM0321A010CBS()` (L41445) — 6 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (returnCode != 0) | - | - | - | L41450 |
| 2 | 🔀 IF | D0 | (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) | - | - | - | L41454 |
| 3 | 🔀 IF | D0 | (obj == null) | - | - | - | L41461 |
| 4 | 🔀 ELSE | D0 | (else) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L41466 |
| 5 | 🔀 IF | D0 | (templateStatus > bpStatus) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L41470 |
| 6 | ↩️ RETURN | D0 | param | - | - | - | L41479 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["editErrorInfoEZM0321A010CBS()"] --> CF0{"制御フロー分岐"}
  B0["IF: （returnCode != 0）"]
  CF0 -->|"L41450"| B0
  B1["IF: （JCMAPLConstMgr.getString（'RETURN_MESSAG…"]
  CF0 -->|"L41454"| B1
  B2["IF: （obj == null）"]
  CF0 -->|"L41461"| B2
  B3["ELSE"]
  CF0 -->|"L41466"| B3
  B4["IF: （templateStatus > bpStatus）"]
  CF0 -->|"L41470"| B4
  B5["RETURN: param"]
  CF0 -->|"L41479"| B5
```

### `editInMsg_EKK0351B003CBS()` (L35870) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (inMap == null ｜｜ inMap.get("svc_kei_no") == null ｜｜ "".equals(inMap.get("svc_kei_no"))) | オプションサービス契約履歴一覧照会マップ.サービス契約番号 → ＫＥＹ＿サービス契約番号 | - | - | L35919 |
| 2 | 🔀 ELSE | D0 | (else) | - | - | - | L35924 |
| 3 | ↩️ RETURN | D0 | paramMap | - | - | - | L35932 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["editInMsg_EKK0351B003CBS()"] --> CF0{"制御フロー分岐"}
  B0["IF: （inMap == null || inMap.get（'svc_kei_no'…"]
  CF0 -->|"L35919"| B0
  B1["ELSE"]
  CF0 -->|"L35924"| B1
  B2["RETURN: paramMap"]
  CF0 -->|"L35932"| B2
```

### `editInMsgEDK0301B060()` (L40432) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(kktkSvcKeiNo)) | ＫＥＹ＿機器変更番号 | - | - | L40454 |
| 2 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(kikiChgNo)) | 上り情報を生成 | - | - | L40460 |
| 3 | ↩️ RETURN | D0 | editInMsgCmn(param, template) | - | - | - | L40466 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["editInMsgEDK0301B060()"] --> CF0{"制御フロー分岐"}
  B0["IF: （!JKKStringUtil.isNullBlank（kktkSvcKeiNo…"]
  CF0 -->|"L40454"| B0
  B1["IF: （!JKKStringUtil.isNullBlank（kikiChgNo））"]
  CF0 -->|"L40460"| B1
  B2["RETURN: editInMsgCmn（param, template）"]
  CF0 -->|"L40466"| B2
```

### `editInMsgEKK0341B001()` (L40344) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(kikiSeizoNo)) | ＫＥＹ＿宅内機器型式コード | - | - | L40366 |
| 2 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(taknkikiModelCd)) | 上り情報を生成 | - | - | L40372 |
| 3 | ↩️ RETURN | D0 | editInMsgCmn(param, template) | - | - | - | L40378 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["editInMsgEKK0341B001()"] --> CF0{"制御フロー分岐"}
  B0["IF: （!JKKStringUtil.isNullBlank（kikiSeizoNo）…"]
  CF0 -->|"L40366"| B0
  B1["IF: （!JKKStringUtil.isNullBlank（taknkikiMode…"]
  CF0 -->|"L40372"| B1
  B2["RETURN: editInMsgCmn（param, template）"]
  CF0 -->|"L40378"| B2
```

### `editInMsgEKK0341B008()` (L40256) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(svcKeiNo)) | ＫＥＹ＿機器提供サービス契約番号 | - | - | L40278 |
| 2 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(kktkSvcKeiNo)) | 上り情報を生成 | - | - | L40284 |
| 3 | ↩️ RETURN | D0 | editInMsgCmn(param, template) | - | - | - | L40290 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["editInMsgEKK0341B008()"] --> CF0{"制御フロー分岐"}
  B0["IF: （!JKKStringUtil.isNullBlank（svcKeiNo））"]
  CF0 -->|"L40278"| B0
  B1["IF: （!JKKStringUtil.isNullBlank（kktkSvcKeiNo…"]
  CF0 -->|"L40284"| B1
  B2["RETURN: editInMsgCmn（param, template）"]
  CF0 -->|"L40290"| B2
```

### `editInMsgEKK0341B029()` (L39401) — 4 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(kktkSvcKeiNo)) | ＫＥＹ＿機器変更番号 | - | - | L39424 |
| 2 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(kikiChgNo)) | ＫＥＹ＿予約適用年月日 | - | - | L39430 |
| 3 | 🔀 IF | D0 | (!JKKStringUtil.isNullBlank(rsvAplyYmd)) | 上り情報を生成 | - | - | L39436 |
| 4 | ↩️ RETURN | D0 | editInMsgCmn(param, template) | - | - | - | L39442 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["editInMsgEKK0341B029()"] --> CF0{"制御フロー分岐"}
  B0["IF: （!JKKStringUtil.isNullBlank（kktkSvcKeiNo…"]
  CF0 -->|"L39424"| B0
  B1["IF: （!JKKStringUtil.isNullBlank（kikiChgNo））"]
  CF0 -->|"L39430"| B1
  B2["IF: （!JKKStringUtil.isNullBlank（rsvAplyYmd））"]
  CF0 -->|"L39436"| B2
  B3["RETURN: editInMsgCmn（param, template）"]
  CF0 -->|"L39442"| B3
```

### `editResultRP_EKK1081E010SC()` (L37502) — 9 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (returnCode != 0) | - | - | - | L37514 |
| 2 | 🔀 IF | D0 | (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) | - | - | - | L37517 |
| 3 | 🔀 IF | D0 | (obj == null) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L37523 |
| 4 | 🔀 ELSE | D0 | (else) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L37525 |
| 5 | 🔀 IF | D0 | (templateStatus > bpStatus) | BPにサービスコンポーネントのステータスを設定する。 | - | - | L37529 |
| 6 | 🔀 IF | D0 | (errList == null) | コントロールマップに設定 | - | - | L37539 |
| 7 | 🔀 IF | D0 | (0 != returnCode ｜｜ 0 != templateStatus) | 実行結果を返す | - | - | L37546 |
| 8 | · ⚠️ THROW | D1 | new SCCallException("サービスインターフェイス呼出しでエラー発生", returnCode.toString(), Integer.valueOf(templateStatus)) | 実行結果を返す | - | - | L37548 |
| 9 | ↩️ RETURN | D0 | template.getMsgData() | - | - | - | L37552 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["editResultRP_EKK1081E010SC()"] --> CF0{"制御フロー分岐"}
  B0["IF: （returnCode != 0）"]
  CF0 -->|"L37514"| B0
  B1["IF: （JCMAPLConstMgr.getString（'RETURN_MESSAG…"]
  CF0 -->|"L37517"| B1
  B2["IF: （obj == null）"]
  CF0 -->|"L37523"| B2
  B3["ELSE"]
  CF0 -->|"L37525"| B3
  B4["IF: （templateStatus > bpStatus）"]
  CF0 -->|"L37529"| B4
  B5["IF: （errList == null）"]
  CF0 -->|"L37539"| B5
  subgraph SG6["IF: （0 != returnCode || 0 != templateStatus）"]
    direction TB
    C6_0["THROW: new SCCallException（'サービスインターフ…"]
  end
  CF0 -->|"L37546"| SG6
  B7["RETURN: template.getMsgData（）"]
  CF0 -->|"L37552"| B7
```

> **制御フロー合計**: 9 methods, 43 branches
