# Business Logic — KKW01601SF03DBean.loadModelData() [264 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA15301SF.KKW01601SF03DBean` |
| Layer | Web View / Presentation Bean (Controller-side data accessor) |
| Module | `KKA15301SF` (Package: `eo.web.webview.KKA15301SF`) |

## 1. Role

### KKW01601SF03DBean.loadModelData()

This method serves as a **field routing and data dispatch** entry point for the `KKW01601SF03DBean` presentation bean. It implements a **bridge pattern** that maps from a human-readable field name (provided as a Japanese label string in the `key` parameter) and a sub-key `"value"` or `"state"` to the appropriate underlying data accessors — getter methods on the bean itself or recursive calls into nested bean objects inside list collections.

The method handles **two categories of data fields**: (1) **Simple fields** — single-value screen properties (e.g., System ID, Service Contract Number, Relocation Reason Memo, Location, Hostion Name) where it delegates to dedicated `getHktgi_*_value()` and `getHktgi_*_state()` getters. (2) **List (array) fields** — multi-value repeating items (Relocation Reason Code, Option Service Contract Number, Simultaneous Application Service Contract Number) where it parses an index from the `key` string, resolves it against the corresponding `List<X33VDataTypeStringBean>`, and recursively invokes `loadModelData()` on the nested bean element to retrieve the requested sub-property.

