# Business Logic — KKW01021SF01DBean.storeModelData() [94 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW01021SF.KKW01021SF01DBean` |
| Layer | Utility / Data Bean (Package: `eo.web.webview.KKW01021SF`) |
| Module | `KKW01021SF` (Package: `eo.web.webview.KKW01021SF`) |

## 1. Role

### KKW01021SF01DBean.storeModelData()

This method serves as a **universal data binder** for the `KKW01021SF` screen's model. It receives key-value pairs from the view layer and dispatches them to the correct internal property based on the `key` parameter, which encodes the business field name. The method handles **seven distinct business fields**: system ID, service contract number, change classification, change reason code (array), change reason memo, order number, and order line item number. For scalar string fields, it distinguishes between value assignment (via the `"value"` subkey) and state flag assignment (via the `"state"` subkey), enabling the screen to track both data and modification state simultaneously. For array-backed fields such as change reason code (`異動理由コード`), the method performs **recursive delegation** — extracting a numeric index from the key string, validating bounds against `ido_rsn_cd_list`, and forwarding the call to the list element's own `storeModelData()`. The `isSetAsString` parameter is accepted but currently unused in this implementation, reserved for future Long-type property handling. This method implements the **routing/dispatch** design pattern and acts as a shared utility consumed by many screen handlers that set model properties dynamically.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["storeModelData key, subkey, in_value, isSetAsString"])

    START --> COND_NULL["key == null || subkey == null"]
    COND_NULL -->|true| EARLY_RETURN(["Return - early exit"])
    COND_NULL -->|false| CALC_SEP["separaterPoint = key.indexOf('/')"]

    CALC_SEP --> COND_SYSID["key.equals('システムID')"]
    COND_SYSID -->|true| SYSID_BRANCH["sysid handling"]
    COND_SYSID -->|false| COND_SVC["key.equals('サービス契約番号')"]
    COND_SVC -->|true| SVC_BRANCH["svc_kei_no handling"]
    COND_SVC -->|false| COND_IDO_DIV["key.equals('異動区分')"]
    COND_IDO_DIV -->|true| IDO_DIV_BRANCH["ido_div handling"]
    COND_IDO_DIV -->|false| COND_IDO_RSN_CD["key.equals('異動理由コード')"]
    COND_IDO_RSN_CD -->|true| IDO_RSN_CD_BRANCH["ido_rsn_cd array handling"]
    COND_IDO_RSN_CD -->|false| COND_IDO_RSN_MEMO["key.equals('異動理由メモ')"]
    COND_IDO_RSN_MEMO -->|true| IDO_RSN_MEMO_BRANCH["ido_rsn_memo handling"]
    COND_IDO_RSN_MEMO -->|false| COND_MSKM_NO["key.equals('申込番号')"]
    COND_MSKM_NO -->|true| MSKM_NO_BRANCH["mskm_no handling"]
    COND_MSKM_NO -->|false| COND_MSKM_DTL_NO["key.equals('申込明細番号')"]
    COND_MSKM_DTL_NO -->|true| MSKM_DTL_NO_BRANCH["mskm_dtl_no handling"]
    COND_MSKM_DTL_NO -->|false| END_UNKNOWN(["No matching branch - method ends"])

    SYSID_BRANCH --> SYSID_SUBKEY["subkey.equalsIgnoreCase('value')"]
    SYSID_SUBKEY -->|true| SYSID_SET_VALUE["setSysid_value(in_value cast to String)"]
    SYSID_SUBKEY -->|false| SYSID_SET_STATE["setSysid_state(in_value cast to String)"]

    SVC_BRANCH --> SVC_SUBKEY["subkey.equalsIgnoreCase('value')"]
    SVC_SUBKEY -->|true| SVC_SET_VALUE["setSvc_kei_no_value(in_value cast to String)"]
    SVC_SUBKEY -->|false| SVC_SET_STATE["setSvc_kei_no_state(in_value cast to String)"]

    IDO_DIV_BRANCH --> IDO_DIV_SUBKEY["subkey.equalsIgnoreCase('value')"]
    IDO_DIV_SUBKEY -->|true| IDO_DIV_SET_VALUE["setIdo_div_value(in_value cast to String)"]
    IDO_DIV_SUBKEY -->|false| IDO_DIV_SET_STATE["setIdo_div_state(in_value cast to String)"]

    IDO_RSN_CD_BRANCH --> KEY_SUBSTR["key = key.substring(separaterPoint + 1)"]
    KEY_SUBSTR --> TRY_PARSE["tmpIndexInt = Integer.valueOf(key)"]
    TRY_PARSE --> PARSE_OK["NumberFormatException caught?"]
    PARSE_OK -->|false| IDX_VALID["tmpIndexInt != null"]
    PARSE_OK -->|true| IDX_NULL["tmpIndexInt = null"]
    IDX_VALID --> IDX_BOUNDS["tmpIndex >= 0 && tmpIndex < ido_rsn_cd_list.size()"]
    IDX_NULL --> NO_INDEX_OP["No operation - index out of range"]
    IDX_BOUNDS -->|true| DELEGATE_CALL["ido_rsn_cd_list.get(tmpIndex) cast to X33VDataTypeStringBean, call storeModelData(subkey, in_value)"]
    IDX_BOUNDS -->|false| NO_INDEX_OP
    DELEGATE_CALL --> END_RECURSIVE(["Return - recursive store complete"])
    NO_INDEX_OP --> END_END(["Method ends"])

    IDO_RSN_MEMO_BRANCH --> MEMO_SUBKEY["subkey.equalsIgnoreCase('value')"]
    MEMO_SUBKEY -->|true| MEMO_SET_VALUE["setIdo_rsn_memo_value(in_value cast to String)"]
    MEMO_SUBKEY -->|false| MEMO_SET_STATE["setIdo_rsn_memo_state(in_value cast to String)"]

    MSKM_NO_BRANCH --> MSKM_NO_SUBKEY["subkey.equalsIgnoreCase('value')"]
    MSKM_NO_SUBKEY -->|true| MSKM_NO_SET_VALUE["setMskm_no_value(in_value cast to String)"]
    MSKM_NO_SUBKEY -->|false| MSKM_NO_SET_STATE["setMskm_no_state(in_value cast to String)"]

    MSKM_DTL_NO_BRANCH --> MSKM_DTL_SUBKEY["subkey.equalsIgnoreCase('value')"]
    MSKM_DTL_SUBKEY -->|true| MSKM_DTL_SET_VALUE["setMskm_dtl_no_value(in_value cast to String)"]
    MSKM_DTL_SUBKEY -->|false| MSKM_DTL_SET_STATE["setMskm_dtl_no_state(in_value cast to String)"]
