# Business Logic — FUW00156SF02DBean.storeModelData() [104 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW00156SF.FUW00156SF02DBean` |
| Layer | Service Component / Web View Bean (Model/View data transfer layer) |
| Module | `FUW00156SF` (Package: `eo.web.webview.FUW00156SF`) |

## 1. Role

### FUW00156SF02DBean.storeModelData()

This method serves as the **centralized model-data dispatcher** for survey questionnaire data within the FUW00156SF web module. It receives a key-string and subkey-string pair (e.g., "アンケート内容"/"value" or "アンケート回答リスト"/"value") along with a typed value, and routes the assignment to the appropriate setter on the bean based on the key's semantic category. This implements a **dispatch/routing design pattern** that consolidates 6 distinct data categories — each supporting 3 sub-properties (value, enable, state) — into a single unified entry point, eliminating the need for callers to know which specific setter to invoke. It plays a critical role in the **web-to-bean data binding layer**, enabling generic UI frameworks to push model values into strongly-typed bean fields without reflection or type-unsafe casts scattered across the codebase. The method also supports **recursive delegation**: when the key identifies a dynamic survey-answer list ("アンケート回答リスト"), it parses a hierarchical key path (e.g., "アンケート回答リスト/0/アンケート内容"), resolves the list index, casts the list element to a data-type bean interface, and recursively invokes `storeModelData` on the child bean, enabling nested survey answer structures to be populated in a single pass.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["storeModelData key, subkey, in_value, isSetAsString"])
    CHECK_NULL{key is null<br/>or subkey is null}
    EARLY_RETURN(["Return no-op"])
    EXTRACT_SEP["Extract separaterPoint from key indexOf slash"]
    CHECK_KEY1{key equals<br/>アンケート内容}
    CHECK_SUB1{subkey is value}
    SET_VAL1["setEnquete_content_value"]
    CHECK_SUB1B{subkey is enable}
    SET_EN1["setEnquete_content_enabled"]
    CHECK_SUB1C{subkey is state}
    SET_ST1["setEnquete_content_state"]
    CHECK_KEY2{key equals<br/>アンケートチェック種類}
    CHECK_SUB2{subkey is value}
    SET_VAL2["setEnquete_chk_sbt_value"]
    CHECK_SUB2B{subkey is enable}
    SET_EN2["setEnquete_chk_sbt_enabled"]
    CHECK_SUB2C{subkey is state}
    SET_ST2["setEnquete_chk_sbt_state"]
    CHECK_KEY3{key equals<br/>アンケート番号}
    CHECK_SUB3{subkey is value}
    SET_VAL3["setEnquete_content_no_value"]
    CHECK_SUB3B{subkey is enable}
    SET_EN3["setEnquete_content_no_enabled"]
    CHECK_SUB3C{subkey is state}
    SET_ST3["setEnquete_content_no_state"]
    CHECK_KEY4{key equals<br/>表示順序 アンケート内容}
    CHECK_SUB4{subkey is value}
    SET_VAL4["setDsp_jun_content_value"]
    CHECK_SUB4B{subkey is enable}
    SET_EN4["setDsp_jun_content_enabled"]
    CHECK_SUB4C{subkey is state}
    SET_ST4["setDsp_jun_content_state"]
    CHECK_KEY5{key equals<br/>ラジオボタン選択値}
    CHECK_SUB5{subkey is value}
    SET_VAL5["setRadio_value_value"]
    CHECK_SUB5B{subkey is enable}
    SET_EN5["setRadio_value_enabled"]
    CHECK_SUB5C{subkey is state}
    SET_ST5["setRadio_value_state"]
    CHECK_KEY6{key equals<br/>アンケート回答リスト}
    EXTRACT_REMAIN["Extract keyRemain substring"]
    FIND_SEP2["Find next slash in keyRemain"]
    CHECK_SEP2{separaterPoint is positive}
    EXTRACT_KEY["Extract first segment as key"]
    INIT_INDEX["Initialize tmpIndexInt to null"]
    TRY_PARSE["Parse tmpIndexInt from key"]
    CHECK_INDEX{tmpIndexInt is not null}
    CHECK_BOUNDS{tmpIndex in list bounds}
    EXTRACT_REMAIN2["Extract remaining key after index"]
    RECURSIVE_CALL["Child storeModelData recursive call"]
    END_NODE(["Return Next"])

    START --> CHECK_NULL
    CHECK_NULL -->|true| EARLY_RETURN
    EARLY_RETURN --> END_NODE
    CHECK_NULL -->|false| EXTRACT_SEP
    EXTRACT_SEP --> CHECK_KEY1
    CHECK_KEY1 -->|true| CHECK_SUB1
    CHECK_KEY1 -->|false| CHECK_KEY2
    CHECK_SUB1 -->|true| SET_VAL1
    CHECK_SUB1 -->|false| CHECK_SUB1B
    CHECK_SUB1B -->|true| SET_EN1
    CHECK_SUB1B -->|false| CHECK_SUB1C
    CHECK_SUB1C -->|true| SET_ST1
    CHECK_SUB1C -->|false| END_NODE
    SET_VAL1 --> END_NODE
    SET_EN1 --> END_NODE
    SET_ST1 --> END_NODE
    CHECK_KEY2 -->|true| CHECK_SUB2
    CHECK_KEY2 -->|false| CHECK_KEY3
    CHECK_SUB2 -->|true| SET_VAL2
    CHECK_SUB2 -->|false| CHECK_SUB2B
    CHECK_SUB2B -->|true| SET_EN2
    CHECK_SUB2B -->|false| CHECK_SUB2C
    CHECK_SUB2C -->|true| SET_ST2
    CHECK_SUB2C -->|false| END_NODE
    SET_VAL2 --> END_NODE
    SET_EN2 --> END_NODE
    SET_ST2 --> END_NODE
    CHECK_KEY3 -->|true| CHECK_SUB3
    CHECK_KEY3 -->|false| CHECK_KEY4
    CHECK_SUB3 -->|true| SET_VAL3
    CHECK_SUB3 -->|false| CHECK_SUB3B
    CHECK_SUB3B -->|true| SET_EN3
    CHECK_SUB3B -->|false| CHECK_SUB3C
    CHECK_SUB3C -->|true| SET_ST3
    CHECK_SUB3C -->|false| END_NODE
    SET_VAL3 --> END_NODE
    SET_EN3 --> END_NODE
    SET_ST3 --> END_NODE
    CHECK_KEY4 -->|true| CHECK_SUB4
    CHECK_KEY4 -->|false| CHECK_KEY5
    CHECK_SUB4 -->|true| SET_VAL4
    CHECK_SUB4 -->|false| CHECK_SUB4B
    CHECK_SUB4B -->|true| SET_EN4
    CHECK_SUB4B -->|false| CHECK_SUB4C
    CHECK_SUB4C -->|true| SET_ST4
    CHECK_SUB4C -->|false| END_NODE
    SET_VAL4 --> END_NODE
    SET_EN4 --> END_NODE
    SET_ST4 --> END_NODE
    CHECK_KEY5 -->|true| CHECK_SUB5
    CHECK_KEY5 -->|false| CHECK_KEY6
    CHECK_SUB5 -->|true| SET_VAL5
    CHECK_SUB5 -->|false| CHECK_SUB5B
    CHECK_SUB5B -->|true| SET_EN5
    CHECK_SUB5B -->|false| CHECK_SUB5C
    CHECK_SUB5C -->|true| SET_ST5
    CHECK_SUB5C -->|false| END_NODE
    SET_VAL5 --> END_NODE
    SET_EN5 --> END_NODE
    SET_ST5 --> END_NODE
    CHECK_KEY6 -->|true| EXTRACT_REMAIN
    CHECK_KEY6 -->|false| END_NODE
    EXTRACT_REMAIN --> FIND_SEP2
    FIND_SEP2 --> CHECK_SEP2
    CHECK_SEP2 -->|false| END_NODE
    CHECK_SEP2 -->|true| EXTRACT_KEY
    EXTRACT_KEY --> INIT_INDEX
    INIT_INDEX --> TRY_PARSE
    TRY_PARSE -->|success| CHECK_INDEX
    TRY_PARSE -->|exception| CATCH_SET["Set tmpIndexInt to null"]
    CATCH_SET --> CHECK_INDEX
    CHECK_INDEX -->|false| END_NODE
    CHECK_INDEX -->|true| CHECK_BOUNDS
    CHECK_BOUNDS -->|false| END_NODE
    CHECK_BOUNDS -->|true| EXTRACT_REMAIN2
    EXTRACT_REMAIN2 --> RECURSIVE_CALL
    RECURSIVE_CALL --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The **item name** identifying which survey/questionnaire data category the value belongs to. Can be one of 6 fixed Japanese labels: "アンケート内容" (Survey Question Content), "アンケートチェック種類" (Survey Check Type), "アンケート番号" (Survey Number), "表示順序（アンケート内容）" (Display Order — Survey Content), "ラジオボタン選択値" (Radio Button Selection Value), or "アンケート回答リスト" (Survey Answer List — triggers recursive delegation). When the key contains "/" separators, it encodes a nested path for dynamic list items. |
