# Business Logic — FUW00943SF02DBean.loadModelData() [113 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW00943SF.FUW00943SF02DBean` |
| Layer | Service / Bean (Webview data bean — mediates between screen layer and domain data) |
| Module | `FUW00943SF` (Package: `eo.web.webview.FUW00943SF`) |

## 1. Role

### FUW00943SF02DBean.loadModelData()

This method serves as a **unified data routing entry point** for a webview data bean that manages survey-related form data. It acts as a centralized dispatcher that translates string-based item keys and sub-keys into specific getter calls across multiple survey data fields. The method implements a **routing/dispatch design pattern**: given a `key` (representing a named data field such as "Survey content", "Survey type", "Survey number", "Display order", "Radio button value", or "Survey answer list") and a `subkey` (representing the desired data aspect — "value", "enable", or "state"), it returns the corresponding bean value. For most data types, it simply delegates to the appropriate getter method. For the "Survey answer list" type, it performs **index-based list element resolution**, parsing a composite key path to locate a specific list item and then delegating the data request to that item's own `loadModelData` method. This design allows screen components to query arbitrary nested data using a simple key/subkey string API without needing to know the underlying bean structure. The method is a shared utility called by the screen layer and by itself recursively (via nested bean delegation).

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData(String key, String subkey)"])

    START --> CHECK_NULL["key == null<br/>or subkey == null?"]
    CHECK_NULL -->|Yes| RET_NULL1["Return null"]
    CHECK_NULL -->|No| COMPUTE_SEP["Compute separaterPoint<br/>= key.indexOf('/')"]

    COMPUTE_SEP --> CHECK_ENQ_CONTENT["key == 'アンケート内容'<br/>(Survey content)?"]
    CHECK_ENQ_CONTENT -->|Yes| ENQ_CONTENT_BRANCH["Survey content branch"]
    ENQ_CONTENT_BRANCH --> EC_SUBVALUE["subkey == 'value'?"]
    EC_SUBVALUE -->|Yes| EC_RET_VAL["Return getEnquete_content_value()"]
    EC_SUBVALUE -->|No| EC_SUBENABLE["subkey == 'enable'?"]
    EC_SUBENABLE -->|Yes| EC_RET_EN["Return getEnquete_content_enabled()"]
    EC_SUBENABLE -->|No| EC_RET_STATE["Return getEnquete_content_state()"]

    CHECK_ENQ_CONTENT -->|No| CHECK_ENQ_SBT["key == 'アンケート種類'<br/>(Survey type)?"]
    CHECK_ENQ_SBT -->|Yes| ENQ_SBT_BRANCH["Survey type branch"]
    ENQ_SBT_BRANCH --> ES_SUBVALUE["subkey == 'value'?"]
    ES_SUBVALUE -->|Yes| ES_RET_VAL["Return getEnquete_chk_sbt_value()"]
    ES_SUBVALUE -->|No| ES_SUBENABLE["subkey == 'enable'?"]
    ES_SUBENABLE -->|Yes| ES_RET_EN["Return getEnquete_chk_sbt_enabled()"]
    ES_SUBENABLE -->|No| ES_RET_STATE["Return getEnquete_chk_sbt_state()"]

    CHECK_ENQ_SBT -->|No| CHECK_ENQ_NO["key == 'アンケート番号'<br/>(Survey number)?"]
    CHECK_ENQ_NO -->|Yes| ENQ_NO_BRANCH["Survey number branch"]
    ENQ_NO_BRANCH --> EN_SUBVALUE["subkey == 'value'?"]
    EN_SUBVALUE -->|Yes| EN_RET_VAL["Return getEnquete_content_no_value()"]
    EN_SUBVALUE -->|No| EN_SUBENABLE["subkey == 'enable'?"]
    EN_SUBENABLE -->|Yes| EN_RET_EN["Return getEnquete_content_no_enabled()"]
    EN_SUBENABLE -->|No| EN_RET_STATE["Return getEnquete_content_no_state()"]

    CHECK_ENQ_NO -->|No| CHECK_DSP_JUN["key == '表示順序（アンケート内容）'<br/>(Display order)?"]
    CHECK_DSP_JUN -->|Yes| DSP_JUN_BRANCH["Display order branch"]
    DSP_JUN_BRANCH --> DJ_SUBVALUE["subkey == 'value'?"]
    DJ_SUBVALUE -->|Yes| DJ_RET_VAL["Return getDsp_jun_content_value()"]
    DJ_SUBVALUE -->|No| DJ_SUBENABLE["subkey == 'enable'?"]
    DJ_SUBENABLE -->|Yes| DJ_RET_EN["Return getDsp_jun_content_enabled()"]
    DJ_SUBENABLE -->|No| DJ_RET_STATE["Return getDsp_jun_content_state()"]

    CHECK_DSP_JUN -->|No| CHECK_RADIO["key == 'ラジオボタン選択値'<br/>(Radio button value)?"]
    CHECK_RADIO -->|Yes| RADIO_BRANCH["Radio button branch"]
    RADIO_BRANCH --> R_SUBVALUE["subkey == 'value'?"]
    R_SUBVALUE -->|Yes| R_RET_VAL["Return getRadio_value_value()"]
    R_SUBVALUE -->|No| R_SUBENABLE["subkey == 'enable'?"]
    R_SUBENABLE -->|Yes| R_RET_EN["Return getRadio_value_enabled()"]
    R_SUBENABLE -->|No| R_RET_STATE["Return getRadio_value_state()"]

    CHECK_RADIO -->|No| CHECK_ANSWER_LIST["key == 'アンケート回答リスト'<br/>(Survey answer list)?"]
    CHECK_ANSWER_LIST -->|Yes| ANSWER_LIST_BRANCH["Survey answer list branch"]
    ANSWER_LIST_BRANCH --> AL_GET_REMAIN["Get keyRemain = key.substring(separaterPoint+1)"]
    AL_GET_REMAIN --> AL_CHECK_ASTERISK["keyRemain == '*'?<br/>(Return count)?"]
    AL_CHECK_ASTERISK -->|Yes| AL_RET_SIZE["Return enquete_answer_list_list.size()"]
    AL_CHECK_ASTERISK -->|No| AL_FIND_SEP2["Find next separaterPoint<br/>= keyRemain.indexOf('/')"]
    AL_FIND_SEP2 --> AL_CHECK_SEP["separaterPoint <= 0?<br/>(Invalid format)?"]
    AL_CHECK_SEP -->|Yes| RET_NULL2["Return null"]
    AL_CHECK_SEP -->|No| AL_EXTRACT_INDEX["Extract key = keyRemain.substring(0, separaterPoint)"]
    AL_EXTRACT_INDEX --> AL_PARSE_INDEX["Try Integer.valueOf(key)"]
    AL_PARSE_INDEX --> AL_PARSE_EXCEPTION{"NumberFormatException"}
    AL_PARSE_EXCEPTION -->|Yes| RET_NULL3["Return null"]
    AL_PARSE_EXCEPTION -->|No| AL_CHECK_BOUNDS{"tmpIndex < 0<br/>or >= size()?"}
    AL_CHECK_BOUNDS -->|Yes| RET_NULL4["Return null"]
    AL_CHECK_BOUNDS -->|No| AL_SET_KEY2["Set key = keyRemain.substring(separaterPoint+1)"]
    AL_SET_KEY2 --> AL_DELEGATE["Delegate: item.loadModelData(key, subkey)"]

    AL_RET_SIZE --> END_NODE["Return / Next"]
    AL_DELEGATE --> END_NODE
    EC_RET_VAL --> END_NODE
    EC_RET_EN --> END_NODE
    EC_RET_STATE --> END_NODE
    ES_RET_VAL --> END_NODE
    ES_RET_EN --> END_NODE
    ES_RET_STATE --> END_NODE
    EN_RET_VAL --> END_NODE
    EN_RET_EN --> END_NODE
    EN_RET_STATE --> END_NODE
    DJ_RET_VAL --> END_NODE
    DJ_RET_EN --> END_NODE
    DJ_RET_STATE --> END_NODE
    R_RET_VAL --> END_NODE
    R_RET_EN --> END_NODE
    R_RET_STATE --> END_NODE
    RET_NULL1 --> END_NODE
    RET_NULL2 --> END_NODE
    RET_NULL3 --> END_NODE
    RET_NULL4 --> END_NODE
    END_NODE --> FINAL["Final null return"]