```

**CRITICAL — Constant Resolution:**
This method branches on **literal Japanese strings** (not constant references). The following constants are resolved to their literal values as they appear in the source code:

| Literal Key | Business Meaning |
|-------------|-----------------|
| `"システムID"` | System ID — the internal system identifier for the service contract |
| `"サービス契約番号"` | Service Contract Number — the contract identifier for the service |
| `"異動区分"` | Change Classification — the type/category of service change |
| `"異動理由コード"` | Change Reason Code — array of reason codes for the change, with index routing |
| `"異動理由メモ"` | Change Reason Memo — free-text memo explaining the change reason |
| `"申込番号"` | Order Number — the top-level order identifier |
| `"申込明細番号"` | Order Line Item Number — the specific line item identifier within an order |

The subkey branches on case-insensitive comparisons against `"value"` (to set the data field) and `"state"` (to set the modification state flag).

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The business field name that identifies which model property to populate. Can be a literal Japanese field name (e.g., `"システムID"` for system ID, `"サービス契約番号"` for service contract number) or a compound string for array items (e.g., `"異動理由コード/0"` where the part after `/` is a zero-based index). Determines which of the seven routing branches the method follows. |
| 2 | `subkey` | `String` | A qualifier within the field indicating the property type — either `"value"` (set the actual data value) or `"state"` (set the modification state flag, indicating whether the field has been changed). Compared case-insensitively. |
| 3 | `in_value` | `Object` | The data to be stored. For scalar fields, this is a `String` cast at assignment time. For array-backed fields (`異動理由コード`), this is forwarded recursively to the list element's `storeModelData()`. |
| 4 | `isSetAsString` | `boolean` | Flag that would control whether a Long-type property's value is set as a String. Currently accepted as a parameter but **not used** in this implementation. Reserved for future extensibility when the data type routing is added (Javadoc references `X33VDataTypeLongBean` for Long-type items). |

**Instance fields read:**
| Field | Type | Usage |
|-------|------|-------|
| `ido_rsn_cd_list` | `X33VDataTypeList` | The list of change reason code items. Used to validate the index bounds and delegate the recursive call for the `"異動理由コード"` branch. |

## 4. CRUD Operations / Called Services

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

All called methods are local setter calls and one recursive delegation. No external SC (Service Component) or CBS (Business Service) methods are invoked, and no direct database/entity operations occur.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `setSysid_value` | - | In-memory model | Sets the system ID value property from input |
| U | `setSysid_state` | - | In-memory model | Sets the system ID modification state flag |
| U | `setSvc_kei_no_value` | - | In-memory model | Sets the service contract number value |
| U | `setSvc_kei_no_state` | - | In-memory model | Sets the service contract number modification state flag |
| U | `setIdo_div_value` | - | In-memory model | Sets the change classification value |
| U | `setIdo_div_state` | - | In-memory model | Sets the change classification modification state flag |
| U | `setIdo_rsn_memo_value` | - | In-memory model | Sets the change reason memo value |
| U | `setIdo_rsn_memo_state` | - | In-memory model | Sets the change reason memo modification state flag |
| U | `setMskm_no_value` | - | In-memory model | Sets the order number value |
| U | `setMskm_no_state` | - | In-memory model | Sets the order number modification state flag |
| U | `setMskm_dtl_no_value` | - | In-memory model | Sets the order line item number value |
| U | `setMskm_dtl_no_state` | - | In-memory model | Sets the order line item number modification state flag |
| CALL | `storeModelData` (recursive) | - | - | Delegates to `X33VDataTypeStringBean` stored in `ido_rsn_cd_list` at the extracted index |

**Classification rationale:** All scalar setter calls are classified as **U (Update)** because they modify in-memory model state. The recursive `storeModelData` call on the list element is a **CALL** (delegation to another model method), not a CRUD operation itself.

## 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: `setMskm_dtl_no_state` [-], `setMskm_dtl_no_value` [-], `setMskm_no_state` [-], `setMskm_no_value` [-], `setIdo_rsn_memo_state` [-], `setIdo_rsn_memo_value` [-], `storeModelData` [-], `storeModelData` [-], `storeModelData` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `setIdo_div_state` [-], `setIdo_div_value` [-], `setSvc_kei_no_state` [-], `setSvc_kei_no_value` [-], `setSysid_state` [-], `setSysid_value` [-]

This method is a **leaf data binder** — it is called by other methods within the same `KKW01021SF01DBean` class to populate the model, and it recursively delegates to `X33VDataTypeStringBean.storeModelData()` for array items. No external screens, batches, or service components are involved in its call chain.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `KKW01021SF01DBean.storeModelData()` (String, String, Object) | Internal caller -> `KKW01021SF01DBean.storeModelData(key, subkey, in_value, false)` | `setSysid_value [U]`, `setSysid_state [U]`, `setSvc_kei_no_value [U]`, `setSvc_kei_no_state [U]`, `setIdo_div_value [U]`, `setIdo_div_state [U]`, `setIdo_rsn_memo_value [U]`, `setIdo_rsn_memo_state [U]`, `setMskm_no_value [U]`, `setMskm_no_state [U]`, `setMskm_dtl_no_value [U]`, `setMskm_dtl_no_state [U]` |
| 2 | `KKW01021SF01DBean.storeModelData()` (Object, Object) — overloaded | Internal caller -> `KKW01021SF01DBean.storeModelData()` (overloaded) -> calls the 4-param version | Same as above, plus `storeModelData` [CALL] recursive delegation to `ido_rsn_cd_list` elements |

## 6. Per-Branch Detail Blocks

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

> Validates that both `key` and `subkey` are non-null. If either is null, the method returns immediately without performing any work. The comment translates to: "If key or subkey is null, stop processing."

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (key == null || subkey == null)` |
| 2 | RETURN | `return;` // key, subkey is null, stop processing (key, subkeyがnullの場合、処理を中止) |