| 2 | `subkey` | `String` | The **sub-property name** within the data category, specifying whether the value being set is "value" (the actual data), "enable" (whether the field is editable), or "state" (display/validation state). Comparison is case-insensitive, allowing flexibility from the caller side. |
| 3 | `in_value` | `Object` | The **data value** to assign. Type depends on subkey: `String` for "value" and "state" properties, `Boolean` for "enable" properties. Cast explicitly by the method at dispatch time. |
| 4 | `isSetAsString` | `boolean` | Flag indicating whether to set a String-type value into a Long-type item Value property. If true, the value is treated as a string representation of a Long. **Note**: this parameter is received but not actively used in the current implementation — it exists for future/extension use. |

**Instance fields read by this method:**
| Field | Type | Usage |
|-------|------|-------|
| `enquete_answer_list_list` | `X33VDataTypeList` | The list of survey answer beans used for recursive delegation. Accessed via `.size()` for bounds checking and `.get()` for element retrieval. |

## 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` |
| - | `FUW00156SF02DBean.setDsp_jun_content_enabled` | FUW00156SF02DBean | - | Sets the display order enabled flag for the survey content field |
| - | `FUW00156SF02DBean.setDsp_jun_content_state` | FUW00156SF02DBean | - | Sets the display order state for the survey content field |
| - | `FUW00156SF02DBean.setDsp_jun_content_value` | FUW00156SF02DBean | - | Sets the display order value for the survey content field |
| - | `FUW00156SF02DBean.setEnquete_chk_sbt_enabled` | FUW00156SF02DBean | - | Sets the survey check type enabled flag |
| - | `FUW00156SF02DBean.setEnquete_chk_sbt_state` | FUW00156SF02DBean | - | Sets the survey check type state |
| - | `FUW00156SF02DBean.setEnquete_chk_sbt_value` | FUW00156SF02DBean | - | Sets the survey check type value |
| - | `FUW00156SF02DBean.setEnquete_content_enabled` | FUW00156SF02DBean | - | Sets the survey question content enabled flag |
| - | `FUW00156SF02DBean.setEnquete_content_no_enabled` | FUW00156SF02DBean | - | Sets the survey number enabled flag |
| - | `FUW00156SF02DBean.setEnquete_content_no_state` | FUW00156SF02DBean | - | Sets the survey number state |
| - | `FUW00156SF02DBean.setEnquete_content_no_value` | FUW00156SF02DBean | - | Sets the survey number value |
| - | `FUW00156SF02DBean.setEnquete_content_state` | FUW00156SF02DBean | - | Sets the survey question content state |
| - | `FUW00156SF02DBean.setEnquete_content_value` | FUW00156SF02DBean | - | Sets the survey question content value |
| - | `FUW00156SF02DBean.setRadio_value_enabled` | FUW00156SF02DBean | - | Sets the radio button selection value enabled flag |
| - | `FUW00156SF02DBean.setRadio_value_state` | FUW00156SF02DBean | - | Sets the radio button selection value state |
| - | `FUW00156SF02DBean.setRadio_value_value` | FUW00156SF02DBean | - | Sets the radio button selection value |
| - | `FUW00156SF02DBean.storeModelData` | FUW00156SF02DBean | - | Recursively calls itself on a child answer bean element for nested list data |

