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

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

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

<a id="method-callEKK0881A010_SC"></a>
### callEKK0881A010_SC()

---

#### 1. 役割

回線使用契約一意照会SIFを呼び出す業務処理。  
具体的には、入力パラメータ（param, inHash など）から必要な情報（例：回線使用契約番号 `KEY_KAISEN_USE_KEI_NO`）を取得し、SCリクエスト用メッセージ（CAANMsg）を編集・セットしてサービスコンポーネント呼び出し（ServiceComponentRequestInvoker）を実施し、戻り値（resultMsgs）から結果データを抽出・マッピング（mappingEKK0881A010SCOutMsg）した上で、エラー情報もコントロールマップにセットする。  
本メソッドは、editInMsgCmn、fillCAANMSGNullMapping、editBasicCmn、editErrorInfoEKK0881A010CBS など複数の内部編集/マッピングメソッドを呼び出す共通SC連携処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0881A010_SC（param, handle, inHash, resultHash, funcCode）"] --> S1["Step1: editInMsgCmn（param）でサービスIF共通情報を設定"]
  S1 --> S2["Step2: CAANMsg（EKK0881A010CBSMsg） のインスタンス生成"]
  S2 --> S3["Step3: fillCAANMSGNullMapping（template, new EKK0881A010CBSMsg（）.getContents（））（全条件Nullマッピング）"]
  S3 --> S4["Step4: テンプレート項目セット （TEMPLATEID, FUNC_CODE, KEY_KAISEN_USE_KEI_NO）"]
  S4 --> NOTE1["TEMPLATEID = 'EKK0881A010' （回線使用契約一意照会）"]
  S4 --> S5["Step5: editBasicCmn（param, template）"]
  S5 --> S6["Step6: sIFRequest.put（JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S6 --> S7["Step7: ServiceComponentRequestInvokerでSC呼出し"]
  S7 --> S8["Step8: 戻り値の取得 resultMsgs = （CAANMsg[]）sIFResult.get（JCMConstants.TEMPLATE_LIST_KEY）"]
  S8 --> S9["Step9: ステータスコードの取得 status = template.getInt（JCMConstants.STATUS_INT_KEY）"]
  S9 --> IF1{"status == 0"}
  IF1 -.- NOTE2["status=0 （正常終了）"]
  IF1 -->|"Yes"| S10["Step10: mappingEKK0881A010SCOutMsg（resultMsgs）で結果マッピングしresultHashへput"]
  IF1 -->|"No"| S11["Step11: （エラー）"]
  S10 --> S12["Step12: editErrorInfoEKK0881A010CBS（param, resultMsgs, status）でエラー情報編集"]
  S11 --> S12
  S12 --> S13["Step13: コントロールマップにTemplateErrorUtil.getErrorInfo（sIFResult, errList）をセット"]
  S13 --> S14["Step14: 処理終了（SCCallExceptionはスローしない）"]

  style IF1 fill:#ffcc00
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. サービスIF共通の情報をeditInMsgCmn(param)で初期化。
2. EKK0881A010CBSMsg型のCAANMsgインスタンスを生成。
3. fillCAANMSGNullMappingで全項目をNull初期化。
4. テンプレートID（TEMPLATEID = 'EKK0881A010'）、機能コード（FUNC_CODE = funcCode）、回線使用契約番号（KEY_KAISEN_USE_KEI_NO = inHash.get(JKKHakkoSODConstCC.KEY_KAISEN_USE_KEI_NO)）をセット。
5. editBasicCmnで共通基本情報を付与。
6. sIFRequestにメッセージをセット。
7. ServiceComponentRequestInvokerインスタンスでSIF呼出。
8. 実行結果（CAANMsg[]）を取得。
9. ステータスコード（STATUS_INT_KEY）を取得。
10. ステータスが0（正常）の場合は、mappingEKK0881A010SCOutMsgで業務用データとしてresultHashに格納。
11. ステータスが0以外の場合はエラー扱い。
12. editErrorInfoEKK0881A010CBSでエラー情報を編集しparamに反映。
13. コントロールマップへTemplateErrorUtil.getErrorInfoをセット。
14. SCCallExceptionはスローせず終了。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 3   | inHash       | HashMap<String, Object>    | SC入力パラメータマップ                                |
| 4   | resultHash   | HashMap<String, Object>    | SC結果データマップ                                    |
| 5   | funcCode     | String                     | 機能コード                                            |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0881A010_SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getDammyPplanCd` | private | ネット光コンセント方式・既設賃貸マンション(光化マンション)の場合に、 棟内速度コードよりダミーの料金プランコードを取得する |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK0881A010_SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(status == 0)` (L41649)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `resultHash.put(` |
| 2 | ⚡ EXEC | `mappingEKK0881A010SCOutMsg(resultMsgs));` |

##### Block 2 — 🔀 IF `(errList == null)` (L41660)

> 📌 エラー情報のマップを取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `errList = new ArrayList<Object>();` |

> **合計**: 2 blocks (1 depth levels)

### callEZM0321A010_SC()

---

#### 1. 役割

業務パラメータ一意照会検索を呼び出す業務処理。  
具体的には、業務パラメータ管理システム（EZM0321A010）に対して、editInMsgCmnで共通情報を作成し、mappingEZM0321A010SCInMsgで業務パラメータの条件を設定したテンプレート（CAANMsg）をSC呼出し用に構築。ServiceComponentRequestInvokerで実際に呼び出しを行い、戻り値（CAANMsg[]）から業務パラメータ設定値（WORK_PARAM_SETTE_VALUE）を取得して返却する。エラーがあればeditErrorInfoEZM0321A010CBSでparamへセットし、コントロールマップにもエラー情報を格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEZM0321A010_SC（param, handle, inHash, funcCode）"] --> S1["Step1: editInMsgCmn（param）でサービスIF共通情報を設定"]
  S1 --> S2["Step2: CAANMsg（EZM0321A010CBSMsg）インスタンス生成"]
  S2 --> S3["Step3: mappingEZM0321A010SCInMsg（template, inHash, funcCode）で条件設定"]
  S3 --> S4["Step4: editBasicCmn（param, template）"]
  S4 --> S5["Step5: sIFRequest.put（JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S5 --> S6["Step6: ServiceComponentRequestInvokerでSC呼出し"]
  S6 --> S7["Step7: resultMsgs取得 （CAANMsg[] resultMsgs = ... ）"]
  S7 --> S8["Step8: status = template.getInt（JCMConstants.STATUS_INT_KEY）"]
  S8 --> S9["Step9: editErrorInfoEZM0321A010CBS（param, resultMsgs, status）"]
  S9 --> S10["Step10: コントロールマップにTemplateErrorUtil.getErrorInfo（sIFResult, errList）をセット"]
  S10 --> S11["Step11: ezm0321a010Msg1List = ezm0321a010Msg.getCAANMsgList（EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST）"]
  S11 --> IF1{"ezm0321a010Msg1List != null && 0 < ezm0321a010Msg1List.length"}
  IF1 -.- NOTE1["WORK_PARAM_SETTE_VALUE （業務パラメータ設定値）"]
  IF1 -->|"Yes"| S12["Step12: workParamSetteValue = template.getString（EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE）"]
  IF1 -->|"No"| S13["Step13: workParamSetteValue = ''"]
  S12 --> RET["return workParamSetteValue"]
  S13 --> RET

  style IF1 fill:#ffcc00
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. editInMsgCmnでサービスIF共通情報を初期化。
2. EZM0321A010CBSMsg型のCAANMsgインスタンス生成。
3. mappingEZM0321A010SCInMsgでinHash, funcCodeを元にテンプレートへ条件を設定。
4. editBasicCmnで共通基本情報を付与。
5. SC呼出用リクエストにテンプレートセット。
6. ServiceComponentRequestInvokerで実際にSC呼出。
7. CAANMsg[] resultMsgsとして結果取得。
8. ステータスコード（STATUS_INT_KEY）を取得。
9. editErrorInfoEZM0321A010CBSでエラー情報を編集。
10. コントロールマップにエラー情報を格納。
11. CAANMsg[] ezm0321a010Msg1Listを取得。
12. ezm0321a010Msg1Listが取得できれば最初の要素からWORK_PARAM_SETTE_VALUEを取り出し返却。
13. 取得できなければ空文字で返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 3   | inHash       | HashMap<String, Object>    | SC入力パラメータマップ                                |
| 4   | funcCode     | String                     | 機能コード                                            |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEZM0321A010_SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getDammyPplanCd` | private | ネット光コンセント方式・既設賃貸マンション(光化マンション)の場合に、 棟内速度コードよりダミーの料金プランコードを取得する |
| 2 | `getDummySvcKeiNo` | private | チェック対象外とするダミーサービス契約番号を取得します。 |

---

#### 📋 Per-Branch 詳細ブロック — `callEZM0321A010_SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(errList == null)` (L41393)

> 📌 エラー情報のマップを取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `errList = new ArrayList<Object>();` |

##### Block 2 — 🔀 IF `(ezm0321a010Msg1List != null && 0 < ezm0321a010Msg1List.length)` (L41405)

> 📌 業務パラメータ一意照会

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template = ezm0321a010Msg1List[0];` |
| 2 | ⚡ EXEC | `workParamSetteValue = template.getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);` [➔ WORK_PARAM_SETTE_VALUE="work_param_sette_value"] \| |

> **合計**: 2 blocks (1 depth levels)

### callEKK0091A010_SC()

---

#### 1. 役割

サービス契約一意照会SIFを呼び出す業務処理。  
具体的には、サービス契約番号（svcKeiNo）などを入力として、editInMsgCmnで共通情報を作成し、CAANMsgテンプレートに各種必要項目（TEMPLATEID, FUNC_CODE, KEY_SVC_KEI_NO）をセットし、ServiceComponentRequestInvokerでSCを呼び出す。戻り値から結果データを抽出し、KOTEI_IP_AD_8_DIV（固定IPアドレス8区分）を取得して返却する。エラー時はエラー情報をparamにセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0091A010_SC（param, handle, svcKeiNo, funcCode）"] --> S1["Step1: editInMsgCmn（param）でサービスIF共通情報を設定"]
  S1 --> S2["Step2: CAANMsg（EKK0091A010CBSMsg）インスタンス生成"]
  S2 --> S3["Step3: fillCAANMSGNullMapping（template, new EKK0091A010CBSMsg（）.getContents（））"]
  S3 --> S4["Step4: テンプレート項目セット （TEMPLATEID, FUNC_CODE, KEY_SVC_KEI_NO）"]
  S4 --> NOTE1["TEMPLATEID = 'EKK0091A010' （サービス契約一意照会）"]
  S4 --> S5["Step5: editBasicCmn（param, template）"]
  S5 --> S6["Step6: sIFRequest.put（JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S6 --> S7["Step7: ServiceComponentRequestInvokerでSC呼出し"]
  S7 --> S8["Step8: resultMsgs取得 （CAANMsg[] resultMsgs = ... ）"]
  S8 --> S9["Step9: status = template.getInt（JCMConstants.STATUS_INT_KEY）"]
  S9 --> IF1{"status == 0"}
  IF1 -->|"Yes"| S10["Step10: msgList = resultMsgs[0].getMsgData（）.get（EKK0091A010CBSMsg.EKK0091A010CBSMSG1LIST）"]
  S10 --> IF2{"msgList != null && msgList.length > 0"}
  IF2 -->|"Yes"| S11["Step11: KOTEI_IP_AD_8_DIV = eKK0091A010SCHash.get（EKK0091A010CBSMsg1List.KOTEI_IP_AD_8）"]
  IF2 -->|"No"| S12["Step12: KOTEI_IP_AD_8_DIV = ''"]
  IF1 -->|"No"| S12
  S11 --> RET["return KOTEI_IP_AD_8_DIV"]
  S12 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. editInMsgCmnでサービスIF共通情報初期化。
2. EKK0091A010CBSMsgのCAANMsgテンプレート生成。
3. fillCAANMSGNullMappingで全項目Null初期化。
4. テンプレートID（TEMPLATEID = 'EKK0091A010'）、機能コード（FUNC_CODE）、サービス契約番号（KEY_SVC_KEI_NO）をセット。
5. editBasicCmnで基本情報セット。
6. SC呼出用リクエストにテンプレートをセット。
7. ServiceComponentRequestInvokerでSIF呼出。
8. 結果の取得。
9. ステータス取得。
10. ステータスが0（正常）の場合、msgListを取得し、KOTEI_IP_AD_8_DIVを抽出。
11. 取得できなければ空文字で返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 3   | svcKeiNo     | String                     | サービス契約番号                                      |
| 4   | funcCode     | String                     | 機能コード                                            |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0091A010_SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `hakkoCourseChgSOD` | public | 料金プランコード変更(ネット)に伴うサービスオーダを発行します。 <br> 認証IDが変わらず、料金プランコードのみが変更となるコース変更(コース変更取消)の際に発行が必要なサービスオーダを オーダ発行条件、オーダ情報作成ワークに登録します… |
| 2 | `kaihkOdrCtrl` | private | 回復オーダ制御処理<br> |
| 3 | `koteiIpAd8DivOdrCtrl` | private | 固定IPアドレス８区分の制御処理<br> |
| 4 | `malwareBlockingDivOdrCtrl` | private | マルウェアブロッキングの制御処理<br> |
| 5 | `taiikiSeigenOdrCtrl` | private | 帯域制限設定・解除オーダ制御処理<br> |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK0091A010_SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(status == 0)` (L41042)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `CAANMsg msg = resultMsgs[0];` |

###### · Block 1.1 — 🔀 IF `(msgList != null && msgList.length > 0)` (L41047)

> 📌 結果の抽出

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `HashMap<String, Object> eKK0091A010SCHash = msgList[0].getMsgData();` |

> **合計**: 2 blocks (2 depth levels)

### callEZM0121A010SC()

---

#### 1. 役割

電話番号一意照会SIFを呼び出す業務処理。  
具体的には、editInMsgCmnで共通情報を作成し、mappingEZM0121A010SCInMsgで電話番号一意照会用の条件をセットしたテンプレート（CAANMsg）を構成し、ServiceComponentRequestInvokerでSC呼出しを行う。結果はresultMsgsに格納され、正常終了時にはresultHashにmappingEZM0121A010SCOutMsgの結果をputする。戻り値はstatus（int）であり、status=0の場合のみ正常。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEZM0121A010SC（param, handle, inHash, resultHash, funcCode）"] --> S1["Step1: editInMsgCmn（param）で共通情報を初期化"]
  S1 --> S2["Step2: CAANMsg（EZM0121A010CBSMsg）インスタンス生成"]
  S2 --> S3["Step3: mappingEZM0121A010SCInMsg（template, inHash, funcCode）で条件セット"]
  S3 --> S4["Step4: editBasicCmn（param, template）"]
  S4 --> S5["Step5: sIFRequest.put（JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S5 --> S6["Step6: ServiceComponentRequestInvokerでSC呼出し"]
  S6 --> S7["Step7: 結果取得 resultMsgs = （CAANMsg[]）sIFResult.get（JCMConstants.TEMPLATE_LIST_KEY）"]
  S7 --> S8["Step8: ステータスコード status = template.getInt（JCMConstants.STATUS_INT_KEY）"]
  S8 --> IF1{"status == 0"}
  IF1 -->|"Yes"| S9["Step9: resultHash.put（TEMPLATE_ID_EZM0121A010, mappingEZM0121A010SCOutMsg（resultMsgs））"]
  IF1 -->|"No"| S10["Step10: 何もしない"]
  S9 --> RET["return status"]
  S10 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. editInMsgCmnで共通情報を初期化。
2. EZM0121A010CBSMsg型のCAANMsgインスタンス生成。
3. mappingEZM0121A010SCInMsgでinHash, funcCodeをテンプレートにセット。
4. editBasicCmnで共通基本情報セット。
5. sIFRequestにテンプレートセット。
6. ServiceComponentRequestInvokerでSC呼出し。
7. 結果（CAANMsg[]）を取得。
8. ステータスコード取得。
9. status=0ならresultHashにmappingEZM0121A010SCOutMsgの結果をput。
10. status≠0なら何もしない。
11. statusを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 3   | inHash       | HashMap<String, Object>    | SC入力パラメータマップ                                |
| 4   | resultHash   | HashMap<String, Object>    | SC結果データマップ                                    |
| 5   | funcCode     | String                     | 機能コード                                            |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEZM0121A010SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `isMonaiBmp` | private | 網内番ポかどうか判定します。 |
| 2 | `isTajgsTelNo` | private | 電話番号が、他事業者発行の電話番号か判定します。 <br> |
| 3 | `isTelnoSODJudge` | private | SOD発行条件パターンの提示を元に電話番号の状態を確認して判定します。 |

---

#### 📋 Per-Branch 詳細ブロック — `callEZM0121A010SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(status == 0)` (L42243)

> 📌 ステータスが0以外はエラーとなっている

> （直接の処理内容なし — ネストされた子ブロックを参照）

> **合計**: 1 blocks (1 depth levels)

### callEKK0891A010_SC()

---

#### 1. 役割

提供方式契約一意照会を呼び出す業務処理。  
具体的には、editInMsgCmnで共通情報を初期化し、mappingEKK0891A010SCInMsgで入力条件をテンプレートにセットし、editBasicCmnで共通項目を追加のうえ、ServiceComponentRequestInvokerでSC呼び出しを行う。結果データをmappingEKK0891A010SCOutMsgでresultHashに格納し、editErrorInfoEKK0891A010CBSでparamにエラー情報をセット、コントロールマップにもエラー情報を格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0891A010_SC（param, handle, inHash, resultHash, funcCode）"] --> S1["Step1: editInMsgCmn（param）で共通情報初期化"]
  S1 --> S2["Step2: CAANMsg（EKK0891A010CBSMsg）インスタンス生成"]
  S2 --> S3["Step3: mappingEKK0891A010SCInMsg（template, inHash, funcCode）で条件セット"]
  S3 --> S4["Step4: editBasicCmn（param, template）"]
  S4 --> S5["Step5: sIFRequest.put（JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S5 --> S6["Step6: ServiceComponentRequestInvokerでSC呼出し"]
  S6 --> S7["Step7: 結果取得 resultMsgs = （CAANMsg[]）sIFResult.get（JCMConstants.TEMPLATE_LIST_KEY）"]
  S7 --> S8["Step8: ステータスコード status = template.getInt（JCMConstants.STATUS_INT_KEY）"]
  S8 --> IF1{"status == 0"}
  IF1 -->|"Yes"| S9["Step9: resultHash.put（TEMPLATE_ID_EKK0891A010, mappingEKK0891A010SCOutMsg（resultMsgs））"]
  IF1 -->|"No"| S10["Step10: 何もしない"]
  S9 --> S11["Step11: editErrorInfoEKK0891A010CBS（param, resultMsgs, status）"]
  S10 --> S11
  S11 --> S12["Step12: コントロールマップにTemplateErrorUtil.getErrorInfo（sIFResult, errList）をセット"]
  S12 --> RET["return"]

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. editInMsgCmnで共通情報を初期化。
2. EKK0891A010CBSMsg型のCAANMsgインスタンス生成。
3. mappingEKK0891A010SCInMsgでinHash, funcCodeをテンプレートにセット。
4. editBasicCmnで共通項目を付与。
5. sIFRequestにテンプレートセット。
6. ServiceComponentRequestInvokerでSIF呼出し。
7. 結果（CAANMsg[]）を取得。
8. ステータスコード取得。
9. status=0ならmappingEKK0891A010SCOutMsgでresultHashにデータ格納。
10. status≠0なら何もしない。
11. editErrorInfoEKK0891A010CBSでparamにエラー情報をセット。
12. コントロールマップにTemplateErrorUtil.getErrorInfoを格納。
13. 終了。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 3   | inHash       | HashMap<String, Object>    | SC入力パラメータマップ                                |
| 4   | resultHash   | HashMap<String, Object>    | SC結果データマップ                                    |
| 5   | funcCode     | String                     | 機能コード                                            |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0891A010_SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `hakkoSOD` | public | サービスオーダ発行処理 <br> パラメータの件数分<br> サービスオーダ登録処理を呼び出します。<br> <br> |
| 2 | `koteiIpAd8DivOdrCtrl` | private | 固定IPアドレス８区分の制御処理<br> |
| 3 | `malwareBlockingDivOdrCtrl` | private | マルウェアブロッキングの制御処理<br> |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK0891A010_SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(status == 0)` (L41109)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `resultHash.put(` |
| 2 | ⚡ EXEC | `mappingEKK0891A010SCOutMsg(resultMsgs));` |

##### Block 2 — 🔀 IF `(errList == null)` (L41120)

> 📌 エラー情報のマップを取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `errList = new ArrayList<Object>();` |

> **合計**: 2 blocks (1 depth levels)

### callEKK0191B001_2SC()

---

#### 1. 役割

サービス契約内訳<eo光電話>一覧照会（サービス契約番号）SIFを呼び出す業務処理。  
具体的には、param, handle, svcKeiNo, funcCodeから、editInMsgCmnで共通情報を作成し、CAANMsgテンプレート（EKK0191B001CBSMsg）にTEMPLATEID, FUNC_CODE, KEY_SVC_KEI_NOをセット。ServiceComponentRequestInvokerでSC呼出し実施、結果からmsgListを抽出し、正常時はresultHashに「EKK0191B001」キーで格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0191B001_2SC（param, handle, svcKeiNo, resultHash, funcCode）"] --> S1["Step1: editInMsgCmn（param）で共通情報初期化"]
  S1 --> S2["Step2: CAANMsg（EKK0191B001CBSMsg）インスタンス生成"]
  S2 --> S3["Step3: fillCAANMSGNullMapping（template, new EKK0191B001CBSMsg（）.getContents（））"]
  S3 --> S4["Step4: テンプレート項目セット （TEMPLATEID, FUNC_CODE, KEY_SVC_KEI_NO）"]
  S4 --> NOTE1["TEMPLATEID = 'EKK0191B001' （サービス契約内訳<eo光電話>一覧照会）"]
  S4 --> S5["Step5: editBasicCmn（param, template）"]
  S5 --> S6["Step6: sIFRequest.put（JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template}）"]
  S6 --> S7["Step7: ServiceComponentRequestInvokerでSC呼出し"]
  S7 --> S8["Step8: 結果取得 resultMsgs = （CAANMsg[]）sIFResult.get（JCMConstants.TEMPLATE_LIST_KEY）"]
  S8 --> S9["Step9: ステータスコード status = template.getInt（JCMConstants.STATUS_INT_KEY）"]
  S9 --> IF1{"status == 0"}
  IF1 -->|"Yes"| S10["Step10: msgList = （CAANMsg[]）msg.getMsgData（）.get（EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST）"]
  S10 --> S11["Step11: resultHash.put（'EKK0191B001', msgList）"]
  IF1 -->|"No"| S12["Step12: 何もしない"]
  S11 --> RET["return status"]
  S12 --> RET

  style IF1 fill:#ffcc00
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. editInMsgCmnで共通情報を初期化。
2. EKK0191B001CBSMsg型のCAANMsgインスタンス生成。
3. fillCAANMSGNullMappingで全項目Null初期化。
4. テンプレートID（TEMPLATEID = 'EKK0191B001'）、機能コード（FUNC_CODE）、サービス契約番号（KEY_SVC_KEI_NO）をセット。
5. editBasicCmnで基本情報セット。
6. sIFRequestにテンプレートセット。
7. ServiceComponentRequestInvokerでSIF呼出し。
8. 結果（CAANMsg[]）を取得。
9. ステータスコード取得。
10. status=0ならmsgListを抽出し、resultHashに「EKK0191B001」キーでput。
11. 結果statusを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                         | 業務説明                                              |
| --- | ------------ | -------------------------- | ----------------------------------------------------- |
| 1   | param        | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2   | handle       | SessionHandle              | セッション管理ハンドル                                |
| 3   | svcKeiNo     | String                     | サービス契約番号                                      |
| 4   | resultHash   | HashMap<String, Object>    | SC結果データマップ                                    |
| 5   | funcCode     | String                     | 機能コード                                            |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0191B001_2SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `opSetOdrCtrl` | private | オプション設定オーダ制御処理<br> |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK0191B001_2SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(status == 0)` (L40831)

> 📌 ステータスが0以外はエラーとなっている

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `CAANMsg msg = resultMsgs[0];` |
| 2 | 📥 GET | `CAANMsg[] msgList = (CAANMsg[])msg.getMsgData().get(EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST);` |
| 3 | 📋 SET | `resultHash.put("EKK0191B001", msgList);` |

> **合計**: 1 blocks (1 depth levels)

### callEKK0341B001SC()

---

#### 1. 役割

EKK0341B001_機器提供サービス契約一覧照会（機器製造番号）処理。  
機器提供サービス契約一覧照会サービスインターフェースを呼び出し、上りマッピングでリクエストメッセージを作成し、callSvcInterでSCを呼び出し、結果（CAANMsg[]）を返却する。  
本メソッドは editInMsgEKK0341B001 および callSvcInter を呼び出す共通照会処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0341B001SC（handle, param, funcCd, kikiSeizoNo, taknkikiModelCd）"] --> S1["Step1: editInMsgEKK0341B001（param, funcCd, kikiSeizoNo, taknkikiModelCd）で上りマッピング"]
  S1 --> S2["Step2: callSvcInter（handle, param, inMap, new EKK0341B001CBSMsg（）.getContents（））"]
  S2 --> S3["Step3: outMsg.getCAANMsgList（EKK0341B001CBSMsg.EKK0341B001CBSMSG1LIST）で結果リスト取得"]
  S3 --> IF1{"outMsgList != null"}
  IF1 -->|"Yes"| S4["Step4: result = outMsgList"]
  IF1 -->|"No"| S5["Step5: result = new CAANMsg[0]"]
  S4 --> RET["return result"]
  S5 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. editInMsgEKK0341B001でparam, funcCd, kikiSeizoNo, taknkikiModelCdからリクエストマップ作成。
2. callSvcInterでサービスインターフェース呼び出し。
3. 結果（CAANMsg[]）をoutMsg.getCAANMsgList(EKK0341B001CBSMsg.EKK0341B001CBSMSG1LIST)で取得。
4. outMsgListがnullでなければresultに代入し返却。なければ空配列返却。

---

#### 3. パラメータ分析

| No  | パラメータ名      | 型                         | 業務説明                                            |
| --- | ----------------- | -------------------------- | --------------------------------------------------- |
| 1   | handle            | SessionHandle              | セッション管理ハンドル                              |
| 2   | param             | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ）|
| 3   | funcCd            | String                     | 機能コード                                          |
| 4   | kikiSeizoNo       | String                     | 機器製造番号                                        |
| 5   | 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 → callEKK0341B001SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B001SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B001SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B001SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B001SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B001SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B001SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B001SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B001SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B001SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getShuriKokanBfKiki` | public | 対象機器が修理交換中の場合に、修理交換前の機器情報を返します。 <br> |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK0341B001SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(outMsgList != null)` (L40325)

> 📌 結果を返却

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `result = outMsgList;` |

> **合計**: 1 blocks (1 depth levels)

### callEKK0341B021SC()

---

#### 1. 役割

EKK0341B021_機器提供サービス契約一覧照会（予約）処理。  
機器提供サービス契約一覧照会（予約）サービスインターフェースを呼び出し、editInMsgEKK0341B021で上りマッピングを行い、callSvcInterでSC呼び出し、結果リスト（CAANMsg[]）を返却する。  
本メソッドは editInMsgEKK0341B021 および callSvcInter を呼び出す共通照会処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0341B021SC（handle, param, funcCd, svcKeiNo）"] --> S1["Step1: editInMsgEKK0341B021（param, funcCd, svcKeiNo）で上りマッピング"]
  S1 --> S2["Step2: callSvcInter（handle, param, inMap, new EKK0341B021CBSMsg（）.getContents（））"]
  S2 --> S3["Step3: outMsg.getCAANMsgList（EKK0341B021CBSMsg.EKK0341B021CBSMSG1LIST）で結果リスト取得"]
  S3 --> IF1{"outMsgList != null && outMsgList.length > 0"}
  IF1 -->|"Yes"| S4["Step4: result = outMsgList"]
  IF1 -->|"No"| S5["Step5: result = null"]
  S4 --> RET["return result"]
  S5 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. editInMsgEKK0341B021でparam, funcCd, svcKeiNoからリクエストマップ作成。
2. callSvcInterでサービスインターフェース呼び出し。
3. 結果（CAANMsg[]）をoutMsg.getCAANMsgList(EKK0341B021CBSMsg.EKK0341B021CBSMSG1LIST)で取得。
4. outMsgListがnullまたは0件の場合はnull返却、そうでなければresultに代入し返却。

---

#### 3. パラメータ分析

| No  | パラメータ名    | 型                         | 業務説明                                            |
| --- | -------------- | -------------------------- | --------------------------------------------------- |
| 1   | handle         | SessionHandle              | セッション管理ハンドル                              |
| 2   | param          | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ）|
| 3   | funcCd         | String                     | 機能コード                                          |
| 4   | 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 → callEKK0341B021SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B021SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B021SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B021SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B021SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B021SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B021SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B021SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B021SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B021SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `checkTakinoRT` | protected | 多機能ルーター情報ルータ機能有無チェック<br> <br> サービス契約番号に紐付いている多機能ルータのルータ機能設定有無 <br> <br> |
| 2 | `getVAkikiInfo` | private | VA機器を取得します |
| 3 | `rtOpChgDivOdrCtrl` | private | ルーターオプション変更オーダ制御処理<br> |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK0341B021SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(outMsgList != null && outMsgList.length > 0)` (L40519)

> 📌 結果を返却

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `result = outMsgList;` |

> **合計**: 1 blocks (1 depth levels)

### callEKK0341B008SCRireki()

---

#### 1. 役割

EKK0341B008_機器提供サービス契約一覧照会(履歴照会)処理。  
機器提供サービス契約一覧照会サービスインターフェースを呼び出し、editInMsgEKK0341B008で上りマッピングを行い、callSvcInterでSC呼び出し、結果リスト（CAANMsg[]）を返却する。  
このメソッドは editInMsgEKK0341B008 および callSvcInter を呼び出す共通照会処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEKK0341B008SCRireki（handle, param, funcCd, svcKeiNo, kktkSvcKeiNo）"] --> S1["Step1: editInMsgEKK0341B008（param, funcCd, svcKeiNo, kktkSvcKeiNo）で上りマッピング"]
  S1 --> S2["Step2: callSvcInter（handle, param, inMap, new EKK0341B008CBSMsg（）.getContents（））"]
  S2 --> S3["Step3: outMsg.getCAANMsgList（EKK0341B008CBSMsg.EKK0341B008CBSMSG1LIST）で結果リスト取得"]
  S3 --> IF1{"outMsgList != null"}
  IF1 -->|"Yes"| S4["Step4: result = outMsgList"]
  IF1 -->|"No"| S5["Step5: result = new CAANMsg[0]"]
  S4 --> RET["return result"]
  S5 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. editInMsgEKK0341B008でparam, funcCd, svcKeiNo, kktkSvcKeiNoからリクエストマップ作成。
2. callSvcInterでサービスインターフェース呼び出し。
3. 結果（CAANMsg[]）をoutMsg.getCAANMsgList(EKK0341B008CBSMsg.EKK0341B008CBSMSG1LIST)で取得。
4. outMsgListがnullでなければresultに代入し返却。なければ空配列返却。

---

#### 3. パラメータ分析

| No  | パラメータ名    | 型                         | 業務説明                                            |
| --- | -------------- | -------------------------- | --------------------------------------------------- |
| 1   | handle         | SessionHandle              | セッション管理ハンドル                              |
| 2   | param          | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ）|
| 3   | funcCd         | String                     | 機能コード                                          |
| 4   | svcKeiNo       | String                     | サービス契約番号                                    |
| 5   | 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 → callEKK0341B008SCRireki` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B008SCRireki` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B008SCRireki` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B008SCRireki` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B008SCRireki` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B008SCRireki` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B008SCRireki` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B008SCRireki` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B008SCRireki` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEKK0341B008SCRireki` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getShuriKokanBfKiki` | public | 対象機器が修理交換中の場合に、修理交換前の機器情報を返します。 <br> |

---

#### 📋 Per-Branch 詳細ブロック — `callEKK0341B008SCRireki()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(outMsgList != null)` (L40237)

> 📌 結果を返却

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `result = outMsgList;` |

> **合計**: 1 blocks (1 depth levels)

### callEDK0301B060SC()

---

#### 1. 役割

EDK0301B060_返品機器取消一覧照会処理 サービスコンポーネント実行。  
上りマッピングでparam, funcCd, kktkSvcKeiNo, kikiChgNoからリクエストメッセージを作成し、callSvcInterでSC呼び出しを行い、結果リスト（CAANMsg[]）を返却する。  
このメソッドは editInMsgEDK0301B060 および callSvcInter を呼び出す共通照会処理である。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["callEDK0301B060SC（handle, param, funcCd, kktkSvcKeiNo, kikiChgNo）"] --> S1["Step1: editInMsgEDK0301B060（param, funcCd, kktkSvcKeiNo, kikiChgNo）で上りマッピング"]
  S1 --> S2["Step2: callSvcInter（handle, param, inMap, new EDK0301B060CBSMsg（）.getContents（））"]
  S2 --> S3["Step3: outMsg.getCAANMsgList（EDK0301B060CBSMsg.EDK0301B060CBSMSG1LIST）で結果リスト取得"]
  S3 --> IF1{"outMsgList != null"}
  IF1 -->|"Yes"| S4["Step4: result = outMsgList"]
  IF1 -->|"No"| S5["Step5: result = new CAANMsg[0]"]
  S4 --> RET["return result"]
  S5 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. editInMsgEDK0301B060でparam, funcCd, kktkSvcKeiNo, kikiChgNoからリクエストマップ作成。
2. callSvcInterでサービスインターフェース呼び出し。
3. 結果（CAANMsg[]）をoutMsg.getCAANMsgList(EDK0301B060CBSMsg.EDK0301B060CBSMSG1LIST)で取得。
4. outMsgListがnullでなければresultに代入し返却、なければ空配列返却。

---

#### 3. パラメータ分析

| No  | パラメータ名    | 型                         | 業務説明                                            |
| --- | -------------- | -------------------------- | --------------------------------------------------- |
| 1   | handle         | SessionHandle              | セッション管理ハンドル                              |
| 2   | param          | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ）|
| 3   | funcCd         | String                     | 機能コード                                          |
| 4   | kktkSvcKeiNo   | String                     | 機器提供サービス契約番号                            |
| 5   | 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 → callEDK0301B060SC` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → callEDK0301B060SC` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → callEDK0301B060SC` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → callEDK0301B060SC` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → callEDK0301B060SC` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → callEDK0301B060SC` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → callEDK0301B060SC` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → callEDK0301B060SC` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → callEDK0301B060SC` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → callEDK0301B060SC` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `getShuriKokanBfKiki` | public | 対象機器が修理交換中の場合に、修理交換前の機器情報を返します。 <br> |
---
---

#### 📋 Per-Branch 詳細ブロック — `callEDK0301B060SC()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(outMsgList != null)` (L40413)

> 📌 結果を返却

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `result = outMsgList;` |

> **合計**: 1 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)

### `callEKK0091A010_SC()` (L40995) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (status == 0) | 結果の抽出 | - | `nullToBlank()` | L41042 |
| 2 | · 🔀 IF | D1 | (msgList != null && msgList.length > 0) | 固定IPアドレス８ | - | `nullToBlank()` | L41047 |
| 3 | ↩️ RETURN | D0 | KOTEI_IP_AD_8_DIV | - | KOTEI_IP_AD_8_DIV=kotei_ip_ad_8_div | - | L41056 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["callEKK0091A010_SC()"] --> CF0{"制御フロー分岐"}
  subgraph SG0["IF: （status == 0）"]
    direction TB
    C0_0["IF: （msgList != null && msgList.length …"]
  end
  CF0 -->|"L41042"| SG0
  B1["RETURN: KOTEI_IP_AD_8_DIV（=kotei_ip_ad_8_div）"]
  CF0 -->|"L41056"| B1
```

### `callEZM0321A010_SC()` (L41347) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (errList == null) | コントロールマップに設定 | - | - | L41393 |
| 2 | 🔀 IF | D0 | (ezm0321a010Msg1List != null && 0 < ezm0321a010Msg1List.length) | - | - | - | L41405 |
| 3 | ↩️ RETURN | D0 | workParamSetteValue | - | - | - | L41412 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["callEZM0321A010_SC()"] --> CF0{"制御フロー分岐"}
  B0["IF: （errList == null）"]
  CF0 -->|"L41393"| B0
  B1["IF: （ezm0321a010Msg1List != null && 0 < ezm0…"]
  CF0 -->|"L41405"| B1
  B2["RETURN: workParamSetteValue"]
  CF0 -->|"L41412"| B2
```

> **制御フロー合計**: 2 methods, 6 branches