```

**Processing summary:**

1. **Null guard** — Returns `null` immediately if either `key` or `subkey` is `null`.
2. **Separator pre-computation** — Finds the first `/` position in `key` (used later by the survey answer list branch).
3. **Survey content branch** — Routes based on `subkey`: "value", "enable", or "state" for the main survey content field.
4. **Survey type branch** — Routes based on `subkey`: "value", "enable", or "state" for the survey answer type field.
5. **Survey number branch** — Routes based on `subkey`: "value", "enable", or "state" for the survey content number field.
6. **Display order branch** — Routes based on `subkey`: "value", "enable", or "state" for the survey content display order.
7. **Radio button value branch** — Routes based on `subkey`: "value", "enable", or "state" for the radio button selection.
8. **Survey answer list branch** — Handles the complex indexed list case. Parses the composite key path (`"プランジスト/0/プラ名称"` format), extracts the index, validates bounds, then delegates to the specific list item's `loadModelData`. Special-cases `"*"` as a request for the list size.
9. **Fallback** — Returns `null` if no matching key is found.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The item name (項目名) identifying which survey data field to access. Represents a human-readable label such as "アンケート内容" (Survey content), "アンケート種類" (Survey type), "アンケート番号" (Survey number), "表示順序（アンケート内容）" (Display order), "ラジオボタン選択値" (Radio button value), or "アンケート回答リスト" (Survey answer list). For the answer list type, the key can contain a nested path separated by `/` to identify a specific list item by index and a nested field name (e.g., `"プランジスト/0/プラ名称"` to access the project name of the 0th item in the plan list). |
| 2 | `subkey` | `String` | The sub-key identifying which property of the named field to retrieve. Accepts case-insensitive values: `"value"` (データ — the actual data value), `"enable"` (有効化 — whether the field is enabled/active), or `"state"` (ステータス — the field's status). For the answer list branch, this is delegated to the nested bean. |

**Instance fields read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `enquete_answer_list_list` | `List<X33VDataTypeBeanInterface>` | The survey answer list — a collection of nested data beans, each representing a survey answer entry (e.g., a plan entry with its own sub-fields like project name). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKAdEditCC.substring` | JKKAdEditCC | - | Calls `substring` in `JKKAdEditCC` |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls `substring` in `JKKTelnoInfoAddMapperCC` |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls `substring` in `JDKejbStringEdit` |
| R | `FUW00943SF02DBean.getDsp_jun_content_enabled` | FUW00943SF02DBean | - | Reads display order enabled state for survey content |
| R | `FUW00943SF02DBean.getDsp_jun_content_state` | FUW00943SF02DBean | - | Reads display order state for survey content |
| R | `FUW00943SF02DBean.getDsp_jun_content_value` | FUW00943SF02DBean | - | Reads display order value for survey content |
| R | `FUW00943SF02DBean.getEnquete_chk_sbt_enabled` | FUW00943SF02DBean | - | Reads survey type (checkbox subtype) enabled state |
| R | `FUW00943SF02DBean.getEnquete_chk_sbt_state` | FUW00943SF02DBean | - | Reads survey type (checkbox subtype) status |
| R | `FUW00943SF02DBean.getEnquete_chk_sbt_value` | FUW00943SF02DBean | - | Reads survey type (checkbox subtype) data value |
| R | `FUW00943SF02DBean.getEnquete_content_enabled` | FUW00943SF02DBean | - | Reads main survey content enabled state |
| R | `FUW00943SF02DBean.getEnquete_content_no_enabled` | FUW00943SF02DBean | - | Reads survey content number enabled state |
| R | `FUW00943SF02DBean.getEnquete_content_no_state` | FUW00943SF02DBean | - | Reads survey content number status |
| R | `FUW00943SF02DBean.getEnquete_content_no_value` | FUW00943SF02DBean | - | Reads survey content number data value |
| R | `FUW00943SF02DBean.getEnquete_content_state` | FUW00943SF02DBean | - | Reads main survey content status |
| R | `FUW00943SF02DBean.getEnquete_content_value` | FUW00943SF02DBean | - | Reads main survey content data value |
| R | `FUW00943SF02DBean.getRadio_value_enabled` | FUW00943SF02DBean | - | Reads radio button selection enabled state |
| R | `FUW00943SF02DBean.getRadio_value_state` | FUW00943SF02DBean | - | Reads radio button selection status |
| R | `FUW00943SF02DBean.getRadio_value_value` | FUW00943SF02DBean | - | Reads radio button selection data value |
| R | `FUW00943SF02DBean.loadModelData` | FUW00943SF02DBean | - | Recursive call to nested bean for survey answer list items |