**Block 2** — SET (extract separator position) (L393)

> Computes the position of the first `/` character in `key`, used later for compound key parsing (e.g., `"異動理由コード/0"`).

| # | Type | Code |
|---|------|------|
| 1 | SET | `separaterPoint = key.indexOf("/")` |

**Block 3** — ELSE-IF (scalar field: システムID / System ID) (L396)

> Routes to the system ID field handler. The key literal is `"システムID"` (Item ID: sysid).

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (key.equals("システムID"))` [システムID = "システムID" (System ID)] |
| 2 | IF | (nested subkey check) |

**Block 3.1** — ELSE-IF (sysid: value) (L397)

> Sets the system ID value property from the input. The comment translates to: "Data type is String field 'System ID' (Item ID: sysid)."

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (subkey.equalsIgnoreCase("value"))` |
| 2 | SET | `setSysid_value((String)in_value)` — casts `in_value` to String and assigns to sysid value property |

**Block 3.2** — ELSE-IF (sysid: state) (L400)

> Sets the system ID state flag from the input. The comment translates to: "When subkey is 'state', return the state."

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (subkey.equalsIgnoreCase("state"))` |
| 2 | SET | `setSysid_state((String)in_value)` — casts `in_value` to String and assigns to sysid state flag |

**Block 4** — ELSE-IF (scalar field: サービス契約番号 / Service Contract Number) (L405)

> Routes to the service contract number field handler. The key literal is `"サービス契約番号"` (Item ID: svc_kei_no).

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("サービス契約番号"))` [サービス契約番号 = "サービス契約番号" (Service Contract Number)] |
| 2 | IF | (nested subkey check) |