**Analysis:** This method performs **no database CRUD operations** directly. It is a pure in-memory data routing/dispatch method that sets bean properties (U-style operations on instance state). The only persistent touchpoint is through the recursive delegation into `enquete_answer_list_list` child beans, which themselves may propagate values to deeper layers. No SC Codes (Service Component codes) or CBS references are invoked — this is a **view-layer bean** operation only.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.
Terminal operations from this method: `storeModelData` [-], `storeModelData` [-], `storeModelData` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `setRadio_value_state` [-], `setRadio_value_enabled` [-], `setRadio_value_value` [-], `setDsp_jun_content_state` [-], `setDsp_jun_content_enabled` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Caller: `FUW00156SF02DBean` (same-class internal calls) | Direct caller within `FUW00156SF02DBean` | `storeModelData` [U] In-memory bean property |
| 2 | Caller: `FUW00156SF02DBean` (self-recursive) | `FUW00156SF02DBean.storeModelData` -> `storeModelData` (child bean) | `storeModelData` [U] In-memory child bean property |

**Caller summary:** All direct callers reside within the same class (`FUW00156SF02DBean`), either from other methods in the bean for consolidated data setting, or via the self-recursive call to child answer beans. No external screen (KKSV*) or batch entry points were found in the caller chain within 8 hops — this method is a low-level data-binding utility invoked by higher-level bean processing methods.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(null guard check)` (L422)

Guard clause: abort early if either `key` or `subkey` is null.

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (key == null \|\| subkey == null)` // Early exit guard |
| 2 | RETURN | `return;` // Abort processing if key or subkey is null |