**Analysis:** This method performs **zero Create, zero Update, zero Delete (CUD)** operations. It is a pure **Read (R)** method — it only retrieves data from the bean's internal state. No external SC codes, CBS (Common Business Services), or database tables are accessed directly. All data is sourced from the bean's own getter methods and internal list fields.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 methods.
Terminal operations from this method: `loadModelData` [R], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `getRadio_value_state` [R], `getRadio_value_enabled` [R], `getRadio_value_value` [R], `getDsp_jun_content_state` [R], `getDsp_jun_content_enabled` [R], `getDsp_jun_content_value` [R], `getEnquete_content_no_state` [R], `getEnquete_content_no_value` [R], `getEnquete_content_no_enabled` [R], `getEnquete_content_state` [R], `getEnquete_content_value` [R], `getEnquete_chk_sbt_state` [R], `getEnquete_chk_sbt_enabled` [R], `getEnquete_chk_sbt_value` [R], `getRadio_value_enabled` [R], `getDsp_jun_content_state` [R], `getDsp_jun_content_enabled` [R], `getDsp_jun_content_value` [R], `getEnquete_content_state` [R], `getEnquete_content_enabled` [R], `getEnquete_content_value` [R]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | FUW00943SF02DBean.getJsflist_typelist_enquete_answer_list() | `FUW00943SF02DBean.getJsflist_typelist_enquete_answer_list()` -> `FUW00943SF02DBean.loadModelData` | `getRadio_value_state [R]`, `getRadio_value_enabled [R]`, `getRadio_value_value [R]`, `getDsp_jun_content_state [R]`, `getDsp_jun_content_enabled [R]`, `getDsp_jun_content_value [R]`, `getEnquete_content_no_state [R]`, `getEnquete_content_no_value [R]`, `getEnquete_content_no_enabled [R]`, `getEnquete_content_state [R]`, `getEnquete_content_value [R]`, `getEnquete_chk_sbt_state [R]`, `getEnquete_chk_sbt_enabled [R]`, `getEnquete_chk_sbt_value [R]` |
| 2 | FUW00943SF02DBean.loadModelData() | `FUW00943SF02DBean.loadModelData(String, String)` -> `FUW00943SF02DBean.loadModelData(String, String)` (recursive) | `loadModelData [R]` (delegated to nested X33VDataTypeBeanInterface) |