**Block 4.1** — ELSE-IF (svc_kei_no: value) (L406)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (subkey.equalsIgnoreCase("value"))` |
| 2 | SET | `setSvc_kei_no_value((String)in_value)` |

**Block 4.2** — ELSE-IF (svc_kei_no: state) (L409)

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (subkey.equalsIgnoreCase("state"))` |
| 2 | SET | `setSvc_kei_no_state((String)in_value)` |

**Block 5** — ELSE-IF (scalar field: 異動区分 / Change Classification) (L414)

> Routes to the change classification field handler. The key literal is `"異動区分"` (Item ID: ido_div). The comment translates to: "Data type is String field 'Change Classification' (Item ID: ido_div)."

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("異動区分"))` [異動区分 = "異動区分" (Change Classification)] |
| 2 | IF | (nested subkey check) |

**Block 5.1** — ELSE-IF (ido_div: value) (L415)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (subkey.equalsIgnoreCase("value"))` |
| 2 | SET | `setIdo_div_value((String)in_value)` |

**Block 5.2** — ELSE-IF (ido_div: state) (L418)

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (subkey.equalsIgnoreCase("state"))` |
| 2 | SET | `setIdo_div_state((String)in_value)` |

**Block 6** — ELSE-IF (array field: 異動理由コード / Change Reason Code — special routing) (L423)

> Routes to the change reason code field handler. This is the most complex branch because the field is backed by a list (`ido_rsn_cd_list`). The key is expected in the form `"異動理由コード/<index>"`. The comment translates to: "Array item 'Change Reason Code' (String type, Item ID: ido_rsn_cd)."

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("異動理由コード"))` [異動理由コード = "異動理由コード" (Change Reason Code)] |
| 2 | SET | `key = key.substring(separaterPoint + 1)` — extracts the part after the first `/` (e.g., from `"異動理由コード/0"` gets `"0"`) // keyの次の要素を取得 (Get the next element of key) |
| 3 | SET | `tmpIndexInt = null` |
| 4 | TRY | (parse index as integer) |

