# Business Logic — KKW00801SF03DBean.loadModelData() [169 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW00801SF.KKW00801SF03DBean` |
| Layer | Data Bean (Web/DBean layer — part of the X33V data bean framework) |
| Module | `KKW00801SF` (Package: `eo.web.webview.KKW00801SF`) |

## 1. Role

### KKW00801SF03DBean.loadModelData()

This method implements the core data-access dispatcher for the `KKW00801SF03DBean` data bean, which represents the "Virus Check Yes/No List" (ウィルスチェック有無リスト) item in the service contract management screen KKW00801SF. It receives a `key` (field/item identifier in Japanese) and a `subkey` (property accessor type: `value`, `enable`, or `state`), then routes the request to the appropriate getter method. This is a classic routing/dispatch pattern — the method acts as a polymorphic data bridge between the screen's generic data-binding infrastructure (which calls `loadModelData` dynamically) and the 12 domain-specific fields managed by this bean.

The method handles 12 distinct field categories: code type code, code type name, code type description, code classification, code classification name, code classification alias, code effective start date, code effective end date, display order, initial display code, initial display code name, and update timestamp. Each category supports three subkey variants: retrieving the actual data value, checking the enabled/disabled state, and reading the display state. This pattern allows the X33V data bean framework to access any field's data, enable flag, or state flag through a single unified entry point, enabling generic list-item rendering and form-binding without compile-time knowledge of individual field names.

