# Business Logic — KKW00129SF01DBean.loadModelData() [133 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA17701SF.KKW00129SF01DBean` |
| Layer | View Data Bean (Web Presentation — Futurity X33 Framework) |
| Module | `KKA17701SF` (Package: `eo.web.webview.KKA17701SF`) |

## 1. Role

### KKW00129SF01DBean.loadModelData()

This method is a unified data retrieval gateway for the `KKW00129SF01DBean` view data bean. It serves as a programmatic key-value dispatcher that allows calling code to look up property values, enablement flags, and state values by using a simple string key and subkey scheme — instead of invoking individual getter methods directly. The method is part of the Fujitsu Futurity X33 web framework's `X33VDataTypeBeanInterface` contract, which requires beans to expose a `loadModelData(String key, String subkey)` entry point for runtime data binding.

The method handles six distinct data categories (branching on the `key` parameter): (1) Code Value (`コード値`, item ID `cd_div_cd`) — a simple String field with value/enable/state sub-properties; (2) Code Type Name (`コードタイプ名称`, item ID `cd_div_nm`) — a second independent String field with the same triad of sub-properties; (3) Select Index (`選択インデックス`, item ID `select_index`) — a String field tracking the currently selected index in a drop-down or selection list, also with value/enable/state; (4) Initial Setting Code List (`初期設定コードリスト`, item ID `default_cd_list`) — a list of `X33VDataTypeStringBean` items; (5) Code List (`コードリスト`, item ID `cd_div_cd_list`) — another list of string-type code data; and (6) Code Name List (`コード名リスト`, item ID `cd_div_nm_list`) — a list of code name strings.

The design pattern used is a **routing/dispatch pattern**: the method examines the `key` string to determine which data category to serve, then branches further based on the `subkey` to return the specific property (value, enable flag, or state) or list-level information (size or indexed element). For list-type keys, the method supports an extended key format using a `/` separator (e.g., `初期設定コードリスト/2` to access element at index 2), and treats the special subkey `*` as a request for the list size rather than an indexed access.

