# Business Logic — KKW00121SF01DBean.storeModelData() [195 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW00121SF.KKW00121SF01DBean` |
| Layer | UI Data Bean (Webview — View tier, built on the Fujitsu Futurity X33 Web Client Framework) |
| Module | `KKW00121SF` (Package: `eo.web.webview.KKW00121SF`) |

## 1. Role

### KKW00121SF01DBean.storeModelData()

This method serves as the **central routing and delegation entry point for populating listed (array) UI fields** in the KKW00121SF screen's data bean. It receives a composite `key` string in the format `"ItemType/INDEX"` (e.g., `"テンプレートID/0"`, `"ステータス/5"`) and dispatches the provided data value into the correct indexed slot within the appropriate `X33VDataTypeList`. The method handles **8 distinct listed item categories** — Template ID, Status, Item Check Error, Item ID, Screen ID, Message ID, Embed String, and Screen Item ID — each corresponding to a dedicated instance field (`template_id_list`, `status_list`, `item_check_err_list`, `item_id_list`, `gamen_id_list`, `message_id_list`, `replace_str_list`, `screen_item_id_list`). It implements a **dispatch/routing pattern**: after validating that `key` and `subkey` are non-null, it locates the slash separator, extracts the substring after the slash as a list index, parses it to an integer, bounds-checks it against the target list's size, casts the element at that index to `X33VDataTypeStringBean`, and delegates to its `storeModelData(subkey, in_value)` method to actually write the data. Its role in the larger system is that of a **View-level model binding utility**, enabling the screen's controller or presentation layer to set values on arbitrary list items via a uniform API — the `key` parameter encodes both the target list name and the row index in a single string, eliminating the need for callers to know about individual list fields. When the key does not match any of the 8 recognized item types, or when the index is invalid (non-numeric or out of bounds), the method silently performs no operation.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START([\"storeModelData params\"])

    START --> NULL_CHECK[\"key or subkey is null?\"]

    NULL_CHECK -->|Yes| RETURN([\"Return / End\"])
    NULL_CHECK -->|No| FIND_SLASH[\"Find index of '/' in key\"]

    FIND_SLASH --> DISPATCH{\"Dispatch by key<br>value?\"}

    DISPATCH -->|テンプレートID| BRANCH1[\"テンプレートID / template_id\"]
    DISPATCH -->|ステータス| BRANCH2[\"ステータス / status\"]
    DISPATCH -->|項目チェックエラー| BRANCH3[\"項目チェックエラー / item_check_err\"]
    DISPATCH -->|項目ID| BRANCH4[\"項目ID / item_id\"]
    DISPATCH -->|画面ID| BRANCH5[\"画面ID / gamen_id\"]
    DISPATCH -->|メッセージID| BRANCH6[\"メッセージID / message_id\"]
    DISPATCH -->|埋め込み文字列| BRANCH7[\"埋め込み文字列 / replace_str\"]
    DISPATCH -->|画面項目ID| BRANCH8[\"画面項目ID / screen_item_id\"]

    BRANCH1 --> PARSE1[\"Parse substring after '/' as Integer\"]
    BRANCH2 --> PARSE2[\"Parse substring after '/' as Integer\"]
    BRANCH3 --> PARSE3[\"Parse substring after '/' as Integer\"]
    BRANCH4 --> PARSE4[\"Parse substring after '/' as Integer\"]
    BRANCH5 --> PARSE5[\"Parse substring after '/' as Integer\"]
    BRANCH6 --> PARSE6[\"Parse substring after '/' as Integer\"]
    BRANCH7 --> PARSE7[\"Parse substring after '/' as Integer\"]
    BRANCH8 --> PARSE8[\"Parse substring after '/' as Integer\"]

    PARSE1 --> INDEX1{\"Parse succeeded?\"}
    PARSE2 --> INDEX2{\"Parse succeeded?\"}
    PARSE3 --> INDEX3{\"Parse succeeded?\"}
    PARSE4 --> INDEX4{\"Parse succeeded?\"}
    PARSE5 --> INDEX5{\"Parse succeeded?\"}
    PARSE6 --> INDEX6{\"Parse succeeded?\"}
    PARSE7 --> INDEX7{\"Parse succeeded?\"}
    PARSE8 --> INDEX8{\"Parse succeeded?\"}

    INDEX1 -->|No| RETURN
    INDEX2 -->|No| RETURN
    INDEX3 -->|No| RETURN
    INDEX4 -->|No| RETURN
    INDEX5 -->|No| RETURN
    INDEX6 -->|No| RETURN
    INDEX7 -->|No| RETURN
    INDEX8 -->|No| RETURN

    INDEX1 -->|Yes| BOUNDS1{\"Index in range<br>0..template_id_list.size()-1?\"}
    INDEX2 -->|Yes| BOUNDS2{\"Index in range<br>0..status_list.size()-1?\"}
    INDEX3 -->|Yes| BOUNDS3{\"Index in range<br>0..item_check_err_list.size()-1?\"}
    INDEX4 -->|Yes| BOUNDS4{\"Index in range<br>0..item_id_list.size()-1?\"}
    INDEX5 -->|Yes| BOUNDS5{\"Index in range<br>0..gamen_id_list.size()-1?\"}
    INDEX6 -->|Yes| BOUNDS6{\"Index in range<br>0..message_id_list.size()-1?\"}
    INDEX7 -->|Yes| BOUNDS7{\"Index in range<br>0..replace_str_list.size()-1?\"}
    INDEX8 -->|Yes| BOUNDS8{\"Index in range<br>0..screen_item_id_list.size()-1?\"}

    BOUNDS1 -->|No| RETURN
    BOUNDS2 -->|No| RETURN
    BOUNDS3 -->|No| RETURN
    BOUNDS4 -->|No| RETURN
    BOUNDS5 -->|No| RETURN
    BOUNDS6 -->|No| RETURN
    BOUNDS7 -->|No| RETURN
    BOUNDS8 -->|No| RETURN

    BOUNDS1 -->|Yes| CALL1[\"Cast to X33VDataTypeStringBean<br>Call .storeModelData(subkey, in_value)\"]
    BOUNDS2 -->|Yes| CALL2[\"Cast to X33VDataTypeStringBean<br>Call .storeModelData(subkey, in_value)\"]
    BOUNDS3 -->|Yes| CALL3[\"Cast to X33VDataTypeStringBean<br>Call .storeModelData(subkey, in_value)\"]
    BOUNDS4 -->|Yes| CALL4[\"Cast to X33VDataTypeStringBean<br>Call .storeModelData(subkey, in_value)\"]
    BOUNDS5 -->|Yes| CALL5[\"Cast to X33VDataTypeStringBean<br>Call .storeModelData(subkey, in_value)\"]
    BOUNDS6 -->|Yes| CALL6[\"Cast to X33VDataTypeStringBean<br>Call .storeModelData(subkey, in_value)\"]
    BOUNDS7 -->|Yes| CALL7[\"Cast to X33VDataTypeStringBean<br>Call .storeModelData(subkey, in_value)\"]
    BOUNDS8 -->|Yes| CALL8[\"Cast to X33VDataTypeStringBean<br>Call .storeModelData(subkey, in_value)\"]

    CALL1 --> RETURN
    CALL2 --> RETURN
    CALL3 --> RETURN
    CALL4 --> RETURN
    CALL5 --> RETURN
    CALL6 --> RETURN
    CALL7 --> RETURN
    CALL8 --> RETURN
```

**Branch descriptions:** Each of the 8 listed item branches follows an identical sub-structure:
1. **Key extraction:** Extracts the substring after the first `'/'` from the `key` parameter, which is the zero-based index into the target list.
2. **Index parsing:** Attempts to convert the extracted substring to an `Integer` via `Integer.valueOf()`. If the substring is not a valid integer representation, `tmpIndexInt` is set to `null` and processing terminates silently (no exception propagates).
3. **Bounds validation:** If parsing succeeded, checks that the index is within `[0, list.size()-1]`. If out of bounds, processing terminates silently.
4. **Delegate write:** Casts the list element at the index to `X33VDataTypeStringBean`, then calls its `storeModelData(subkey, in_value)` method to store the actual data value.

**Note on `isSetAsString` parameter:** The `isSetAsString` parameter is declared but **not used** in the current implementation. The method always casts list elements to `X33VDataTypeStringBean`, regardless of the actual data type of the list items (which may include `X33VDataTypeLongBean` or `X33VDataTypeBooleanBean` per the comments). The `isSetAsString` flag would need to be passed through to the delegated `storeModelData` call for it to have any effect.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | Composite identifier encoding both the **list type name** and the **row index**, in the format `"ItemType/INDEX"`. The item type is a Japanese-labeled category (e.g., `"テンプレートID/0"` for Template ID row 0, `"ステータス/3"` for Status row 3). Determines which of the 8 internal lists receives the data. If `null`, the method returns immediately without processing. |
| 2 | `subkey` | `String` | The **property name** or sub-field identifier within the target list element. Passed through verbatim to the delegated `storeModelData(subkey, in_value)` call on the target `X33VDataTypeStringBean`. Typically identifies a specific data field on the list element (e.g., `"value"`, `"displayText"`). If `null`, the method returns immediately without processing. |
| 3 | `in_value` | `Object` | The **data payload** to store into the target list element. Can be any `Object` — typically a `String`, `Long`, or `Boolean` depending on the field type. Passed to the delegated bean's `storeModelData` method for persistence. |
| 4 | `isSetAsString` | `boolean` | Flag indicating whether the `in_value` should be treated as a String when setting a Long-typed property. **Not currently used in this method** — the parameter is accepted but not referenced in the implementation body. |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `template_id_list` | `X33VDataTypeList` | List of Template ID items (UI field ID: `template_id`). Each element is an `X33VDataTypeStringBean`. |
| `status_list` | `X33VDataTypeList` | List of Status items (UI field ID: `status`). Each element is an `X33VDataTypeStringBean`. |
| `item_check_err_list` | `X33VDataTypeList` | List of Item Check Error items (UI field ID: `item_check_err`). Each element is an `X33VDataTypeStringBean`. |
| `item_id_list` | `X33VDataTypeList` | List of Item ID items (UI field ID: `item_id`). Each element is an `X33VDataTypeStringBean`. |
| `gamen_id_list` | `X33VDataTypeList` | List of Screen ID items (UI field ID: `gamen_id`). Each element is an `X33VDataTypeStringBean`. |
| `message_id_list` | `X33VDataTypeList` | List of Message ID items (UI field ID: `message_id`). Each element is an `X33VDataTypeStringBean`. |
| `replace_str_list` | `X33VDataTypeList` | List of Embed String items (UI field ID: `replace_str`). Each element is an `X33VDataTypeStringBean`. |
| `screen_item_id_list` | `X33VDataTypeList` | List of Screen Item ID items (UI field ID: `screen_item_id`). Each element is an `X33VDataTypeStringBean`. |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `X33VDataTypeStringBean.storeModelData` | - | - | Delegates to the `storeModelData(subkey, in_value)` method on the target list element (cast as `X33VDataTypeStringBean`). Sets the value property of a String data-type bean. |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls `substring` in `JKKTelnoInfoAddMapperCC` |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls `substring` in `JDKejbStringEdit` |
| - | `KKW00121SF01DBean.storeModelData` | KKW00121SF01DBean | - | Calls `storeModelData` in `KKW00121SF01DBean` (recursive delegation to list element beans) |

**Notes:**
- This method performs **no database or direct entity operations**. It is a pure UI data-binding layer method.
- The `substring` calls referenced in the pre-computed evidence come from Java's `String.substring()` method used to extract the index portion of the composite key (e.g., `"template_id/0"` → `"0"`).
- The delegated `storeModelData` calls on `X33VDataTypeStringBean` are **U (Update)** operations on the bean's internal value property, but they are in-memory data binding, not CRUD against persistent storage.

## 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` [-], `storeModelData` [-], `storeModelData` [-], `storeModelData` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `storeModelData` [-], `storeModelData` [-], `storeModelData` [-], `substring` [-], `substring` [-], `substring` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | KKW00121SF01DBean (self) | `KKW00121SF01DBean.storeModelData` | `storeModelData` [-] |
| 2 | KKW00121SF01DBean (self) | `KKW00121SF01DBean.storeModelData` | `storeModelData` [-] |

**Notes:**
- This method is **self-recursive**: when it delegates to an `X33VDataTypeStringBean`'s `storeModelData` method, the bean being called is a distinct class (not `KKW00121SF01DBean` itself), so this is not infinite recursion.
- The method is called from within the same class (`KKW00121SF01DBean`), likely from other methods in the same data bean that need to populate multiple list items from a unified key/index path format.
- No external screens (`KKSV*`), batches, or service components directly invoke this method. It is a **View-tier data binding method** used internally by the web bean.

## 6. Per-Branch Detail Blocks

**Block 1** — IF (null guard) (L506)

Guard clause: if `key` or `subkey` is null, terminate processing immediately. This prevents null-pointer exceptions downstream and provides an early exit for invalid invocations.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key == null || subkey == null)` // Null guard: return early if either is null [-> early exit] |
| 1.1 | RETURN | `return;` // Silently abort — no data is stored |

**Block 2** — SET (extract slash position) (L510)

Locate the `'/'` separator in the key to split the item type from the list index.

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

**Block 3** — IF-ELSE-IF-ELSE (dispatch: テンプレートID) (L513)

Handle listed item: Template ID (`"テンプレートID"`). The key format is `"テンプレートID/INDEX"`.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key.equals("テンプレートID"))` // Dispatch: Template ID (key = "テンプレートID") |
| 1.1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after '/' to get index string (e.g., "0" from "テンプレートID/0") |
| 1.2 | SET | `tmpIndexInt = null` // Initialize Integer wrapper to null |
| 1.3 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(key)` // Parse index string to Integer [catch: NumberFormatException] |
| 1.3.1 | CATCH | `tmpIndexInt = null` // If parse fails, set to null — index is invalid |
| 1.4 | IF | `if (tmpIndexInt != null)` // Branch: parse succeeded |
| 1.4.1 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unwrap Integer to primitive int |
| 1.4.2 | IF | `if (tmpIndex >= 0 && tmpIndex < template_id_list.size())` // Validate index is within list bounds [-> 0..size()-1] |
| 1.4.2.1 | CAST | `X33VDataTypeStringBean` // Cast list element to String data type bean |
| 1.4.2.2 | CALL | `template_id_list.get(tmpIndex).storeModelData(subkey, in_value)` // Delegate data storage to the template_id list element [-> U: update bean value] |
| 1.4.2.3 | COMMENT | // Cast portion: assign one of X33VDataTypeStringBean, X33VDataTypeLongBean, X33VDataTypeBooleanBean based on item definition type. For X33VDataTypeLongBean, pass subkey, input value, and isSetAsString flag as parameters. |

**Block 4** — IF-ELSE-IF (dispatch: ステータス) (L534)

Handle listed item: Status (`"ステータス"`). The key format is `"ステータス/INDEX"`.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("ステータス"))` // Dispatch: Status (key = "ステータス") |
| 1.1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after '/' to get index string |
| 1.2 | SET | `tmpIndexInt = null` // Initialize Integer wrapper to null |
| 1.3 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(key)` // Parse index string to Integer [catch: NumberFormatException] |
| 1.3.1 | CATCH | `tmpIndexInt = null` // If parse fails, set to null |
| 1.4 | IF | `if (tmpIndexInt != null)` // Branch: parse succeeded |
| 1.4.1 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unwrap Integer to primitive int |
| 1.4.2 | IF | `if (tmpIndex >= 0 && tmpIndex < status_list.size())` // Validate index is within list bounds |
| 1.4.2.1 | CAST | `X33VDataTypeStringBean` // Cast list element to String data type bean |
| 1.4.2.2 | CALL | `status_list.get(tmpIndex).storeModelData(subkey, in_value)` // Delegate data storage to the status list element |

**Block 5** — IF-ELSE-IF (dispatch: 項目チェックエラー) (L555)

Handle listed item: Item Check Error (`"項目チェックエラー"`). The key format is `"項目チェックエラー/INDEX"`.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("項目チェックエラー"))` // Dispatch: Item Check Error (key = "項目チェックエラー") |
| 1.1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after '/' to get index string |
| 1.2 | SET | `tmpIndexInt = null` // Initialize Integer wrapper to null |
| 1.3 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(key)` // Parse index string to Integer |
| 1.3.1 | CATCH | `tmpIndexInt = null` // If parse fails, set to null |
| 1.4 | IF | `if (tmpIndexInt != null)` // Branch: parse succeeded |
| 1.4.1 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unwrap Integer to primitive int |
| 1.4.2 | IF | `if (tmpIndex >= 0 && tmpIndex < item_check_err_list.size())` // Validate index is within list bounds |
| 1.4.2.1 | CAST | `X33VDataTypeStringBean` // Cast list element to String data type bean |
| 1.4.2.2 | CALL | `item_check_err_list.get(tmpIndex).storeModelData(subkey, in_value)` // Delegate data storage to the item_check_err list element |

**Block 6** — IF-ELSE-IF (dispatch: 項目ID) (L576)

Handle listed item: Item ID (`"項目ID"`). The key format is `"項目ID/INDEX"`.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("項目ID"))` // Dispatch: Item ID (key = "項目ID") |
| 1.1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after '/' to get index string |
| 1.2 | SET | `tmpIndexInt = null` // Initialize Integer wrapper to null |
| 1.3 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(key)` // Parse index string to Integer |
| 1.3.1 | CATCH | `tmpIndexInt = null` // If parse fails, set to null |
| 1.4 | IF | `if (tmpIndexInt != null)` // Branch: parse succeeded |
| 1.4.1 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unwrap Integer to primitive int |
| 1.4.2 | IF | `if (tmpIndex >= 0 && tmpIndex < item_id_list.size())` // Validate index is within list bounds |
| 1.4.2.1 | CAST | `X33VDataTypeStringBean` // Cast list element to String data type bean |
| 1.4.2.2 | CALL | `item_id_list.get(tmpIndex).storeModelData(subkey, in_value)` // Delegate data storage to the item_id list element |

**Block 7** — IF-ELSE-IF (dispatch: 画面ID) (L597)

Handle listed item: Screen ID (`"画面ID"`). The key format is `"画面ID/INDEX"`.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("画面ID"))` // Dispatch: Screen ID (key = "画面ID") |
| 1.1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after '/' to get index string |
| 1.2 | SET | `tmpIndexInt = null` // Initialize Integer wrapper to null |
| 1.3 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(key)` // Parse index string to Integer |
| 1.3.1 | CATCH | `tmpIndexInt = null` // If parse fails, set to null |
| 1.4 | IF | `if (tmpIndexInt != null)` // Branch: parse succeeded |
| 1.4.1 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unwrap Integer to primitive int |
| 1.4.2 | IF | `if (tmpIndex >= 0 && tmpIndex < gamen_id_list.size())` // Validate index is within list bounds |
| 1.4.2.1 | CAST | `X33VDataTypeStringBean` // Cast list element to String data type bean |
| 1.4.2.2 | CALL | `gamen_id_list.get(tmpIndex).storeModelData(subkey, in_value)` // Delegate data storage to the gamen_id list element |

**Block 8** — IF-ELSE-IF (dispatch: メッセージID) (L618)

Handle listed item: Message ID (`"メッセージID"`). The key format is `"メッセージID/INDEX"`.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("メッセージID"))` // Dispatch: Message ID (key = "メッセージID") |
| 1.1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after '/' to get index string |
| 1.2 | SET | `tmpIndexInt = null` // Initialize Integer wrapper to null |
| 1.3 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(key)` // Parse index string to Integer |
| 1.3.1 | CATCH | `tmpIndexInt = null` // If parse fails, set to null |
| 1.4 | IF | `if (tmpIndexInt != null)` // Branch: parse succeeded |
| 1.4.1 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unwrap Integer to primitive int |
| 1.4.2 | IF | `if (tmpIndex >= 0 && tmpIndex < message_id_list.size())` // Validate index is within list bounds |
| 1.4.2.1 | CAST | `X33VDataTypeStringBean` // Cast list element to String data type bean |
| 1.4.2.2 | CALL | `message_id_list.get(tmpIndex).storeModelData(subkey, in_value)` // Delegate data storage to the message_id list element |

**Block 9** — IF-ELSE-IF (dispatch: 埋め込み文字列) (L639)

Handle listed item: Embed String (`"埋め込み文字列"`). The key format is `"埋め込み文字列/INDEX"`.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("埋め込み文字列"))` // Dispatch: Embed String (key = "埋め込み文字列") |
| 1.1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after '/' to get index string |
| 1.2 | SET | `tmpIndexInt = null` // Initialize Integer wrapper to null |
| 1.3 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(key)` // Parse index string to Integer |
| 1.3.1 | CATCH | `tmpIndexInt = null` // If parse fails, set to null |
| 1.4 | IF | `if (tmpIndexInt != null)` // Branch: parse succeeded |
| 1.4.1 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unwrap Integer to primitive int |
| 1.4.2 | IF | `if (tmpIndex >= 0 && tmpIndex < replace_str_list.size())` // Validate index is within list bounds |
| 1.4.2.1 | CAST | `X33VDataTypeStringBean` // Cast list element to String data type bean |
| 1.4.2.2 | CALL | `replace_str_list.get(tmpIndex).storeModelData(subkey, in_value)` // Delegate data storage to the replace_str list element |

**Block 10** — IF-ELSE-IF (dispatch: 画面項目ID) (L660)

Handle listed item: Screen Item ID (`"画面項目ID"`). The key format is `"画面項目ID/INDEX"`.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `else if (key.equals("画面項目ID"))` // Dispatch: Screen Item ID (key = "画面項目ID") |
| 1.1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after '/' to get index string |
| 1.2 | SET | `tmpIndexInt = null` // Initialize Integer wrapper to null |
| 1.3 | TRY-CATCH | `tmpIndexInt = Integer.valueOf(key)` // Parse index string to Integer |
| 1.3.1 | CATCH | `tmpIndexInt = null` // If parse fails, set to null |
| 1.4 | IF | `if (tmpIndexInt != null)` // Branch: parse succeeded |
| 1.4.1 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unwrap Integer to primitive int |
| 1.4.2 | IF | `if (tmpIndex >= 0 && tmpIndex < screen_item_id_list.size())` // Validate index is within list bounds |
| 1.4.2.1 | CAST | `X33VDataTypeStringBean` // Cast list element to String data type bean |
| 1.4.2.2 | CALL | `screen_item_id_list.get(tmpIndex).storeModelData(subkey, in_value)` // Delegate data storage to the screen_item_id list element |

**Block 11** — ELSE (unrecognized key type) (L681)

If `key` does not match any of the 8 recognized Japanese category names, the method falls through to the end with no action taken. This is a **silent no-op** — no exception is thrown, no error is logged, and no data is stored.

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| テンプレートID | Field | Template ID — the identifier for a template item in a listed/repeating UI field |
| template_id | Field | Internal field name (snake_case) for the Template ID list property |
| ステータス | Field | Status — the status value for a listed/repeating UI field item |
| status | Field | Internal field name for the Status list property |
| 項目チェックエラー | Field | Item Check Error — validation error messages associated with each listed item |
| item_check_err | Field | Internal field name for the Item Check Error list property |
| 項目ID | Field | Item ID — the identifier for a data item in a listed/repeating UI field |
| item_id | Field | Internal field name for the Item ID list property |
| 画面ID | Field | Screen ID — the identifier for a screen/page in a listed context |
| gamen_id | Field | Internal field name for the Screen ID list property (Japanese "gamen" = screen/page) |
| メッセージID | Field | Message ID — the identifier for a message/description in a listed context |
| message_id | Field | Internal field name for the Message ID list property |
| 埋め込み文字列 | Field | Embed String — a string value embedded within a listed item (e.g., placeholder text) |
| replace_str | Field | Internal field name for the Embed String list property |
| 画面項目ID | Field | Screen Item ID — the identifier for a UI field on a screen in a listed context |
| screen_item_id | Field | Internal field name for the Screen Item ID list property |
| subkey | Field | Sub-key / property name — identifies which specific property/field within a list element to set |
| in_value | Field | Input value — the data payload to store into the target list element |
| isSetAsString | Field | Flag indicating whether to set a Long-typed property as a String value |
| X33V | Acronym | Futurity X33 View — Fujitsu's web client framework for building JSF-based views |
| X33VDataTypeStringBean | Type | Data-type bean representing a String value in the X33 framework. Used as the common cast target for all list elements in this method. |
| X33VDataTypeLongBean | Type | Data-type bean representing a Long (integer) value in the X33 framework. Not currently cast-to in this method, but referenced in comments as an alternative for Long-typed list items. |
| X33VDataTypeBooleanBean | Type | Data-type bean representing a Boolean value in the X33 framework. Not currently cast-to in this method, but referenced in comments as an alternative for Boolean-typed list items. |
| X33VDataTypeList | Type | A list container in the X33 framework that holds data-type beans (String, Long, Boolean) and provides `get(index)` access. |
| KKW00121SF | Module | A screen module identifier. The `KKW` prefix indicates a web screen component in the K-Opticom application suite. |
| DBean | Type suffix | Data Bean — a bean that holds and manages the model state for a web screen, implementing data binding interfaces (`X33VDataTypeBeanInterface`, `X33VListedBeanInterface`). |
| X33VViewBaseBean | Type | Base class for X33 view beans providing common view-level functionality. |
| X33VListedBeanInterface | Type | Interface for beans that manage listed (repeating/array) data fields. |
| X33VDataTypeBeanInterface | Type | Interface for beans that represent a single data-typed value. |