The method implements the `X33VDataTypeBeanInterface.loadModelData()` contract, meaning it is called by the framework whenever a data-type view component (a list item or form field) needs to resolve its value dynamically. It plays the role of a shared utility within the `KKW00801SF` module, specifically serving the "Virus Check" virus-check management screen area where code-related metadata fields are displayed and edited.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData(key, subkey)"])
    CHECK_NULL["key or subkey is null?"]
    RET_NULL(["Return null"])
    FIND_SEP["sep = key.indexOf('/')"]

    KEY_CD_SBT_CD["key = コード種類コード"]
    KEY_CD_SBT_NM["key = コード種類名"]
    KEY_CD_SBT_SETMEI["key = コード種類説明"]
    KEY_CD_DIV["key = コード区分"]
    KEY_CD_DIV_NM["key = コード区分名"]
    KEY_CD_DIV_ALI["key = コード区分略称"]
    KEY_CD_TSTAYMD["key = コード適用開始年月日"]
    KEY_CD_TENDYM["key = コード適用終了年月日"]
    KEY_DSP_JUN["key = 表示順序"]
    KEY_SHK_DSP_CD["key = 初期表示コード"]
    KEY_SHK_DSP_CD_NM["key = 初期表示コード名称"]
    KEY_UPD_DTM["key = 更新年月日時刻"]
    RET_DEFAULT(["Return null"])

    START --> CHECK_NULL
    CHECK_NULL -->|Yes| RET_NULL
    CHECK_NULL -->|No| FIND_SEP

    FIND_SEP --> KEY_CD_SBT_CD
    FIND_SEP --> KEY_CD_SBT_NM
    FIND_SEP --> KEY_CD_SBT_SETMEI
    FIND_SEP --> KEY_CD_DIV
    FIND_SEP --> KEY_CD_DIV_NM
    FIND_SEP --> KEY_CD_DIV_ALI
    FIND_SEP --> KEY_CD_TSTAYMD
    FIND_SEP --> KEY_CD_TENDYM
    FIND_SEP --> KEY_DSP_JUN
    FIND_SEP --> KEY_SHK_DSP_CD
    FIND_SEP --> KEY_SHK_DSP_CD_NM
    FIND_SEP --> KEY_UPD_DTM

    KEY_CD_SBT_CD --> SUBKEY_CD_SBT_CD["subkey"]
    KEY_CD_SBT_NM --> SUBKEY_CD_SBT_NM["subkey"]
    KEY_CD_SBT_SETMEI --> SUBKEY_CD_SBT_SETMEI["subkey"]
    KEY_CD_DIV --> SUBKEY_CD_DIV["subkey"]
    KEY_CD_DIV_NM --> SUBKEY_CD_DIV_NM["subkey"]
    KEY_CD_DIV_ALI --> SUBKEY_CD_DIV_ALI["subkey"]
    KEY_CD_TSTAYMD --> SUBKEY_CD_TSTAYMD["subkey"]
    KEY_CD_TENDYM --> SUBKEY_CD_TENDYM["subkey"]
    KEY_DSP_JUN --> SUBKEY_DSP_JUN["subkey"]
    KEY_SHK_DSP_CD --> SUBKEY_SHK_DSP_CD["subkey"]
    KEY_SHK_DSP_CD_NM --> SUBKEY_SHK_DSP_CD_NM["subkey"]
    KEY_UPD_DTM --> SUBKEY_UPD_DTM["subkey"]

    SUBKEY_CD_SBT_CD --> CD_SBT_CD_VALUE["subkey = value"]
    SUBKEY_CD_SBT_CD --> CD_SBT_CD_ENABLE["subkey = enable"]
    SUBKEY_CD_SBT_CD --> CD_SBT_CD_STATE["subkey = state"]

    SUBKEY_CD_SBT_NM --> CD_SBT_NM_VALUE["subkey = value"]
    SUBKEY_CD_SBT_NM --> CD_SBT_NM_ENABLE["subkey = enable"]
    SUBKEY_CD_SBT_NM --> CD_SBT_NM_STATE["subkey = state"]

    SUBKEY_CD_SBT_SETMEI --> CD_SBT_SETMEI_VALUE["subkey = value"]
    SUBKEY_CD_SBT_SETMEI --> CD_SBT_SETMEI_ENABLE["subkey = enable"]
    SUBKEY_CD_SBT_SETMEI --> CD_SBT_SETMEI_STATE["subkey = state"]

    SUBKEY_CD_DIV --> CD_DIV_VALUE["subkey = value"]
    SUBKEY_CD_DIV --> CD_DIV_ENABLE["subkey = enable"]
    SUBKEY_CD_DIV --> CD_DIV_STATE["subkey = state"]

    SUBKEY_CD_DIV_NM --> CD_DIV_NM_VALUE["subkey = value"]
    SUBKEY_CD_DIV_NM --> CD_DIV_NM_ENABLE["subkey = enable"]
    SUBKEY_CD_DIV_NM --> CD_DIV_NM_STATE["subkey = state"]

    SUBKEY_CD_DIV_ALI --> CD_DIV_ALI_VALUE["subkey = value"]
    SUBKEY_CD_DIV_ALI --> CD_DIV_ALI_ENABLE["subkey = enable"]
    SUBKEY_CD_DIV_ALI --> CD_DIV_ALI_STATE["subkey = state"]

    SUBKEY_CD_TSTAYMD --> CD_TSTAYMD_VALUE["subkey = value"]
    SUBKEY_CD_TSTAYMD --> CD_TSTAYMD_ENABLE["subkey = enable"]
    SUBKEY_CD_TSTAYMD --> CD_TSTAYMD_STATE["subkey = state"]

    SUBKEY_CD_TENDYM --> CD_TENDYM_VALUE["subkey = value"]
    SUBKEY_CD_TENDYM --> CD_TENDYM_ENABLE["subkey = enable"]
    SUBKEY_CD_TENDYM --> CD_TENDYM_STATE["subkey = state"]

    SUBKEY_DSP_JUN --> DSP_JUN_VALUE["subkey = value"]
    SUBKEY_DSP_JUN --> DSP_JUN_ENABLE["subkey = enable"]
    SUBKEY_DSP_JUN --> DSP_JUN_STATE["subkey = state"]

    SUBKEY_SHK_DSP_CD --> SHK_DSP_CD_VALUE["subkey = value"]
    SUBKEY_SHK_DSP_CD --> SHK_DSP_CD_ENABLE["subkey = enable"]
    SUBKEY_SHK_DSP_CD --> SHK_DSP_CD_STATE["subkey = state"]

    SUBKEY_SHK_DSP_CD_NM --> SHK_DSP_CD_NM_VALUE["subkey = value"]
    SUBKEY_SHK_DSP_CD_NM --> SHK_DSP_CD_NM_ENABLE["subkey = enable"]
    SUBKEY_SHK_DSP_CD_NM --> SHK_DSP_CD_NM_STATE["subkey = state"]

    SUBKEY_UPD_DTM --> UPD_DTM_VALUE["subkey = value"]
    SUBKEY_UPD_DTM --> UPD_DTM_ENABLE["subkey = enable"]
    SUBKEY_UPD_DTM --> UPD_DTM_STATE["subkey = state"]

    CD_SBT_CD_VALUE --> R1(["getCd_sbt_cd_value()"])
    CD_SBT_CD_ENABLE --> R2(["getCd_sbt_cd_enabled()"])
    CD_SBT_CD_STATE --> R3(["getCd_sbt_cd_state()"])
    CD_SBT_NM_VALUE --> R4(["getCd_sbt_nm_value()"])
    CD_SBT_NM_ENABLE --> R5(["getCd_sbt_nm_enabled()"])
    CD_SBT_NM_STATE --> R6(["getCd_sbt_nm_state()"])
    CD_SBT_SETMEI_VALUE --> R7(["getCd_sbt_setmei_value()"])
    CD_SBT_SETMEI_ENABLE --> R8(["getCd_sbt_setmei_enabled()"])
    CD_SBT_SETMEI_STATE --> R9(["getCd_sbt_setmei_state()"])
    CD_DIV_VALUE --> R10(["getCd_div_value()"])
    CD_DIV_ENABLE --> R11(["getCd_div_enabled()"])
    CD_DIV_STATE --> R12(["getCd_div_state()"])
    CD_DIV_NM_VALUE --> R13(["getCd_div_nm_value()"])
    CD_DIV_NM_ENABLE --> R14(["getCd_div_nm_enabled()"])
    CD_DIV_NM_STATE --> R15(["getCd_div_nm_state()"])
    CD_DIV_ALI_VALUE --> R16(["getCd_div_ali_value()"])
    CD_DIV_ALI_ENABLE --> R17(["getCd_div_ali_enabled()"])
    CD_DIV_ALI_STATE --> R18(["getCd_div_ali_state()"])
    CD_TSTAYMD_VALUE --> R19(["getCd_tstaymd_value()"])
    CD_TSTAYMD_ENABLE --> R20(["getCd_tstaymd_enabled()"])
    CD_TSTAYMD_STATE --> R21(["getCd_tstaymd_state()"])
    CD_TENDYM_VALUE --> R22(["getCd_tendymd_value()"])
    CD_TENDYM_ENABLE --> R23(["getCd_tendymd_enabled()"])
    CD_TENDYM_STATE --> R24(["getCd_tendymd_state()"])
    DSP_JUN_VALUE --> R25(["getDsp_jun_value()"])
    DSP_JUN_ENABLE --> R26(["getDsp_jun_enabled()"])
    DSP_JUN_STATE --> R27(["getDsp_jun_state()"])
    SHK_DSP_CD_VALUE --> R28(["getShk_dsp_cd_value()"])
    SHK_DSP_CD_ENABLE --> R29(["getShk_dsp_cd_enabled()"])
    SHK_DSP_CD_STATE --> R30(["getShk_dsp_cd_state()"])
    SHK_DSP_CD_NM_VALUE --> R31(["getShk_dsp_cd_nm_value()"])
    SHK_DSP_CD_NM_ENABLE --> R32(["getShk_dsp_cd_nm_enabled()"])
    SHK_DSP_CD_NM_STATE --> R33(["getShk_dsp_cd_nm_state()"])
    UPD_DTM_VALUE --> R34(["getUpd_dtm_value()"])
    UPD_DTM_ENABLE --> R35(["getUpd_dtm_enabled()"])
    UPD_DTM_STATE --> R36(["getUpd_dtm_state()"])

    R1 --> RET_DEFAULT
    R2 --> RET_DEFAULT
    R3 --> RET_DEFAULT
    R4 --> RET_DEFAULT
    R5 --> RET_DEFAULT
    R6 --> RET_DEFAULT
    R7 --> RET_DEFAULT
    R8 --> RET_DEFAULT
    R9 --> RET_DEFAULT
    R10 --> RET_DEFAULT
    R11 --> RET_DEFAULT
    R12 --> RET_DEFAULT
    R13 --> RET_DEFAULT
    R14 --> RET_DEFAULT
    R15 --> RET_DEFAULT
    R16 --> RET_DEFAULT
    R17 --> RET_DEFAULT
    R18 --> RET_DEFAULT
    R19 --> RET_DEFAULT
    R20 --> RET_DEFAULT
    R21 --> RET_DEFAULT
    R22 --> RET_DEFAULT
    R23 --> RET_DEFAULT
    R24 --> RET_DEFAULT
    R25 --> RET_DEFAULT
    R26 --> RET_DEFAULT
    R27 --> RET_DEFAULT
    R28 --> RET_DEFAULT
    R29 --> RET_DEFAULT
    R30 --> RET_DEFAULT
    R31 --> RET_DEFAULT
    R32 --> RET_DEFAULT
    R33 --> RET_DEFAULT
    R34 --> RET_DEFAULT
    R35 --> RET_DEFAULT
    R36 --> RET_DEFAULT