**Block 2** — [SET] `(extract separator position)` (L426)

Prepare for potential recursive delegation by pre-scanning the key for "/" separators.

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/")` // Find first "/" position in key [-> for recursive path parsing] |

**Block 3** — [ELSE-IF] `[key == "アンケート内容" (Survey Question Content)]` (L429)

Dispatches survey question content data. This is the primary field for capturing the actual text/content of a survey question item.

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (key.equals("アンケート内容"))` // [-> "アンケート内容": Survey Question Content] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | EXEC | `setEnquete_content_value((String)in_value);` // Set the survey question content text value |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // Japanese comment: subkeyが"enable"の場合、enquete_content_enabledのsetterを実行する。 |
| 5 | EXEC | `setEnquete_content_enabled((Boolean)in_value);` // Set whether the survey question content field is editable |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // Japanese comment: subkeyが"state"の場合、ステータスを返す。 |
| 7 | EXEC | `setEnquete_content_state((String)in_value);` // Set the display/validation state of the survey question content |

**Block 4** — [ELSE-IF] `[key == "アンケートチェック種類" (Survey Check Type)]` (L443)

Dispatches survey check type data. The check type determines what kind of validation or checking mechanism applies to the survey (e.g., required-field flag, pattern matching type).

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("アンケートチェック種類"))` // [-> "アンケートチェック種類": Survey Check Type] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | EXEC | `setEnquete_chk_sbt_value((String)in_value);` // Set the survey check type value |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // Japanese comment: subkeyが"enable"の場合、enquete_chk_sbt_enabledのsetterを実行する。 |
| 5 | EXEC | `setEnquete_chk_sbt_enabled((Boolean)in_value);` // Set whether the check type field is editable |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // Japanese comment: subkeyが"state"の場合、ステータスを返す。 |
| 7 | EXEC | `setEnquete_chk_sbt_state((String)in_value);` // Set the display/validation state of the check type |