**Notes:**
- Caller #1 (`getJsflist_typelist_enquete_answer_list`) is a self-method within the same bean that likely retrieves a JavaScript-formatted list of survey answer types.
- Caller #2 represents **recursive self-delegation**: when `loadModelData` is invoked on a nested bean within the survey answer list, the nested bean's own `loadModelData` method is called (via `X33VDataTypeBeanInterface.loadModelData(key, subkey)`), which may itself call `loadModelData` on deeper nested beans.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(key == null || subkey == null)` (L279)

> Null guard: Returns null immediately if either parameter is null. This is a defensive check documented as "key,subkeyがnullの場合、nullを返す" (If key/subkey is null, return null).

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // key,subkeyがnullの場合、nullを返す (If key/subkey is null, return null) |

**Block 2** — [EXEC] `int separaterPoint = key.indexOf("/")` (L282)

> Computes the position of the first `/` separator in the key string. This value is used later by the survey answer list branch for path parsing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/")` // Find first separator position |

**Block 3** — [ELSE-IF] `(key.equals("アンケート内容"))` — Survey content branch (L285)

> Data type: "アンケート内容" (Survey content) — Item ID: `enquete_content`. Routes based on subkey to retrieve the corresponding field property.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getEnquete_content_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` //subkeyが"enable"の場合、enquete_content_enableのgetterの戻り値を返す (If subkey is "enable", return getter value of enquete_content_enable) |
| 4 | RETURN | `return getEnquete_content_enabled();` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` //subkeyが"state"の場合、ステータスを返す (If subkey is "state", return status) |
| 6 | RETURN | `return getEnquete_content_state();` |