It acts as the **unified data access contract** for the screen, allowing callers to request any screen field by its display-label name without needing to know the internal field structure. This pattern is central to the bean-based view data binding architecture used across the KKA15301SF screen module, enabling template-driven page rendering and form editing.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData(key, subkey)"])
    START --> NULL_CHECK{key or subkey
is null?}
    NULL_CHECK -->|"Yes"| NULL_RET(["return null"])

    NULL_CHECK -->|"No"| FIND_SLASH["Find '/' index
separaterPoint = key.indexOf('/')"]

    FIND_SLASH --> KEY_CHECK{key equals
'システムID'?}
    KEY_CHECK -->|"Yes"| SYSEID_DISPATCH{subkey equals
'value' or 'state'?}
    SYSEID_DISPATCH -->|"value"| SYSEID_VAL["getHktgi_sysid_value()"]
    SYSEID_DISPATCH -->|"state"| SYSEID_ST["getHktgi_sysid_state()"]
    SYSEID_DISPATCH -->|"other"| SYSEID_DEF["return null (default)"]

    KEY_CHECK -->|"No"| SVC_CHK{key equals
'サービス契約番号'?}
    SVC_CHK -->|"Yes"| SVC_DISPATCH{subkey equals
'value' or 'state'?}
    SVC_DISPATCH -->|"value"| SVC_VAL["getHktgi_svc_kei_no_value()"]
    SVC_DISPATCH -->|"state"| SVC_ST["getHktgi_svc_kei_no_state()"]
    SVC_DISPATCH -->|"other"| SVC_DEF["return null (default)"]

    SVC_CHK -->|"No"| IDO_DIV_CHK{key equals
'異動区分'?}
    IDO_DIV_CHK -->|"Yes"| IDO_DIV_DISPATCH{subkey equals
'value' or 'state'?}
    IDO_DIV_DISPATCH -->|"value"| IDO_DIV_VAL["getHktgi_ido_div_value()"]
    IDO_DIV_DISPATCH -->|"state"| IDO_DIV_ST["getHktgi_ido_div_state()"]
    IDO_DIV_DISPATCH -->|"other"| IDO_DIV_DEF["return null (default)"]

    IDO_DIV_CHK -->|"No"| IDO_RSN_CHK{key equals
'異動理由コード'?}
    IDO_RSN_CHK -->|"Yes"| IDO_RSN_SUB["key.substring(separaterPoint+1)"]
    IDO_RSN_SUB --> IDO_RSN_STAR{key equals '*'}
    IDO_RSN_STAR -->|"Yes"| IDO_RSN_CNT["return hktgi_ido_rsn_cd_list.size()"]
    IDO_RSN_STAR -->|"No"| IDO_RSN_PARSE["Integer.valueOf(key)"]
    IDO_RSN_PARSE --> IDO_RSN_PARSE_ERR{NumberFormatException?}
    IDO_RSN_PARSE_ERR -->|"Yes"| IDO_RSN_NULL1["return null"]
    IDO_RSN_PARSE_ERR -->|"No"| IDO_RSN_BOUNDS{tmpIndex valid
range?}
    IDO_RSN_BOUNDS -->|"No"| IDO_RSN_NULL2["return null"]
    IDO_RSN_BOUNDS -->|"Yes"| IDO_RSN_GET["list.get(tmpIndex)
.loadModelData(subkey)"]

    IDO_RSN_CHK -->|"No"| IDO_RSN_MEMO_CHK{key equals
'異動理由メモ'?}
    IDO_RSN_MEMO_CHK -->|"Yes"| IDO_RSN_MEMO_DISP{subkey equals
'value' or 'state'?}
    IDO_RSN_MEMO_DISP -->|"value"| IDO_RSN_MEMO_VAL["getHktgi_ido_rsn_memo_value()"]
    IDO_RSN_MEMO_DISP -->|"state"| IDO_RSN_MEMO_ST["getHktgi_ido_rsn_memo_state()"]
    IDO_RSN_MEMO_DISP -->|"other"| IDO_RSN_MEMO_DEF["return null (default)"]

    IDO_RSN_MEMO_CHK -->|"No"| OP_SVC_CHK{key equals
'オプションサービス契約番号'?}
    OP_SVC_CHK -->|"Yes"| OP_SVC_SUB["key.substring(separaterPoint+1)"]
    OP_SVC_SUB --> OP_SVC_STAR{key equals '*'}
    OP_SVC_STAR -->|"Yes"| OP_SVC_CNT["return hktgi_op_svc_kei_no_list.size()"]
    OP_SVC_STAR -->|"No"| OP_SVC_PARSE["Integer.valueOf(key)"]
    OP_SVC_PARSE --> OP_SVC_PARSE_ERR{NumberFormatException?}
    OP_SVC_PARSE_ERR -->|"Yes"| OP_SVC_NULL1["return null"]
    OP_SVC_PARSE_ERR -->|"No"| OP_SVC_BOUNDS{tmpIndex valid
range?}
    OP_SVC_BOUNDS -->|"No"| OP_SVC_NULL2["return null"]
    OP_SVC_BOUNDS -->|"Yes"| OP_SVC_GET["list.get(tmpIndex)
.loadModelData(subkey)"]

    OP_SVC_CHK -->|"No"| TRDIV_CHK{key equals
'処理区分'?}
    TRDIV_CHK -->|"Yes"| TRDIV_DISPATCH{subkey equals
'value' or 'state'?}
    TRDIV_DISPATCH -->|"value"| TRDIV_VAL["getHktgi_tran_div_value()"]
    TRDIV_DISPATCH -->|"state"| TRDIV_ST["getHktgi_tran_div_state()"]
    TRDIV_DISPATCH -->|"other"| TRDIV_DEF["return null (default)"]

    TRDIV_CHK -->|"No"| MSKM_NO_CHK{key equals
'申込番号'?}
    MSKM_NO_CHK -->|"Yes"| MSKM_NO_DISPATCH{subkey equals
'value' or 'state'?}
    MSKM_NO_DISPATCH -->|"value"| MSKM_NO_VAL["getHktgi_mskm_no_value()"]
    MSKM_NO_DISPATCH -->|"state"| MSKM_NO_ST["getHktgi_mskm_no_state()"]
    MSKM_NO_DISPATCH -->|"other"| MSKM_NO_DEF["return null (default)"]

    MSKM_NO_CHK -->|"No"| MSKM_DTL_CHK{key equals
'申込明細番号'?}
    MSKM_DTL_CHK -->|"Yes"| MSKM_DTL_DISPATCH{subkey equals
'value' or 'state'?}
    MSKM_DTL_DISPATCH -->|"value"| MSKM_DTL_VAL["getHktgi_mskm_dtl_no_value()"]
    MSKM_DTL_DISPATCH -->|"state"| MSKM_DTL_ST["getHktgi_mskm_dtl_no_state()"]
    MSKM_DTL_DISPATCH -->|"other"| MSKM_DTL_DEF["return null (default)"]

    MSKM_DTL_CHK -->|"No"| TOKUTEI_NM_CHK{key equals
'特定ID項目名'?}
    TOKUTEI_NM_CHK -->|"Yes"| TOKUTEI_NM_DISPATCH{subkey equals
'value' or 'state'?}
    TOKUTEI_NM_DISPATCH -->|"value"| TOKUTEI_NM_VAL["getHktgi_tokutei_id_kmk_nm_value()"]
    TOKUTEI_NM_DISPATCH -->|"state"| TOKUTEI_NM_ST["getHktgi_tokutei_id_kmk_nm_state()"]
    TOKUTEI_NM_DISPATCH -->|"other"| TOKUTEI_NM_DEF["return null (default)"]

    TOKUTEI_NM_CHK -->|"No"| TOKUTEI_VAL_CHK{key equals
'特定ID項目値'?}
    TOKUTEI_VAL_CHK -->|"Yes"| TOKUTEI_VAL_DISPATCH{subkey equals
'value' or 'state'?}
    TOKUTEI_VAL_DISPATCH -->|"value"| TOKUTEI_VAL_VAL["getHktgi_tokutei_id_kmk_value_value()"]
    TOKUTEI_VAL_DISPATCH -->|"state"| TOKUTEI_VAL_ST["getHktgi_tokutei_id_kmk_value_state()"]
    TOKUTEI_VAL_DISPATCH -->|"other"| TOKUTEI_VAL_DEF["return null (default)"]

    TOKUTEI_VAL_CHK -->|"No"| POPUP_CHK{key equals
'ポップアップモード'?}
    POPUP_CHK -->|"Yes"| POPUP_DISPATCH{subkey equals
'value' or 'state'?}
    POPUP_DISPATCH -->|"value"| POPUP_VAL["getHktgi_popup_mode_value()"]
    POPUP_DISPATCH -->|"state"| POPUP_ST["getHktgi_popup_mode_state()"]
    POPUP_DISPATCH -->|"other"| POPUP_DEF["return null (default)"]

    POPUP_CHK -->|"No"| MSKMSVC_CHK{key equals
'同時申込サービス契約番号'?}
    MSKMSVC_CHK -->|"Yes"| MSKMSVC_SUB["key.substring(separaterPoint+1)"]
    MSKMSVC_SUB --> MSKMSVC_STAR{key equals '*'}
    MSKMSVC_STAR -->|"Yes"| MSKMSVC_CNT["return hktgi_mskm_svc_kei_no_list.size()"]
    MSKMSVC_STAR -->|"No"| MSKMSVC_PARSE["Integer.valueOf(key)"]
    MSKMSVC_PARSE --> MSKMSVC_PARSE_ERR{NumberFormatException?}
    MSKMSVC_PARSE_ERR -->|"Yes"| MSKMSVC_NULL1["return null"]
    MSKMSVC_PARSE_ERR -->|"No"| MSKMSVC_BOUNDS{tmpIndex valid
range?}
    MSKMSVC_BOUNDS -->|"No"| MSKMSVC_NULL2["return null"]
    MSKMSVC_BOUNDS -->|"Yes"| MSKMSVC_GET["list.get(tmpIndex)
.loadModelData(subkey)"]

    MSKMSVC_CHK -->|"No"| MANS_NM_CHK{key equals
'マンスION名'?}
    MANS_NM_CHK -->|"Yes"| MANS_NM_DISPATCH{subkey equals
'value' or 'state'?}
    MANS_NM_DISPATCH -->|"value"| MANS_NM_VAL["getHktgi_mans_nm_value()"]
    MANS_NM_DISPATCH -->|"state"| MANS_NM_ST["getHktgi_mans_nm_state()"]
    MANS_NM_DISPATCH -->|"other"| MANS_NM_DEF["return null (default)"]

    MANS_NM_CHK -->|"No"| MANS_AD_CHK{key equals
'住所'?}
    MANS_AD_CHK -->|"Yes"| MANS_AD_DISPATCH{subkey equals
'value' or 'state'?}
    MANS_AD_DISPATCH -->|"value"| MANS_AD_VAL["getHktgi_mans_ad_nm_value()"]
    MANS_AD_DISPATCH -->|"state"| MANS_AD_ST["getHktgi_mans_ad_nm_state()"]
    MANS_AD_DISPATCH -->|"other"| MANS_AD_DEF["return null (default)"]

    MANS_AD_CHK -->|"No"| IDO_DIV_SENI_CHK{key equals
'異動区分選択画面遷移パターン'?}
    IDO_DIV_SENI_CHK -->|"Yes"| IDO_DIV_SENI_DISPATCH{subkey equals
'value' or 'state'?}
    IDO_DIV_SENI_DISPATCH -->|"value"| IDO_DIV_SENI_VAL["getHktgi_ido_div_seni_ptn_value()"]
    IDO_DIV_SENI_DISPATCH -->|"state"| IDO_DIV_SENI_ST["getHktgi_ido_div_seni_ptn_state()"]
    IDO_DIV_SENI_DISPATCH -->|"other"| IDO_DIV_SENI_DEF["return null (default)"]

    IDO_DIV_SENI_CHK -->|"No"| PID_CHK{key equals
'H-ID'}
    PID_CHK -->|"Yes"| PID_DISPATCH{subkey equals
'value' or 'state'?}
    PID_DISPATCH -->|"value"| PID_VAL["getHktgi_pid_value()"]
    PID_DISPATCH -->|"state"| PID_ST["getHktgi_pid_state()"]
    PID_DISPATCH -->|"other"| PID_DEF["return null (default)"]

    PID_CHK -->|"No"| MANS_ID_CHK{key equals
'M-ID'}
    MANS_ID_CHK -->|"Yes"| MANS_ID_DISPATCH{subkey equals
'value' or 'state'?}
    MANS_ID_DISPATCH -->|"value"| MANS_ID_VAL["getHktgi_mans_id_value()"]
    MANS_ID_DISPATCH -->|"state"| MANS_ID_ST["getHktgi_mans_id_state()"]
    MANS_ID_DISPATCH -->|"other"| MANS_ID_DEF["return null (default)"]

    MANS_ID_CHK -->|"No"| CATID_CHK{key equals
'CAt-ID'}
    CATID_CHK -->|"Yes"| CATID_DISPATCH{subkey equals
'value' or 'state'?}
    CATID_DISPATCH -->|"value"| CATID_VAL["getHktgi_catid_value()"]
    CATID_DISPATCH -->|"state"| CATID_ST["getHktgi_catid_state()"]
    CATID_DISPATCH -->|"other"| CATID_DEF["return null (default)"]

    CATID_CHK -->|"No"| SYSCD_CHK{key equals
'外部システムコード'?}
    SYSCD_CHK -->|"Yes"| SYSCD_DISPATCH{subkey equals
'value' or 'state'?}
    SYSCD_DISPATCH -->|"value"| SYSCD_VAL["getHktgi_syscd_value()"]
    SYSCD_DISPATCH -->|"state"| SYSCD_ST["getHktgi_syscd_state()"]
    SYSCD_DISPATCH -->|"other"| SYSCD_DEF["return null (default)"]

    SYSCD_CHK -->|"No"| FALLTHROUGH["return null"]

    NULL_RET --> END_NODE(["Return / Next"])
    SYSEID_VAL --> END_NODE
    SYSEID_ST --> END_NODE
    SYSEID_DEF --> END_NODE
    SVC_VAL --> END_NODE
    SVC_ST --> END_NODE
    SVC_DEF --> END_NODE
    IDO_DIV_VAL --> END_NODE
    IDO_DIV_ST --> END_NODE
    IDO_DIV_DEF --> END_NODE
    IDO_RSN_CNT --> END_NODE
    IDO_RSN_NULL1 --> END_NODE
    IDO_RSN_NULL2 --> END_NODE
    IDO_RSN_GET --> END_NODE
    IDO_RSN_MEMO_VAL --> END_NODE
    IDO_RSN_MEMO_ST --> END_NODE
    IDO_RSN_MEMO_DEF --> END_NODE
    OP_SVC_CNT --> END_NODE
    OP_SVC_NULL1 --> END_NODE
    OP_SVC_NULL2 --> END_NODE
    OP_SVC_GET --> END_NODE
    TRDIV_VAL --> END_NODE
    TRDIV_ST --> END_NODE
    TRDIV_DEF --> END_NODE
    MSKM_NO_VAL --> END_NODE
    MSKM_NO_ST --> END_NODE
    MSKM_NO_DEF --> END_NODE
    MSKM_DTL_VAL --> END_NODE
    MSKM_DTL_ST --> END_NODE
    MSKM_DTL_DEF --> END_NODE
    TOKUTEI_NM_VAL --> END_NODE
    TOKUTEI_NM_ST --> END_NODE
    TOKUTEI_NM_DEF --> END_NODE
    TOKUTEI_VAL_VAL --> END_NODE
    TOKUTEI_VAL_ST --> END_NODE
    TOKUTEI_VAL_DEF --> END_NODE
    POPUP_VAL --> END_NODE
    POPUP_ST --> END_NODE
    POPUP_DEF --> END_NODE
    MSKMSVC_CNT --> END_NODE
    MSKMSVC_NULL1 --> END_NODE
    MSKMSVC_NULL2 --> END_NODE
    MSKMSVC_GET --> END_NODE
    MANS_NM_VAL --> END_NODE
    MANS_NM_ST --> END_NODE
    MANS_NM_DEF --> END_NODE
    MANS_AD_VAL --> END_NODE
    MANS_AD_ST --> END_NODE
    MANS_AD_DEF --> END_NODE
    IDO_DIV_SENI_VAL --> END_NODE
    IDO_DIV_SENI_ST --> END_NODE
    IDO_DIV_SENI_DEF --> END_NODE
    PID_VAL --> END_NODE
    PID_ST --> END_NODE
    PID_DEF --> END_NODE
    MANS_ID_VAL --> END_NODE
    MANS_ID_ST --> END_NODE
    MANS_ID_DEF --> END_NODE
    CATID_VAL --> END_NODE
    CATID_ST --> END_NODE
    CATID_DEF --> END_NODE
    SYSCD_VAL --> END_NODE
    SYSCD_ST --> END_NODE
    SYSCD_DEF --> END_NODE
    FALLTHROUGH --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The human-readable display label of a screen field. For simple fields it is the label itself (e.g., `"システムID"`). For list/array fields it carries a composite path: `"異動理由コード/INDEX"` where `INDEX` is a numeric index or `*` to request the list size. |
| 2 | `subkey` | `String` | The property accessor type — either `"value"` to retrieve the field's current data value, or `"state"` to retrieve its validation/processing state flag. |

**Instance fields read by this method:**

| Field Name | Type | Business Description |
|-----------|------|---------------------|
| `hktgi_ido_rsn_cd_list` | `List<X33VDataTypeStringBean>` | List of relocation reason codes — repeating multi-value field for reasons why a service contract is being transferred/changed |
| `hktgi_op_svc_kei_no_list` | `List<X33VDataTypeStringBean>` | List of option service contract numbers — repeating multi-value field for optional add-on services |
| `hktgi_mskm_svc_kei_no_list` | `List<X33VDataTypeStringBean>` | List of simultaneous application service contract numbers — repeating multi-value field for services applied in the same transaction |

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW01601SF03DBean.getHktgi_sysid_value` | KKW01601SF03DBean | - | Retrieves System ID value |
| R | `KKW01601SF03DBean.getHktgi_sysid_state` | KKW01601SF03DBean | - | Retrieves System ID state flag |
| R | `KKW01601SF03DBean.getHktgi_svc_kei_no_value` | KKW01601SF03DBean | - | Retrieves Service Contract Number value |
| R | `KKW01601SF03DBean.getHktgi_svc_kei_no_state` | KKW01601SF03DBean | - | Retrieves Service Contract Number state flag |
| R | `KKW01601SF03DBean.getHktgi_ido_div_value` | KKW01601SF03DBean | - | Retrieves Relocation Division (Transfer Type) value |
| R | `KKW01601SF03DBean.getHktgi_ido_div_state` | KKW01601SF03DBean | - | Retrieves Relocation Division state flag |
| R | `KKW01601SF03DBean.getHktgi_ido_rsn_memo_value` | KKW01601SF03DBean | - | Retrieves Relocation Reason Memo value |
| R | `KKW01601SF03DBean.getHktgi_ido_rsn_memo_state` | KKW01601SF03DBean | - | Retrieves Relocation Reason Memo state flag |
| R | `KKW01601SF03DBean.getHktgi_tran_div_value` | KKW01601SF03DBean | - | Retrieves Processing Division value |
| R | `KKW01601SF03DBean.getHktgi_tran_div_state` | KKW01601SF03DBean | - | Retrieves Processing Division state flag |
| R | `KKW01601SF03DBean.getHktgi_mskm_no_value` | KKW01601SF03DBean | - | Retrieves Application Number value |
| R | `KKW01601SF03DBean.getHktgi_mskm_no_state` | KKW01601SF03DBean | - | Retrieves Application Number state flag |
| R | `KKW01601SF03DBean.getHktgi_mskm_dtl_no_value` | KKW01601SF03DBean | - | Retrieves Application Detail Number value |
| R | `KKW01601SF03DBean.getHktgi_mskm_dtl_no_state` | KKW01601SF03DBean | - | Retrieves Application Detail Number state flag |
| R | `KKW01601SF03DBean.getHktgi_tokutei_id_kmk_nm_value` | KKW01601SF03DBean | - | Retrieves Specific ID Item Name value |
| R | `KKW01601SF03DBean.getHktgi_tokutei_id_kmk_nm_state` | KKW01601SF03DBean | - | Retrieves Specific ID Item Name state flag |
| R | `KKW01601SF03DBean.getHktgi_tokutei_id_kmk_value_value` | KKW01601SF03DBean | - | Retrieves Specific ID Item Value value |
| R | `KKW01601SF03DBean.getHktgi_tokutei_id_kmk_value_state` | KKW01601SF03DBean | - | Retrieves Specific ID Item Value state flag |
| R | `KKW01601SF03DBean.getHktgi_popup_mode_value` | KKW01601SF03DBean | - | Retrieves Popup Mode value |
| R | `KKW01601SF03DBean.getHktgi_popup_mode_state` | KKW01601SF03DBean | - | Retrieves Popup Mode state flag |
| R | `KKW01601SF03DBean.getHktgi_mans_nm_value` | KKW01601SF03DBean | - | Retrieves Hostion Name value |
| R | `KKW01601SF03DBean.getHktgi_mans_nm_state` | KKW01601SF03DBean | - | Retrieves Hostion Name state flag |
| R | `KKW01601SF03DBean.getHktgi_mans_ad_nm_value` | KKW01601SF03DBean | - | Retrieves Location value |
| R | `KKW01601SF03DBean.getHktgi_mans_ad_nm_state` | KKW01601SF03DBean | - | Retrieves Location state flag |
| R | `KKW01601SF03DBean.getHktgi_ido_div_seni_ptn_value` | KKW01601SF03DBean | - | Retrieves Relocation Division Selection Screen Transition Pattern value |
| R | `KKW01601SF03DBean.getHktgi_ido_div_seni_ptn_state` | KKW01601SF03DBean | - | Retrieves Relocation Division Selection Screen Transition Pattern state flag |
| R | `KKW01601SF03DBean.getHktgi_pid_value` | KKW01601SF03DBean | - | Retrieves H-ID value |
| R | `KKW01601SF03DBean.getHktgi_pid_state` | KKW01601SF03DBean | - | Retrieves H-ID state flag |
| R | `KKW01601SF03DBean.getHktgi_mans_id_value` | KKW01601SF03DBean | - | Retrieves M-ID value |
| R | `KKW01601SF03DBean.getHktgi_mans_id_state` | KKW01601SF03DBean | - | Retrieves M-ID state flag |
| R | `KKW01601SF03DBean.getHktgi_catid_value` | KKW01601SF03DBean | - | Retrieves CAt-ID value |
| R | `KKW01601SF03DBean.getHktgi_catid_state` | KKW01601SF03DBean | - | Retrieves CAt-ID state flag |
| R | `KKW01601SF03DBean.getHktgi_syscd_value` | KKW01601SF03DBean | - | Retrieves External System Code value |
| R | `KKW01601SF03DBean.getHktgi_syscd_state` | KKW01601SF03DBean | - | Retrieves External System Code state flag |
| - | `X33VDataTypeStringBean.loadModelData` | X33VDataTypeStringBean | - | Recursive call into nested list bean for list fields |
| - | `JKKAdEditCC.substring` | JKKAdEditCC | - | Substring utility (via key.substring in list fields) |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Substring utility (via key.substring in list fields) |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Substring utility (via key.substring in list fields) |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Substring utility (via key.substring in list fields) |

All operations are **Read (R)** — this method only retrieves data. It never creates, updates, or deletes any records. No external SC Code (CBS/SC) or DB tables are directly invoked. The data originates from the bean's own fields, which are populated elsewhere in the screen lifecycle.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | KKW01601SF03DBean | `KKW01601SF03DBean.loadModelData` | `getHktgi_sysid_value [R]`, `getHktgi_svc_kei_no_value [R]`, `X33VDataTypeStringBean.loadModelData [R]` |

**Note:** The pre-computed code graph shows `KKW01601SF03DBean.loadModelData()` as its own direct caller (likely self-referencing via the recursive nested-bean call pattern). No external screens (KKSV*) directly invoke this method from the search results — it is a **protected internal utility** called by the bean's own lifecycle and by other methods within the same class that delegate to it for field access.

## 6. Per-Branch Detail Blocks

**Block 1** — IF `(key == null || subkey == null)` (L599)

> Null guard — if either parameter is null, return null immediately.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // key or subkey is null |

**Block 2** — IF `(key.equals("システムID"))` (L610)

> Simple field: System ID. Dispatches based on subkey to the corresponding getter.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L611) |
| 1.1 | CALL | `return getHktgi_sysid_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L614) |
| 1.2.1 | CALL | `return getHktgi_sysid_state();` |

**Block 3** — IF `(key.equals("サービス契約番号"))` (L621)

> Simple field: Service Contract Number — the primary contract line identifier for the customer's service order.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L622) |
| 1.1 | CALL | `return getHktgi_svc_kei_no_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L625) |
| 1.2.1 | CALL | `return getHktgi_svc_kei_no_state();` |

**Block 4** — IF `(key.equals("異動区分"))` (L632)

> Simple field: Relocation Division — classifies the type of service transfer/switch (e.g., same provider, new provider).

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L633) |
| 1.1 | CALL | `return getHktgi_ido_div_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L636) |
| 1.2.1 | CALL | `return getHktgi_ido_div_state();` |

**Block 5** — IF `(key.equals("異動理由コード"))` (L643) — LIST FIELD

> Multi-value field: Relocation Reason Code. The key contains a slash-separated index (e.g., `"異動理由コード/0"`). Supports `"*"` for list count. Uses `key.substring(separaterPoint + 1)` to extract the index after the slash. Validates the index against `hktgi_ido_rsn_cd_list.size()`. Recursively calls `loadModelData()` on the nested `X33VDataTypeStringBean`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1);` // Extract index part after '/' (L645) |
| 2 | IF | `if(key.equals("*"))` (L647) |
| 2.1 | RETURN | `return Integer.valueOf(hktgi_ido_rsn_cd_list.size());` |
| 3 | TRY | `tmpIndexInt = Integer.valueOf(key);` (L652) |
| 3.1 | CATCH | `NumberFormatException` → `return null;` (L657) |
| 4 | IF | `if(tmpIndexInt == null)` (L660) |
| 4.1 | RETURN | `return null;` |
| 5 | SET | `int tmpIndex = tmpIndexInt.intValue();` (L663) |
| 6 | IF | `if(tmpIndex < 0 \|\| tmpIndex >= hktgi_ido_rsn_cd_list.size())` (L665) |
| 6.1 | RETURN | `return null;` // Index out of bounds |
| 7 | RETURN | `return ((X33VDataTypeStringBean)hktgi_ido_rsn_cd_list.get(tmpIndex)).loadModelData(subkey);` (L668) |

**Block 6** — IF `(key.equals("異動理由メモ"))` (L674)

> Simple field: Relocation Reason Memo — free-text explanation for why the service is being transferred.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L675) |
| 1.1 | CALL | `return getHktgi_ido_rsn_memo_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L678) |
| 1.2.1 | CALL | `return getHktgi_ido_rsn_memo_state();` |