**Block 5** — [ELSE-IF] `[key == "アンケート番号" (Survey Number)]` (L457)

Dispatches survey number data. This field tracks the sequential number or ID assigned to each survey question within a survey session.

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("アンケート番号"))` // [-> "アンケート番号": Survey Number] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | EXEC | `setEnquete_content_no_value((String)in_value);` // Set the survey number value |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // Japanese comment: subkeyが"enable"の場合、enquete_content_no_enabledのsetterを実行する。 |
| 5 | EXEC | `setEnquete_content_no_enabled((Boolean)in_value);` // Set whether the survey number field is editable |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // Japanese comment: subkeyが"state"の場合、ステータスを返す。 |
| 7 | EXEC | `setEnquete_content_no_state((String)in_value);` // Set the display/validation state of the survey number |

**Block 6** — [ELSE-IF] `[key == "表示順序（アンケート内容）" (Display Order — Survey Content)]` (L471)

Dispatches display ordering data for the survey question content. The display order determines the visual sequence in which survey questions appear on the rendered form.

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("表示順序（アンケート内容）"))` // [-> "表示順序（アンケート内容）": Display Order (Survey Content)] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | EXEC | `setDsp_jun_content_value((String)in_value);` // Set the display order value |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // Japanese comment: subkeyが"enable"の場合、dsp_jun_content_enabledのsetterを実行する。 |
| 5 | EXEC | `setDsp_jun_content_enabled((Boolean)in_value);` // Set whether the display order field is editable |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // Japanese comment: subkeyが"state"の場合、ステータスを返す。 |
| 7 | EXEC | `setDsp_jun_content_state((String)in_value);` // Set the display/validation state of the display order |

**Block 7** — [ELSE-IF] `[key == "ラジオボタン選択値" (Radio Button Selection Value)]` (L485)

Dispatches radio button selection data. This field captures the user's selection from a set of radio button options presented in the survey.

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("ラジオボタン選択値"))` // [-> "ラジオボタン選択値": Radio Button Selection Value] |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` |
| 3 | EXEC | `setRadio_value_value((String)in_value);` // Set the radio button selection value |
| 4 | ELSE-IF | `else if (subkey.equalsIgnoreCase("enable"))` // Japanese comment: subkeyが"enable"の場合、radio_value_enabledのsetterを実行する。 |
| 5 | EXEC | `setRadio_value_enabled((Boolean)in_value);` // Set whether the radio button field is editable |
| 6 | ELSE-IF | `else if (subkey.equalsIgnoreCase("state"))` // Japanese comment: subkeyが"state"の場合、ステータスを返す。 |
| 7 | EXEC | `setRadio_value_state((String)in_value);` // Set the display/validation state of the radio button |

**Block 8** — [ELSE-IF] `[key == "アンケート回答リスト" (Survey Answer List)]` (L499)

Recursive delegation block: handles dynamic survey answer list items by parsing a path-based key (e.g., "アンケート回答リスト/0/アンケート内容"), extracting the list index, retrieving the corresponding child bean, and delegating the set operation to it.

> **Block 8.1** — [SET] `(extract remaining portion of key)` (L503)

Japanese comment: keyの次の要素を取得。("アンケートリスト/0/プレンリスト/0/名前"のようなパス形式から最初の"/"より後を抽出)。取得

| # | Type | Code |
|---|------|------|
| 1 | SET | `String keyRemain = key.substring(separaterPoint + 1);` // Extract remaining portion after first "/" in key |

> **Block 8.2** — [SET] `(find next separator)` (L504)

Japanese comment: 次の区切り符号（ここでは"/"）を検索する。

| # | Type | Code |
|---|------|------|
| 1 | SET | `separaterPoint = keyRemain.indexOf("/");` // Find next "/" position in the remaining portion |

> **Block 8.3** — [IF] `(separator found check)` (L505)