This method plays a central role in the screen data bean contract, enabling the X33 framework and any calling screen logic to retrieve bean state through a single, uniform interface. It is designed to be polymorphically delegable — each element in the list-type fields is itself an `X33VDataTypeStringBean` which also implements `loadModelData`, so the method delegates into child beans for final resolution.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData key, subkey"])
    NULL_CHECK{key is null?}
    FIND_SEP["separaterPoint = key.indexOf /"]
    CODE_VALUE{key = コード値?}
    CODE_TYPE_NAME{key = コードタイプ名称?}
    SELECT_INDEX{key = 選択インデックス?}
    INIT_LIST{key = 初期設定コードリスト?}
    CODE_LIST{key = コードリスト?}
    CODE_NAME_LIST{key = コード名リスト?}
    RETURN_NULL["return null"]

    SUB_VALUE_CD{subkey = value?}
    SUB_ENABLE_CD{subkey = enable?}
    SUB_STATE_CD{subkey = state?}
    RETURN_CD_VALUE["return getCd_div_cd_value"]
    RETURN_CD_ENABLED["return getCd_div_cd_enabled"]
    RETURN_CD_STATE["return getCd_div_cd_state"]

    SUB_VALUE_NM{subkey = value?}
    SUB_ENABLE_NM{subkey = enable?}
    SUB_STATE_NM{subkey = state?}
    RETURN_NM_VALUE["return getCd_div_nm_value"]
    RETURN_NM_ENABLED["return getCd_div_nm_enabled"]
    RETURN_NM_STATE["return getCd_div_nm_state"]

    SUB_VALUE_SI{subkey = value?}
    SUB_ENABLE_SI{subkey = enable?}
    SUB_STATE_SI{subkey = state?}
    RETURN_SI_VALUE["return getSelect_index_value"]
    RETURN_SI_ENABLED["return getSelect_index_enabled"]
    RETURN_SI_STATE["return getSelect_index_state"]

    EXTRACT_IDX["key = key.substring separaterPoint + 1"]
    IS_STAR{key = *?}
    RETURN_SIZE["return default_cd_list_list.size"]
    PARSE_IDX["tmpIndexInt = Integer.valueOf key"]
    PARSE_ERROR{NumberFormatException?}
    BOUNDS_CHECK{tmpIndex in range?}
    DELEGATE_INIT["default_cd_list_list tmpIndex loadModelData subkey"]

    EXTRACT_IDX2["key = key.substring separaterPoint + 1"]
    IS_STAR2{key = *?}
    RETURN_SIZE2["return cd_div_cd_list_list.size"]
    PARSE_IDX2["tmpIndexInt = Integer.valueOf key"]
    PARSE_ERROR2{NumberFormatException?}
    BOUNDS_CHECK2{tmpIndex in range?}
    DELEGATE_CODE["cd_div_cd_list_list tmpIndex loadModelData subkey"]

    EXTRACT_IDX3["key = key.substring separaterPoint + 1"]
    IS_STAR3{key = *?}
    RETURN_SIZE3["return cd_div_nm_list_list.size"]
    PARSE_IDX3["tmpIndexInt = Integer.valueOf key"]
    PARSE_ERROR3{NumberFormatException?}
    BOUNDS_CHECK3{tmpIndex in range?}
    DELEGATE_NAME["cd_div_nm_list_list tmpIndex loadModelData subkey"]

    START --> NULL_CHECK
    NULL_CHECK -->|true| RETURN_NULL
    NULL_CHECK -->|false| FIND_SEP

    FIND_SEP --> CODE_VALUE
    CODE_VALUE -->|true| SUB_VALUE_CD
    SUB_VALUE_CD -->|true| RETURN_CD_VALUE
    SUB_VALUE_CD -->|false| SUB_ENABLE_CD
    SUB_ENABLE_CD -->|true| RETURN_CD_ENABLED
    SUB_ENABLE_CD -->|false| SUB_STATE_CD
    SUB_STATE_CD -->|true| RETURN_CD_STATE
    SUB_STATE_CD -->|false| RETURN_NULL

    CODE_VALUE -->|false| CODE_TYPE_NAME
    CODE_TYPE_NAME -->|true| SUB_VALUE_NM
    SUB_VALUE_NM -->|true| RETURN_NM_VALUE
    SUB_VALUE_NM -->|false| SUB_ENABLE_NM
    SUB_ENABLE_NM -->|true| RETURN_NM_ENABLED
    SUB_ENABLE_NM -->|false| SUB_STATE_NM
    SUB_STATE_NM -->|true| RETURN_NM_STATE
    SUB_STATE_NM -->|false| RETURN_NULL

    CODE_TYPE_NAME -->|false| SELECT_INDEX
    SELECT_INDEX -->|true| SUB_VALUE_SI
    SUB_VALUE_SI -->|true| RETURN_SI_VALUE
    SUB_VALUE_SI -->|false| SUB_ENABLE_SI
    SUB_ENABLE_SI -->|true| RETURN_SI_ENABLED
    SUB_ENABLE_SI -->|false| SUB_STATE_SI
    SUB_STATE_SI -->|true| RETURN_SI_STATE
    SUB_STATE_SI -->|false| RETURN_NULL

    SELECT_INDEX -->|false| INIT_LIST
    INIT_LIST -->|true| EXTRACT_IDX
    EXTRACT_IDX --> IS_STAR
    IS_STAR -->|true| RETURN_SIZE
    IS_STAR -->|false| PARSE_IDX
    PARSE_IDX --> PARSE_ERROR
    PARSE_ERROR -->|true| RETURN_NULL
    PARSE_ERROR -->|false| BOUNDS_CHECK
    BOUNDS_CHECK -->|false| RETURN_NULL
    BOUNDS_CHECK -->|true| DELEGATE_INIT

    INIT_LIST -->|false| CODE_LIST
    CODE_LIST -->|true| EXTRACT_IDX2
    EXTRACT_IDX2 --> IS_STAR2
    IS_STAR2 -->|true| RETURN_SIZE2
    IS_STAR2 -->|false| PARSE_IDX2
    PARSE_IDX2 --> PARSE_ERROR2
    PARSE_ERROR2 -->|true| RETURN_NULL
    PARSE_ERROR2 -->|false| BOUNDS_CHECK2
    BOUNDS_CHECK2 -->|false| RETURN_NULL
    BOUNDS_CHECK2 -->|true| DELEGATE_CODE

    CODE_LIST -->|false| CODE_NAME_LIST
    CODE_NAME_LIST -->|true| EXTRACT_IDX3
    EXTRACT_IDX3 --> IS_STAR3
    IS_STAR3 -->|true| RETURN_SIZE3
    IS_STAR3 -->|false| PARSE_IDX3
    PARSE_IDX3 --> PARSE_ERROR3
    PARSE_ERROR3 -->|true| RETURN_NULL
    PARSE_ERROR3 -->|false| BOUNDS_CHECK3
    BOUNDS_CHECK3 -->|false| RETURN_NULL
    BOUNDS_CHECK3 -->|true| DELEGATE_NAME

    CODE_NAME_LIST -->|false| RETURN_NULL
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The item identifier that determines which data category to retrieve. It selects among six business data categories: a code value (`コード値`), a code type name (`コードタイプ名称`), a select index (`選択インデックス`), or one of three list-type fields (`初期設定コードリスト`, `コードリスト`, `コード名リスト`). For list-type keys, a secondary index can be appended after a `/` separator (e.g., `初期設定コードリスト/2` accesses element at index 2). The special value `*` after the separator requests the list size. |
| 2 | `subkey` | `String` | The sub-property selector used within a non-list data category. It selects among three property facets: `value` (the actual data value), `enable` (the enablement flag indicating whether the field is editable), or `state` (the validation state of the field). For list-type keys, `subkey` is forwarded to the child bean's `loadModelData` as the property to retrieve from the indexed element. |

