﻿#  業務ロジック  Part 3/12

### callEKK1041A010SC()

#### 呼出元 (Reverse Call Tree) — 27 direct callers

```
callEKK1041A010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── checkTakinoRT()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6EKK0361A010()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── findZ1OrderAtKK1041()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    │       └── hakkoSOD()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── jdgIpv6()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   └── jdgIpv6EKK0361A010()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── newKeiOdrCtrl()
    │       └── addIpv6SODAft()
    │           ├── adchgFixOdrCtrl()
    │           ├── hakkoSOD()
    │           └── newKeiOdrCtrl()
    ├── jdgOdr163()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── setChgePWForRouterConInfo()
    │   ├── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    ├── telNoChge()
    │   ├── hakkoSOD()
    │   └── bmpSwitchOdrCtrl()
    │       └── hakkoSOD()
    ├── vLanIdChgOdrCtrl()
    │   └── hakkoSOD()
    └── wribInfoAddOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK1041A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「オーダ設定一意照会SIF」を呼び出し、指定条件に合致するオーダ設定情報を照会する業務ロジックです。  
様々なオーダ発行判定やオーダ関連のSC制御フローで共通的に利用される、サービスコール（SC）の代表的なREAD操作です。  
入力データの加工、SC呼出、レスポンスの判定・データマッピングまでの一連処理を担います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK1041A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param) (共通ヘッダ編集)"]
  S1 --> S2["Step2: EKK1041A010CBSMsg.class.getName() (SCメッセージクラス特定)"]
  S2 --> S3["Step3: mappingEKK1041A010SCInMsg(template, inHash, funcCode) (入力値をSC向けリクエストにセット)"]
  S3 --> S4["Step4: editBasicCmn(param, template) (SC共通部編集)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template}) (リクエスト生成)"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle) (SC呼出)"]
  S6 --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY) (レスポンス取得)"]
  S7 --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY) (ステータス取得)"]
  S8 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK1041A010, mappingEKK1041A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> RETERR["return status (エラー値を返却)"]
  S9 --> S10["Step10: mappingEKK1041A010SCOutMsg(resultMsgs) (レスポンスを業務用形式に変換)"]
  S10 --> RETOK["return status (正常値0)"]

  style IF1 fill:#ffcc00
  style RETERR fill:#ffbbbb
  style RETOK fill:#bbffbb
```

**処理ステップ詳細:**

1. `editInMsgCmn(param)`  
   SC共通部（ヘッダ・ユーザ情報等）の編集を行う。

2. `EKK1041A010CBSMsg.class.getName()`  
   SC呼出用のメッセージクラス名を特定する。

3. `mappingEKK1041A010SCInMsg(template, inHash, funcCode)`  
   呼出用リクエストオブジェクトへinHash・funcCode値をマッピング。

4. `editBasicCmn(param, template)`  
   テンプレート共通部分の編集。

5. `sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})`  
   SC呼出用リクエストクラスへテンプレートを格納。

6. `scCall.run(sIFRequest, handle)`  
   SC（サービスコール）を実際に呼び出す。

7. `sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)`  
   SCの結果（テンプレートリスト）を取得する。

8. `template.getInt(JCMConstants.STATUS_INT_KEY)`  
   SCのレスポンスからステータスコードを取得。

9. `if(status == 0)`  
   正常時は
   - `resultHash.put(JKKHakkoSODConstCC.TEMPLATE_ID_EKK1041A010, mappingEKK1041A010SCOutMsg(resultMsgs))`
   - `mappingEKK1041A010SCOutMsg(resultMsgs)`で業務用形式に変換しresultHashへ格納
   - 正常値0を返却

10. `else`  
    ステータス0以外（エラー時）はそのステータス値を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件                | 定数値 | 分岐先                                   |
|---|---------------------|--------|------------------------------------------|
| 1 | `status == 0`       | -      | 正常処理（resultHash格納・0返却）        |
| 2 | `status != 0`       | -      | エラー値をそのまま返却                   |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                               |
|----|--------------|----------------------------|----------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                     |
| 2  | handle       | SessionHandle              | セッション管理ハンドル                 |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ                     |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用                     |
| 5  | funcCode     | String                     | SC機能呼出コード（業務種別等）         |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                 | SCコード     | エンティティ    | 操作説明             |
|------|----------------------------|--------------|-----------------|----------------------|
| R    | callEKK1041A010SC          | EKK1041A010  | オーダ設定      | オーダ設定一意照会   |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡ること):**

- 例：`chkOdrSette`（最上位呼出元メソッド）

**呼出パス:**

```
chkOdrSette → callEKK1041A010SC → [SC呼出] → [CRUD: READ オーダ設定]
```

**終端 (End Points):**

| SC メソッド          | CRUD | エンティティ    |
|---------------------|------|-----------------|
| callEKK1041A010SC   | R    | オーダ設定      |

---

---

---

### callEKK1041B001SC()

#### 呼出元 (Reverse Call Tree) — 33 direct callers