**Block 7** — IF `(key.equals("オプションサービス契約番号"))` (L685) — LIST FIELD

> Multi-value field: Option Service Contract Number — optional add-on service contracts associated with the primary service. Same pattern as Block 5.

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1);` // Extract index (L687) |
| 2 | IF | `if(key.equals("*"))` (L689) |
| 2.1 | RETURN | `return Integer.valueOf(hktgi_op_svc_kei_no_list.size());` |
| 3 | TRY | `tmpIndexInt = Integer.valueOf(key);` (L694) |
| 3.1 | CATCH | `NumberFormatException` → `return null;` (L699) |
| 4 | IF | `if(tmpIndexInt == null)` (L702) |
| 4.1 | RETURN | `return null;` |
| 5 | SET | `int tmpIndex = tmpIndexInt.intValue();` (L705) |
| 6 | IF | `if(tmpIndex < 0 \|\| tmpIndex >= hktgi_op_svc_kei_no_list.size())` (L707) |
| 6.1 | RETURN | `return null;` |
| 7 | RETURN | `return ((X33VDataTypeStringBean)hktgi_op_svc_kei_no_list.get(tmpIndex)).loadModelData(subkey);` (L710) |

**Block 8** — IF `(key.equals("処理区分"))` (L716)

> Simple field: Processing Division — internal flag classifying the type of processing operation (e.g., new, change, cancel).

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L717) |
| 1.1 | CALL | `return getHktgi_tran_div_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L720) |
| 1.2.1 | CALL | `return getHktgi_tran_div_state();` |