**Block 4** — [ELSE-IF] `(key.equals("アンケート種類"))` — Survey type branch (L298)

> Data type: "アンケート種類" (Survey type) — Item ID: `enquete_chk_sbt`. Routes based on subkey for the survey checkbox subtype field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getEnquete_chk_sbt_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` //subkeyが"enable"の場合、enquete_chk_sbt_enableのgetterの戻り値を返す (If subkey is "enable", return getter value of enquete_chk_sbt_enable) |
| 4 | RETURN | `return getEnquete_chk_sbt_enabled();` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` //subkeyが"state"の場合、ステータスを返す (If subkey is "state", return status) |
| 6 | RETURN | `return getEnquete_chk_sbt_state();` |

**Block 5** — [ELSE-IF] `(key.equals("アンケート番号"))` — Survey number branch (L311)

> Data type: "アンケート番号" (Survey number) — Item ID: `enquete_content_no`. Routes based on subkey for the survey content number field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getEnquete_content_no_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` //subkeyが"enable"の場合、enquete_content_no_enableのgetterの戻り値を返す (If subkey is "enable", return getter value of enquete_content_no_enable) |
| 4 | RETURN | `return getEnquete_content_no_enabled();` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` //subkeyが"state"の場合、ステータスを返す (If subkey is "state", return status) |
| 6 | RETURN | `return getEnquete_content_no_state();` |

**Block 6** — [ELSE-IF] `(key.equals("表示順序（アンケート内容）"))` — Display order branch (L324)

> Data type: "表示順序（アンケート内容）" (Display order — Survey content) — Item ID: `dsp_jun_content`. Routes based on subkey for the survey content display order field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getDsp_jun_content_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` //subkeyが"enable"の場合、dsp_jun_content_enableのgetterの戻り値を返す (If subkey is "enable", return getter value of dsp_jun_content_enable) |
| 4 | RETURN | `return getDsp_jun_content_enabled();` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` //subkeyが"state"の場合、ステータスを返す (If subkey is "state", return status) |
| 6 | RETURN | `return getDsp_jun_content_state();` |

**Block 7** — [ELSE-IF] `(key.equals("ラジオボタン選択値"))` — Radio button value branch (L337)

> Data type: "ラジオボタン選択値" (Radio button value) — Item ID: `radio_value`. Routes based on subkey for the radio button selection field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` |
| 2 | RETURN | `return getRadio_value_value();` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` //subkeyが"enable"の場合、radio_value_enableのgetterの戻り値を返す (If subkey is "enable", return getter value of radio_value_enable) |
| 4 | RETURN | `return getRadio_value_enabled();` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` //subkeyが"state"の場合、ステータスを返す (If subkey is "state", return status) |
| 6 | RETURN | `return getRadio_value_state();` |

**Block 8** — [ELSE-IF] `(key.equals("アンケート回答リスト"))` — Survey answer list branch (L350)

> Data type: "アンケート回答リスト" (Survey answer list) — Item ID: `enquete_answer_list`. This is the **complex branch** that handles indexed list element access. The key follows a composite path format like `"プランジスト/0/プラ名称"` (Plan list / index 0 / project name). The method parses this path, validates the index, and delegates to the nested bean at the specified index.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String keyRemain = key.substring(separaterPoint + 1)` // keyの次の要素を取得 (Get next element after the first "/"). For a path like `"プランジスト/0/プラ名称"`, extracts `"0/プラ名称"` (everything after the first "/") |
| 2 | IF | `keyRemain.equals("*")` //インデックス値の代わりに"*"が指定されていたら、リストの要素数を返す (If "*" is specified instead of an index value, return the number of list elements) |
| 3 | RETURN | `return Integer.valueOf(enquete_answer_list_list.size());` // Return list size |
| 4 | ELSE | `separaterPoint = keyRemain.indexOf("/")` // 次の切り替え符号(ここでは"/")を検索する (Search for the next separator, which is "/") |
| 5 | IF | `separaterPoint <= 0` // 切り替え符号が見つからない、または不正な場合は、ここでnullを返す (If separator not found or invalid, return null here) |
| 6 | RETURN | `return null;` |
| 7 | SET | `key = keyRemain.substring(0, separaterPoint)` // Extract the index portion (e.g., `"0"` from `"0/プラ名称"`) |
| 8 | SET | `Integer tmpIndexInt = null` // Initialize index parser temp variable |
| 9 | TRY-CATCH | `try { tmpIndexInt = Integer.valueOf(key); } catch(NumberFormatException e)` // インデックス値が数値文字列でない場合は、ここでnullを返す (If the index value is not a numeric string, return null here) |
| 10 | CATCH | `return null;` // Not a valid numeric index |
| 11 | IF | `tmpIndexInt == null` |
| 12 | RETURN | `return null;` |
| 13 | SET | `int tmpIndex = tmpIndexInt.intValue()` |
| 14 | IF | `tmpIndex < 0 || tmpIndex >= enquete_answer_list_list.size()` // インデックス値がリスト個数-1を超える場合、ここでnullを返す (If the index value exceeds list count - 1, return null here) |
| 15 | RETURN | `return null;` // Out of bounds |
| 16 | SET | `key = keyRemain.substring(separaterPoint + 1)` // 項目名を生成 (Generate the field name from the remainder after the index). For `"0/プラ名称"`, extracts `"プラ名称"` (project name) |
| 17 | CALL | `((X33VDataTypeBeanInterface)enquete_answer_list_list.get(tmpIndex)).loadModelData(key, subkey)` // Delegate to nested bean's loadModelData — データタイプビューン型では項目名とsubkeyのみ引数に指定 (For data type bean, only item name and subkey are specified as arguments) |