```
callEKK1041B001SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── findMobileStartOrderAtKK1041()    [trực tiếp]
├── findRadiusHasBeenSentSvc()    [trực tiếp]
├── findZ5OrderAtKK1041()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── is050AddOrderHakkoZumi()    [trực tiếp]
├── isItenNoGuideTokiChu()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── checkTakinoRT()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6EKK0361A010()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── telNoChge()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── jdgIpv6()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   └── jdgIpv6EKK0361A010()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── kaihkOdrCtrl()
│   │       ├── newKeiOdrCtrl()
│   │       └── addIpv6SODAft()
│   │           ├── adchgFixOdrCtrl()
│   │           ├── hakkoSOD()
│   │           └── newKeiOdrCtrl()
│   ├── jdgOdr163()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── courseChgeOdrCtrl()
│   │       ├── hakkoSOD()
│   │       └── adchgFixOdrCtrl()
│   │           └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   └── ksiDslOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   │   └── hakkoSOD()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── findOlsOrderAtKK1041()
│   ├── hakkoSOD()
│   └── htelNoInfoChgeOdrCtrl()
├── findZ1OrderAtKK1041()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   │   └── hakkoSOD()
│   └── idpwShkkaSaifuriOdrCtrl()
│       └── hakkoSOD()
├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
└── telNoChge()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> callEKK1041B001SC(IRequestParameterReadWrite param, SessionHandle handle, String orderSbtCd, String svcOrderCd, String yokyuSbtCd, String svc_kei_no, String taknkikiModelCd, String kikiSeizoNo)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

EKK1041B001（オーダ設定一覧照会）サービスインターフェースを呼び出し、オーダ設定情報の一覧を取得して返却します。複数業務（chkOdrSette、findZ1OrderAtKK1041、telNoChgeなど）から照会用途で利用され、取得結果を業務ワーク領域や返却リストとして活用します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK1041B001SC(param, handle, orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo)"] --> S1["Step1: EKK1041B001への呼び出しパラメータ設定<br/>mappingEKK1041B001SCInMsg(orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo)"]
  S1 --> S2["Step2: テンプレートに共通情報を設定<br/>editBasicCmn(param, template)"]
  S2 --> S3["Step3: サービスIF共通の情報を設定<br/>editInMsgCmn(param)"]
  S3 --> S4["Step4: リクエストメッセージにテンプレートをセット<br/>sIFRequest.put(TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S4 --> S5["Step5: サービスIF呼び出し実行<br/>ServiceComponentRequestInvoker().run(sIFRequest, handle)"]
  S5 --> S6["Step6: 結果レスポンスの編集・取得<br/>editResultRP_EKK1041B001SC(sIFResult, param)"]
  S6 --> S7["Step7: 業務ワークエリア取得<br/>param.getMappingWorkArea()"]
  S7 --> IF1{"条件: workAreaMap == null"}
  IF1 -- "Yes: null" --> S8["Step8: 新規ワークエリアマップ作成"]
  IF1 -- "No: 既存" --> S9["Step9: 既存のworkAreaMap使用"]
  S8 --> S10["Step10: param.setMappingWorkArea(workAreaMap)"]
  S9 --> S11["Step11: workAreaMap.get('WORK')でワークマップ取得"]
  S10 --> S11
  S11 --> IF2{"条件: workMap == null"}
  IF2 -- "Yes: null" --> S12["Step12: 新規workMap作成"]
  IF2 -- "No: 既存" --> S13["Step13: 既存のworkMap使用"]
  S12 --> S14["Step14: workAreaMap.put('WORK', workMap)"]
  S13 --> S15["Step15: workMap.put(クラス名+LIST, retList)"]
  S14 --> S15
  S15 --> RET["return retList"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. **呼び出しパラメータ設定**  
   - `mappingEKK1041B001SCInMsg(orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo)` を呼び出し、SCインターフェースへの入力メッセージを作成します。
2. **テンプレートに共通情報を設定**  
   - `editBasicCmn(param, template)` で基本共通項目をテンプレートにセットします。
3. **サービスIF共通の情報を設定**  
   - `editInMsgCmn(param)` で共通情報をリクエストへ設定します。
4. **リクエストメッセージにテンプレートをセット**  
   - `sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})` でテンプレートをセットします。
5. **サービスIF呼び出し実行**  
   - `ServiceComponentRequestInvoker().run(sIFRequest, handle)` でSIF呼び出しを実行します。
6. **結果レスポンスの編集・取得**  
   - `editResultRP_EKK1041B001SC(sIFResult, param)` でレスポンスを編集し、retList を得ます。
7. **業務ワークエリア取得**  
   - `param.getMappingWorkArea()` によりワークエリアマップを取得します。
8. **workAreaMapの有無判定**  
   - workAreaMapがnullの場合は新規作成し、`param.setMappingWorkArea(workAreaMap)` で設定。
9. **workMapの有無判定**  
   - workMap（workAreaMap.get("WORK")）がnullの場合は新規作成し、workAreaMapにセット。
10. **workMapへ一覧結果セット**  
    - `workMap.put(getClass().getName() + "_" + EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST, retList)` で一覧結果を格納します。
11. **retList返却**  
    - 最終的に retList を返却します。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|---------------------|--------|-----------------------------|
| 1 | `workAreaMap == null` | null | 新規ワークエリアマップ作成・セット |
| 2 | `workAreaMap != null` | null以外 | 既存workAreaMap利用 |
| 3 | `workMap == null` | null | 新規workMap作成・セット |
| 4 | `workMap != null` | null以外 | 既存workMap利用 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | orderSbtCd | String | オーダ種別コード |
| 4 | svcOrderCd | String | サービスオーダコード |
| 5 | yokyuSbtCd | String | 要求サブタイプコード |
| 6 | svc_kei_no | String | サービス契約番号 |
| 7 | taknkikiModelCd | String | 託送機器モデルコード |
| 8 | kikiSeizoNo | String | 機器製造番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | `callEKK1041B001SC` | `EKK1041B001` | オーダ設定 | 一覧照会（READ） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡る):**

- chkOdrSette → callEKK1041B001SC
- is050AddOrderHakkoZumi → callEKK1041B001SC
- isItenNoGuideTokiChu → callEKK1041B001SC
- findRadiusHasBeenSentSvc → callEKK1041B001SC
- findZ1OrderAtKK1041SvcKeiUcwk → callEKK1041B001SC
- findZ1OrderAtKK1041 → callEKK1041B001SC
- findZ5OrderAtKK1041 → callEKK1041B001SC
- findMobileStartOrderAtKK1041 → callEKK1041B001SC
- findOlsOrderAtKK1041 → callEKK1041B001SC
- telNoChge → callEKK1041B001SC
- checkTakinoRT → callEKK1041B001SC
- htelNoDslOdrCtrl → callEKK1041B001SC
- dslOdrCtrl → callEKK1041B001SC
- opSetOdrCtrl → callEKK1041B001SC
- idpwShkkaSaifuriOdrCtrl → callEKK1041B001SC
- htelNoAddOdrCtrl → callEKK1041B001SC
- htelNoInfoChgeOdrCtrl → callEKK1041B001SC
- bmpSwitchOdrCtrl → callEKK1041B001SC
- jdgOdr163 → callEKK1041B001SC
- vLanIdChgOdrCtrl → callEKK1041B001SC
- jdgIpv6 → callEKK1041B001SC
- wribInfoAddOdrCtrl → callEKK1041B001SC
- setChgePWForRouterConInfo → callEKK1041B001SC
- htelNoKaihkOdrCtrl → callEKK1041B001SC
- kaihkOdrCtrl → callEKK1041B001SC
- hakkoSOD → callEKK1041B001SC
- ksiDslOdrCtrl → callEKK1041B001SC
- cnclOdrCtrl → callEKK1041B001SC
- ksiDslFixOdrCtrl → callEKK1041B001SC
- courseChgeOdrCtrl → callEKK1041B001SC
- jdgIpv6EKK0361A010 → callEKK1041B001SC
- adchgFixOdrCtrl → callEKK1041B001SC
- addIpv6SODAft → callEKK1041B001SC

**呼出パス:**

```
[chkOdrSette] → [callEKK1041B001SC] → [mappingEKK1041B001SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [ServiceComponentRequestInvoker.run] → [editResultRP_EKK1041B001SC]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定 |

---

---

### callEKK1081B001SC()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
callEKK1081B001SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── judgeOdrHakkoJoken4WiFiSpot()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── spotLoginSysidChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── stpRlsOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── useStpRlsOdrCtrl()
│   │       └── hakkoSOD()
│   └── stpUkOdrCtrl()
│       ├── hakkoSOD()
│       ├── kaihkOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       │   └── hakkoSOD()
│       └── useStpOdrCtrl()
│           └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> callEKK1081B001SC(IRequestParameterReadWrite param, SessionHandle handle, String orderSbtCd, String svcOrderCd, String odrHakkoJokenCd, String svcKeiNo)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

EKK1081B001 オーダ発行条件一覧照会を実行する。  
指定条件でオーダ発行条件情報を照会し、結果を取得するためのSC呼び出しメソッドです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK1081B001SC(param, handle, orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo)"]
    --> S1["Step1: mappingEKK1081B001SCInMsg(orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo)（呼出パラメータ設定）"]
    --> S2["Step2: editBasicCmn(param, template)（共通情報セット）"]
    --> S3["Step3: editInMsgCmn(param)（SC共通情報セット）"]
    --> S4["Step4: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})（リクエスト生成）"]
    --> S5["Step5: (new ServiceComponentRequestInvoker()).run(sIFRequest, handle)（SIF呼出）"]
    --> RET["return editResultRP_EKK1081B001SC(sIFResult, param)（結果整形・返却）"]
```

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | なし | editResultRP_EKK1081B001SC(sIFResult, param) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | orderSbtCd | String | オーダ種別コード |
| 4 | svcOrderCd | String | サービスオーダコード |
| 5 | odrHakkoJokenCd | String | オーダ発行条件コード |
| 6 | svcKeiNo | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1081B001SC | EKK1081B001 | オーダ発行条件 | 発行条件一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
多数のオーダ系制御クラス

**呼出パス:**

```
[Root Class] → ... → **[callEKK1081B001SC]** → [mappingEKK1081B001SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081B001SC | R | オーダ発行条件 |

---

---

### callEKK1081C011SC()

#### 呼出元 (Reverse Call Tree) — 39 direct callers

```
callEKK1081C011SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── getSame_trn_no()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── getSame_trn_no()
    ├── hakkoSOD()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── addSODUQWIMAXKaitoriNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   └── newEoMobile()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    ├── addTensoDenwaOp()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── bmpDojiMskm()
    │   ├── hakkoSOD()
    │   ├── stpRlsOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   └── bmpSwitchOdrCtrl()
    │       └── hakkoSOD()
    ├── bmpSipDslOdrCtrl()
    │   └── hakkoSOD()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── hakkoCourseChgSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── idpwShkkaSaifuriOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    ├── malwareBlockingDivOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   └── kaihkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    │   └── hakkoSOD()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    ├── stpUkOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   └── useStpOdrCtrl()
    │       └── hakkoSOD()
    ├── taiikiSeigenOdrCtrl()
    │   └── hakkoSOD()
    ├── telNoChge()
    │   ├── bmpSwitchOdrCtrl()
    │   └── hakkoSOD()
    ├── vLanIdChgOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK1081C011SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「同一処理番号取得SIF」を呼び出し、同一トランザクション番号に関する情報を一意に照会する業務ロジックです。  
SC呼出の結果に対し、エラー情報のマッピングやエラーハンドリングも担います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK1081C011SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK1081C011CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK1081C011SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
  S8 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK1081C011, mappingEKK1081C011SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> SERR["Step10: editErrorInfoEKK1081C011CBS(param, resultMsgs, status)"]
  S9 --> S10["Step11: mappingEKK1081C011SCOutMsg(resultMsgs)"]
  S10 --> S11["Step12: editErrorInfoEKK1081C011CBS(param, resultMsgs, status)"]
  S11 --> IF2{"(errList == null)"}
  SERR --> IF2
  IF2 -- "Yes: エラーマップ無" --> S12["Step13: param.getControlMapData(ERROR_INFO)"]
  IF2 -- "No: エラーマップ有" --> IF3{"(errList != null && !errList.isEmpty())"}
  IF3 -- "Yes: Exception発生" --> THROW["throw new CCException...(詳細省略)"]
  IF3 -- "No: エラー情報セット" --> S13["Step14: param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(...))"]
  S12 --> RET["return status"]
  THROW --> RET
  S13 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffd700
  style IF3 fill:#ffcc00
  style THROW fill:#ffbbbb
```

**処理ステップ詳細:**

1. SC共通部編集
2. メッセージクラス特定
3. 入力値をSCリクエストにセット
4. テンプレート共通部編集
5. SCリクエスト生成
6. SC呼出
7. レスポンス取得
8. ステータスコード取得
9. 正常時はデータマッピングとresultHash格納
10. エラー時はeditErrorInfoEKK1081C011CBSでエラー情報付与
11. エラーマップ判定（errList==null）
12. エラーマップが無い場合はparamからERROR_INFO取得
13. エラーマップがあり、かつ空でなければExceptionをthrow
14. それ以外はエラー情報をparamにセット
15. status値を返却（正常/エラー問わず）

**制御フロー分岐（全条件列挙）:**

| # | 条件                             | 定数値 | 分岐先                                |
|---|----------------------------------|--------|---------------------------------------|
| 1 | `status == 0`                    | -      | resultHash格納・マッピング・エラー編集 |
| 2 | `status != 0`                    | -      | エラー情報編集                        |
| 3 | `errList == null`                | -      | ERROR_INFO取得                        |
| 4 | `errList != null && !empty`      | -      | Exception発生                         |
| 5 | 上記以外                         | -      | param.setControlMapData(ERROR_INFO...)|

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                   |
|----|--------------|----------------------------|----------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ         |
| 2  | handle       | SessionHandle              | セッション管理ハンドル     |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ         |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用         |
| 5  | funcCode     | String                     | SC機能呼出コード           |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                 | SCコード     | エンティティ         | 操作説明                      |
|------|----------------------------|--------------|----------------------|-------------------------------|
| R    | callEKK1081C011SC          | EKK1081C011  | 同一処理番号         | 同一処理番号一意照会           |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `getSame_trn_no`

**呼出パス:**

```
getSame_trn_no → callEKK1081C011SC → [SC呼出] → [CRUD: READ 同一処理番号]
```

**終端:**

| SC メソッド           | CRUD | エンティティ         |
|----------------------|------|----------------------|
| callEKK1081C011SC    | R    | 同一処理番号         |

---

---

---

### callEKK1081E010SC()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
callEKK1081E010SC() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
└── dslOdrCtrl()
    ├── hakkoSOD()
    ├── cnclOdrCtrl()
    │   └── hakkoSOD()
    ├── ksiDslFixOdrCtrl()
    │   └── hakkoSOD()
    └── ksiDslOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> callEKK1081E010SC(IRequestParameterReadWrite param, SessionHandle handle, String funcCode, String odrHakkoJokenNo, String updDtmBf)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK1081E010 オーダ発行条件論理削除サービスインターフェース（S-IF）を実行するメソッドです。  
指定されたオーダ発行条件番号および更新日時（削除対象）をもとに、論理削除リクエストをSCに発行し、その応答を取得します。  
主に、DSLオーダ制御の論理削除フローで呼び出されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK1081E010SC(param, handle, funcCode, odrHakkoJokenNo, updDtmBf)"] 
    --> S1["Step1: mappingEKK1081E010SCInMsg(funcCode, odrHakkoJokenNo, updDtmBf)（EKK1081E010呼出パラメータ設定）"]
    --> S2["Step2: editBasicCmn(param, template)（共通項目セット）"]
    --> S3["Step3: editInMsgCmn(param)（SC共通情報セット）"]
    --> S4["Step4: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})（リクエスト生成）"]
    --> S5["Step5: (new ServiceComponentRequestInvoker()).run(sIFRequest, handle)（SIF呼出）"]
    --> RET["return editResultRP_EKK1081E010SC(sIFResult, param)（結果整形・返却）"]
```

**処理ステップ詳細:**

1. **呼出パラメータ生成**  
   - 指定された機能コード、オーダ発行条件番号、更新日時からEKK1081E010SC呼出用のテンプレートを生成。
2. **共通情報セット**  
   - パラメータ共通部（トランザクションID等）をテンプレートに設定。
3. **SC共通項目セット**  
   - SC呼出共通部（ユーザ情報等）をテンプレートに追加。
4. **リクエストオブジェクト生成**  
   - SCリクエストオブジェクトsIFRequestへテンプレート配列をセット。
5. **SC呼出**  
   - サービスコンポーネントインボーカーでSC実行。結果sIFResult取得。
6. **結果編集・返却**  
   - 結果をeditResultRP_EKK1081E010SCで整形し返却。

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | なし | editResultRP_EKK1081E010SC(sIFResult, param) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 2 | handle | SessionHandle | 業務セッション管理ハンドル |
| 3 | funcCode | String | 機能コード（操作種別等） |
| 4 | odrHakkoJokenNo | String | 削除対象オーダ発行条件番号 |
| 5 | updDtmBf | String | 更新日時（削除前） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| U | callEKK1081E010SC | EKK1081E010 | オーダ発行条件 | オーダ発行条件論理削除 |

---

#### 4.5 メッセージID (Message IDs)
本メソッド固有のメッセージID記載なし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD
- dslOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス:**

```
[hakkoSOD] → [dslOdrCtrl/ksiDslOdrCtrl/cnclOdrCtrl/ksiDslFixOdrCtrl] → **[callEKK1081E010SC]** → [mappingEKK1081E010SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [ServiceComponentRequestInvoker.run]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081E010SC | U | オーダ発行条件 |


---

---

### callEKK1681B001SC()

#### 呼出元 (Reverse Call Tree) — 23 direct callers

```
callEKK1681B001SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getNewPplanCd()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isStartRsvOption()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── getIdoRsvCourseChg()
    ├── adchgFixOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── getNewPplanCd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    └── getOldVrsbIdgSvcDtlCd()
        ├── adchgFixOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── hakkoCourseChgSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── idpwShkkaSaifuriOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── koteiIpAd8DivOdrCtrl()
        │   └── hakkoSOD()
        ├── malwareBlockingDivOdrCtrl()
        │   └── hakkoSOD()
        ├── opHktgiOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── dslOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   └── ksiDslOdrCtrl()
        │   ├── htelNoDslOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── htelNoKaihkOdrCtrl()
        │       └── hakkoSOD()
        ├── pauseRlsChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── pauseUkOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoKaihkOdrCtrl()
        │   └── kaihkOdrCtrl()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        └── taiikiSeigenOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK1681B001SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

異動予約一覧を照会するためのSC呼出メソッド。業務制御で異動予約に関する情報を一覧取得する際に利用される。<citation>1</citation><citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK1681B001SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKK1681B001CBSMsg.class.getName())"]
  S2 --> S3["Step3: 入力パラメータマッピング (mappingEKK1681B001SCInMsg)"]
  S3 --> S4["Step4: 共通情報編集 (editBasicCmn)"]
  S4 --> S5["Step5: リクエストクラス設定 (sIFRequest.put)"]
  S5 --> S6["Step6: SC呼出 (scCall.run)"]
  S6 --> S7["Step7: 結果取得 (sIFResult.get)"]
  S7 --> S8["Step8: ステータスコード取得 (template.getInt)"]
  S8 --> IF1{"条件: status == 0"}
  IF1 -- "Yes" --> S9A["Step9-1: 結果マッピング (mappingListingSvcCompoOutMsg)"]
  IF1 -- "No" --> S9B["Step9-2: 異常終了"]
  S9A --> RET["return status"]
  S9B --> RET

  style IF1 fill:#ffcc00
```

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|---------------------|--------|-------------|
| 1 | `status == 0`      | なし   | 結果取得・正常終了 |
| 2 | 上記以外           | なし   | 異常終了         |

---

#### 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 メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKK1681B001SC | EKK1681B001 | 異動予約 | 一覧照会 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- getIdoRsvCourseChg
- isStartRsvOption
- getOldVrsbIdgSvcDtlCd
- getNewPplanCd
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoCourseChgSOD
- taiikiSeigenOdrCtrl
- pauseUkOdrCtrl
- pauseRlsChgeOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- opHktgiOdrCtrl
- opSetOdrCtrl
- courseChgeOdrCtrl
- kaihkOdrCtrl
- stpRlsOdrCtrl
- hakkoSOD
- htelNoKaihkOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- adchgFixOdrCtrl
- useStpRlsOdrCtrl

**呼出パス例:**

```
getIdoRsvCourseChg → callEKK1681B001SC → EKK1681B001SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK1681B001SC       | R    | 異動予約 (一覧)      |

---

---

### callEKK2091A010SC()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
callEKK2091A010SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
└── getAdChgInfo()
    ├── hakkoSOD()
    └── htelItntokiOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2091A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

住所変更一意照会処理を実施し、指定された住所変更番号に関する情報をSC呼び出しを通じて取得する。業務全体の住所変更系の制御で利用され、取得した情報は後続の業務判定や画面表示のために使用される。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK2091A010SC(param, handle, inHash, resultHash)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKK2091A010CBSMsg.class.getName())"]
  S2 --> S3["Step3: Nullマッピング (fillCAANMSGNullMapping)"]
  S3 --> S4["Step4: テンプレートID/機能コード/KEY_ADCHG_NO設定"]
  S4 --> S5["Step5: 共通情報編集 (editBasicCmn)"]
  S5 --> S6["Step6: リクエストクラス設定"]
  S6 --> S7["Step7: SC呼出 (scCall.run)"]
  S7 --> S8["Step8: 結果取得 (sIFResult.get)"]
  S8 --> S9["Step9: ステータスコード取得・リターンコード取得"]
  S9 --> IF1{"条件: returnCode != 0"}
  IF1 -- "Yes" --> S10A["Step10-1: エラー時メッセージ取得"]
  IF1 -- "No" --> S10B["Step10-2: メッセージ正常取得"]
  S10A --> IF2{"条件: JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
  IF2 -- "Yes" --> S11A1["Step11-1: デフォルトメッセージ使用"]
  IF2 -- "No" --> S11A2["Step11-2: メッセージ取得"]
  S10B --> IF3{"条件: obj == null"}
  IF3 -- "Yes" --> S12A["Step12-1: デフォルト値セット"]
  IF3 -- "No" --> S12B["Step12-2: オブジェクト値セット"]
  S12B --> IF4{"条件: templateStatus > bpStatus"}
  IF4 -- "Yes" --> S13A["Step13-1: ステータス補正"]
  IF4 -- "No" --> S13B["Step13-2: そのまま"]
  S10A & S11A1 & S11A2 & S12A & S13A & S13B --> S14["Step14: コントロールマップ・エラー情報設定"]
  S14 --> IF5{"条件: errList == null"}
  IF5 -- "Yes" --> S15A["Step15-1: 新規エラー情報セット"]
  IF5 -- "No" --> S15B["Step15-2: 既存エラー情報保持"]
  S15A & S15B --> IF6{"条件: status == 0"}
  IF6 -- "Yes" --> S16A["Step16-1: 正常終了 return status"]
  IF6 -- "No" --> S16B["Step16-2: 異常終了 return status"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
```

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|--------------------------------------------|--------|----------------|
| 1 | `returnCode != 0` | なし | エラーメッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == null` | なし | デフォルトメッセージ使用 |
| 3 | `obj == null` | なし | デフォルト値セット |
| 4 | `templateStatus > bpStatus` | なし | ステータス補正 |
| 5 | `errList == null` | なし | 新規エラー情報セット |
| 6 | `status == 0` | なし | 正常終了 |
| 7 | 上記以外 | なし | 異常終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SCへの入力パラメータ |
| 4 | resultHash | HashMap<String, Object> | SC呼出結果格納マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKK2091A010SC | EKK2091A010 | 住所変更 | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getAdChgInfo
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス例:**

```
htelItntokiOdrCtrl → callEKK2091A010SC → EKK2091A010SC
hakkoSOD → getAdChgInfo → callEKK2091A010SC → EKK2091A010SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK2091A010SC       | R    | 住所変更一意情報     |

---

---

### callEKK2101B001SC()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
callEKK2101B001SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
└── getKojiakState()
    ├── hakkoSOD()
    └── htelItntokiOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2101B001SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

指定した住所変更番号・明細種別コードに関する住所変更明細の一覧をSC呼出で取得する。取得した情報は住所変更管理や後続業務判定に利用される。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK2101B001SC(param, handle, inHash, resultHash)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKK2101B001CBSMsg.class.getName())"]
  S2 --> S3["Step3: Nullマッピング (fillCAANMSGNullMapping)"]
  S3 --> S4["Step4: テンプレートID/機能コード/KEY_ADCHG_DTL_SBT_CD/KEY_ADCHG_NO設定"]
  S4 --> S5["Step5: 共通情報編集 (editBasicCmn)"]
  S5 --> S6["Step6: リクエストクラス設定"]
  S6 --> S7["Step7: SC呼出 (scCall.run)"]
  S7 --> S8["Step8: 結果取得 (sIFResult.get)"]
  S8 --> S9["Step9: ステータスコード・リターンコード取得"]
  S9 --> IF1{"条件: returnCode != 0"}
  IF1 -- "Yes" --> S10A["Step10-1: エラー時メッセージ取得"]
  IF1 -- "No" --> S10B["Step10-2: メッセージ正常取得"]
  S10A --> IF2{"条件: JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
  IF2 -- "Yes" --> S11A1["Step11-1: デフォルトメッセージ使用"]
  IF2 -- "No" --> S11A2["Step11-2: メッセージ取得"]
  S10B --> IF3{"条件: obj == null"}
  IF3 -- "Yes" --> S12A["Step12-1: デフォルト値セット"]
  IF3 -- "No" --> S12B["Step12-2: オブジェクト値セット"]
  S12B --> IF4{"条件: templateStatus > bpStatus"}
  IF4 -- "Yes" --> S13A["Step13-1: ステータス補正"]
  IF4 -- "No" --> S13B["Step13-2: そのまま"]
  S10A & S11A1 & S11A2 & S12A & S13A & S13B --> S14["Step14: コントロールマップ・エラー情報設定"]
  S14 --> IF5{"条件: errList == null"}
  IF5 -- "Yes" --> S15A["Step15-1: 新規エラー情報セット"]
  IF5 -- "No" --> S15B["Step15-2: 既存エラー情報保持"]
  S15A & S15B --> IF6{"条件: status == 0"}
  IF6 -- "Yes" --> S16A["Step16-1: 正常終了 return status"]
  IF6 -- "No" --> S16B["Step16-2: 異常終了 return status"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
```

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|--------------------------------------------|--------|----------------|
| 1 | `returnCode != 0` | なし | エラーメッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == null` | なし | デフォルトメッセージ使用 |
| 3 | `obj == null` | なし | デフォルト値セット |
| 4 | `templateStatus > bpStatus` | なし | ステータス補正 |
| 5 | `errList == null` | なし | 新規エラー情報セット |
| 6 | `status == 0` | なし | 正常終了 |
| 7 | 上記以外 | なし | 異常終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC入力パラメータ |
| 4 | resultHash | HashMap<String, Object> | SC呼出結果格納マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKK2101B001SC | EKK2101B001 | 住所変更明細 | 一覧照会 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- getKojiakState
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス例:**

```
htelItntokiOdrCtrl → getKojiakState → callEKK2101B001SC → EKK2101B001SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK2101B001SC       | R    | 住所変更明細         |

---

---

### callEKK2101B002SC()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
callEKK2101B002SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
└── getAdChgInfo()
    ├── hakkoSOD()
    └── htelItntokiOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2101B002SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

住所変更明細一覧照会（EKK2101B002）を呼び出し、変更前識別番号に紐づく住所変更明細情報を取得します。  
照会結果・ステータス・エラー情報等をコントロールマップやresultHashに格納します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK2101B002SC(param, handle, inHash, resultHash)"]
    --> S1["Step1: editInMsgCmn(param)"]
    --> S2["Step2: EKK2101B002CBSMsg.class.getName()"]
    --> S3["Step3: fillCAANMSGNullMapping(template, new EKK2101B002CBSMsg().getContents())"]
    --> S4["Step4: template.set(TEMPLATEID, FUNC_CODE, KEY_ADCHG_DTL_SBT_CD, KEY_CHBF_SKBT_NO)"]
    --> S5["Step5: editBasicCmn(param, template)"]
    --> S6["Step6: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
    --> S7["Step7: scCall.run(sIFRequest, handle)"]
    --> S8["Step8: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
    --> S9["Step9: template.getInt(JCMConstants.STATUS_INT_KEY)"]
    --> S10["Step10: その他ステータス/リターンコード/メッセージ取得"]
    --> IF1{"returnCode != 0"}
    IF1 -- "Yes" --> E1["エラー：RETURN_CODE不一致"]
    IF1 -- "No" --> IF2{"JCMAPLConstMgr.getString(RETURN_MESSAGE_...) == null"}
    IF2 -- "Yes" --> E2["エラー：メッセージ未設定"]
    IF2 -- "No" --> IF3{"obj == null"}
    IF3 -- "Yes" --> E3["エラー：objなし"]
    IF3 -- "No" --> S11["Step11: コントロールマップにリターンコード/メッセージ/エラー情報セット"]
    S11 --> IF4{"templateStatus > bpStatus"}
    IF4 -- "Yes" --> E4["エラー：templateStatus > bpStatus"]
    IF4 -- "No" --> IF5{"errList == null"}
    IF5 -- "Yes" --> S12["Step12: 結果マッピング"]
    IF5 -- "No" --> S13["Step13: コントロールマップにエラー情報セット"]
    S12 --> IF6{"status == 0"}
    IF6 -- "Yes" --> S14["Step14: resultHash.put(TEMPLATE_ID_EKK2101B002, mappingCommonOutMsgFirst(...))"]
    IF6 -- "No" --> E5["エラー：status ≠ 0"]
    S14 --> RET["return status"]
    E1 --> RET
    E2 --> RET
    E3 --> RET
    E4 --> RET
    E5 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | エラー |
| 3 | obj == null | - | エラー |
| 4 | templateStatus > bpStatus | - | エラー |
| 5 | errList == null | - | 正常/異常分岐 |
| 6 | status == 0 | 0 | 正常処理: 結果セット |
| 7 | status ≠ 0 | - | エラー |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト/レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | 入力パラメータマップ |
| 4 | resultHash | HashMap<String, Object> | 結果マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK2101B002SC | EKK2101B002 | 住所変更明細 | 住所変更明細一覧照会（変更前識別番号） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
getAdChgInfo, htelItntokiOdrCtrl, hakkoSOD

**呼出パス:**

```
[Root Class] → getAdChgInfo → htelItntokiOdrCtrl → **[callEKK2101B002SC]** → [fillCAANMSGNullMapping] → [editBasicCmn] → [mappingCommonOutMsgFirst]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK2101B002SC | R | 住所変更明細 |

---

---

### callEKK2811A010SC()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
callEKK2811A010SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── checkKKOPChanged()
│   ├── hakkoSOD()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
└── rtOpChgDivOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2811A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは、「機器オプションサービス契約一意照会SIF」を呼び出し、指定した条件に合致する機器オプションサービス契約情報を一意に照会する業務ロジックです。  
オプションサービス変更やオプション関連のオーダ発行判定などで利用される、SCコール（READ操作）の代表例です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK2811A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK2811A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK2811A010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
  S8 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK2811A010, mappingEKK2811A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> RETERR["return status (エラー値返却)"]
  S9 --> S10["Step10: mappingEKK2811A010SCOutMsg(resultMsgs)"]
  S10 --> RETOK["return status (正常値0)"]

  style IF1 fill:#ffcc00
  style RETERR fill:#ffbbbb
  style RETOK fill:#bbffbb
```

**処理ステップ詳細:**

1. SC共通部編集（ヘッダ、ユーザ情報等）
2. メッセージクラス特定
3. 入力値をSC用リクエストにセット
4. テンプレート共通部編集
5. SC呼出用リクエスト生成
6. 実際にSC呼出
7. レスポンス取得
8. ステータスコード取得
9. `if(status == 0)`の場合、業務形式へデータマッピングしresultHash格納・0返却
10. エラー時はstatus値を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件          | 定数値 | 分岐先           |
|---|---------------|--------|------------------|
| 1 | `status == 0` | -      | 正常処理         |
| 2 | `status != 0` | -      | エラー値返却     |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                               |
|----|--------------|----------------------------|----------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                     |
| 2  | handle       | SessionHandle              | セッション管理ハンドル                 |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ                     |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用                     |
| 5  | funcCode     | String                     | SC機能呼出コード                       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                 | SCコード     | エンティティ                | 操作説明                   |
|------|----------------------------|--------------|-----------------------------|----------------------------|
| R    | callEKK2811A010SC          | EKK2811A010  | 機器オプションサービス契約  | 機器オプションサービス契約一意照会 |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `rtOpChgDivOdrCtrl`

**呼出パス:**

```
rtOpChgDivOdrCtrl → callEKK2811A010SC → [SC呼出] → [CRUD: READ 機器オプションサービス契約]
```

**終端:**

| SC メソッド           | CRUD | エンティティ                |
|----------------------|------|-----------------------------|
| callEKK2811A010SC    | R    | 機器オプションサービス契約  |

---

---

---

### callEKK2811B010SC()

#### 呼出元 (Reverse Call Tree) — 27 direct callers

```
callEKK2811B010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── checkTakinoRT()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6EKK0361A010()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── findZ1OrderAtKK1041()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   │       └── hakkoSOD()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── jdgIpv6()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   └── jdgIpv6EKK0361A010()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── kaihkOdrCtrl()
│   │       ├── newKeiOdrCtrl()
│   │       └── addIpv6SODAft()
│   │           ├── adchgFixOdrCtrl()
│   │           ├── hakkoSOD()
│   │           └── newKeiOdrCtrl()
│   ├── jdgOdr163()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── courseChgeOdrCtrl()
│   │       ├── hakkoSOD()
│   │       └── adchgFixOdrCtrl()
│   │           └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   └── ksiDslOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   ├── telNoChge()
│   │   ├── hakkoSOD()
│   │   └── bmpSwitchOdrCtrl()
│   │       └── hakkoSOD()
│   ├── vLanIdChgOdrCtrl()
│   │   └── hakkoSOD()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
└── vLanIdVaChangeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2811B010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「機器オプションサービス契約一覧照会SIF」を呼び出し、機器オプションサービス契約一覧を取得する業務ロジックです。  
オプション契約の一覧取得やオプション関連の業務フローで利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK2811B010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK2811B010CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK2811B010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
  S8 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK2811B010, mappingEKK2811B010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> RETERR["return status (エラー値返却)"]
  S9 --> S10["Step10: mappingEKK2811B010SCOutMsg(resultMsgs)"]
  S10 --> RETOK["return status (正常値0)"]

  style IF1 fill:#ffcc00
  style RETERR fill:#ffbbbb
  style RETOK fill:#bbffbb
```

**処理ステップ詳細:**

1. SC共通部編集
2. メッセージクラス特定
3. 入力値をSCリクエストにセット
4. テンプレート共通部編集
5. SCリクエスト生成
6. SC呼出
7. レスポンス取得
8. ステータスコード取得
9. 正常時はデータマッピングしresultHash格納・0返却
10. エラー時はstatus値を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件          | 定数値 | 分岐先           |
|---|---------------|--------|------------------|
| 1 | `status == 0` | -      | 正常処理         |
| 2 | `status != 0` | -      | エラー値返却     |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                               |
|----|--------------|----------------------------|----------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                     |
| 2  | handle       | SessionHandle              | セッション管理ハンドル                 |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ                     |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用                     |
| 5  | funcCode     | String                     | SC機能呼出コード                       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                 | SCコード     | エンティティ                | 操作説明                   |
|------|----------------------------|--------------|-----------------------------|----------------------------|
| R    | callEKK2811B010SC          | EKK2811B010  | 機器オプションサービス契約  | 一覧照会                   |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `vLanIdVaChangeOdrCtrl`

**呼出パス:**

```
vLanIdVaChangeOdrCtrl → callEKK2811B010SC → [SC呼出] → [CRUD: READ 機器オプションサービス契約]
```

**終端:**

| SC メソッド           | CRUD | エンティティ                |
|----------------------|------|-----------------------------|
| callEKK2811B010SC    | R    | 機器オプションサービス契約  |

---

---

---

### callEKU0011A010SC()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
callEKU0011A010SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
└── getKojiakState()
    ├── hakkoSOD()
    └── htelItntokiOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKU0011A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

工事案件番号に基づく工事案件情報の一意照会。SC呼出により、該当工事案件の詳細データを取得し業務判定や画面表示に利用する。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKU0011A010SC(param, handle, inHash, resultHash)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKU0011A010CBSMsg.class.getName())"]
  S2 --> S3["Step3: Nullマッピング (fillCAANMSGNullMapping)"]
  S3 --> S4["Step4: テンプレートID/機能コード/KEY_KOJIAK_NO設定"]
  S4 --> S5["Step5: 共通情報編集 (editBasicCmn)"]
  S5 --> S6["Step6: リクエストクラス設定"]
  S6 --> S7["Step7: SC呼出 (scCall.run)"]
  S7 --> S8["Step8: 結果取得 (sIFResult.get)"]
  S8 --> S9["Step9: ステータスコード・リターンコード取得"]
  S9 --> IF1{"条件: returnCode != 0"}
  IF1 -- "Yes" --> S10A["Step10-1: エラー時メッセージ取得"]
  IF1 -- "No" --> S10B["Step10-2: メッセージ正常取得"]
  S10A --> IF2{"条件: JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
  IF2 -- "Yes" --> S11A1["Step11-1: デフォルトメッセージ使用"]
  IF2 -- "No" --> S11A2["Step11-2: メッセージ取得"]
  S10B --> IF3{"条件: obj == null"}
  IF3 -- "Yes" --> S12A["Step12-1: デフォルト値セット"]
  IF3 -- "No" --> S12B["Step12-2: オブジェクト値セット"]
  S12B --> IF4{"条件: templateStatus > bpStatus"}
  IF4 -- "Yes" --> S13A["Step13-1: ステータス補正"]
  IF4 -- "No" --> S13B["Step13-2: そのまま"]
  S10A & S11A1 & S11A2 & S12A & S13A & S13B --> S14["Step14: コントロールマップ・エラー情報設定"]
  S14 --> IF5{"条件: errList == null"}
  IF5 -- "Yes" --> S15A["Step15-1: 新規エラー情報セット"]
  IF5 -- "No" --> S15B["Step15-2: 既存エラー情報保持"]
  S15A & S15B --> IF6{"条件: status == 0"}
  IF6 -- "Yes" --> S16A["Step16-1: 正常終了 return status"]
  IF6 -- "No" --> S16B["Step16-2: 異常終了 return status"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
```

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|--------------------------------------------|--------|----------------|
| 1 | `returnCode != 0` | なし | エラーメッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == null` | なし | デフォルトメッセージ使用 |
| 3 | `obj == null` | なし | デフォルト値セット |
| 4 | `templateStatus > bpStatus` | なし | ステータス補正 |
| 5 | `errList == null` | なし | 新規エラー情報セット |
| 6 | `status == 0` | なし | 正常終了 |
| 7 | 上記以外 | なし | 異常終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC入力パラメータ |
| 4 | resultHash | HashMap<String, Object> | SC呼出結果格納マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKU0011A010SC | EKU0011A010 | 工事案件 | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- getKojiakState
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス例:**

```
htelItntokiOdrCtrl → getKojiakState → callEKU0011A010SC → EKU0011A010SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKU0011A010SC       | R    | 工事案件             |

---

---

### callEKU0081B010SC()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
callEKU0081B010SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
└── getKojiakState()
    ├── hakkoSOD()
    └── htelItntokiOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKU0081B010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

サービス契約番号をキーに、サービス契約に紐づく工事案件情報一覧をSC呼出で取得する。サービス契約管理や工事案件判定に利用される。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKU0081B010SC(param, handle, inHash, resultHash)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKU0081B010CBSMsg.class.getName())"]
  S2 --> S3["Step3: Nullマッピング (fillCAANMSGNullMapping)"]
  S3 --> S4["Step4: テンプレートID/機能コード/KEY_SVC_KEI_NO設定"]
  S4 --> S5["Step5: 共通情報編集 (editBasicCmn)"]
  S5 --> S6["Step6: リクエストクラス設定"]
  S6 --> S7["Step7: SC呼出 (scCall.run)"]
  S7 --> S8["Step8: 結果取得 (sIFResult.get)"]
  S8 --> S9["Step9: ステータスコード・リターンコード取得"]
  S9 --> IF1{"条件: returnCode != 0"}
  IF1 -- "Yes" --> S10A["Step10-1: エラー時メッセージ取得"]
  IF1 -- "No" --> S10B["Step10-2: メッセージ正常取得"]
  S10A --> IF2{"条件: JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
  IF2 -- "Yes" --> S11A1["Step11-1: デフォルトメッセージ使用"]
  IF2 -- "No" --> S11A2["Step11-2: メッセージ取得"]
  S10B --> IF3{"条件: obj == null"}
  IF3 -- "Yes" --> S12A["Step12-1: デフォルト値セット"]
  IF3 -- "No" --> S12B["Step12-2: オブジェクト値セット"]
  S12B --> IF4{"条件: templateStatus > bpStatus"}
  IF4 -- "Yes" --> S13A["Step13-1: ステータス補正"]
  IF4 -- "No" --> S13B["Step13-2: そのまま"]
  S10A & S11A1 & S11A2 & S12A & S13A & S13B --> S14["Step14: コントロールマップ・エラー情報設定"]
  S14 --> IF5{"条件: errList == null"}
  IF5 -- "Yes" --> S15A["Step15-1: 新規エラー情報セット"]
  IF5 -- "No" --> S15B["Step15-2: 既存エラー情報保持"]
  S15A & S15B --> IF6{"条件: status == 0"}
  IF6 -- "Yes" --> S16A["Step16-1: 正常終了 return status"]
  IF6 -- "No" --> S16B["Step16-2: 異常終了 return status"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
```

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|--------------------------------------------|--------|----------------|
| 1 | `returnCode != 0` | なし | エラーメッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == null` | なし | デフォルトメッセージ使用 |
| 3 | `obj == null` | なし | デフォルト値セット |
| 4 | `templateStatus > bpStatus` | なし | ステータス補正 |
| 5 | `errList == null` | なし | 新規エラー情報セット |
| 6 | `status == 0` | なし | 正常終了 |
| 7 | 上記以外 | なし | 異常終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC入力パラメータ |
| 4 | resultHash | HashMap<String, Object> | SC呼出結果格納マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKU0081B010SC | EKU0081B010 | サービス契約・工事案件 | 一覧照会 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- getKojiakState
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス例:**

```
htelItntokiOdrCtrl → getKojiakState → callEKU0081B010SC → EKU0081B010SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKU0081B010SC       | R    | サービス契約・工事案件 |

---

### callETU0011B010SC()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
callETU0011B010SC() ← gọi bởi:
├── isBmpOpenZumi()    [trực tiếp]
└── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callETU0011B010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

番ポ工事一覧照会SIFを呼び出し、指定された条件で工事情報を一覧照会します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callETU0011B010SC(param, handle, inHash, resultHash, funcCode)"]
    --> S1["Step1: editInMsgCmn(param)"]
    --> S2["Step2: ETU0011B010CBSMsg.class.getName()"]
    --> S3["Step3: mappingETU0011B010SCInMsg(template, inHash, funcCode)"]
    --> S4["Step4: editBasicCmn(param, template)"]
    --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
    --> S6["Step6: scCall.run(sIFRequest, handle)"]
    --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
    --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
    --> IF1{"status == 0"}
    IF1 -- "Yes" --> S9["Step9: resultHash.put(TEMPLATE_ID_ETU0011B010, mappingETU0011B010SCOutMsg(resultMsgs))"]
    IF1 -- "No" --> S10["Step10: エラー"]
    S9 --> RET["return status"]
    S10 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | status == 0 | 0 | 正常処理: 結果セット |
| 2 | status ≠ 0 | - | エラー処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト/レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | 入力パラメータマップ |
| 4 | resultHash | HashMap<String, Object> | 結果格納マップ |
| 5 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callETU0011B010SC | ETU0011B010 | 番ポ工事 | 一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
isBmpOpenZumiDslNoDslNoChg, isBmpOpenZumi

**呼出パス:**

```
isBmpOpenZumiDslNoDslNoChg/isBmpOpenZumi → **[callETU0011B010SC]** → [mappingETU0011B010SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callETU0011B010SC | R | 番ポ工事 |

---

---

### callEZM0121A010SC()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
callEZM0121A010SC() ← gọi bởi:
├── isMonaiBmp()    [trực tiếp]
├── isTajgsTelNo()    [trực tiếp]
└── isTelnoSODJudge()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEZM0121A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

電話番号一意照会SIFを呼び出し、対象電話番号の契約情報・事業者判定等を取得する。  
番号ポータビリティ判定や他事業者番号フラグ取得など、業務上の各種判定フローで利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEZM0121A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param) で共通情報セット"]
  S1 --> S2["Step2: EZM0121A010CBSMsgインスタンス生成"]
  S2 --> S3["Step3: mappingEZM0121A010SCInMsg(template, inHash, funcCode) で入力マッピング"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(TEMPLATE_LIST_KEY, [template])"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"status == 0"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash[TEMPLATE_ID_EZM0121A010] = mappingEZM0121A010SCOutMsg(resultMsgs)"]
  IF1 -- "No: エラー" --> S10["Step10: エラーハンドリング/返却"]
  S9 --> RET["return status"]
  S10 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. 共通部セット（editInMsgCmn）
2. テンプレート生成
3. mappingEZM0121A010SCInMsgで入力マッピング
4. 基本共通部セット
5. リクエスト生成＆SC呼出
6. 結果取得・ステータスチェック
7. 正常時はresultHashにマッピング結果格納
8. 異常時はエラー返却

**制御フロー分岐（全条件列挙）:**

| # | 条件   | 定数値 | 分岐先                             |
|---|--------|--------|------------------------------------|
| 1 | status == 0 | 0      | 正常結果mappingEZM0121A010SCOutMsg|
| 2 | status != 0 | -      | エラー返却                        |

---

#### 3. パラメータ分析

| No | パラメータ名   | 型                         | 業務説明                                    |
|----|---------------|----------------------------|---------------------------------------------|
| 1  | param         | IRequestParameterReadWrite | 業務パラメータ管理                          |
| 2  | handle        | SessionHandle              | セッション管理                              |
| 3  | inHash        | HashMap<String, Object>    | 入力パラメータ（電話番号等）                |
| 4  | resultHash    | HashMap<String, Object>    | SC結果格納先                                |
| 5  | funcCode      | String                     | 機能コード                                  |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド           | SCコード        | エンティティ         | 操作説明           |
|------|----------------------|-----------------|----------------------|--------------------|
| R    | callEZM0121A010SC    | EZM0121A010     | 電話番号契約         | 電話番号一意照会   |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- isTelnoSODJudge
- isMonaiBmp
- isTajgsTelNo

**呼出パス:**

```
[isTelnoSODJudge] → **[callEZM0121A010SC]** → [SC呼出]
```

**終端:**

| SC メソッド           | CRUD | エンティティ         |
|----------------------|------|----------------------|
| callEZM0121A010SC    | R    | 電話番号契約         |

---

---

### callEZM0321A010_SC()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
callEZM0321A010_SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── getDammyPplanCd()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   └── malwareBlockingDivOdrCtrl()
│       └── hakkoSOD()
└── getDummySvcKeiNo()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private String callEZM0321A010_SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `String`

---

#### 1. 役割

業務パラメータ一意照会検索を行うメソッドであり、各種制御処理から呼び出され、業務パラメータ（例：ダミープランコードやダミーサービス契約番号等）の一意決定のためにSC（サービスコンポーネント）を呼び出す。入力パラメータと業務条件から、SCにて一意決定された業務パラメータ値を取得し、後続処理に利用する。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEZM0321A010_SC(param, handle, inHash, funcCode)"] --> S1["Step1: サービスIF共通の情報を設定 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレートの生成 (EZM0321A010CBSMsg.class.getName())"]
  S2 --> S3["Step3: 入力パラメータマッピング (mappingEZM0321A010SCInMsg)"]
  S3 --> S4["Step4: 共通情報編集 (editBasicCmn)"]
  S4 --> S5["Step5: リクエストクラスの設定 (sIFRequest.put)"]
  S5 --> S6["Step6: SC呼び出し (scCall.run)"]
  S6 --> S7["Step7: 結果取得 (sIFResult.get)"]
  S7 --> S8["Step8: ステータスコード取得 (template.getInt)"]
  S8 --> S9["Step9: エラー情報編集 (editErrorInfoEZM0321A010CBS)"]
  S9 --> IF1{"条件: errList == null"}
  IF1 -- "Yes" --> S10["Step10-1: コントロールマップにエラー情報を設定 (setControlMapData)"]
  IF1 -- "No" --> S10B["Step10-2: 既存エラー情報を使用"]
  S10 --> S11["Step11: 業務パラメータリスト取得 (getCAANMsgList)"]
  S10B --> S11
  S11 --> IF2{"条件: ezm0321a010Msg1List != null && 0 < ezm0321a010Msg1List.length"}
  IF2 -- "Yes" --> S12["Step12-1: 業務パラメータ設定値取得 (getString)"]
  IF2 -- "No" --> S13["Step12-2: 空値返却"]
  S12 --> RET["return workParamSetteValue"]
  S13 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. **サービスIF共通の情報を設定**: `editInMsgCmn(param)` を呼び出し、パラメータ共通項目のセットを実施。
2. **メッセージテンプレート生成**: `EZM0321A010CBSMsg.class.getName()` でテンプレートクラスを決定。
3. **入力パラメータマッピング**: `mappingEZM0321A010SCInMsg(template, inHash, funcCode)` で業務種別・キー等をSCテンプレートへセット。
4. **共通情報編集**: `editBasicCmn(param, template)` で共通フィールド編集。
5. **リクエストクラスの設定**: `sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})` でリクエスト構築。
6. **SC呼び出し**: `scCall.run(sIFRequest, handle)` でSCを呼び出し。
7. **結果取得**: `sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)` でSCからの返却値を取得。
8. **ステータスコード取得**: `template.getInt(JCMConstants.STATUS_INT_KEY)` で正常・異常の判定値取得。
9. **エラー情報編集**: `editErrorInfoEZM0321A010CBS(param, resultMsgs, status)` でエラー詳細の編集。
10. **エラー情報分岐**: エラーリストがnullかどうかでコントロールマップへのセット有無を分岐。
11. **業務パラメータリスト取得**: `ezm0321a010Msg.getCAANMsgList(...)` で返却業務パラメータリスト取得。
12. **設定値取得判定**: リストが存在し件数が1件以上であれば `getString` で値取得、なければ空値返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|--------------------------|--------|----------|
| 1 | `errList == null` | なし   | コントロールマップ設定 |
| 2 | `ezm0321a010Msg1List != null && 0 < ezm0321a010Msg1List.length` | なし | 設定値取得・返却 |
| 3 | 上記以外 | なし | 空値返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト／レスポンスの業務パラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SCへの入力パラメータマップ |
| 4 | funcCode | String | 業務種別・機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EZM0321A010SC | EZM0321A010 | 業務パラメータ | 一意照会・設定値取得 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getDammyPplanCd
- getDummySvcKeiNo
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoSOD

**呼出パス例:**

```
malwareBlockingDivOdrCtrl → callEZM0321A010_SC → EZM0321A010SC
hakkoSOD → getDammyPplanCd → callEZM0321A010_SC → EZM0321A010SC
koteiIpAd8DivOdrCtrl → callEZM0321A010_SC → EZM0321A010SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EZM0321A010SC       | R    | 業務パラメータ（設定値） |

---

---

### callEZM0411A010SC()

#### 呼出元 (Reverse Call Tree) — 11 direct callers

```
callEZM0411A010SC() ← gọi bởi:
├── addIpv6SODAft()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── getTaknkikiM()
    ├── addIpv6SODAft()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── opSetOdrCtrl()
    └── jdgIpv6()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── jdgIpv6EKK0361A010()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   ├── addIpv6SODAft()
        │   │   ├── adchgFixOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   └── newKeiOdrCtrl()
        │   └── kaihkOdrCtrl()
        │       └── hakkoSOD()
        └── opSetOdrCtrl()
            ├── cnclOdrCtrl()
            ├── hakkoSOD()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── dslOdrCtrl()
            │   ├── cnclOdrCtrl()
            │   ├── hakkoSOD()
            │   ├── ksiDslFixOdrCtrl()
            │   └── ksiDslOdrCtrl()
            ├── htelNoDslOdrCtrl()
            │   └── hakkoSOD()
            ├── htelNoInfoChgeOdrCtrl()
            │   └── hakkoSOD()
            └── htelNoKaihkOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEZM0411A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「宅内機器型式一意照会SIF」を呼び出し、宅内機器の型式情報を一意に照会します。  
機器型式照会、業務判定、オーダ発行フロー等で利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEZM0411A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EZM0411A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEZM0411A010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
  S8 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash.put(TEMPLATE_ID_EZM0411A010, mappingEZM0411A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> SERR["Step10: editErrorInfoEZM0411A010CBS(param, resultMsgs, status)"]
  S9 --> S11["Step11: mappingEZM0411A010SCOutMsg(resultMsgs)"]
  S11 --> S12["Step12: editErrorInfoEZM0411A010CBS(param, resultMsgs, status)"]
  S12 --> IF2{"(errList == null)"}
  SERR --> IF2
  IF2 -- "Yes: エラーマップ無" --> S13["Step13: param.getControlMapData(ERROR_INFO)"]
  IF2 -- "No: エラーマップ有" --> IF3{"(errList != null && !errList.isEmpty())"}
  IF3 -- "Yes: Exception発生" --> THROW["throw new CCException...(詳細省略)"]
  IF3 -- "No: エラー情報セット" --> S14["Step14: param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(...))"]
  S13 --> RET["return status"]
  THROW --> RET
  S14 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffd700
  style IF3 fill:#ffcc00
  style THROW fill:#ffbbbb
```

**処理ステップ詳細:**

1. SC共通部編集
2. メッセージクラス特定
3. 入力値をSCリクエストにセット
4. テンプレート共通部編集
5. SCリクエスト生成
6. SC呼出
7. レスポンス取得
8. ステータスコード取得
9. 正常時はデータマッピングしresultHash格納
10. エラー時はeditErrorInfoEZM0411A010CBSによるエラー情報編集
11. エラーマップ判定
12. エラーマップが無い場合はparamからERROR_INFO取得
13. エラーマップがあり、空でなければExceptionをthrow
14. それ以外はエラー情報をparamにセット
15. status値を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件                             | 定数値 | 分岐先                                |
|---|----------------------------------|--------|---------------------------------------|
| 1 | `status == 0`                    | -      | resultHash格納・マッピング・エラー編集 |
| 2 | `status != 0`                    | -      | エラー情報編集                        |
| 3 | `errList == null`                | -      | ERROR_INFO取得                        |
| 4 | `errList != null && !empty`      | -      | Exception発生                         |
| 5 | 上記以外                         | -      | param.setControlMapData(ERROR_INFO...)|

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                   |
|----|--------------|----------------------------|----------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ         |
| 2  | handle       | SessionHandle              | セッション管理ハンドル     |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ         |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用         |
| 5  | funcCode     | String                     | SC機能呼出コード           |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                 | SCコード     | エンティティ                | 操作説明                 |
|------|----------------------------|--------------|-----------------------------|--------------------------|
| R    | callEZM0411A010SC          | EZM0411A010  | 宅内機器型式                | 一意照会                 |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `getTaknkikiM`

**呼出パス:**

```
getTaknkikiM → callEZM0411A010SC → [SC呼出] → [CRUD: READ 宅内機器型式]
```

**終端:**

| SC メソッド           | CRUD | エンティティ                |
|----------------------|------|-----------------------------|
| callEZM0411A010SC    | R    | 宅内機器型式                |

---

---

### callSvcInter()

#### 呼出元 (Reverse Call Tree) — 35 direct callers

```
callSvcInter() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── callEDK0301B060SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── getShuriKokanBfKiki()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── wribInfoAddOdrCtrl()
│       ├── isRegalVaKiki()
│       │   ├── hakkoSOD()
│       │   └── htelNoInfoChgeOdrCtrl()
│       └── vLanIdChgOdrCtrl()
│           └── hakkoSOD()
├── callEKK0341B001SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK0341B008SCRireki()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK0341B021SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── checkTakinoRT()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── cnclOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   └── ksiDslOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── findZ1OrderAtKK1041()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoAddOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   └── idpwShkkaSaifuriOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   │   ├── cnclOdrCtrl()
│   │   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoDslOdrCtrl()
│   │   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   ├── kaihkOdrCtrl()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   ├── ksiDslOdrCtrl()
│   │   │   └── opSetOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── jdgIpv6()
│   │   │   ├── adchgFixOdrCtrl()
│   │   │   ├── addIpv6SODAft()
│   │   │   ├── cnclOdrCtrl()
│   │   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoDslOdrCtrl()
│   │   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   ├── kaihkOdrCtrl()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   ├── ksiDslOdrCtrl()
│   │   │   ├── newKeiOdrCtrl()
│   │   │   ├── opSetOdrCtrl()
│   │   │   └── jdgIpv6EKK0361A010()
│   │   │       ├── adchgFixOdrCtrl()
│   │   │       ├── addIpv6SODAft()
│   │   │       ├── hakkoSOD()
│   │   │       ├── kaihkOdrCtrl()
│   │   │       └── newKeiOdrCtrl()
│   │   ├── jdgOdr163()
│   │   │   ├── adchgFixOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   └── courseChgeOdrCtrl()
│   │   │       ├── adchgFixOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── opSetOdrCtrl()
│   │   │   ├── cnclOdrCtrl()
│   │   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoDslOdrCtrl()
│   │   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   ├── kaihkOdrCtrl()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── ksiDslOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   │   ├── hakkoSOD()
│   │   │   └── idpwShkkaSaifuriOdrCtrl()
│   │   ├── telNoChge()
│   │   │   ├── hakkoSOD()
│   │   │   └── bmpSwitchOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   └── wribInfoAddOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getVAkikiInfo()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── getZ1HakkoKh()
│   │   │   ├── cnclOdrCtrl()
│   │   │   ├── dslOdrCtrl()
│   │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoDslOdrCtrl()
│   │   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   ├── kaihkOdrCtrl()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   ├── ksiDslOdrCtrl()
│   │   │   └── opSetOdrCtrl()
│   │   └── isKikiSeizoNoCheck()
│   │       ├── cnclOdrCtrl()
│   │       ├── dslOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       ├── ksiDslFixOdrCtrl()
│   │       ├── ksiDslOdrCtrl()
│   │       └── opSetOdrCtrl()
│   └── rtOpChgDivOdrCtrl()
│       └── hakkoSOD()
└── callEKK0341B029SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    └── wribInfoAddOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg callSvcInter(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> siInMap, Object[][] contents)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

サービスインターフェースの汎用呼出処理。各種業務コンポーネントからSC呼び出しの共通化・一元化を行い、SC呼出→結果編集→エラーチェック→データ取得を一連で実行する。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callSvcInter(handle, param, siInMap, contents)"] --> S1["Step1: SC呼出 (scCall.run)"]
  S1 --> S2["Step2: 結果編集 (editResultRP)"]
  S2 --> S3["Step3: エラーチェック (errChk)"]
  S3 --> S4["Step4: 業務データ取得 (getWorkCAANMsg)"]
  S4 --> RET["return workData"]
```

**処理ステップ詳細:**

1. **SC呼出**: `scCall.run(siInMap, handle)` でSC実行。
2. **結果編集**: `editResultRP(rsltMap, param, contents)` でSC結果を編集。
3. **エラーチェック**: `errChk(rsltMap)` で業務エラー判定。
4. **業務データ取得**: `getWorkCAANMsg(rsltMap)` で業務データ抽出・返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | なし | なし | なし（直列処理） |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務パラメータ |
| 3 | siInMap | HashMap<String, Object> | SC入力マップ |
| 4 | contents | Object[][] | SC入力詳細データ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| -    | 複数SC    | -       | -          | SC共通呼出 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- callEKK0341B021SC  
- callEKK0341B001SC  
- callEDK0301B060SC  
- ...他多数

**呼出パス例:**

```
callEKK0341B001SC → callSvcInter → SC
checkTakinoRT → callSvcInter → SC
hakkoSOD → callSvcInter → SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| 各種SC              | -    | 業務データ           |

---

---

### chgOpsvKeiJdg()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public boolean chgOpsvKeiJdg(String chbfOpSvcKeiNo, String chbfOpSvcKeiGeneAddDtm, String chafOpSvcKeiNo, String chafOpSvcKeiGeneAddDtm)`
> **戻り値:** `boolean`

---

#### 1. 役割

前回処理したオプションサービス契約番号・世代登録日時と、今回渡された値を比較し、いずれかが一致しない場合に`true`を返却する業務判定メソッドです。オプションサービス契約更新処理の分岐条件判定として利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["chgOpsvKeiJdg(chbfOpSvcKeiNo, chbfOpSvcKeiGeneAddDtm, chafOpSvcKeiNo, chafOpSvcKeiGeneAddDtm)"] --> IF1{"this.mae_recode_chbf_op_svc_kei_no.equals(chbfOpSvcKeiNo) && this.mae_recode_chbf_op_svc_kei_gene_add_dtm.equals(chbfOpSvcKeiGeneAddDtm) && this.mae_recode_chaf_op_svc_kei_no.equals(chafOpSvcKeiNo) && this.mae_recode_chaf_op_svc_kei_gene_add_dtm.equals(chafOpSvcKeiGeneAddDtm)"}
  IF1 -- "Yes（全て一致）" --> RETURN1["return false"]
  IF1 -- "No（いずれか不一致）" --> RETURN2["return true"]
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 前回処理値と全て一致 | なし | false |
| 2 | いずれか不一致 | なし | true |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | chbfOpSvcKeiNo | String | 変更前オプションサービス契約番号 |
| 2 | chbfOpSvcKeiGeneAddDtm | String | 変更前オプションサービス契約世代登録日時 |
| 3 | chafOpSvcKeiNo | String | 変更後オプションサービス契約番号 |
| 4 | chafOpSvcKeiGeneAddDtm | String | 変更後オプションサービス契約世代登録日時 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| -    | -         | -       | -          | CRUD操作なし判定のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** chgOpsvKeiJdg（直接・または上位呼出しから分岐判定）

**呼出パス:**
```
[呼出元メソッド] → **chgOpsvKeiJdg**
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| -         | -    | -         |

---

---

### chgSvcKeiJdg()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public boolean chgSvcKeiJdg(String chSvcKeiNo)`
> **戻り値:** `boolean`

---

#### 1. 役割

渡されたサービス契約番号と、前回処理したサービス契約番号を比較し、不一致の場合はtrue（一致しなければ変更あり）を返却する判定メソッドです。<citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["chgSvcKeiJdg(chSvcKeiNo)"] --> IF1{"this.mae_recode_ch_svc_kei_no.equals(chSvcKeiNo)"}
  IF1 -- "Yes" --> S1["return false"]
  IF1 -- "No" --> S2["return true"]

  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | this.mae_recode_ch_svc_kei_no.equals(chSvcKeiNo) |  | false |
| 2 | 上記以外 |  | true |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | chSvcKeiNo | String | 比較対象サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- chgSvcKeiJdg(直接呼出)

**呼出パス:**

```
chgSvcKeiJdg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### chkOdrSette()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean chkOdrSette(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `boolean`

---

#### 1. 役割

ルーターオプション変更時に、オーダ出力（SOD発行）が必要かどうかを判定する業務メソッドです。  
EKK1041B001 オーダ設定一覧照会およびEKK1041A010SC オーダ設定一意照会の結果から、多機能ルーターの対象レコードを特定し、発行条件に合致する場合のみtrueを返します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["chkOdrSette(handle, param)"] --> S1["Step1: callEKK1041B001SCでオーダ設定一覧照会"]
  S1 --> IF1{"resultOdrSet.size() == 0"}
  IF1 -- "Yes（0件）" --> RETF["return false"]
  IF1 -- "No（1件以上）" --> S2["Step2: 全件ループ"]

  S2 --> FOR1["for each odrSet in resultOdrSet"]
  FOR1 --> S3["odrSetNo, takino_kktk_svc_kei_no取得"]
  S3 --> IF2{"takino_kktk_svc_kei_no ≠ kktkSvcKeiNo"}
  IF2 -- "Yes" --> NEXT1["次レコード"]
  IF2 -- "No" --> S4["Step3: ODR_SET_NO指定でcallEKK1041A010SC"]
  S4 --> IF3{"statusCode != 0"}
  IF3 -- "Yes" --> ERR1["CCException例外スロー"]
  IF3 -- "No" --> S5["Step4: msgListOdrSetが1件以上か"]
  S5 --> IF4{"msgListOdrSet != null && length != 0"}
  IF4 -- "Yes" --> S6["Step5: yokyu_sbt_cd取得"]
  S6 --> IF5{"yokyu_sbt_cd != null"}
  IF5 -- "Yes" --> IF6{"yokyu_sbt_cd.matches('0[24]')"}
  IF6 -- "Yes" --> RETT["return true"]
  IF6 -- "No" --> NEXT2["次レコード"]
  IF5 -- "No" --> NEXT2
  IF4 -- "No" --> NEXT2
  NEXT1 --> ENDLOOP1["次レコード"]
  NEXT2 --> ENDLOOP1
  ENDLOOP1 --> FOR1
  FOR1 --> RETF
  RETF["return false"]

  %% 注釈
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
```

**処理ステップ詳細:**

1. `callEKK1041B001SC`を呼び出し（オーダ種別コード：電話、サービスオーダコード：多機能ルータ）。
2. 取得結果が0件ならfalse返却（SOD発行不要）。
3. 取得結果を全件ループし、各レコードの`ODR_SET_NO`、`KKTK_SVC_KEI_NO`を取得。
4. 対象機器提供サービス契約番号かどうかで判定、一致しない場合は次のレコードへ。
5. 一致レコードについて`callEKK1041A010SC`で詳細照会、エラーなら例外スロー。
6. 結果リストが1件以上の場合、`RCNT_YOKYU_SBT_CD`を取得。
7. `RCNT_YOKYU_SBT_CD`が`0[24]`（新規または変更）にマッチする場合true返却（SOD発行）。
8. それ以外は全てfalse返却。

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | resultOdrSet.size() == 0 | - | false返却 |
| 2 | !takino_kktk_svc_kei_no.equals(kktkSvcKeiNo) | - | 次レコード |
| 3 | 0 != statusCode | - | 例外スロー |
| 4 | msgListOdrSet != null && msgListOdrSet.length != 0 | - | yokyu_sbt_cdチェック |
| 5 | yokyu_sbt_cd != null | - | yokyu_sbt_cd.matches("0[24]")判定へ |
| 6 | yokyu_sbt_cd.matches("0[24]") | 新規/変更 | true返却 |
| 7 | 上記以外 | - | false返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト／レスポンス業務データ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | オーダ設定一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | オーダ設定一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- 不明（CallerTraceなし）

**呼出パス:**

```
[不明] → chkOdrSette → callEKK1041B001SC [R] → callEKK1041A010SC [R]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定 |
| callEKK1041A010SC | R | オーダ設定 |

---

---

### cnclOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
cnclOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite cnclOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

キャンセル（解約キャンセル）関連オーダ制御処理。サービス種類判定を行い、適切なDSL制御（dslOdrCtrl）にディスパッチする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["cnclOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["jdgSvcKindでサービス種類判定"]
  S1 --> IF1{"svc_kind==NET/MOB/TEL/ADSL"}
  IF1 -- "Yes" --> S2["dslOdrCtrlへディスパッチ"]
  IF1 -- "No" --> S3["その他処理（該当しない）"]
  S2 --> RET["param返却"]
  S3 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `jdgSvcKind`でサービス種類を判定
2. サービス種別がネット、モバイル、電話、ADSLであれば`dslOdrCtrl`呼出
3. それ以外は処理終了

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `svc_kind == NET/MOB/TEL/ADSL` | "01"/"03"/"04"/"05" | dslOdrCtrl呼出 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD生成業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件 | 一覧照会 |
| D | callEKK1081E010SC | EKK1081 | オーダ発行条件 | 論理削除 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約 | 交換中レコード専用一覧照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | 一覧照会 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳 | SYSID一覧照会 |
| R | callEKK0081B004SC | EKK0081 | サービス契約 | SYSID一覧照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳 | 一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 不明 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 回線内訳一覧照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 機器変更番号一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEKK0411A010SC | EKK0411 | サブオプションサービス契約（ISP） | 一意照会 |
| R | callEKK0401A010SC | EKK0401 | サブオプションサービス契約 | 一意照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| R | callEKK0191B001_2SC | EKK0191 | サービス契約内訳（eo光電話） | サービス契約番号一覧照会 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → cnclOdrCtrl

**呼出パス:**

```
hakkoSOD → cnclOdrCtrl → jdgSvcKind → dslOdrCtrl
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK1081B001SC | R | オーダ発行条件 |
| callEKK1081E010SC | D | オーダ発行条件 |
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0341B008SC | R | 機器提供サービス契約 |
| callEKK0341B008_02SC | R | 機器提供サービス契約 |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK1041B001SC | R | オーダ設定 |
| callEKK0161B003SC | R | サービス契約内訳 |
| callEKK0081B004SC | R | サービス契約 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0251B001SC | R | サービス契約回線内訳 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約 |
| callEKK0341B029SC | R | 機器提供サービス契約 |
| callEKK0341B021SC | R | 機器提供サービス契約 |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1041A010SC | R | オーダ設定 |
| callEKK0411A010SC | R | サブオプションサービス契約（ISP） |
| callEKK0401A010SC | R | サブオプションサービス契約 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0191B001_2SC | R | サービス契約内訳（eo光電話） |

---

---

### countUpWiFiSpotSessions()

#### 呼出元 (Reverse Call Tree) — 11 direct callers

```
countUpWiFiSpotSessions() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── stpRlsOdrCtrl()
│   ├── hakkoSOD()
│   └── useStpRlsOdrCtrl()
│       └── hakkoSOD()
└── stpUkOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    │   └── hakkoSOD()
    └── useStpOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public int countUpWiFiSpotSessions(IRequestParameterReadWrite param, SessionHandle handle, String sys_id, String svcKeiUcwkNo)`
> **戻り値:** `int`

---

#### 1. 役割

有効なWi-Fiスポットのセッション数を求める業務メソッド。指定SYSID配下のサービス契約内訳を走査し、条件に合うWi-Fiスポットをカウントします。<citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["countUpWiFiSpotSessions(param, handle, sys_id, svcKeiUcwkNo)"] 
  START --> S1["Step1: inHashUcwkへSYSID格納"]
  S1 --> S2["Step2: callEKK0161B003SCでサービス契約内訳一覧照会（SYSID）"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> ERR1["例外発生"]
  IF1 -- "No" --> S3["msgListUcwkから内訳データループ"]
  S3 --> FOR1["for-each eKK0161B003Hash"]
  FOR1 --> S4["tmp_svc_kei_ucwk_no取得"]
  S4 --> IF2{"tmp_svc_kei_ucwk_no.equals(svcKeiUcwkNo)"}
  IF2 -- "No" --> S5["inHashUcwkWifiへサービス契約内訳番号・運用日セット"]
  S5 --> S6["callEKK0161A010SCでサービス契約内訳一意照会"]
  S6 --> IF3{"statusCode != 0"}
  IF3 -- "Yes" --> ERR2["例外発生"]
  IF3 -- "No" --> S7["eKK0161A010HashWifiからPCRS_CD, SVC_KEI_UCWK_STAT取得"]
  S7 --> IF4{"PCRS_CDがFREE_WIFIまたはWIFISPOT かつ SVC_KEI_UCWK_STATが有効"}
  IF4 -- "Yes" --> S8["wifiSpotCnt++"]
  IF4 -- "No" --> S9["継続"]
  FOR1 --> RET["return wifiSpotCnt"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0（EKK0161B003SC） |  | 例外発生 |
| 2 | tmp_svc_kei_ucwk_no.equals(svcKeiUcwkNo) |  | 継続 |
| 3 | statusCode != 0（EKK0161A010SC） |  | 例外発生 |
| 4 | PCRS_CDがFREE_WIFIまたはWIFISPOT かつ SVC_KEI_UCWK_STATが有効 |  | wifiSpotCnt++ |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | sys_id | String | システムID |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳一覧照会 | SYSID単位の内訳一覧取得 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳一意照会 | 内訳単体の詳細取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- dslOdrCtrl → countUpWiFiSpotSessions
- kaihkOdrCtrl → countUpWiFiSpotSessions
- stpRlsOdrCtrl → countUpWiFiSpotSessions
- stpUkOdrCtrl → countUpWiFiSpotSessions
- ksiDslOdrCtrl → countUpWiFiSpotSessions
- cnclOdrCtrl → countUpWiFiSpotSessions
- ksiDslFixOdrCtrl → countUpWiFiSpotSessions
- hakkoSOD → countUpWiFiSpotSessions
- useStpRlsOdrCtrl → countUpWiFiSpotSessions
- bmpSwitchOdrCtrl → countUpWiFiSpotSessions
- useStpOdrCtrl → countUpWiFiSpotSessions

**呼出パス:**

```
[呼出元] → countUpWiFiSpotSessions → callEKK0161B003SC / callEKK0161A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B003SC | R | サービス契約内訳一覧 |
| callEKK0161A010SC | R | サービス契約内訳一意照会 |

---

---

### courseChgeOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
courseChgeOdrCtrl() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── adchgFixOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite courseChgeOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

コース変更に伴うオーダ制御処理を行い、サービス契約、機器契約、オプション契約など全ての関連状態を判定・制御し、必要なSOD（サービスオーダ）を発行する。コース変更対象の契約情報やオプション状況を多段階的に取得・分岐し、複雑な分岐ロジックに基づき業務フローを制御するメインオーケストレータである。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["courseChgeOdrCtrl(handle, param, fixedText, sodMap)"] 
    --> S1["sodMapからサービス契約・内訳・オプション・機器契約情報Map取得"]
    --> S2["各MapをshkkaMapで初期化"]
    --> S3["契約情報（番号/内訳/世代/オプション/機器）を個別取得"]
    --> IF1{"料金コースが100M/100M_PRM/200M以外か"}
    IF1 -- "Yes:対象外" --> RET1["終了(return param)"]
    IF1 -- "No:続行" --> IF2{"サービス契約ステータスが受付済/照査済/締結済か"}
    IF2 -- "Yes" --> IF3{"chgSvcKeiJdg(svc_kei_no)=trueか"}
    IF3 -- "Yes" --> IF4{"新旧内訳番号・世代が存在するか"}
    IF4 -- "Yes" --> S4["同一処理番号採番→addSOD(認証登録)→契約内訳一覧照会"]
    S4 --> FOR1["内訳一覧結果ループ"]
    FOR1 --> IF5{"内訳番号一致"}
    IF5 -- "Yes" --> S5["何もしない"]
    IF5 -- "No" --> IF6{"内訳ステータス解約済/キャンセル済か"}
    IF6 -- "Yes" --> IF7{"異動区分コース変更/世代最新か"}
    IF7 -- "Yes" --> S6["契約番号・世代保持"]
    IF7 -- "No" --> S7["何もしない"]
    IF6 -- "No" --> S8["何もしない"]
    FOR1 --> IF8{"変更後機器契約番号・世代が存在"}
    IF8 -- "Yes" --> S9["機器出荷・SOD出力"]
    IF8 -- "No" --> S10["何もしない"]
    IF4 -- "No" --> S11["何もしない"]
    IF3 -- "No" --> S12["何もしない"]
    IF2 -- "No" --> IF9{"サービス契約ステータス=サービス提供中か"}
    IF9 -- "Yes" --> IF10{"chgSvcKeiJdg(svc_kei_no)=true"}
    IF10 -- "Yes" --> IF11{"新旧内訳番号・世代が存在するか"}
    IF11 -- "Yes" --> S13["同一処理番号採番→新認証ID SOD発行"]
    IF11 -- "No" --> S14["何もしない"]
    IF10 -- "No" --> S15["何もしない"]
    IF9 -- "No" --> S16["何もしない"]
    S13 --> IF12{"変更後機器契約番号・世代が存在"}
    IF12 -- "Yes" --> S17["機器出荷・SOD出力"]
    IF12 -- "No" --> S18["何もしない"]
    S3 --> IF13{"変更後オプション契約番号指定あり"}
    IF13 -- "Yes" --> S19["オプション契約一意照会→エラー時例外"]
    S19 --> IF14{"オプションサービスコード=B015か"}
    IF14 -- "Yes" --> S20["マルチセッション(動的)・解約/登録SOD発行"]
    IF14 -- "No" --> IF15{"オプションサービスコード=B004か"}
    IF15 -- "Yes" --> S21["固定IPアドレス・解約/消去/登録SOD発行"]
    IF15 -- "No" --> S22["何もしない"]
    S3 --> IF16{"変更後オプション契約番号指定あり"}
    IF16 -- "Yes" --> S23["オプション契約一意照会→エラー時例外"]
    S23 --> IF17{"オプションサービスコード=B015か"}
    IF17 -- "Yes" --> S24["マルチセッション(動的/静的)SOD発行(契約ステータス分岐)"]
    IF17 -- "No" --> IF18{"オプションサービスコード=B004か"}
    IF18 -- "Yes" --> S25["固定IPアドレス・登録SOD発行(契約ステータス分岐)"]
    IF18 -- "No" --> S26["何もしない"]
    S3 --> IF19{"認証IDが変わらない場合: isBlank(svc_kei_ucwk_no)&&isBlank(chaf_svc_kei_ucwk_gene_add_dtm)"}
    IF19 -- "Yes" --> S27["料金プラン変更オーダ発行"]
    S3 --> IF20{"同一処理番号が空でない場合"}
    IF20 -- "Yes" --> S28["発行したSODを退避"]
    S3 --> S29["コース変更SOD発行"]
    S29 --> RET2["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
  style IF11 fill:#ffcc00
  style IF12 fill:#ffcc00
  style IF13 fill:#ffcc00
  style IF14 fill:#ffcc00
  style IF15 fill:#ffcc00
  style IF16 fill:#ffcc00
  style IF17 fill:#ffcc00
  style IF18 fill:#ffcc00
  style IF19 fill:#ffcc00
  style IF20 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 料金コースが100M/100M_PRM/200M以外 | PCRS_CD_100M, PCRS_CD_100M_PRM, PCRS_CD_200M | 終了 |
| 2 | サービス契約ステータス=受付済/照査済/締結済 | SVC_KEI_STAT_010, SVC_KEI_STAT_020, SVC_KEI_STAT_030 | コース変更前処理 |
| 3 | chgSvcKeiJdg(svc_kei_no) | - | true/false分岐 |
| 4 | 新旧内訳番号・世代が存在 | - | 継続/何もしない |
| 5 | 内訳番号一致 | - | 何もしない |
| 6 | 内訳ステータス解約済/キャンセル済 | SVC_KEI_STAT_910, SVC_KEI_STAT_920 | 異動区分判定 |
| 7 | 異動区分=コース変更かつ世代最新 | IDO_DIV_COURSECHG | 継続/何もしない |
| 8 | 変更後機器契約番号・世代存在 | - | 機器出荷 |
| 9 | サービス契約ステータス=サービス提供中 | SVC_KEI_STAT_100 | サービス開始後処理 |
| 10 | 変更後オプション契約番号指定あり | - | オプション分岐 |
| 11 | オプションサービスコード=B015 | OP_SVC_CD_MLTISE | マルチセッション処理 |
| 12 | オプションサービスコード=B004 | OP_SVC_CD_FIXIPAD | 固定IPアドレス処理 |
| 13 | マルチセッション契約ステータス=締結済/提供中 | SVC_KEI_STAT_030, SVC_KEI_STAT_100 | 静的/動的登録分岐 |
| 14 | 固定IPアドレス契約ステータス=締結済/提供中 | SVC_KEI_STAT_030, SVC_KEI_STAT_100 | 登録分岐 |
| 15 | 認証IDが変わらない場合 | isBlank(svc_kei_ucwk_no)&&isBlank(chaf_svc_kei_ucwk_gene_add_dtm) | 料金プラン変更SOD |
| 16 | 同一処理番号が空でない場合 | - | SOD退避 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | fixedText | String | 固定テキスト（通知・識別用） |
| 4 | sodMap | HashMap<String, Object> | SOD制御用マップ。契約・内訳・オプション等の情報を格納 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳一覧 | サービス契約内訳一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | オプションサービス契約一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | オプションサービス契約一覧照会(契約番号) |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 機器提供サービス契約一覧照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 機器提供サービス契約一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | ISPオプション契約一意照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約 | オプションサービス契約一覧照会(契約番号) |
| R | callEKK0091A010_SC | EKK0091 | サービス契約 | サービス契約一意照会 |
| R | callEKK1681B001SC | EKK1681 | 異動予約 | 異動予約一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳 | サービス契約回線内訳(現在利用中)照会 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 機器提供サービス契約一覧照会(回線内訳) |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | サービス契約内訳一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 機器変更番号一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | オーダ設定一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | オーダ設定一意照会 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | SC例外 | エラー | SC呼び出し失敗時（例: statusCode != 0） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → courseChgeOdrCtrl

**呼出パス:**

```
hakkoSOD → courseChgeOdrCtrl → callEKK0161B004SC
                                → callEKK0351A010SC
                                → callEKK0351B002SC
                                → callEKK1081C011SC
                                → callEKK0341B008SC
                                → callEKK0341A010SC
                                → callEKK0361A010SC
                                → callEKK0351B010SC
                                → callEKK0091A010_SC
                                → callEKK1681B001SC
                                → callEKK0251B003SCCAAMsg
                                → callEKK0341B504SC
                                → callEKK0191A010SC
                                → callEKK0341B029SC
                                → callEKK0341B021SC
                                → callEKK2811B010SC
                                → callEKK1041B001SC
                                → callEKK1041A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B004SC | R | サービス契約内訳一覧 |
| callEKK0351A010SC | R | オプションサービス契約一意照会 |
| callEKK0351B002SC | R | オプションサービス契約一覧 |
| callEKK1081C011SC | R | 同一処理番号取得 |
| callEKK0341B008SC | R | 機器提供サービス契約一覧 |
| callEKK0341A010SC | R | 機器提供サービス契約一意照会 |
| callEKK0361A010SC | R | ISPオプション契約一意照会 |
| callEKK0351B010SC | R | オプションサービス契約一覧 |
| callEKK0091A010_SC | R | サービス契約一意照会 |
| callEKK1681B001SC | R | 異動予約一覧 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳 |
| callEKK0341B504SC | R | 機器提供サービス契約一覧(回線内訳) |
| callEKK0191A010SC | R | サービス契約内訳<eo光電話>一意照会 |
| callEKK0341B029SC | R | 機器変更番号一覧照会 |
| callEKK0341B021SC | R | 予約一覧照会 |
| callEKK2811B010SC | R | 機器オプションサービス契約一覧 |
| callEKK1041B001SC | R | オーダ設定一覧照会 |
| callEKK1041A010SC | R | オーダ設定一意照会 |
```
<citation>1</citation><citation>2</citation><citation>3</citation><citation>4</citation><citation>5</citation>
```

---

（※他6メソッドは文字数制限のため、分割して順次ご提供します）

---

### dslOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
dslOdrCtrl() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── cnclOdrCtrl()
│   └── hakkoSOD()
├── ksiDslFixOdrCtrl()
│   └── hakkoSOD()
└── ksiDslOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite dslOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

ADSL・モバイル・電話等の解約/強制解約/キャンセル時に全サービス種別・オプション・機器の状態を一括判定し、複雑な業務分岐に従い必要なSODを漏れなく発行する基幹オーケストレーション。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["dslOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["Step1: 各種業務変換・情報取得"]
  S1 --> S2["Step2: サービス契約・内訳・オプション・機器状態取得"]
  S2 --> S3["Step3: サービス種別・状態ごとに分岐多数"]
  S3 --> S4["Step4: オプション契約ループ: SOD判定・登録"]
  S4 --> S5["Step5: 機器・WiFi・モバイル等: SOD判定・登録"]
  S5 --> S6["Step6: 電話解約: VA・ENUM・多機能ルーター状況判定SOD登録"]
  S6 --> S7["Step7: オプション設定オーダ/トーキ/緊急通報等特殊処理"]
  S7 --> RET["return param"]
```

**制御フロー分岐（全条件列挙）:**
（多数につき代表例のみ抜粋。各種分岐・forループ・判定・例外投げ分岐すべて該当データに従って列挙）

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `svc_kei_ucwk_info_Map.containsKey(JKKHakkoSODConstCC.TARGET_SVC_KEI_UCWK_CNT)` |  | 対象内訳数取得 |
| 2 | `svc_kind == SVC_KIND_NET || svc_kind == SVC_KIND_ADSL` |  | ネット/ADSL分岐 |
| 3 | `statusCode != 0` |  | 例外スロー |
| 4 | `OP_SVC_CD_EMAIL.equals(op_svc_cd)` |  | メールSOD発行対象 |
| 5 | `isBlank(urlDomain) || isBlank(urlAccount)` |  | HP SOD対象外 |
| 6 | ...（以降も多数分岐・forループ・例外あり） |  | ... |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳一意照会 |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件一覧照会 |
| D | callEKK1081E010SC | EKK1081 | オーダ発行条件論理削除 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳<eo光電話>一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約一覧照会（交換中専用） |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約一意照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳一覧照会（SYSID） |
| R | callEKK0081B004SC | EKK0081 | サービス契約一覧照会（SYSID） |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧照会（回線内訳） |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧照会（機器変更番号） |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧照会（予約） |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意照会 |
| R | callEKK0411A010SC | EKK0411 | サブオプションサービス契約＜ISP＞一意照会 |
| R | callEKK0401A010SC | EKK0401 | サブオプションサービス契約一意照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳一覧照会 |
| R | callEKK0191B001_2SC | EKK0191 | サービス契約内訳<eo光電話>一覧照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧照会(履歴照会) |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧照会（機器製造番号） |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → dslOdrCtrl
- ksiDslFixOdrCtrl → dslOdrCtrl
- cnclOdrCtrl → dslOdrCtrl

**呼出パス:**

```
hakkoSOD → dslOdrCtrl → [各種内部判定・SC呼出群]
```

**終端:**  
上記SC群

---### wribInfoAddOdrCtrl()

---

#### 1. 役割

割引情報登録オーダ制御処理。割引オーダの発行判定・データ取得・SC呼出・マッピング・複数オーダ発行など、割引情報に基づく業務を一括制御する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["wribInfoAddOdrCtrl(handle, param, sodMap)"] --> S1["Step1: sodMapからオプションサービス契約情報(OPSVEI_INFO)を取得"]
  S1 --> S2["Step2: オプションサービス契約情報をMap化（shkkaMap）"]
  S2 --> S3["Step3: 変更後オプションサービス契約番号(INFO_CHAF_OPSVKEI_NO)取得"]
  S3 --> S4["Step4: 処理区分(SHORI_DIV)を取得"]
  S4 --> IF1{"SHORI_DIV==SHORI_DIV_VC(割引)"}
  IF1 -- "Yes" --> S5["Step5: EKK0361A010SC呼出(割引処理)"]
  S5 --> S6["Step6: 結果ハッシュからGENE_ADD_DTM, MLADなど取得"]
  S6 --> S7["Step7: SOD発行(ODR_NAIYO_CD_114)"]
  S7 --> S8["Step8: サービス契約内訳一覧取得(getSvcKeiUtwkList)"]
  S8 --> S9["Step9: サービス契約内訳番号/世代をリストへ追加"]
  S9 --> S10["Step10: リストを配列化"]
  S10 --> S11["Step11: sodMapからKKOPSVKEI_INFO取得"]
  S11 --> S12["Step12: KKOPSVKEI_INFOマップ化"]
  S12 --> S13["Step13: KKOP_SVC_KEI_NO, CHBF_KKOPSVKEI_GENE_ADD_DTM, CHAF_KKOPSVKEI_GENE_ADD_DTM取得"]
  S13 --> S14["Step14: KKOP変更判定(checkKKOPChanged)"]
  S14 --> S15["Step15: 多機能ルータ判定(checkTakinoRT)"]
  S15 --> IF2{"kkopChangeFlag/多機能ルータフラグ判定"}
  IF2 -- "kkopChangeFlag==0 or takino_flg==0" --> S16["Step16: addTakinoSOD(ODR_NAIYO_CD_402)"]
  IF2 -- "kkopChangeFlag==1 && takino_flg==4" --> S17["Step17: addTakinoSOD(ODR_NAIYO_CD_418)"]
  IF2 -- "kkopChangeFlag==2 && takino_flg==4" --> S18["Step18: addTakinoSOD(ODR_NAIYO_CD_418)"]
  IF2 --> END["return param"]
  IF1 -- "No" --> IF3{"SHORI_DIV==SHORI_DIV_KKOP(機器オプション)"}
  IF3 -- "Yes" --> S19["Step19: ...（同様にKKOP分岐・多機能ルータ分岐）"]
  IF3 -- "No" --> END
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.SHORI_DIV_VC.equals(shori_div)` | 割引処理 | 割引処理分岐 |
| 2 | `JKKHakkoSODConstCC.SHORI_DIV_KKOP.equals(shori_div)` | 機器オプション | 機器オプション分岐 |
| 3 | `1 < this.svc_kei_ucwk_no.length` | サービス契約内訳複数 | サービス契約内訳配列化 |
| 4 | `kkopChangeFlag == 0 || takino_flg == 0` | 変更なし/通常 | addTakinoSOD(ODR_NAIYO_CD_402) |
| 5 | `kkopChangeFlag == 1 && takino_flg == 4` | 変更有/多機能 | addTakinoSOD(ODR_NAIYO_CD_418) |
| 6 | `kkopChangeFlag == 2 && takino_flg == 4` | 別条件/多機能 | addTakinoSOD(ODR_NAIYO_CD_418) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD制御情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK2811A010SC | EKK2811 | 機器オプションサービス契約 | 一意照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | SIF呼出 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧 | 照会(サービス契約回線内訳) |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧(機器変更番号) | 照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧(予約) | 照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧 | 照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約 | 一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧(履歴) | 照会 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧 | 照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧(機器製造番号) | 照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

記載データ無し

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD → wribInfoAddOdrCtrl

**呼出パス:**
```
hakkoSOD → wribInfoAddOdrCtrl → callEKK0361A010SC → [EKK0361]
                             → addSOD, addTakinoSOD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK2811A010SC | R | 機器オプションサービス契約 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約一覧 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK0341B029SC | R | 機器提供サービス契約一覧(機器変更番号) |
| callEKK0341B021SC | R | 機器提供サービス契約一覧(予約) |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1041B001SC | R | オーダ設定一覧 |
| callEKK1041A010SC | R | オーダ設定 |
| callEKK0081A010SC | R | サービス契約 |
| callEKK0341B008SCRireki | R | 機器提供サービス契約一覧(履歴) |
| callEDK0301B060SC | R | 返品機器取消一覧 |
| callEKK0341B001SC | R | 機器提供サービス契約一覧(機器製造番号) |
| callEKK0341A010SC | R | 機器提供サービス契約 |

---

---

---

### edit4OpSetOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
edit4OpSetOdrCtrl() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
└── kaihkOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public HashMap<String, Object> edit4OpSetOdrCtrl(String idoDiv, String sysid, String kk0081No, String kk0191No, String kk0191GeneDtm, String kk0351No, String kk0351GeneDtm)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

オプション設定オーダ制御に必要な情報を格納するSODマップ（業務用データMap）を生成する（パターン1）。  
各種契約情報（異動区分・SYSID・サービス契約番号・内訳番号・オプション番号等）をセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["edit4OpSetOdrCtrl(idoDiv, sysid, kk0081No, kk0191No, kk0191GeneDtm, kk0351No, kk0351GeneDtm)"] --> S1["Step1: SOD基本情報Map作成"]
  S1 --> S2["Step2: opSodKihonInfoMap.put(INFO_SYSID, sysid)"]
  S2 --> S3["Step3: opSodKihonInfoMap.put(INFO_IDO_DIV, idoDiv)"]
  S3 --> S4["Step4: サービス契約情報Map作成"]
  S4 --> S5["Step5: opSvcKeiInfoMap.put(INFO_SVC_KEI_NO, kk0081No)"]
  S5 --> S6["Step6: サービス契約内訳情報Map作成"]
  S6 --> S7["Step7: opSvcKeiUcwkInfoMap.put(INFO_SVC_KEI_UCWK_NO, kk0191No)"]
  S7 --> S8["Step8: opSvcKeiUcwkInfoMap.put(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, kk0191GeneDtm)"]
  S8 --> S9["Step9: オプションサービス契約情報Map作成"]
  S9 --> S10["Step10: opOpSvkeiInfoMap.put(INFO_CHBF_OPSVKEI_NO, kk0351No)"]
  S10 --> S11["Step11: opOpSvkeiInfoMap.put(INFO_CHBF_OPSVKEI_GENE_ADD_DTM, kk0351GeneDtm)"]
  S11 --> S12["Step12: SODマップへ各情報Mapをput"]
  S12 --> RET["return SODマップ"]
```

**処理ステップ詳細:**

1. SOD基本情報Mapを作成し、SYSIDと異動区分をセット。
2. サービス契約情報Mapを作成し、サービス契約番号をセット。
3. サービス契約内訳情報Mapを作成し、内訳番号・世代登録日時をセット。
4. オプションサービス契約情報Mapを作成し、オプションサービス契約番号・世代登録日時をセット。
5. これらのMapをSODマップにputして返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | idoDiv | String | 異動区分 |
| 2 | sysid | String | SYSID |
| 3 | kk0081No | String | サービス契約番号 |
| 4 | kk0191No | String | サービス契約内訳番号 |
| 5 | kk0191GeneDtm | String | サービス契約内訳世代登録年月日時分秒 |
| 6 | kk0351No | String | オプションサービス契約番号 |
| 7 | kk0351GeneDtm | String | オプションサービス契約世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | SOD制御Map生成のみ |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- htelNoDslOdrCtrl → edit4OpSetOdrCtrl

**呼出パス:**

```
htelNoDslOdrCtrl → edit4OpSetOdrCtrl
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editBasicCmn()

#### 呼出元 (Reverse Call Tree) — 202 direct callers

```
editBasicCmn() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addSODDupNew()    [trực tiếp]
├── addSODEmailNew()    [trực tiếp]
├── addSODFtthNew()    [trực tiếp]
├── addSODHPAccessAdd()    [trực tiếp]
├── addSODHPCapaChg()    [trực tiếp]
├── addSODHPNew()    [trực tiếp]
├── addSODMailAliasAdd()    [trực tiếp]
├── addSODMailCapaChg()    [trực tiếp]
├── addSODMListNew()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addSODTelNew()    [trực tiếp]
├── addSODTelVAChange()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addSODUQWIMAXNew()    [trực tiếp]
├── addSODVirusChkAdd()    [trực tiếp]
├── addSODWiFiChg()    [trực tiếp]
├── addSODWiFiNew()    [trực tiếp]
├── addTakinoSOD()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── callEDK0301B060SC()    [trực tiếp]
├── callEKK0161B011SC()    [trực tiếp]
├── callEKK0191B502SC()    [trực tiếp]
├── callEKK0341B001SC()    [trực tiếp]
├── callEKK0341B008SCRireki()    [trực tiếp]
├── callEKK0341B021SC()    [trực tiếp]
├── callEKK0341B029SC()    [trực tiếp]
├── checkKKOPChanged()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── executeOdrHakkoJokenAdd()    [trực tiếp]
├── executeOdrInfoSakseiWkAdd()    [trực tiếp]
├── findMobileStartOrderAtKK1041()    [trực tiếp]
├── findOlsOrderAtKK1041()    [trực tiếp]
├── findRadiusHasBeenSentSvc()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── findZ5OrderAtKK1041()    [trực tiếp]
├── getAdChgInfo()    [trực tiếp]
├── getCourseChgSvcKeiUcwk()    [trực tiếp]
├── getDammyPplanCd()    [trực tiếp]
├── getDummySvcKeiNo()    [trực tiếp]
├── getEKK0251B001SC()    [trực tiếp]
├── getEKK0251B003SC()    [trực tiếp]
├── getEKK0361A010Info()    [trực tiếp]
├── getIdoRsvCourseChg()    [trực tiếp]
├── getKK0351GeneAddDtm()    [trực tiếp]
├── getKK0351Hash()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── getKojiakState()    [trực tiếp]
├── getNewPplanCd()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── getOpSvcKeiGaDtm()    [trực tiếp]
├── getOpSvcKeiIsp()    [trực tiếp]
├── getOpSvcKeiList()    [trực tiếp]
├── getOpSvcKeiNotDslList()    [trực tiếp]
├── getSame_trn_no()    [trực tiếp]
├── getSameTrnNo()    [trực tiếp]
├── getSbOpSvcKeiList()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getSvcKeiInfo()    [trực tiếp]
├── getSvcKeiList()    [trực tiếp]
├── getSvcKeiUtwk()    [trực tiếp]
├── getSvcKeiUtwkList()    [trực tiếp]
├── getSvcKeiUtwkListSysid()    [trực tiếp]
├── getTaknkikiM()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── is050AddOrderHakkoZumi()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isItenNoGuideTokiChu()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isMonaiBmp()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── isStartRsvOption()    [trực tiếp]
├── isTajgsTelNo()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
├── isUcwkStatCheck()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── judgeOdrHakkoJoken4WiFiSpot()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseJdg()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── searchOpSvcKei()    [trực tiếp]
├── searchSvcKeiUcwk()    [trực tiếp]
├── searchSvcKeiUcwkEohtl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── tsuikabunAddSOD()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── callEKK0081A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── getSvcKeiList()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── checkTakinoRT()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── telNoChge()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── wribInfoAddOdrCtrl()
│   │   └── newNet()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── hakkoSOD()
│   │       └── newKeiOdrCtrl()
│   └── pauseJdg()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── setChgePWForRouterConInfo()
├── callEKK0081B004SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── judgeOdrHakkoJoken4WiFiSpot()
│       ├── adchgFixOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       └── spotLoginSysidChgeOdrCtrl()
│           └── hakkoSOD()
├── callEKK0091A010_SC()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   ├── hakkoCourseChgSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── malwareBlockingDivOdrCtrl()
│   │   └── hakkoSOD()
│   └── taiikiSeigenOdrCtrl()
│       └── hakkoSOD()
├── callEKK0161A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isBmpOpenZumi()
│   ├── isBmpOpenZumiDslNoDslNoChg()
│   ├── isUcwkStatCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── countUpWiFiSpotSessions()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getSvcKeiUtwk()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── htelItntokiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── searchSvcKeiUcwk()
│   │   ├── bmpSipDslOdrCtrl()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── telNoChge()
│   │   └── add050AddSod()
│   │       ├── bmpSwitchOdrCtrl()
│   │       ├── cnclOdrCtrl()
│   │       ├── dslOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       ├── ksiDslFixOdrCtrl()
│   │       ├── ksiDslOdrCtrl()
│   │       ├── opSetOdrCtrl()
│   │       └── telNoChge()
│   ├── stpRlsOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── useStpRlsOdrCtrl()
│   │       └── hakkoSOD()
│   ├── stpUkOdrCtrl()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   └── useStpOdrCtrl()
│   │       └── hakkoSOD()
│   └── telNoChge()
│       ├── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
├── callEKK0161B003SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── countUpWiFiSpotSessions()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   └── useStpRlsOdrCtrl()
├── callEKK0161B004SC()
│   ├── adchgFixOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getOldVrsbIdgSvcDtlCd()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── adchgFixOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getCourseChgSvcKeiUcwk()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── koteiIpAd8DivOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── opHktgiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── taiikiSeigenOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   └── getOldVrsbIdgSvcDtlCd()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── cnclOdrCtrl()
│   │       ├── courseChgeOdrCtrl()
│   │       ├── dslOdrCtrl()
│   │       ├── hakkoCourseChgSOD()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── idpwShkkaSaifuriOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       ├── koteiIpAd8DivOdrCtrl()
│   │       ├── ksiDslFixOdrCtrl()
│   │       ├── ksiDslOdrCtrl()
│   │       ├── malwareBlockingDivOdrCtrl()
│   │       ├── opHktgiOdrCtrl()
│   │       ├── opSetOdrCtrl()
│   │       ├── pauseRlsChgeOdrCtrl()
│   │       ├── pauseUkOdrCtrl()
│   │       ├── stpRlsOdrCtrl()
│   │       ├── taiikiSeigenOdrCtrl()
│   │       └── useStpRlsOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   └── ksiDslOdrCtrl()
│   └── vLanIdChgOdrCtrl()
│       └── hakkoSOD()
├── callEKK0161B008SC()
│   ├── hakkoSOD()
│   └── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
├── callEKK0191A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── addIpv6SODAft()
│   ├── bmpDojiMskm()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoChgeOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isBmpOpenZumi()
│   ├── isBmpOpenZumiDslNoDslNoChg()
│   ├── isTelnoSODJudge()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── addTensoDenwaOp()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── addTokiSOD()
│   │   ├── bmpDojiMskm()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── bmpSipDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── checkTakinoRT()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── telNoChge()
│   │   ├── vLanIdChgOdrCtrl()
│   │   └── wribInfoAddOdrCtrl()
│   ├── getZ1HakkoKh()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── isKikiSeizoNoCheck()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── pauseUkOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   └── kaihkOdrCtrl()
│   └── searchSvcKeiUcwkEohtl()
│       ├── add050AddSod()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── telNoChge()
├── callEKK0191B001_2SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
├── callEKK0191B001SC()
│   ├── hakkoSOD()
│   └── htelNoInfoChgeOdrCtrl()
├── callEKK0251B001SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── getEKK0251B001SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── vLanIdVaChangeOdrCtrl()
├── callEKK0251B003SC()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── opSetOdrCtrl()
│   └── getEKK0251B003SC()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       └── opSetOdrCtrl()
├── callEKK0251B003SCCAAMsg()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── rtOpChgDivOdrCtrl()
│       └── hakkoSOD()
├── callEKK0341A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── getShuriKokanBfKiki()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── checkTakinoRT()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── getVAkikiInfo()
│   │   ├── getZ1HakkoKh()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── isKikiSeizoNoCheck()
│   │   ├── jdgIpv6()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── telNoChge()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── wribInfoAddOdrCtrl()
│   │   └── isRegalVaKiki()
│   │       ├── hakkoSOD()
│   │       └── htelNoInfoChgeOdrCtrl()
│   ├── jdgOdr163()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   └── vLanIdVaChangeOdrCtrl()
│       └── hakkoSOD()
├── callEKK0341B002SC()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── getKktkSvcKeiList()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── newEoMobile()
│   │   └── newKeiOdrCtrl()
│   └── setChgePWForRouterConInfo()
│       ├── hakkoSOD()
│       └── idpwShkkaSaifuriOdrCtrl()
│           └── hakkoSOD()
├── callEKK0341B008_02SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   └── vLanIdChgOdrCtrl()
├── callEKK0341B008SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoChgeOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   ├── getVAkikiInfo()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── getZ1HakkoKh()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── isKikiSeizoNoCheck()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   └── jdgIpv6()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── jdgIpv6EKK0361A010()
│           ├── adchgFixOdrCtrl()
│           ├── addIpv6SODAft()
│           ├── hakkoSOD()
│           ├── kaihkOdrCtrl()
│           └── newKeiOdrCtrl()
├── callEKK0341B504SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK0351A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── getKK0351GeneAddDtm()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── getKK0351Hash()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── getOpSvcKei4Eohtel()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   └── useStpOdrCtrl()
│   └── searchOpSvcKei()
│       ├── add050AddSod()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── telNoChge()
│       └── add050DelSod()
│           ├── bmpSwitchOdrCtrl()
│           ├── cnclOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── hakkoSOD()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── opSetOdrCtrl()
│           └── telNoChge()
├── callEKK0351B002SC()
│   ├── adchgFixOdrCtrl()
│   ├── addTensoDenwaOp()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getOpSvcKei4Eohtel()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── addIpv6SODAft()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── bmpDojiMskm()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── stpRlsOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── setChgePWForDialup()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   ├── setChgePWForIPv6()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   └── setChgePWForMltiSe()
│       ├── hakkoSOD()
│       └── idpwShkkaSaifuriOdrCtrl()
├── callEKK0351B010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   └── useStpRlsOdrCtrl()
├── callEKK0361A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── addIpv6SODAft()
│   ├── addTensoDenwaOp()
│   ├── addTokiSOD()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── enumAddOdrCtrl()
│   ├── enumDelOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── setChgePWForDialup()
│   ├── setChgePWForIPv6()
│   ├── setChgePWForMltiSe()
│   ├── setChgePWForRouterConInfo()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── addSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── add050AddSod()
│   │   ├── add050DelSod()
│   │   ├── addTensoDenwaOp()
│   │   ├── addTokiSOD()
│   │   ├── bmpDojiMskm()
│   │   ├── bmpSipDslOdrCtrl()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelItntokiOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   │   ├── koteiIpAd8DivOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opHktgiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── setChgePWForDialup()
│   │   ├── setChgePWForMltiSe()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── taiikiSeigenOdrCtrl()
│   │   ├── telNoChge()
│   │   ├── useStpOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── vLanIdVaChangeOdrCtrl()
│   │   ├── wribInfoAddOdrCtrl()
│   │   ├── enumAddOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── enumDelOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getEKK0361A010Info()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── hakkoSOD()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── kaihkOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   └── setChgePWForIPv6()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
├── callEKK0401A010SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   └── opSetOdrCtrl()
├── callEKK0411A010SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
├── callEKK0791A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── getKktkSvcKeiList()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── callEKK0881A010_SC()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   └── getDammyPplanCd()
│       ├── hakkoSOD()
│       ├── koteiIpAd8DivOdrCtrl()
│       └── malwareBlockingDivOdrCtrl()
├── callEKK0891A010_SC()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   └── malwareBlockingDivOdrCtrl()
├── callEKK1041A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── chkOdrSette()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK1041B001SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── chkOdrSette()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findMobileStartOrderAtKK1041()
│   ├── findRadiusHasBeenSentSvc()
│   ├── findZ5OrderAtKK1041()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── is050AddOrderHakkoZumi()
│   ├── isItenNoGuideTokiChu()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── findOlsOrderAtKK1041()
│   │   ├── hakkoSOD()
│   │   └── htelNoInfoChgeOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   │   ├── hakkoSOD()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   └── htelNoAddOdrCtrl()
│   │       └── hakkoSOD()
│   └── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       └── opSetOdrCtrl()
├── callEKK1081B001SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── judgeOdrHakkoJoken4WiFiSpot()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── newEoMobile()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── callEKK1081C011SC()
│   ├── adchgFixOdrCtrl()
│   ├── addSODUQWIMAXKaitoriNew()
│   ├── addTensoDenwaOp()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── getSame_trn_no()
│       ├── adchgFixOdrCtrl()
│       ├── addTensoDenwaOp()
│       ├── bmpDojiMskm()
│       ├── bmpSipDslOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── getSame_trn_no()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── telNoChge()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── addSODUQWIMAXKaitoriNew()
│           ├── adchgFixOdrCtrl()
│           ├── hakkoSOD()
│           ├── newEoMobile()
│           └── newKeiOdrCtrl()
├── callEKK1081E010SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── callEKK1681B001SC()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getNewPplanCd()
│   ├── getOldVrsbIdgSvcDtlCd()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isStartRsvOption()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── getIdoRsvCourseChg()
│       ├── adchgFixOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── getOldVrsbIdgSvcDtlCd()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       └── getNewPplanCd()
│           ├── adchgFixOdrCtrl()
│           ├── courseChgeOdrCtrl()
│           └── hakkoSOD()
├── callEKK2091A010SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getAdChgInfo()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
├── callEKK2101B001SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getKojiakState()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
├── callEKK2101B002SC()
│   ├── getAdChgInfo()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callEKK2811A010SC()
│   ├── hakkoSOD()
│   ├── rtOpChgDivOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── checkKKOPChanged()
│       ├── hakkoSOD()
│       └── wribInfoAddOdrCtrl()
├── callEKK2811B010SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKU0011A010SC()
│   ├── getKojiakState()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callEKU0081B010SC()
│   ├── getKojiakState()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callETU0011B010SC()
│   ├── isBmpOpenZumi()
│   └── isBmpOpenZumiDslNoDslNoChg()
├── callEZM0121A010SC()
│   ├── isMonaiBmp()
│   ├── isTajgsTelNo()
│   └── isTelnoSODJudge()
├── callEZM0321A010_SC()
│   ├── getDammyPplanCd()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   └── getDummySvcKeiNo()
│       └── hakkoSOD()
├── callEZM0411A010SC()
│   ├── addIpv6SODAft()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   └── getTaknkikiM()
│       ├── addIpv6SODAft()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       └── opSetOdrCtrl()
├── editInMsg_EKK0081A010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── getSvcKeiInfo()
│       ├── adchgFixOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       └── vLanIdVaChangeOdrCtrl()
├── editInMsg_EKK0161B003CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── getSvcKeiUtwkListSysid()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── editInMsg_EKK0161B004CBS()
│   ├── adchgFixOdrCtrl()
│   ├── addTensoDenwaOp()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── getSvcKeiUtwkList()
│       ├── adchgFixOdrCtrl()
│       ├── addTensoDenwaOp()
│       ├── hakkoSOD()
│       ├── newKeiOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsg_EKK0341B002CBS()
│   ├── adchgFixOdrCtrl()
│   ├── getKktkSvcKeiList()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── editInMsg_EKK0351A010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── getOpSvcKeiList()
│   ├── getOpSvcKeiNotDslList()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   └── getOpSvcKeiGaDtm()
│       ├── adchgFixOdrCtrl()
│       ├── getOpSvcKeiList()
│       ├── getOpSvcKeiNotDslList()
│       ├── hakkoSOD()
│       ├── newKeiOdrCtrl()
│       └── taiikiSeigenOdrCtrl()
├── editInMsg_EKK0351B002CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── getOpSvcKeiList()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   └── getOpSvcKeiNotDslList()
│       ├── hakkoSOD()
│       └── taiikiSeigenOdrCtrl()
├── editInMsg_EKK0351B003CBS()
│   ├── adchgFixOdrCtrl()
│   ├── getOpSvcKeiList()
│   ├── getOpSvcKeiNotDslList()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── taiikiSeigenOdrCtrl()
├── editInMsg_EKK0361A010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── getOpSvcKeiIsp()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── editInMsg_EKK0401B001CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── getSbOpSvcKeiList()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── editInMsg_EKK1081C011CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── getSameTrnNo()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── editInMsg_EKK1081D010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── addSOD()
│   ├── addSODDupNew()
│   ├── addSODEmailNew()
│   ├── addSODFtthNew()
│   ├── addSODHPAccessAdd()
│   ├── addSODHPCapaChg()
│   ├── addSODHPNew()
│   ├── addSODMailAliasAdd()
│   ├── addSODMailCapaChg()
│   ├── addSODMListNew()
│   ├── addSODMRTChgRTSta()
│   ├── addSODTelNew()
│   ├── addSODTelVAChange()
│   ├── addSODUQWIMAXKaitoriNew()
│   ├── addSODUQWIMAXNew()
│   ├── addSODVirusChkAdd()
│   ├── addSODWiFiChg()
│   ├── addSODWiFiNew()
│   ├── addTakinoSOD()
│   ├── addTensoDenwaOp()
│   ├── addTokiSOD()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── enumAddOdrCtrl()
│   ├── enumDelOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── hakkouIpv6()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── setChgePWForDialup()
│   ├── setChgePWForIPv6()
│   ├── setChgePWForMltiSe()
│   ├── setChgePWForRouterConInfo()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── tsuikabunAddSOD()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── executeOdrHakkoJokenAdd()
│       ├── adchgFixOdrCtrl()
│       ├── add050AddSod()
│       ├── add050DelSod()
│       ├── addSOD()
│       ├── addSODMRTChgRTSta()
│       ├── addSODUQWIMAXKaitoriNew()
│       ├── addTensoDenwaOp()
│       ├── addTokiSOD()
│       ├── bmpDojiMskm()
│       ├── bmpSipDslOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── enumAddOdrCtrl()
│       ├── enumDelOdrCtrl()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── hakkouIpv6()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── newNet()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── setChgePWForDialup()
│       ├── setChgePWForIPv6()
│       ├── setChgePWForMltiSe()
│       ├── setChgePWForRouterConInfo()
│       ├── spotLoginSysidChgeOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── telNoChge()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       ├── wribInfoAddOdrCtrl()
│       ├── addSODDupNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODEmailNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODFtthNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODHPAccessAdd()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODHPCapaChg()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODHPNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODMailAliasAdd()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODMailCapaChg()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODMListNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODTelNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── kaihkOdrCtrl()
│       │   └── newKeiOdrCtrl()
│       ├── addSODTelVAChange()
│       │   ├── hakkoSOD()
│       │   └── htelNoAddOdrCtrl()
│       ├── addSODUQWIMAXNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   └── newKeiOdrCtrl()
│       ├── addSODVirusChkAdd()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODWiFiChg()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── spotLoginSysidChgeOdrCtrl()
│       ├── addSODWiFiNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   └── newKeiOdrCtrl()
│       ├── addTakinoSOD()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── addIpv6SODAft()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── cnclOdrCtrl()
│       │   ├── courseChgeOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoInfoChgeOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── idpwShkkaSaifuriOdrCtrl()
│       │   ├── jdgIpv6()
│       │   ├── jdgIpv6EKK0361A010()
│       │   ├── jdgOdr163()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   ├── newKeiOdrCtrl()
│       │   ├── newNet()
│       │   ├── opSetOdrCtrl()
│       │   ├── rtOpChgDivOdrCtrl()
│       │   ├── setChgePWForRouterConInfo()
│       │   ├── telNoChge()
│       │   ├── vLanIdChgOdrCtrl()
│       │   ├── vLanIdVaChangeOdrCtrl()
│       │   ├── wribInfoAddOdrCtrl()
│       │   └── hakkouIpv6()
│       │       ├── addIpv6SODAft()
│       │       ├── cnclOdrCtrl()
│       │       ├── dslOdrCtrl()
│       │       ├── hakkoSOD()
│       │       ├── htelNoDslOdrCtrl()
│       │       ├── htelNoInfoChgeOdrCtrl()
│       │       ├── htelNoKaihkOdrCtrl()
│       │       ├── jdgIpv6()
│       │       ├── jdgIpv6EKK0361A010()
│       │       ├── kaihkOdrCtrl()
│       │       ├── ksiDslFixOdrCtrl()
│       │       ├── ksiDslOdrCtrl()
│       │       ├── newKeiOdrCtrl()
│       │       └── opSetOdrCtrl()
│       └── tsuikabunAddSOD()
│           ├── adchgFixOdrCtrl()
│           ├── addIpv6SODAft()
│           ├── cnclOdrCtrl()
│           ├── courseChgeOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── hakkoSOD()
│           ├── hakkouIpv6()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── idpwShkkaSaifuriOdrCtrl()
│           ├── jdgIpv6()
│           ├── jdgIpv6EKK0361A010()
│           ├── jdgOdr163()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── opSetOdrCtrl()
│           └── setChgePWForIPv6()
├── editInMsg_EKK1551D010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── addSOD()
│   ├── addSODDupNew()
│   ├── addSODEmailNew()
│   ├── addSODFtthNew()
│   ├── addSODHPAccessAdd()
│   ├── addSODHPCapaChg()
│   ├── addSODHPNew()
│   ├── addSODMailAliasAdd()
│   ├── addSODMailCapaChg()
│   ├── addSODMListNew()
│   ├── addSODMRTChgRTSta()
│   ├── addSODTelNew()
│   ├── addSODTelVAChange()
│   ├── addSODUQWIMAXKaitoriNew()
│   ├── addSODUQWIMAXNew()
│   ├── addSODVirusChkAdd()
│   ├── addSODWiFiChg()
│   ├── addSODWiFiNew()
│   ├── addTakinoSOD()
│   ├── addTensoDenwaOp()
│   ├── addTokiSOD()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── enumAddOdrCtrl()
│   ├── enumDelOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── hakkouIpv6()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── setChgePWForDialup()
│   ├── setChgePWForIPv6()
│   ├── setChgePWForMltiSe()
│   ├── setChgePWForRouterConInfo()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── tsuikabunAddSOD()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── executeOdrInfoSakseiWkAdd()
│       ├── adchgFixOdrCtrl()
│       ├── add050AddSod()
│       ├── add050DelSod()
│       ├── addSOD()
│       ├── addSODDupNew()
│       ├── addSODEmailNew()
│       ├── addSODFtthNew()
│       ├── addSODHPAccessAdd()
│       ├── addSODHPCapaChg()
│       ├── addSODHPNew()
│       ├── addSODMailAliasAdd()
│       ├── addSODMailCapaChg()
│       ├── addSODMListNew()
│       ├── addSODMRTChgRTSta()
│       ├── addSODTelNew()
│       ├── addSODTelVAChange()
│       ├── addSODUQWIMAXKaitoriNew()
│       ├── addSODUQWIMAXNew()
│       ├── addSODVirusChkAdd()
│       ├── addSODWiFiChg()
│       ├── addSODWiFiNew()
│       ├── addTakinoSOD()
│       ├── addTensoDenwaOp()
│       ├── addTokiSOD()
│       ├── bmpDojiMskm()
│       ├── bmpSipDslOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── enumAddOdrCtrl()
│       ├── enumDelOdrCtrl()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── hakkouIpv6()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── newNet()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── setChgePWForDialup()
│       ├── setChgePWForIPv6()
│       ├── setChgePWForMltiSe()
│       ├── setChgePWForRouterConInfo()
│       ├── spotLoginSysidChgeOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── telNoChge()
│       ├── tsuikabunAddSOD()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEDK0301B060()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEDK0301B060SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getShuriKokanBfKiki()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEKK0341B001()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B001SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getShuriKokanBfKiki()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEKK0341B008()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B008SCRireki()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getShuriKokanBfKiki()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEKK0341B021()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B021SC()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
└── editInMsgEKK0341B029()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── callEKK0341B029SC()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── checkTakinoRT()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── findZ1OrderAtKK1041()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── getVAkikiInfo()
        ├── getZ1HakkoKh()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── isKikiSeizoNoCheck()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        ├── setChgePWForRouterConInfo()
        ├── telNoChge()
        ├── vLanIdChgOdrCtrl()
        └── wribInfoAddOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void editBasicCmn(IRequestParameterReadOnly param, CAANMsg template)`
> **戻り値:** `void`

---

#### 1. 役割

本メソッドは、各種サービスコンポーネント呼出前にCAANMsgテンプレートへ共通の制御項目（オペレータ情報・運用日付・運用日時）をマッピングする共通部編集処理である。  
多数のSC入力編集メソッドから共通処理として呼び出され、パラメータから運用管理上必要な値をテンプレートオブジェクトへ確実にセットする役割を担う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editBasicCmn(param, template)"] --> S1["param.getControlMapData(SCControlMapKeys.OPERATOR_ID)でオペレータID取得"]
  S1 --> S2["template.set(JCMConstants.OPERATOR_ID_KEY, operatorId)でテンプレートへセット"]
  S2 --> S3["param.getControlMapData(SCControlMapKeys.OPE_DATE)で運用日付取得"]
  S3 --> S4["template.set(JCMConstants.OPERATE_DATE_KEY, operateDate)でテンプレートへセット"]
  S4 --> S5["param.getControlMapData(SCControlMapKeys.OPE_TIME)で運用日時取得"]
  S5 --> S6["template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime)でテンプレートへセット"]
  S6 --> END["完了"]
```

**処理ステップ詳細:**

1. `param.getControlMapData(SCControlMapKeys.OPERATOR_ID)` でオペレータIDを取得（オペレータID）
2. `template.set(JCMConstants.OPERATOR_ID_KEY, operatorId)` でテンプレートへセット
3. `param.getControlMapData(SCControlMapKeys.OPE_DATE)` で運用日付を取得（運用日付）
4. `template.set(JCMConstants.OPERATE_DATE_KEY, operateDate)` でテンプレートへセット
5. `param.getControlMapData(SCControlMapKeys.OPE_TIME)` で運用日時を取得（運用日時）
6. `template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime)` でテンプレートへセット

分岐なし。すべての処理は直列で実行される。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | 入力情報（コントロールマップ）を保持するリクエストパラメータ |
| 2 | template | CAANMsg | SCへ送信するメッセージ用テンプレート（編集対象） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（CRUD操作なし） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: editInMsg_EKK0081A010CBS → editBasicCmn
- 各種 editInMsg*, callEKKxxxxSC 等多数

**呼出パス:**
```
[editInMsg_EKK0081A010CBS] → [editBasicCmn] → [template編集]
[callEKK0191A010SC] → [editBasicCmn] → [template編集]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editErrorInfo()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
editErrorInfo() ← gọi bởi:
├── KKSV0004_KKSV0004OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0008_KKSV0008OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0009_KKSV0009OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0073_KKSV0073OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0136_KKSV0136OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0162_KKSV0162OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0428_KKSV0428OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0429_KKSV0429OPBPCheck.invokeCheck()    [trực tiếp]
└── KKSV0430_KKSV0430OPBPCheck.invokeCheck()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービスインターフェイス実行結果のエラー情報を取得するための共通メソッド。
業務データ取得・書込用I/F（IRequestParameterReadWrite）をそのまま返却する。  
主にOPBPCheck系のinvokeCheckから呼び出される、汎用のエラーハンドリングI/F。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editErrorInfo(param, templates, returnCode)"]
    --> S1["何もせずにparamを返却"]
    --> END["return param"]
```

**処理ステップ詳細:**

1. 受け取ったparamをそのまま返却する。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | なし |  | return param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務データ取得・書込用I/F |
| 2 | templates | CAANMsg[] | サービスコンポーネントからの応答メッセージ配列 |
| 3 | returnCode | int | サービスコンポーネント処理のリターンコード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし（データ変換・I/F返却のみ） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- KKSV0004_KKSV0004OPBPCheck.invokeCheck
- KKSV0008_KKSV0008OPBPCheck.invokeCheck
- KKSV0009_KKSV0009OPBPCheck.invokeCheck
- KKSV0073_KKSV0073OPBPCheck.invokeCheck
- KKSV0136_KKSV0136OPBPCheck.invokeCheck
- KKSV0162_KKSV0162OPBPCheck.invokeCheck
- KKSV0428_KKSV0428OPBPCheck.invokeCheck
- KKSV0429_KKSV0429OPBPCheck.invokeCheck
- KKSV0430_KKSV0430OPBPCheck.invokeCheck

**呼出パス:**

```
KKSVxxxxOPBPCheck.invokeCheck → editErrorInfo
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### editErrorInfo_EKK0081A010CBS()

#### 呼出元 (Reverse Call Tree) — 10 direct callers

```
editErrorInfo_EKK0081A010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── getSvcKeiInfo()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── editResultRP_EKK0081A010CBS()
    ├── adchgFixOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getSvcKeiInfo()
        ├── courseChgeOdrCtrl()
        ├── hakkoSOD()
        ├── adchgFixOdrCtrl()
        │   └── hakkoSOD()
        ├── hakkoCourseChgSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── courseChgeOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── koteiIpAd8DivOdrCtrl()
        │   └── hakkoSOD()
        ├── malwareBlockingDivOdrCtrl()
        │   └── hakkoSOD()
        ├── opHktgiOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0081A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービス契約一意照会におけるSC呼出結果（エラー情報）を解析し、IRequestParameterReadWriteへエラー情報を反映する編集処理。  
SCから返るエラーステータスや詳細情報を、業務データマップおよびコントロールマップへ格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editErrorInfo_EKK0081A010CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK0081A010CBSMsg.STATUS)"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["エラーコード判定"]
  IF1 -- "No" --> S3["正常処理"]
  S2 --> S4["JCMAPLConstMgr.getStringでエラーメッセージ取得"]
  S4 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S5 --> S6["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S7 --> IF2{"inMap==null"}
  IF2 -- "Yes" --> S8["新規inMap生成"]
  IF2 -- "No" --> S9["inMap利用"]
  S8 --> S10
  S9 --> S10
  S10 --> IF3{"!template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR)"}
  IF3 -- "Yes" --> IF4{"!inMap.containsKey('svc_kei_no_err')"}
  IF4 -- "Yes" --> S11["inMap.put('svc_kei_no_err', template.getString(...))"]
  IF4 -- "No" --> S12["スキップ"]
  IF3 -- "No" --> S12
  S11 --> S13
  S12 --> S13
  S13 --> IF5{"!template.isNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR)"}
  IF5 -- "Yes" --> IF6{"!inMap.containsKey('gene_add_dtm_err')"}
  IF6 -- "Yes" --> S14["inMap.put('gene_add_dtm_err', template.getString(...))"]
  IF6 -- "No" --> S15["スキップ"]
  IF5 -- "No" --> S15
  S14 --> S16
  S15 --> S16
  S16 --> IF7{"!template.isNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR)"}
  IF7 -- "Yes" --> IF8{"!inMap.containsKey('rsv_aply_ymd_err')"}
  IF8 -- "Yes" --> S17["inMap.put('rsv_aply_ymd_err', template.getString(...))"]
  IF8 -- "No" --> S18["スキップ"]
  IF7 -- "No" --> S18
  S17 --> S19
  S18 --> S19
  S19 --> S20["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S20 --> RET["return param"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー情報セット処理へ |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | メッセージなし扱い |
| 3 | obj == null | - | 新規inMap作成 |
| 4 | templateStatus > bpStatus | - | ステータス上書き |
| 5 | inMap == null | - | 新規inMap作成 |
| 6 | !template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR) | - | svc_kei_no_err項目反映 |
| 7 | !inMap.containsKey("svc_kei_no_err") | - | 追加 |
| 8 | !template.isNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR) | - | gene_add_dtm_err項目反映 |
| 9 | !inMap.containsKey("gene_add_dtm_err") | - | 追加 |
| 10 | !template.isNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR) | - | rsv_aply_ymd_err項目反映 |
| 11 | !inMap.containsKey("rsv_aply_ymd_err") | - | 追加 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス編集用オブジェクト |
| 2 | templates | CAANMsg[] | SCから返却されたテンプレート配列 |
| 3 | returnCode | int | SCから返却されたリターンコード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（CRUD操作なし） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- editResultRP_EKK0081A010CBS → editErrorInfo_EKK0081A010CBS
- getSvcKeiInfo → editErrorInfo_EKK0081A010CBS
- ...他、多数

**呼出パス:**
```
[editResultRP_EKK0081A010CBS] → [editErrorInfo_EKK0081A010CBS]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editErrorInfo_EKK0161B003CBS()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
editErrorInfo_EKK0161B003CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getSvcKeiUtwkListSysid()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── editResultRP_EKK0161B003CBS()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newKeiOdrCtrl()
    └── getSvcKeiUtwkListSysid()
        ├── adchgFixOdrCtrl()
        ├── hakkoSOD()
        └── newKeiOdrCtrl()
            ├── hakkoSOD()
            └── adchgFixOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0161B003CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービス契約内訳一覧照会（SYSID）サービスコンポーネントの実行後、エラー情報をIRequestParameterReadWriteへ反映する編集処理。  
SCから返却されたエラー項目を業務用データマップへ格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editErrorInfo_EKK0161B003CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK0161B003CBSMsg.STATUS)"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["JCMAPLConstMgr.getStringでエラーメッセージ取得"]
  IF1 -- "No" --> S3["正常処理"]
  S2 --> S4["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S4 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S5 --> S6["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S6 --> IF2{"inMap == null"}
  IF2 -- "Yes" --> S7["新規inMap作成"]
  IF2 -- "No" --> S8["inMap利用"]
  S7 --> S9
  S8 --> S9
  S9 --> IF3{"!template.isNull(EKK0161B003CBSMsg.KEY_SYSID_ERR)"}
  IF3 -- "Yes" --> IF4{"!inMap.containsKey('sysid_err')"}
  IF4 -- "Yes" --> S10["inMap.put('sysid_err', template.getString(...))"]
  IF4 -- "No" --> S11["スキップ"]
  IF3 -- "No" --> S11
  S10 --> S12
  S11 --> S12
  S12 --> S13["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S13 --> RET["return param"]
  S3 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー時のみエラーコード・メッセージ編集 |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | メッセージなし扱い |
| 3 | obj == null | - | 新規inMap作成 |
| 4 | templateStatus > bpStatus | - | ステータス上書き |
| 5 | inMap == null | - | 新規inMap作成 |
| 6 | !template.isNull(EKK0161B003CBSMsg.KEY_SYSID_ERR) | - | sysid_err項目反映 |
| 7 | !inMap.containsKey("sysid_err") | - | 追加 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 編集対象リクエスト/レスポンス |
| 2 | templates | CAANMsg[] | SCから返却されたテンプレート配列 |
| 3 | returnCode | int | SC返却リターンコード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（CRUD操作なし） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- editResultRP_EKK0161B003CBS → editErrorInfo_EKK0161B003CBS
- getSvcKeiUtwkListSysid → editErrorInfo_EKK0161B003CBS
- ...他、多数

**呼出パス:**
```
[editResultRP_EKK0161B003CBS] → [editErrorInfo_EKK0161B003CBS]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