```

**Block Summary:**

| Step | Description |
|------|-------------|
| 1 | Null guard: if `key` or `subkey` is null, return null immediately (L504-L507) |
| 2 | Compute `sep = key.indexOf("/")` — parses potential compound key format (L509) |
| 3-14 | 12 parallel if/else-if branches matching `key` to field categories (L512-L659) |
| 15 | Nested subkey branches: each field category has 3 cases — `value` (actual data), `enable` (enabled/disabled flag), `state` (display state) (L514-L657) |
| 16 | Fallback: if no key matches, return null (L661-L662) |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | Field/item identifier in Japanese — selects which of the 12 data bean fields to access. Valid values are Japanese field names: コード種類コード (code type code), コード種類名 (code type name), コード種類説明 (code type description), コード区分 (code classification), コード区分名 (code classification name), コード区分略称 (code classification alias), コード適用開始年月日 (code effective start date), コード適用終了年月日 (code effective end date), 表示順序 (display order), 初期表示コード (initial display code), 初期表示コード名称 (initial display code name), 更新年月日時刻 (update timestamp). Determines which data branch to dispatch into. |
| 2 | `subkey` | `String` | Property accessor type — selects the metadata property to read from the matched field. Valid values (case-insensitive): `value` (returns the actual data value), `enable` (returns the enabled/disabled state — whether the field is active in the UI), `state` (returns the display state — e.g., read-only, required, or input type). |

**Instance fields read by this method:**
- All 12 field accessor properties (value, enable, state getters) — each returns a value from the bean's internal state. The actual backing fields (`cd_sbt_cd_value`, `cd_sbt_cd_enabled`, `cd_sbt_cd_state`, `cd_sbt_nm_value`, `cd_sbt_nm_enabled`, `cd_sbt_nm_state`, `cd_sbt_setmei_value`, `cd_sbt_setmei_enabled`, `cd_sbt_setmei_state`, `cd_div_value`, `cd_div_enabled`, `cd_div_state`, `cd_div_nm_value`, `cd_div_nm_enabled`, `cd_div_nm_state`, `cd_div_ali_value`, `cd_div_ali_enabled`, `cd_div_ali_state`, `cd_tstaymd_value`, `cd_tstaymd_enabled`, `cd_tstaymd_state`, `cd_tendymd_value`, `cd_tendymd_enabled`, `cd_tendymd_state`, `dsp_jun_value`, `dsp_jun_enabled`, `dsp_jun_state`, `shk_dsp_cd_value`, `shk_dsp_cd_enabled`, `shk_dsp_cd_state`, `shk_dsp_cd_nm_value`, `shk_dsp_cd_nm_enabled`, `shk_dsp_cd_nm_state`, `upd_dtm_value`, `upd_dtm_enabled`, `upd_dtm_state`) are read via their getter methods.

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW00801SF03DBean.getCd_sbt_cd_value` | KKW00801SF03DBean | - | Returns the value of cd_sbt_cd (code type code) |
| R | `KKW00801SF03DBean.getCd_sbt_cd_enabled` | KKW00801SF03DBean | - | Returns the enabled state of cd_sbt_cd |
| R | `KKW00801SF03DBean.getCd_sbt_cd_state` | KKW00801SF03DBean | - | Returns the display state of cd_sbt_cd |
| R | `KKW00801SF03DBean.getCd_sbt_nm_value` | KKW00801SF03DBean | - | Returns the value of cd_sbt_nm (code type name) |
| R | `KKW00801SF03DBean.getCd_sbt_nm_enabled` | KKW00801SF03DBean | - | Returns the enabled state of cd_sbt_nm |
| R | `KKW00801SF03DBean.getCd_sbt_nm_state` | KKW00801SF03DBean | - | Returns the display state of cd_sbt_nm |
| R | `KKW00801SF03DBean.getCd_sbt_setmei_value` | KKW00801SF03DBean | - | Returns the value of cd_sbt_setmei (code type description) |
| R | `KKW00801SF03DBean.getCd_sbt_setmei_enabled` | KKW00801SF03DBean | - | Returns the enabled state of cd_sbt_setmei |
| R | `KKW00801SF03DBean.getCd_sbt_setmei_state` | KKW00801SF03DBean | - | Returns the display state of cd_sbt_setmei |
| R | `KKW00801SF03DBean.getCd_div_value` | KKW00801SF03DBean | - | Returns the value of cd_div (code classification) |
| R | `KKW00801SF03DBean.getCd_div_enabled` | KKW00801SF03DBean | - | Returns the enabled state of cd_div |
| R | `KKW00801SF03DBean.getCd_div_state` | KKW00801SF03DBean | - | Returns the display state of cd_div |
| R | `KKW00801SF03DBean.getCd_div_nm_value` | KKW00801SF03DBean | - | Returns the value of cd_div_nm (code classification name) |
| R | `KKW00801SF03DBean.getCd_div_nm_enabled` | KKW00801SF03DBean | - | Returns the enabled state of cd_div_nm |
| R | `KKW00801SF03DBean.getCd_div_nm_state` | KKW00801SF03DBean | - | Returns the display state of cd_div_nm |
| R | `KKW00801SF03DBean.getCd_div_ali_value` | KKW00801SF03DBean | - | Returns the value of cd_div_ali (code classification alias) |
| R | `KKW00801SF03DBean.getCd_div_ali_enabled` | KKW00801SF03DBean | - | Returns the enabled state of cd_div_ali |
| R | `KKW00801SF03DBean.getCd_div_ali_state` | KKW00801SF03DBean | - | Returns the display state of cd_div_ali |
| R | `KKW00801SF03DBean.getCd_tstaymd_value` | KKW00801SF03DBean | - | Returns the value of cd_tstaymd (code effective start date) |
| R | `KKW00801SF03DBean.getCd_tstaymd_enabled` | KKW00801SF03DBean | - | Returns the enabled state of cd_tstaymd |
| R | `KKW00801SF03DBean.getCd_tstaymd_state` | KKW00801SF03DBean | - | Returns the display state of cd_tstaymd |
| R | `KKW00801SF03DBean.getCd_tendymd_value` | KKW00801SF03DBean | - | Returns the value of cd_tendymd (code effective end date) |
| R | `KKW00801SF03DBean.getCd_tendymd_enabled` | KKW00801SF03DBean | - | Returns the enabled state of cd_tendymd |
| R | `KKW00801SF03DBean.getCd_tendymd_state` | KKW00801SF03DBean | - | Returns the display state of cd_tendymd |
| R | `KKW00801SF03DBean.getDsp_jun_value` | KKW00801SF03DBean | - | Returns the value of dsp_jun (display order) |
| R | `KKW00801SF03DBean.getDsp_jun_enabled` | KKW00801SF03DBean | - | Returns the enabled state of dsp_jun |
| R | `KKW00801SF03DBean.getDsp_jun_state` | KKW00801SF03DBean | - | Returns the display state of dsp_jun |
| R | `KKW00801SF03DBean.getShk_dsp_cd_value` | KKW00801SF03DBean | - | Returns the value of shk_dsp_cd (initial display code) |
| R | `KKW00801SF03DBean.getShk_dsp_cd_enabled` | KKW00801SF03DBean | - | Returns the enabled state of shk_dsp_cd |
| R | `KKW00801SF03DBean.getShk_dsp_cd_state` | KKW00801SF03DBean | - | Returns the display state of shk_dsp_cd |
| R | `KKW00801SF03DBean.getShk_dsp_cd_nm_value` | KKW00801SF03DBean | - | Returns the value of shk_dsp_cd_nm (initial display code name) |
| R | `KKW00801SF03DBean.getShk_dsp_cd_nm_enabled` | KKW00801SF03DBean | - | Returns the enabled state of shk_dsp_cd_nm |
| R | `KKW00801SF03DBean.getShk_dsp_cd_nm_state` | KKW00801SF03DBean | - | Returns the display state of shk_dsp_cd_nm |
| R | `KKW00801SF03DBean.getUpd_dtm_value` | KKW00801SF03DBean | - | Returns the value of upd_dtm (update timestamp) |
| R | `KKW00801SF03DBean.getUpd_dtm_enabled` | KKW00801SF03DBean | - | Returns the enabled state of upd_dtm |
| R | `KKW00801SF03DBean.getUpd_dtm_state` | KKW00801SF03DBean | - | Returns the display state of upd_dtm |