**Block 9** — [ELSE] `(no matching key found)` (L384)

> Fallback: If no key matches any of the defined data types, returns `null`. Documented as "条件に合致するプロパティが存在しない場合は、nullを返す" (If no property matches the condition, return null).

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // 条件に合致するプロパティが存在しない場合は、nullを返す (If no property matches the condition, return null) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `enquete_content` | Field ID | Survey content — the main content/body text of a survey question response |
| `enquete_chk_sbt` | Field ID | Survey checkbox subtype — the type of checkbox answer selected in a survey |
| `enquete_content_no` | Field ID | Survey content number — the sequential number or identifier for a survey content item |
| `dsp_jun_content` | Field ID | Display order (Survey content) — the ordering/priority for displaying survey content on screen |
| `radio_value` | Field ID | Radio button value — the value of a radio button selection in the survey form |
| `enquete_answer_list` | Field ID | Survey answer list — a list of survey answer entries, each containing nested sub-fields |
| `enquete_answer_list_list` | Field | The internal list holding survey answer entries as `X33VDataTypeBeanInterface` beans |
| `アンケート内容` | Japanese field name | "Survey content" — the primary data field for survey answers |
| `アンケート種類` | Japanese field name | "Survey type" — the type/category of a survey checkbox subtype |
| `アンケート番号` | Japanese field name | "Survey number" — the content number for a survey item |
| `表示順序` | Japanese field name | "Display order" — the sort priority for displaying survey content on screen |
| `ラジオボタン選択値` | Japanese field name | "Radio button value" — the selected value from a radio button group |
| `アンケート回答リスト` | Japanese field name | "Survey answer list" — the list of survey answer entries, supporting indexed access |
| `プランジスト` | Japanese field name | "Plan list" — the plan/radio button group list referenced in survey answer paths |
| `X33VDataTypeBeanInterface` | Interface | A nested data bean interface that implements its own `loadModelData(key, subkey)` for recursive data routing within list items |
| `value` | Subkey | The actual data value of a field |
| `enable` | Subkey | Whether the field is enabled/active (boolean or flag state) |
| `state` | Subkey | The field's status state (validation state, display state, etc.) |
| `loadModelData` | Method | The unified data routing method that resolves item keys and sub-keys to specific bean data values |
| **Survey** | Domain term | A data collection form mechanism used in the system for gathering user input |
| **Bean** | Technical term | A Java data bean (typically following JavaBean conventions) that encapsulates form/screen data for a UI screen |
| **Webview** | Layer | The presentation layer in this application architecture that handles screen rendering and data binding |