**Block 9** — IF `(key.equals("申込番号"))` (L726)

> Simple field: Application Number — the primary application/request identifier for the customer order.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L727) |
| 1.1 | CALL | `return getHktgi_mskm_no_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L730) |
| 1.2.1 | CALL | `return getHktgi_mskm_no_state();` |

**Block 10** — IF `(key.equals("申込明細番号"))` (L736)

> Simple field: Application Detail Number — a sub-identifier for individual line items within an application.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L737) |
| 1.1 | CALL | `return getHktgi_mskm_dtl_no_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L740) |
| 1.2.1 | CALL | `return getHktgi_mskm_dtl_no_state();` |

**Block 11** — IF `(key.equals("特定ID項目名"))` (L746)

> Simple field: Specific ID Item Name — a named identifier field for a specific ID category used in the system.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L747) |
| 1.1 | CALL | `return getHktgi_tokutei_id_kmk_nm_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L750) |
| 1.2.1 | CALL | `return getHktgi_tokutei_id_kmk_nm_state();` |

**Block 12** — IF `(key.equals("特定ID項目値"))` (L756)

> Simple field: Specific ID Item Value — the actual value of a specific ID item (e.g., customer ID number).

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L757) |
| 1.1 | CALL | `return getHktgi_tokutei_id_kmk_value_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L760) |
| 1.2.1 | CALL | `return getHktgi_tokutei_id_kmk_value_state();` |