**Instance fields / external state read:**

| Field | Type | Usage |
|-------|------|-------|
| `default_cd_list_list` | `X33VDataTypeList` | Read for list-size and indexed element access when `key` is `初期設定コードリスト` |
| `cd_div_cd_list_list` | `X33VDataTypeList` | Read for list-size and indexed element access when `key` is `コードリスト` |
| `cd_div_nm_list_list` | `X33VDataTypeList` | Read for list-size and indexed element access when `key` is `コード名リスト` |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKAdEditCC.substring` | JKKAdEditCC | - | Calls `substring` in `JKKAdEditCC` |
| R | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` |
| R | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls `substring` in `JKKTelnoInfoAddMapperCC` |
| R | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls `substring` in `JDKejbStringEdit` |
| R | `KKW00129SF01DBean.getCd_div_cd_enabled` | KKW00129SF01DBean | - | Returns `cd_div_cd_enabled` enablement flag (instance field read) |
| R | `KKW00129SF01DBean.getCd_div_cd_state` | KKW00129SF01DBean | - | Returns `cd_div_cd_state` validation state (instance field read) |
| R | `KKW00129SF01DBean.getCd_div_cd_value` | KKW00129SF01DBean | - | Returns `cd_div_cd_value` actual code value string (instance field read) |
| R | `KKW00129SF01DBean.getCd_div_nm_enabled` | KKW00129SF01DBean | - | Returns `cd_div_nm_enabled` enablement flag (instance field read) |
| R | `KKW00129SF01DBean.getCd_div_nm_state` | KKW00129SF01DBean | - | Returns `cd_div_nm_state` validation state (instance field read) |
| R | `KKW00129SF01DBean.getCd_div_nm_value` | KKW00129SF01DBean | - | Returns `cd_div_nm_value` actual code type name string (instance field read) |
| R | `KKW00129SF01DBean.getSelect_index_enabled` | KKW00129SF01DBean | - | Returns `select_index_enabled` enablement flag (instance field read) |
| R | `KKW00129SF01DBean.getSelect_index_state` | KKW00129SF01DBean | - | Returns `select_index_state` validation state (instance field read) |
| R | `KKW00129SF01DBean.getSelect_index_value` | KKW00129SF01DBean | - | Returns `select_index_value` actual selected index string (instance field read) |
| R | `KKW00129SF01DBean.loadModelData` | KKW00129SF01DBean | - | Recursive/self-call to load data from child bean in list-type keys |