**Block 6.1** — TRY (parse index) (L429)

> Attempts to convert the extracted substring to an integer. If the substring is not a valid number, `tmpIndexInt` remains `null`. The catch comment translates to: "If the index value is not a numeric string, return null here."

| # | Type | Code |
|---|------|------|
| 1 | SET | `tmpIndexInt = Integer.valueOf(key)` |
| 2 | CATCH | `catch (NumberFormatException e)` |
| 3 | SET | `tmpIndexInt = null` // index value is not numeric string, return null here (インデックス値が数値文字列でない場合は、ここでnullを返す) |

**Block 6.2** — IF (index is valid, i.e., not null) (L435)

> If parsing succeeded, converts to `int` and validates the index is within bounds. The comment translates to: "If the index value is a numeric string."

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (tmpIndexInt != null)` // index value is numeric string (インデックス値が数値文字列の場合) |
| 2 | SET | `tmpIndex = tmpIndexInt.intValue()` |
| 3 | IF | (nested bounds check) |

**Block 6.2.1** — IF (index within list bounds) (L436)

> Validates the index is >= 0 and less than the list size. If valid, delegates to the list element's `storeModelData()`. The comment translates to: "If the index value is less than or equal to the list count minus 1." and "The cast portion specifies one of X33VDataTypeStringBean, X33VDataTypeLongBean, or X33VDataTypeBooleanBean depending on the item definition type."

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (tmpIndex >= 0 && tmpIndex < ido_rsn_cd_list.size())` // index value is less than list count minus 1 (インデックス値がリスト個数-1以下の場合) |
| 2 | EXEC | `((X33VDataTypeStringBean)ido_rsn_cd_list.get(tmpIndex)).storeModelData(subkey, in_value)` — casts list element to `X33VDataTypeStringBean` and calls its `storeModelData` with subkey and in_value // キャスト部分は、項目定義型にあわせX33VDataTypeStringBean, X33VDataTypeLongBean, X33VDataTypeBooleanBeanのうち1つを指定 (The cast portion specifies one of X33VDataTypeStringBean, X33VDataTypeLongBean, X33VDataTypeBooleanBean depending on the item definition type) |

**Block 7** — ELSE-IF (scalar field: 異動理由メモ / Change Reason Memo) (L448)

> Routes to the change reason memo field handler. The key literal is `"異動理由メモ"` (Item ID: ido_rsn_memo). The comment translates to: "Data type is String field 'Change Reason Memo' (Item ID: ido_rsn_memo)."

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("異動理由メモ"))` [異動理由メモ = "異動理由メモ" (Change Reason Memo)] |
| 2 | IF | (nested subkey check) |

**Block 7.1** — ELSE-IF (ido_rsn_memo: value) (L449)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (subkey.equalsIgnoreCase("value"))` |
| 2 | SET | `setIdo_rsn_memo_value((String)in_value)` |

**Block 7.2** — ELSE-IF (ido_rsn_memo: state) (L452)

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (subkey.equalsIgnoreCase("state"))` |
| 2 | SET | `setIdo_rsn_memo_state((String)in_value)` |

**Block 8** — ELSE-IF (scalar field: 申込番号 / Order Number) (L457)

> Routes to the order number field handler. The key literal is `"申込番号"` (Item ID: mskm_no). The comment translates to: "Data type is String field 'Order Number' (Item ID: mskm_no)."

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("申込番号"))` [申込番号 = "申込番号" (Order Number)] |
| 2 | IF | (nested subkey check) |

**Block 8.1** — ELSE-IF (mskm_no: value) (L458)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (subkey.equalsIgnoreCase("value"))` |
| 2 | SET | `setMskm_no_value((String)in_value)` |

**Block 8.2** — ELSE-IF (mskm_no: state) (L461)

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (subkey.equalsIgnoreCase("state"))` |
| 2 | SET | `setMskm_no_state((String)in_value)` |