**Analysis:** This method performs **only Read (R)** operations. It is a pure getter/router — no Create, Update, or Delete operations occur. The method delegates to 36 local getter methods (12 fields x 3 subkeys each) that simply return values from the bean's internal fields. No SC (Service Component), CBS (Common Business Service), or database access is performed. The data originates from the bean's own state, which was populated earlier by a CBS layer during the screen's data loading phase.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW00801SF (KKW00801SFBean) | `KKW00801SFBean.addListDataInstance` -> creates `KKW00801SF03DBean` -> framework calls `loadModelData(key, subkey)` | `getCd_sbt_cd_value [R] bean field` |
| 2 | Screen:KKW00801SF (KKW00801SFBean) | `KKW00801SFBean.listKoumokuIds` -> registers `KKW00801SF03DBean.listKoumokuIds()` -> framework calls `KKW00801SF03DBean.loadModelData` | `various getters [R] bean fields` |
| 3 | Screen:KKW00801SF (KKW00801SFBean) | `KKW00801SFBean.removeElementFromListData` -> `virus_chk_umu_list_list` contains `KKW00801SF03DBean` items -> framework calls `loadModelData` on each item | `various getters [R] bean fields` |

**Additional callers in other screens (cross-screen pattern):**

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 4 | Screen:FUW00912SF (FUW00912SFBean) | `FUW00912SFBean` iterates over `svc_kb_dates_list` / `btns_list` (X33VDataTypeBeanInterface) -> calls `loadModelData(key, subkey)` on each | `getXxx [R] bean field` |
| 5 | Screen:FUW00926SF (FUW00926SFBean) | `FUW00926SFBean` iterates over `use_bmp_list_list` / `tv_stb_info_list_list` -> calls `loadModelData` via dynamic key routing | `getXxx [R] bean field` |
| 6 | Screen:FUW00959SF (FUW00959SFBean) | `FUW00959SFBean` iterates over `campaign_list_list` / `campaign_text_list_list` -> calls `loadModelData` | `getXxx [R] bean field` |
| 7 | Screen:FUW00964SF (FUW00964SFBean) | `FUW00964SFBean` iterates over `svc_gaiyo_info_list`, `vdsl_prc_info_list`, etc. -> calls `loadModelData` | `getXxx [R] bean field` |