**Block 13** — IF `(key.equals("ポップアップモード"))` (L766)

> Simple field: Popup Mode — controls whether certain UI elements appear as popup dialogs.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L767) |
| 1.1 | CALL | `return getHktgi_popup_mode_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L770) |
| 1.2.1 | CALL | `return getHktgi_popup_mode_state();` |

**Block 14** — IF `(key.equals("同時申込サービス契約番号"))` (L776) — LIST FIELD

> Multi-value field: Simultaneous Application Service Contract Number — multiple service contracts applied together in the same transaction. Same index parsing pattern as Blocks 5 and 7.

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1);` // Extract index (L778) |
| 2 | IF | `if(key.equals("*"))` (L780) |
| 2.1 | RETURN | `return Integer.valueOf(hktgi_mskm_svc_kei_no_list.size());` |
| 3 | TRY | `tmpIndexInt = Integer.valueOf(key);` (L785) |
| 3.1 | CATCH | `NumberFormatException` → `return null;` (L790) |
| 4 | IF | `if(tmpIndexInt == null)` (L793) |
| 4.1 | RETURN | `return null;` |
| 5 | SET | `int tmpIndex = tmpIndexInt.intValue();` (L796) |
| 6 | IF | `if(tmpIndex < 0 \|\| tmpIndex >= hktgi_mskm_svc_kei_no_list.size())` (L798) |
| 6.1 | RETURN | `return null;` |
| 7 | RETURN | `return ((X33VDataTypeStringBean)hktgi_mskm_svc_kei_no_list.get(tmpIndex)).loadModelData(subkey);` (L801) |