**Analysis notes:** This method performs exclusively **Read (R)** operations. It does not create, update, or delete any data. It delegates to local getter methods on its own instance fields and, for list-type keys, delegates to `loadModelData` on child `X33VDataTypeStringBean` instances within the `X33VDataTypeList` collections. No external SC/CBS or database entity access occurs within this method.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Component:KKW00129SF01DBean | `KKW00129SF01DBean.loadModelData(String, String)` -> `KKW00129SF01DBean.loadModelData` | `getCd_div_cd_value [R] instance field`, `getCd_div_cd_enabled [R] instance field`, `getCd_div_cd_state [R] instance field`, `getCd_div_nm_value [R] instance field`, `getCd_div_nm_enabled [R] instance field`, `getCd_div_nm_state [R] instance field`, `getSelect_index_value [R] instance field`, `getSelect_index_enabled [R] instance field`, `getSelect_index_state [R] instance field`, `childBean.loadModelData [R] X33VDataTypeStringBean` |

**Notes:** The pre-computed caller data shows one direct caller: the overloaded `KKW00129SF01DBean.loadModelData()` variant (likely a no-argument or default-parameter overload that calls this two-argument version internally). This bean is part of the KKW00129SF screen module and is used as a data bean for view-state management within the X33 web framework.

## 6. Per-Branch Detail Blocks

### Block 1 — IF `(key == null || subkey == null)` (L246-249)

> Null-check guard: if either parameter is null, return null immediately. This prevents NullPointerException and signals an invalid request.

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(key == null || subkey == null)` // key and subkey must both be non-null |
| 2 | RETURN | `return null;` // Return null for invalid input |

### Block 2 — EXEC `(key.indexOf)` (L251)

> Extract the position of the "/" separator in the key string. This is computed early because list-type keys use the "/" separator for index specification, and the value is needed before the branching logic.

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

### Block 3 — IF-ELSE-IF `(key.equals("コード値"))` (L255-267)

> Code Value branch — retrieves the value, enablement flag, or validation state of the `cd_div_cd` field (item ID: `cd_div_cd`). The `subkey` determines which property facet to return.

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(key.equals("コード値"))` // [key = "Code Value" — data type String, item ID: cd_div_cd] |

#### Block 3.1 — IF `(subkey.equalsIgnoreCase("value"))` (L256-257)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(subkey.equalsIgnoreCase("value"))` // [subkey = "value" — request actual data value] |
| 2 | CALL | `return getCd_div_cd_value();` // Return the cd_div_cd field value (instance field read) |

#### Block 3.2 — IF-ELSE-IF `(subkey.equalsIgnoreCase("enable"))` (L258-260)