The method is called via the `X33VDataTypeBeanInterface` contract, meaning any screen that uses `KKW00801SF03DBean` as a data-type bean (list item type) will invoke `loadModelData` through the framework's generic data-binding mechanism. The callers found are all screens (class names containing `KKSV` or `FUW` patterns) that use the X33V data bean framework.

## 6. Per-Branch Detail Blocks

### Block 1 — IF (null guard) (L504-L507)

Null check: if either `key` or `subkey` is null, return null immediately. This prevents NullPointerException and acts as a guard clause for invalid framework invocations.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (key == null || subkey == null)` // key or subkey is null — returns null immediately |
| 2 | RETURN | `return null;` // returns null |

### Block 2 — Processing Step: Separator Extraction (L509)

Computes the index of "/" in `key` for potential compound key parsing. Note: the `separaterPoint` variable is computed but never used in any subsequent branch — it appears to be reserved for future extensibility.

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/");` // extracts separator position (currently unused) |

### Block 3 — IF/ELSE-IF: Key Routing (コード種類コード) (L512-L528)

> data type is String field "Code Type Code" (item ID: cd_sbt_cd)

Handles routing for the code type code field. The `key` is compared against the Japanese string literal `コード種類コード` (Code Type Code).

#### Block 3.1 — IF/ELSE-IF/ELSE-IF: Subkey Routing (value) (L514-L516)

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (subkey.equalsIgnoreCase("value"))` // case-insensitive match for "value" |
| 2 | CALL | `return getCd_sbt_cd_value();` // returns the code type code data value |

#### Block 3.2 — IF/ELSE-IF: Subkey Routing (enable) (L517-L519)

> subkey is "enable" — returns the getter value of cd_sbt_cd_enable

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (subkey.equalsIgnoreCase("enable"))` // case-insensitive match for "enable" |
| 2 | CALL | `return getCd_sbt_cd_enabled();` // returns the enabled/disabled state of cd_sbt_cd |