Japanese comment: 区切り符号が正しく指定された場合 (If separator is correctly specified).

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (separaterPoint > 0)` // Separator correctly specified |
| 2 | SET | `key = keyRemain.substring(0, separaterPoint);` // Extract the first segment (potential index) from keyRemain |

> **Block 8.4** — [SET] `(initialize index variable)` (L507)

Japanese comment: 次にリスト中のインデックスを見る (Next, look at the index within the list).

| # | Type | Code |
|---|------|------|
| 1 | SET | `Integer tmpIndexInt = null;` // Initialize index integer (nullable for exception safety) |

> **Block 8.5** — [TRY-CATCH] `(parse index from string)` (L508-L515)

Japanese comment: インデックス値が数値文字列でない場合は、ここで再設定。(If the index value is not a numeric string, reset here).

| # | Type | Code |
|---|------|------|
| 1 | TRY | `try { tmpIndexInt = Integer.valueOf(key); }` // Attempt to parse key as an integer index |
| 2 | CATCH | `catch (NumberFormatException e) { tmpIndexInt = null; }` // If not numeric, set to null and continue gracefully |

> **Block 8.6** — [IF] `(index parsed successfully)` (L516)

Japanese comment: インデックス値が数値文字列の場合 (If the index value is a numeric string).

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (tmpIndexInt != null)` // Index successfully parsed as a number |
| 2 | SET | `int tmpIndex = tmpIndexInt.intValue();` // Unbox Integer to primitive int |

> **Block 8.7** — [IF] `(index within list bounds)` (L517)

Japanese comment: インデックス値がリスト個数-1以下の場合 (If the index value is less than the number of items in the list minus 1).

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (tmpIndex >= 0 && tmpIndex < enquete_answer_list_list.size())` // Index within valid list range |
| 2 | SET | `key = keyRemain.substring(separaterPoint + 1);` // Extract the actual item name after the index |
| 3 | CAST | `X33VDataTypeBeanInterface child = (X33VDataTypeBeanInterface)enquete_answer_list_list.get(tmpIndex);` // Retrieve child bean at index |
| 4 | CALL | `child.storeModelData(key, subkey, in_value, isSetAsString);` // Recursively dispatch to child bean's storeModelData |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `アンケート内容` | Field (Japanese: アンケート内容) | Survey Question Content — the actual text or content of a survey question item (Item ID: enquete_content) |
| `アンケートチェック種類` | Field (Japanese: アンケートチェック種類) | Survey Check Type — determines what kind of validation/checking applies to the survey field (Item ID: enquete_chk_sbt) |
| `アンケート番号` | Field (Japanese: アンケート番号) | Survey Number — sequential number or ID assigned to each survey question (Item ID: enquete_content_no) |
| `表示順序（アンケート内容）` | Field (Japanese: 表示順序（アンケート内容）) | Display Order (Survey Content) — determines the visual sequence of survey questions on the form (Item ID: dsp_jun_content) |
| `ラジオボタン選択値` | Field (Japanese: ラジオボタン選択値) | Radio Button Selection Value — captures the user's selection from radio button options (Item ID: radio_value) |
| `アンケート回答リスト` | Field (Japanese: アンケート回答リスト) | Survey Answer List — a dynamic list of survey answer beans, each capable of recursively receiving model data (Item ID: enquete_answer_list) |
| `enquete_answer_list_list` | Field | The in-memory list of child X33VDataTypeBeanInterface beans, representing individual survey answer entries |
| X33VDataTypeBeanInterface | Interface | Fujitsu Futurity X33 framework interface for data-type beans — enables uniform access to bean fields regardless of specific type |
| X33VDataTypeList | Class | Fujitsu Futurity X33 framework generic typed list for collections of data beans |
| value | Subkey | The actual data value being set for a survey field |
| enable | Subkey | A boolean flag controlling whether the survey field is editable/active in the UI |
| state | Subkey | A string value representing the display or validation state of the survey field (e.g., required, read-only, hidden) |
| FUW00156SF | Module | A web view module in the K-Opticom system handling survey/questionnaire data binding and display |