> [subkey = "enable" — request enablement flag. The getter returns the cd_div_cd_enable field's value.]

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(subkey.equalsIgnoreCase("enable"))` // [subkey = "enable" — request field enablement flag] |
| 2 | CALL | `return getCd_div_cd_enabled();` // Return cd_div_cd_enabled field value |

#### Block 3.3 — IF-ELSE-IF `(subkey.equalsIgnoreCase("state"))` (L261-263)

> [subkey = "state" — request validation state. The method returns the state of this item.]

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(subkey.equalsIgnoreCase("state"))` // [subkey = "state" — request validation state] |
| 2 | CALL | `return getCd_div_cd_state();` // Return cd_div_cd_state field value |

#### Block 3.4 — ELSE (no match) (L264)

| # | Type | Code |
|---|------|------|
| 1 | FALLTHROUGH | // Fall through to next else-if chain (no action in this block) |

### Block 4 — IF-ELSE-IF `(key.equals("コードタイプ名称"))` (L267-279)

> Code Type Name branch — retrieves the value, enablement flag, or validation state of the `cd_div_nm` field (item ID: `cd_div_nm`). Same three-subkey pattern as Block 3.

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(key.equals("コードタイプ名称"))` // [key = "Code Type Name" — data type String, item ID: cd_div_nm] |

#### Block 4.1 — IF `(subkey.equalsIgnoreCase("value"))` (L268-269)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(subkey.equalsIgnoreCase("value"))` // [subkey = "value"] |
| 2 | CALL | `return getCd_div_nm_value();` // Return the cd_div_nm field value |

#### Block 4.2 — IF-ELSE-IF `(subkey.equalsIgnoreCase("enable"))` (L270-272)

> [subkey = "enable" — request enablement flag. The getter returns the cd_div_nm_enable field's value.]

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(subkey.equalsIgnoreCase("enable"))` // [subkey = "enable"] |
| 2 | CALL | `return getCd_div_nm_enabled();` // Return cd_div_nm_enabled field value |

#### Block 4.3 — IF-ELSE-IF `(subkey.equalsIgnoreCase("state"))` (L273-275)

> [subkey = "state" — request validation state.]

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(subkey.equalsIgnoreCase("state"))` // [subkey = "state"] |
| 2 | CALL | `return getCd_div_nm_state();` // Return cd_div_nm_state field value |

#### Block 4.4 — ELSE (no match) (L276)

| # | Type | Code |
|---|------|------|
| 1 | FALLTHROUGH | // Fall through to next else-if chain |

### Block 5 — IF-ELSE-IF `(key.equals("選択インデックス"))` (L279-291)

> Select Index branch — retrieves the value, enablement flag, or validation state of the `select_index` field (item ID: `select_index`). This field tracks which option is currently selected in a user-facing selection control.

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(key.equals("選択インデックス"))` // [key = "Select Index" — data type String, item ID: select_index] |

#### Block 5.1 — IF `(subkey.equalsIgnoreCase("value"))` (L280-281)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(subkey.equalsIgnoreCase("value"))` // [subkey = "value"] |
| 2 | CALL | `return getSelect_index_value();` // Return the select_index field value |

#### Block 5.2 — IF-ELSE-IF `(subkey.equalsIgnoreCase("enable"))` (L282-284)

> [subkey = "enable" — request enablement flag. The getter returns the select_index_enable field's value.]

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(subkey.equalsIgnoreCase("enable"))` // [subkey = "enable"] |
| 2 | CALL | `return getSelect_index_enabled();` // Return select_index_enabled field value |

#### Block 5.3 — IF-ELSE-IF `(subkey.equalsIgnoreCase("state"))` (L285-287)

> [subkey = "state" — request validation state.]

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(subkey.equalsIgnoreCase("state"))` // [subkey = "state"] |
| 2 | CALL | `return getSelect_index_state();` // Return select_index_state field value |

#### Block 5.4 — ELSE (no match) (L288)

| # | Type | Code |
|---|------|------|
| 1 | FALLTHROUGH | // Fall through to next else-if chain |

### Block 6 — IF-ELSE-IF `(key.equals("初期設定コードリスト"))` (L291-323)

> Initial Setting Code List branch — a list-type data category. The key is further parsed by extracting the portion after the "/" separator. If `*` is found, the list size is returned. Otherwise, the parsed portion is treated as a numeric index, validated for parse-ability and bounds, and the method delegates to the child bean's `loadModelData(subkey)` at that index.
>
> [key = "Initial Setting Code List" — data type String[], item ID: default_cd_list, stored as X33VDataTypeList]

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(key.equals("初期設定コードリスト"))` // [key = "Initial Setting Code List", item ID: default_cd_list] |

#### Block 6.1 — EXEC `(key.substring)` (L294)

> Extract the index portion from the key (the part after the "/" separator).

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1)` // Extract index portion after "/" |

#### Block 6.2 — IF-ELSE-IF `(key.equals("*"))` (L296-298)

> If the index portion is `*`, return the total number of elements in the list. This is a convenience pattern for requesting list metadata.

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(key.equals("*"))` // [key = "*" — special value requesting list size] |
| 2 | RETURN | `return Integer.valueOf(default_cd_list_list.size());` // Return list element count |

#### Block 6.3 — TRY-CATCH `(Integer.valueOf)` (L300-308)

> Attempt to parse the key portion as an integer index. If parsing fails (the subkey is not a valid numeric string), return null as documented: [if the index value is not a numeric string, return null here.]

| # | Type | Code |
|---|------|------|
| 1 | SET | `tmpIndexInt = null;` // Initialize parse result holder |
| 2 | TRY | `try { tmpIndexInt = Integer.valueOf(key); }` // Attempt integer parse |
| 3 | CATCH | `catch(NumberFormatException e) { return null; }` // [NumberFormatException — index value is not a numeric string, return null] |
| 4 | CHECK | `if(tmpIndexInt == null) { return null; }` // Safety null check after parse |
| 5 | SET | `tmpIndex = tmpIndexInt.intValue();` // Unwrap Integer to primitive int |

#### Block 6.4 — IF `(tmpIndex bounds check)` (L312-315)

> Validate that the parsed index is within the valid range `[0, size-1]`. If out of bounds, return null: [if index value exceeds list count minus 1, return null here.]

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(tmpIndex < 0 || tmpIndex >= default_cd_list_list.size())` // [tmpIndex out of valid range [0, size-1]] |
| 2 | RETURN | `return null;` // Out-of-bounds — return null |
| 3 | CAST | `return ((X33VDataTypeStringBean)default_cd_list_list.get(tmpIndex)).loadModelData(subkey);` // Cast list element to X33VDataTypeStringBean and delegate loadModelData(subkey) to child bean |

### Block 7 — IF-ELSE-IF `(key.equals("コードリスト"))` (L323-355)

> Code List branch — identical structure to Block 6 but operates on `cd_div_cd_list_list` (item ID: `cd_div_cd_list`).
>
> [key = "Code List" — data type String[], item ID: cd_div_cd_list, stored as X33VDataTypeList]

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(key.equals("コードリスト"))` // [key = "Code List", item ID: cd_div_cd_list] |

#### Block 7.1 — EXEC `(key.substring)` (L326)

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1)` // Extract index portion after "/" |

#### Block 7.2 — IF `(key.equals("*"))` (L328-330)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(key.equals("*"))` // [key = "*" — list size request] |
| 2 | RETURN | `return Integer.valueOf(cd_div_cd_list_list.size());` // Return list size |

#### Block 7.3 — TRY-CATCH `(Integer.valueOf)` (L332-340)

| # | Type | Code |
|---|------|------|
| 1 | SET | `tmpIndexInt = null;` |
| 2 | TRY | `try { tmpIndexInt = Integer.valueOf(key); }` |
| 3 | CATCH | `catch(NumberFormatException e) { return null; }` // [NumberFormatException — non-numeric index] |
| 4 | CHECK | `if(tmpIndexInt == null) { return null; }` |
| 5 | SET | `tmpIndex = tmpIndexInt.intValue();` |

#### Block 7.4 — IF `(tmpIndex bounds check)` (L344-347)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(tmpIndex < 0 || tmpIndex >= cd_div_cd_list_list.size())` // [tmpIndex out of range] |
| 2 | RETURN | `return null;` // Out-of-bounds |
| 3 | CAST | `return ((X33VDataTypeStringBean)cd_div_cd_list_list.get(tmpIndex)).loadModelData(subkey);` // Delegate to child bean |

### Block 8 — IF-ELSE-IF `(key.equals("コード名リスト"))` (L355-387)

> Code Name List branch — identical structure to Blocks 6 and 7 but operates on `cd_div_nm_list_list` (item ID: `cd_div_nm_list`).
>
> [key = "Code Name List" — data type String[], item ID: cd_div_nm_list, stored as X33VDataTypeList]

| # | Type | Code |
|---|------|------|
| 1 | COND | `else if(key.equals("コード名リスト"))` // [key = "Code Name List", item ID: cd_div_nm_list] |

#### Block 8.1 — EXEC `(key.substring)` (L358)

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1)` // Extract index portion after "/" |

#### Block 8.2 — IF `(key.equals("*"))` (L360-362)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(key.equals("*"))` // [key = "*" — list size request] |
| 2 | RETURN | `return Integer.valueOf(cd_div_nm_list_list.size());` // Return list size |

#### Block 8.3 — TRY-CATCH `(Integer.valueOf)` (L364-372)

| # | Type | Code |
|---|------|------|
| 1 | SET | `tmpIndexInt = null;` |
| 2 | TRY | `try { tmpIndexInt = Integer.valueOf(key); }` |
| 3 | CATCH | `catch(NumberFormatException e) { return null; }` // [NumberFormatException — non-numeric index] |
| 4 | CHECK | `if(tmpIndexInt == null) { return null; }` |
| 5 | SET | `tmpIndex = tmpIndexInt.intValue();` |

#### Block 8.4 — IF `(tmpIndex bounds check)` (L376-379)

| # | Type | Code |
|---|------|------|
| 1 | COND | `if(tmpIndex < 0 || tmpIndex >= cd_div_nm_list_list.size())` // [tmpIndex out of range] |
| 2 | RETURN | `return null;` // Out-of-bounds |
| 3 | CAST | `return ((X33VDataTypeStringBean)cd_div_nm_list_list.get(tmpIndex)).loadModelData(subkey);` // Delegate to child bean |

### Block 9 — ELSE (no match) (L380-381)

> Fallback return: no matching property key was found. This is the default case when the `key` parameter does not match any of the six expected data categories. The method returns null as documented: [if no matching property exists, return null.]

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `コード値` | Japanese key | Code Value — the category key for retrieving the `cd_div_cd` field (code division value), a simple String data item |
| `コードタイプ名称` | Japanese key | Code Type Name — the category key for retrieving the `cd_div_nm` field (code division name/type), a String data item |
| `選択インデックス` | Japanese key | Select Index — the category key for the currently selected index in a drop-down or selection list; `select_index` field |
| `初期設定コードリスト` | Japanese key | Initial Setting Code List — a list-type field containing initial/default code configuration entries; `default_cd_list` as `X33VDataTypeList` |
| `コードリスト` | Japanese key | Code List — a list-type field containing code value entries; `cd_div_cd_list` as `X33VDataTypeList` |
| `コード名リスト` | Japanese key | Code Name List — a list-type field containing code name entries; `cd_div_nm_list` as `X33VDataTypeList` |
| `cd_div_cd` | Field | Code Division Code — the actual code value string for a code division field |
| `cd_div_cd_enabled` | Field | Code Division Code Enablement — Boolean flag indicating whether the `cd_div_cd` field is editable/enabled |
| `cd_div_cd_state` | Field | Code Division Code State — validation status string for the `cd_div_cd` field |
| `cd_div_nm` | Field | Code Division Name — the actual name/value string for a code type/name division field |
| `cd_div_nm_enabled` | Field | Code Division Name Enablement — Boolean flag indicating whether the `cd_div_nm` field is editable/enabled |
| `cd_div_nm_state` | Field | Code Division Name State — validation status string for the `cd_div_nm` field |
| `select_index` | Field | Select Index — tracks which option is currently selected in a selection-type UI control |
| `select_index_enabled` | Field | Select Index Enablement — Boolean flag for the select_index field |
| `select_index_state` | Field | Select Index State — validation status string for select_index |
| `default_cd_list_list` | Field | Default Code List — an `X33VDataTypeList` containing `X33VDataTypeStringBean` elements for initial/default code configurations |
| `cd_div_cd_list_list` | Field | Code Division Code List — an `X33VDataTypeList` containing code value data strings |
| `cd_div_nm_list_list` | Field | Code Division Name List — an `X33VDataTypeList` containing code name data strings |
| `value` | Subkey | Request the actual data value of a field |
| `enable` | Subkey | Request the enablement (editability) flag of a field |
| `state` | Subkey | Request the validation state of a field |
| `*` | Subkey | Special value used with list-type keys to request the list size (element count) instead of an indexed element |
| X33 | Framework | Fujitsu Futurity X33 — enterprise web application framework providing view data bean contracts and data binding |
| `X33VDataTypeBeanInterface` | Interface | X33 Framework interface requiring beans to implement `loadModelData(String key, String subkey)` for runtime data access |
| `X33VDataTypeList` | Type | X33 Framework generic list data type container holding typed data elements |
| `X33VDataTypeStringBean` | Type | X33 Framework bean type representing a string-valued data item; implements `loadModelData` for nested property access |
| `X33VListedBeanInterface` | Interface | X33 Framework interface for beans that can produce listed/selection data (e.g., `SelectItem` arrays) |
| `substring` | Method | Standard Java String method used to extract the index portion from list-type keys after the "/" separator |
| `NumberFormatException` | Exception | Thrown when `Integer.valueOf(key)` cannot parse the key portion as an integer; caught and handled by returning null |

---

**Method Signature:** `public Object loadModelData(String key, String subkey)`
**Source File:** `source/koptWebA/src/eo/web/webview/KKA17701SF/KKW00129SF01DBean.java`
**Lines:** 243–375 (133 LOC)
**Interfaces:** `X33VDataTypeBeanInterface`, `X33VListedBeanInterface`, `Serializable`