#### Block 3.3 — IF/ELSE-IF: Subkey Routing (state) (L520-L522)

> subkey is "state" — returns the display state

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (subkey.equalsIgnoreCase("state"))` // case-insensitive match for "state" |
| 2 | CALL | `return getCd_sbt_cd_state();` // returns the display state of cd_sbt_cd |

### Block 4 — IF/ELSE-IF: Key Routing (コード種類名) (L526-L542)

> data type is String field "Code Type Name" (item ID: cd_sbt_nm)

Handles routing for the code type name field.

#### Block 4.1 — IF/ELSE-IF/ELSE-IF: Subkey Routing (L528-L540)

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("コード種類名"))` [key = "コード種類名" (Code Type Name)] (L526) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getCd_sbt_nm_value();` (L528-L530) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getCd_sbt_nm_enabled();` (L531-L533) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getCd_sbt_nm_state();` (L534-L536) |

### Block 5 — IF/ELSE-IF: Key Routing (コード種類説明) (L540-L556)

> data type is String field "Code Type Description" (item ID: cd_sbt_setmei)

Handles routing for the code type description field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("コード種類説明"))` [key = "コード種類説明" (Code Type Description)] (L540) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getCd_sbt_setmei_value();` (L542-L544) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getCd_sbt_setmei_enabled();` (L545-L547) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getCd_sbt_setmei_state();` (L548-L550) |

### Block 6 — IF/ELSE-IF: Key Routing (コード区分) (L554-L570)

> data type is String field "Code Classification" (item ID: cd_div)

Handles routing for the code classification field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("コード区分"))` [key = "コード区分" (Code Classification)] (L554) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getCd_div_value();` (L556-L558) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getCd_div_enabled();` (L559-L561) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getCd_div_state();` (L562-L564) |

### Block 7 — IF/ELSE-IF: Key Routing (コード区分名) (L568-L584)

> data type is String field "Code Classification Name" (item ID: cd_div_nm)

Handles routing for the code classification name field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("コード区分名"))` [key = "コード区分名" (Code Classification Name)] (L568) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getCd_div_nm_value();` (L570-L572) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getCd_div_nm_enabled();` (L573-L575) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getCd_div_nm_state();` (L576-L578) |

### Block 8 — IF/ELSE-IF: Key Routing (コード区分略称) (L582-L598)

> data type is String field "Code Classification Alias" (item ID: cd_div_ali)

Handles routing for the code classification alias field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("コード区分略称"))` [key = "コード区分略称" (Code Classification Alias)] (L582) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getCd_div_ali_value();` (L584-L586) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getCd_div_ali_enabled();` (L587-L589) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getCd_div_ali_state();` (L590-L592) |

### Block 9 — IF/ELSE-IF: Key Routing (コード適用開始年月日) (L596-L612)

> data type is String field "Code Effective Start Date" (item ID: cd_tstaymd)

Handles routing for the code effective start date field (YYYYMMDD format).

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("コード適用開始年月日"))` [key = "コード適用開始年月日" (Code Effective Start Date)] (L596) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getCd_tstaymd_value();` (L598-L600) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getCd_tstaymd_enabled();` (L601-L603) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getCd_tstaymd_state();` (L604-L606) |

### Block 10 — IF/ELSE-IF: Key Routing (コード適用終了年月日) (L610-L626)

> data type is String field "Code Effective End Date" (item ID: cd_tendymd)

Handles routing for the code effective end date field (YYYYMMDD format).

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("コード適用終了年月日"))` [key = "コード適用終了年月日" (Code Effective End Date)] (L610) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getCd_tendymd_value();` (L612-L614) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getCd_tendymd_enabled();` (L615-L617) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getCd_tendymd_state();` (L618-L620) |

### Block 11 — IF/ELSE-IF: Key Routing (表示順序) (L624-L640)

> data type is String field "Display Order" (item ID: dsp_jun)

Handles routing for the display order field (sort order within lists).

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("表示順序"))` [key = "表示順序" (Display Order)] (L624) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getDsp_jun_value();` (L626-L628) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getDsp_jun_enabled();` (L629-L631) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getDsp_jun_state();` (L632-L634) |

### Block 12 — IF/ELSE-IF: Key Routing (初期表示コード) (L638-L654)

> data type is String field "Initial Display Code" (item ID: shk_dsp_cd)

Handles routing for the initial display code field (the code shown by default when the screen loads).

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("初期表示コード"))` [key = "初期表示コード" (Initial Display Code)] (L638) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getShk_dsp_cd_value();` (L640-L642) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getShk_dsp_cd_enabled();` (L643-L645) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getShk_dsp_cd_state();` (L646-L648) |

### Block 13 — IF/ELSE-IF: Key Routing (初期表示コード名称) (L652-L668)

> data type is String field "Initial Display Code Name" (item ID: shk_dsp_cd_nm)

Handles routing for the initial display code name field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("初期表示コード名称"))` [key = "初期表示コード名称" (Initial Display Code Name)] (L652) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getShk_dsp_cd_nm_value();` (L654-L656) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getShk_dsp_cd_nm_enabled();` (L657-L659) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getShk_dsp_cd_nm_state();` (L660-L662) |

### Block 14 — IF/ELSE-IF: Key Routing (更新年月日時刻) (L666-L682)

> data type is String field "Update Timestamp" (item ID: upd_dtm)

Handles routing for the update timestamp field (last modification date/time).

| # | Type | Code |
|---|------|------|
| 1 | IF | `else if (key.equals("更新年月日時刻"))` [key = "更新年月日時刻" (Update Timestamp)] (L666) |
| 2 | IF | `if (subkey.equalsIgnoreCase("value"))` -> `return getUpd_dtm_value();` (L668-L670) |
| 3 | IF | `else if (subkey.equalsIgnoreCase("enable"))` -> `return getUpd_dtm_enabled();` (L671-L673) |
| 4 | IF | `else if (subkey.equalsIgnoreCase("state"))` -> `return getUpd_dtm_state();` (L674-L676) |

### Block 15 — ELSE (no matching key) (L679-L680)

> No matching property exists — returns null

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // comment: 条件に合致するプロパティが存在しない場合は、nullを返す (returns null when no matching property exists) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `cd_sbt_cd` | Field | Code Type Code — the type/category code of a code record |
| `cd_sbt_nm` | Field | Code Type Name — the human-readable name of a code type |
| `cd_sbt_setmei` | Field | Code Type Description — the detailed description/explanation of a code type |
| `cd_div` | Field | Code Classification — the classification/division category of a code |
| `cd_div_nm` | Field | Code Classification Name — the name of a code classification |
| `cd_div_ali` | Field | Code Classification Alias — the abbreviated alias name of a code classification |
| `cd_tstaymd` | Field | Code Effective Start Date — the date (YYYYMMDD) from which this code becomes valid |
| `cd_tendymd` | Field | Code Effective End Date — the date (YYYYMMDD) until which this code remains valid |
| `dsp_jun` | Field | Display Order — the sort order position for displaying this record in lists |
| `shk_dsp_cd` | Field | Initial Display Code — the default code displayed when the screen first loads |
| `shk_dsp_cd_nm` | Field | Initial Display Code Name — the name of the initial display code |
| `upd_dtm` | Field | Update Timestamp — the date/time when this record was last modified |
| `virus_chk_umu_list` | Field | Virus Check Yes/No List — the list item type that this data bean manages |
| コード種類コード | Japanese | Code Type Code — the key string literal for selecting the code type code field |
| コード種類名 | Japanese | Code Type Name — the key string literal for selecting the code type name field |
| コード種類説明 | Japanese | Code Type Description — the key string literal for selecting the code type description field |
| コード区分 | Japanese | Code Classification — the key string literal for selecting the code classification field |
| コード区分名 | Japanese | Code Classification Name — the key string literal for selecting the code classification name field |
| コード区分略称 | Japanese | Code Classification Alias — the key string literal for selecting the code classification alias field |
| コード適用開始年月日 | Japanese | Code Effective Start Date — the key string literal for selecting the effective start date |
| コード適用終了年月日 | Japanese | Code Effective End Date — the key string literal for selecting the effective end date |
| 表示順序 | Japanese | Display Order — the key string literal for selecting the display order field |
| 初期表示コード | Japanese | Initial Display Code — the key string literal for selecting the initial display code |
| 初期表示コード名称 | Japanese | Initial Display Code Name — the key string literal for selecting the initial display code name |
| 更新年月日時刻 | Japanese | Update Timestamp — the key string literal for selecting the update timestamp field |
| X33VDataTypeBeanInterface | Technical | The X33V framework interface that defines `loadModelData` for dynamic data binding |
| DBean | Abbreviation | Data Bean — a presentation-layer bean that holds data for a screen's form/list items |
| value | Subkey | Returns the actual data value of the field |
| enable | Subkey | Returns the enabled/disabled flag — whether the field is active for input |
| state | Subkey | Returns the display state — UI state such as read-only, required, or input type |
| `separaterPoint` | Field | Reserved index of "/" in key for potential compound key parsing (currently unused) |