**Block 15** — IF `(key.equals("マンスION名"))` (L807)

> Simple field: Hostion Name — the name of the host internet exchange (ION) location where the service is terminated.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L808) |
| 1.1 | CALL | `return getHktgi_mans_nm_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L811) |
| 1.2.1 | CALL | `return getHktgi_mans_nm_state();` |

**Block 16** — IF `(key.equals("住所"))` (L817)

> Simple field: Location — the physical address of the service installation.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L818) |
| 1.1 | CALL | `return getHktgi_mans_ad_nm_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L821) |
| 1.2.1 | CALL | `return getHktgi_mans_ad_nm_state();` |

**Block 17** — IF `(key.equals("異動区分選択画面遷移パターン"))` (L827)

> Simple field: Relocation Division Selection Screen Transition Pattern — determines which navigation pattern the UI follows when the user selects a relocation type.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L828) |
| 1.1 | CALL | `return getHktgi_ido_div_seni_ptn_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L831) |
| 1.2.1 | CALL | `return getHktgi_ido_div_seni_ptn_state();` |

**Block 18** — IF `(key.equals("H-ID"))` (L837)

> Simple field: H-ID — the host-side identifier for the customer account or device.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L838) |
| 1.1 | CALL | `return getHktgi_pid_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L841) |
| 1.2.1 | CALL | `return getHktgi_pid_state();` |