**Block 9** — ELSE-IF (scalar field: 申込明細番号 / Order Line Item Number) (L466)

> Routes to the order line item number field handler. The key literal is `"申込明細番号"` (Item ID: mskm_dtl_no). The comment translates to: "Data type is String field 'Order Line Item Number' (Item ID: mskm_dtl_no)."

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (key.equals("申込明細番号"))` [申込明細番号 = "申込明細番号" (Order Line Item Number)] |
| 2 | IF | (nested subkey check) |

**Block 9.1** — ELSE-IF (mskm_dtl_no: value) (L467)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if (subkey.equalsIgnoreCase("value"))` |
| 2 | SET | `setMskm_dtl_no_value((String)in_value)` |

**Block 9.2** — ELSE-IF (mskm_dtl_no: state) (L470)

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if (subkey.equalsIgnoreCase("state"))` |
| 2 | SET | `setMskm_dtl_no_state((String)in_value)` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `sysid` | Field | System ID — the internal system identifier associated with the service contract |
| `svc_kei_no` | Field | Service Contract Number — the contract identifier for the service, used for billing and tracking |
| `svc_kei_ucwk_no` | Field | Service Detail Work Number — internal tracking ID for service contract line items (referenced in model, not directly handled by this method) |
| `ido_div` | Field | Change Classification — the type/category of service modification (e.g., new activation, suspension, termination) |
| `ido_rsn_cd` | Field | Change Reason Code — a coded reason for the service change, stored as an array/list of string beans |
| `ido_rsn_memo` | Field | Change Reason Memo — free-text supplementary explanation for the change reason |
| `mskm_no` | Field | Order Number — the top-level order identifier for a customer request |
| `mskm_dtl_no` | Field | Order Line Item Number — the specific line item identifier within an order, distinguishing multiple items under one order |
| `システムID` | Japanese key literal | System ID — the Japanese key string used to identify the sysid field in model binding |
| `サービス契約番号` | Japanese key literal | Service Contract Number — the Japanese key string used to identify the svc_kei_no field |
| `異動区分` | Japanese key literal | Change Classification — the Japanese key string used to identify the ido_div field |
| `異動理由コード` | Japanese key literal | Change Reason Code — the Japanese key string used to identify the ido_rsn_cd array field |
| `異動理由メモ` | Japanese key literal | Change Reason Memo — the Japanese key string used to identify the ido_rsn_memo field |
| `申込番号` | Japanese key literal | Order Number — the Japanese key string used to identify the mskm_no field |
| `申込明細番号` | Japanese key literal | Order Line Item Number — the Japanese key string used to identify the mskm_dtl_no field |
| `X33VDataTypeStringBean` | Class | A data type bean representing a string field item, stored in `ido_rsn_cd_list`. The `storeModelData()` method is also implemented here for recursive value binding on array elements. |
| `X33VDataTypeLongBean` | Class | A data type bean representing a Long-type field item. Referenced in comments as an alternative cast target for different item definitions. |
| `X33VDataTypeBooleanBean` | Class | A data type bean representing a Boolean-type field item. Referenced in comments as an alternative cast target. |
| `X33VDataTypeList` | Class | A typed list container holding `X33VDataTypeStringBean` (or other type bean) elements, used for array-backed model fields like `ido_rsn_cd_list`. |
| `state` | Subkey | A subkey value indicating a modification state flag, distinguishing whether a field has been modified from its original value. Used alongside `value` for optimistic concurrency or change-tracking. |
| `value` | Subkey | A subkey value indicating the actual data value to be stored in a field property. |
| `isSetAsString` | Parameter | A boolean flag that would control whether a Long-type property is set from a String value. Currently unused in this method but documented for future extensibility. |
| `separaterPoint` | Variable | Local variable storing the index of the first "/" character in `key`, used for compound key parsing (e.g., extracting the array index from `"異動理由コード/0"`). |