**Block 19** — IF `(key.equals("M-ID"))` (L847)

> Simple field: M-ID — the member-side identifier for the customer in the service platform.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L848) |
| 1.1 | CALL | `return getHktgi_mans_id_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L851) |
| 1.2.1 | CALL | `return getHktgi_mans_id_state();` |

**Block 20** — IF `(key.equals("CAt-ID"))` (L857)

> Simple field: CAt-ID — the category or type identifier for the service classification.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L858) |
| 1.1 | CALL | `return getHktgi_catid_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L861) |
| 1.2.1 | CALL | `return getHktgi_catid_state();` |

**Block 21** — IF `(key.equals("外部システムコード"))` (L867)

> Simple field: External System Code — identifier for an external/integrated system that interfaces with this service.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` (L868) |
| 1.1 | CALL | `return getHktgi_syscd_value();` |
| 1.2 | IF | `else if(subkey.equalsIgnoreCase("state"))` (L871) |
| 1.2.1 | CALL | `return getHktgi_syscd_state();` |

**Block 22** — ELSE (L875)

> No matching key found — returns null as a default fallback.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // No matching property found |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `hktgi_sysid` | Field | System ID — the identifier for the service system instance (システムID) |
| `hktgi_svc_kei_no` | Field | Service Contract Number — the primary contract line identifier for a customer's service order (サービス契約番号) |
| `hktgi_ido_div` | Field | Relocation Division — classifies the type of service transfer/switch (異動区分) |
| `hktgi_ido_rsn_cd` | Field | Relocation Reason Code — code indicating why a service contract is being transferred/changed (異動理由コード) |
| `hktgi_ido_rsn_cd_list` | Field | List of Relocation Reason Code beans — multi-value repeating field for reasons for transfer (異動理由コードリスト) |
| `hktgi_ido_rsn_memo` | Field | Relocation Reason Memo — free-text explanation for service transfer reason (異動理由メモ) |
| `hktgi_op_svc_kei_no` | Field | Option Service Contract Number — optional add-on service contract identifier (オプションサービス契約番号) |
| `hktgi_op_svc_kei_no_list` | Field | List of Option Service Contract beans — multi-value repeating field (オプションサービス契約番号リスト) |
| `hktgi_tran_div` | Field | Processing Division — internal flag classifying the type of processing (処理区分) |
| `hktgi_mskm_no` | Field | Application Number — primary application/request identifier (申込番号) |
| `hktgi_mskm_dtl_no` | Field | Application Detail Number — sub-identifier for individual line items within an application (申込明細番号) |
| `hktgi_tokutei_id_kmk_nm` | Field | Specific ID Item Name — a named identifier field for a specific ID category (特定ID項目名) |
| `hktgi_tokutei_id_kmk_value` | Field | Specific ID Item Value — the actual value of a specific ID item (特定ID項目値) |
| `hktgi_popup_mode` | Field | Popup Mode — controls whether UI elements appear as popup dialogs (ポップアップモード) |
| `hktgi_mskm_svc_kei_no` | Field | Simultaneous Application Service Contract Number — multiple service contracts applied together (同時申込サービス契約番号) |
| `hktgi_mskm_svc_kei_no_list` | Field | List of Simultaneous Application Service Contract beans — multi-value repeating field (同時申込サービス契約番号リスト) |
| `hktgi_mans_nm` | Field | Hostion Name — name of the host internet exchange (ION) location (マンスION名) |
| `hktgi_mans_ad_nm` | Field | Location — physical address of the service installation (住所) |
| `hktgi_ido_div_seni_ptn` | Field | Relocation Division Selection Screen Transition Pattern — determines navigation pattern when user selects relocation type (異動区分選択画面遷移パターン) |
| `hktgi_pid` | Field | H-ID — host-side customer/device identifier (H-ID) |
| `hktgi_mans_id` | Field | M-ID — member-side customer identifier in the service platform (M-ID) |
| `hktgi_catid` | Field | CAt-ID — category/type identifier for service classification (CAt-ID) |
| `hktgi_syscd` | Field | External System Code — identifier for an integrated external system (外部システムコード) |
| `X33VDataTypeStringBean` | Class | Nested bean for list-type data fields — each element in the list holds its own key-value pairs via `loadModelData` |
| `value` | Sub-key | Request parameter to retrieve the data value of a field |
| `state` | Sub-key | Request parameter to retrieve the validation/processing state flag of a field |
| `*` (star) | Sub-key | Request parameter to retrieve the count/size of a list field |
