---

# Business Logic — KKW00846SF02DBean.loadModelData() [161 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA18001SF.KKW00846SF02DBean` |
| Layer | Web View Bean / UI Data Binding (Web Client X33 Framework) |
| Module | `KKA18001SF` (Package: `eo.web.webview.KKA18001SF`) |

## 1. Role

### KKW00846SF02DBean.loadModelData()

This method is the **data-loading dispatcher** for the X33 Web Client framework. It serves as the primary interface through which UI components retrieve field values, display states, and editability settings from the `KKW00846SF02DBean` data bean. The bean is dedicated to the **Security Options** domain (項目ID: `security_op` — セキュリティオプション) within the K-Opticom telecom order management system, handling fields related to optional service configuration such as DSL status codes, choice categories, subscription start dates, billing flags, and pricing information.

The method implements a **key-subkey routing pattern**: the `key` parameter identifies which business field to access (e.g., "選択区分" for choice category, "利用開始年月日" for subscription start date), and the `subkey` parameter specifies which **attribute** of that field to return — either its **value** (`"value"`), its **editability flag** (`"enable"`), or its **display state** (`"state"`). Different fields support different subsets of these attributes; for instance, "選択区分" supports value/enable/state, while "オプションサービスコード" supports only value/state.

This method has **no external dependencies** on database operations, service components, or CBS calls. It is a pure UI-state accessor that reads from the bean's internal instance fields. It is typically called by the parent bean (`KKW00846SFBean`) during screen initialization or data synchronization, and may also be invoked by list-type components that embed instances of this bean as nested data types. The method implements the `X33VDataTypeBeanInterface.loadModelData()` contract, making it a shared, reusable component within the X33 UI framework's data-binding architecture.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData(key, subkey)"])
    CHECK_NULL["key or subkey is null?"]
    RETURN_NULL["Return null"]
    FIND_SLASH["Find '/' in key"]

    COND1["key = '選択区分'?"]
    SUB1_VALUE["subkey = 'value'?"]
    GET1_RETURN["getChoice_div_value()"]
    SUB1_ENABLE["subkey = 'enable'?"]
    GET1_ENABLE["getChoice_div_enabled()"]
    SUB1_STATE["subkey = 'state'?"]
    GET1_STATE["getChoice_div_state()"]

    COND2["key = '利用開始年月日'?"]
    SUB2_VALUE["subkey = 'value'?"]
    GET2_RETURN["getUse_staymd_value()"]
    SUB2_STATE2["subkey = 'state'?"]
    GET2_STATE2["getUse_staymd_state()"]

    COND3["key = '利用開始日（年）'?"]
    SUB3_VALUE["subkey = 'value'?"]
    GET3_RETURN["getUse_staymd_year_value()"]
    SUB3_ENABLE["subkey = 'enable'?"]
    GET3_ENABLE["getUse_staymd_year_enabled()"]
    SUB3_STATE["subkey = 'state'?"]
    GET3_STATE["getUse_staymd_year_state()"]

    COND4["key = '利用開始日（月）'?"]
    SUB4_VALUE["subkey = 'value'?"]
    GET4_RETURN["getUse_staymd_mon_value()"]
    SUB4_ENABLE["subkey = 'enable'?"]
    GET4_ENABLE["getUse_staymd_mon_enabled()"]
    SUB4_STATE["subkey = 'state'?"]
    GET4_STATE["getUse_staymd_mon_state()"]

    COND5["key = '利用開始日（日）'?"]
    SUB5_VALUE["subkey = 'value'?"]
    GET5_RETURN["getUse_staymd_day_value()"]
    SUB5_ENABLE["subkey = 'enable'?"]
    GET5_ENABLE["getUse_staymd_day_enabled()"]
    SUB5_STATE["subkey = 'state'?"]
    GET5_STATE["getUse_staymd_day_state()"]

    COND6["key = '課金有無'?"]
    SUB6_VALUE["subkey = 'value'?"]
    GET6_RETURN["getKakin_um_value()"]
    SUB6_ENABLE["subkey = 'enable'?"]
    GET6_ENABLE["getKakin_um_enabled()"]
    SUB6_STATE["subkey = 'state'?"]
    GET6_STATE["getKakin_um_state()"]

    COND7["key = 'オプションサービスコード'?"]
    SUB7_VALUE["subkey = 'value'?"]
    GET7_RETURN["getOp_svc_cd_value()"]
    SUB7_STATE2["subkey = 'state'?"]
    GET7_STATE2["getOp_svc_cd_state()"]

    COND8["key = '表示用オプションサービスコード名称'?"]
    SUB8_VALUE["subkey = 'value'?"]
    GET8_RETURN["getDisp_op_svc_cd_nm_value()"]
    SUB8_ENABLE["subkey = 'enable'?"]
    GET8_ENABLE["getDisp_op_svc_cd_nm_enabled()"]
    SUB8_STATE["subkey = 'state'?"]
    GET8_STATE["getDisp_op_svc_cd_nm_state()"]

    COND9["key = 'オプションサービス契約ステータス'?"]
    SUB9_VALUE["subkey = 'value'?"]
    GET9_RETURN["getOp_svc_kei_stat_value()"]
    SUB9_STATE2["subkey = 'state'?"]
    GET9_STATE2["getOp_svc_kei_stat_state()"]

    COND10["key = 'サービス開始年月日'?"]
    SUB10_VALUE["subkey = 'value'?"]
    GET10_RETURN["getSvc_sta_ymd_value()"]
    SUB10_STATE2["subkey = 'state'?"]
    GET10_STATE2["getSvc_sta_ymd_state()"]

    COND11["key = '予約可能期間'?"]
    SUB11_VALUE["subkey = 'value'?"]
    GET11_RETURN["getRsv_psb_prd_value()"]
    SUB11_STATE2["subkey = 'state'?"]
    GET11_STATE2["getRsv_psb_prd_state()"]

    COND12["key = '初回料金計算日'?"]
    SUB12_VALUE["subkey = 'value'?"]
    GET12_RETURN["getFirst_prc_calc_ymd_value()"]
    SUB12_STATE2["subkey = 'state'?"]
    GET12_STATE2["getFirst_prc_calc_ymd_state()"]

    COND13["key = '登録解除コード'?"]
    SUB13_VALUE["subkey = 'value'?"]
    GET13_RETURN["getAdd_dsl_cd_value()"]
    SUB13_STATE2["subkey = 'state'?"]
    GET13_STATE2["getAdd_dsl_cd_state()"]

    NO_MATCH["No matching key"]
    RETURN_NULL2["Return null"]
    END_NODE(["End"])

    START --> CHECK_NULL
    CHECK_NULL -->|"true"| RETURN_NULL
    CHECK_NULL -->|"false"| FIND_SLASH
    FIND_SLASH --> COND1
    COND1 -->|"true"| SUB1_VALUE
    COND1 -->|"false"| COND2
    SUB1_VALUE -->|"true"| GET1_RETURN
    SUB1_VALUE -->|"false"| SUB1_ENABLE
    SUB1_ENABLE -->|"true"| GET1_ENABLE
    SUB1_ENABLE -->|"false"| SUB1_STATE
    SUB1_STATE -->|"true"| GET1_STATE
    SUB1_STATE -->|"false"| END_NODE

    COND2 -->|"true"| SUB2_VALUE
    COND2 -->|"false"| COND3
    SUB2_VALUE -->|"true"| GET2_RETURN
    SUB2_VALUE -->|"false"| SUB2_STATE2
    SUB2_STATE2 -->|"true"| GET2_STATE2
    SUB2_STATE2 -->|"false"| END_NODE

    COND3 -->|"true"| SUB3_VALUE
    COND3 -->|"false"| COND4
    SUB3_VALUE -->|"true"| GET3_RETURN
    SUB3_VALUE -->|"false"| SUB3_ENABLE
    SUB3_ENABLE -->|"true"| GET3_ENABLE
    SUB3_ENABLE -->|"false"| SUB3_STATE
    SUB3_STATE -->|"true"| GET3_STATE
    SUB3_STATE -->|"false"| END_NODE

    COND4 -->|"true"| SUB4_VALUE
    COND4 -->|"false"| COND5
    SUB4_VALUE -->|"true"| GET4_RETURN
    SUB4_VALUE -->|"false"| SUB4_ENABLE
    SUB4_ENABLE -->|"true"| GET4_ENABLE
    SUB4_ENABLE -->|"false"| SUB4_STATE
    SUB4_STATE -->|"true"| GET4_STATE
    SUB4_STATE -->|"false"| END_NODE

    COND5 -->|"true"| SUB5_VALUE
    COND5 -->|"false"| COND6
    SUB5_VALUE -->|"true"| GET5_RETURN
    SUB5_VALUE -->|"false"| SUB5_ENABLE
    SUB5_ENABLE -->|"true"| GET5_ENABLE
    SUB5_ENABLE -->|"false"| SUB5_STATE
    SUB5_STATE -->|"true"| GET5_STATE
    SUB5_STATE -->|"false"| END_NODE

    COND6 -->|"true"| SUB6_VALUE
    COND6 -->|"false"| COND7
    SUB6_VALUE -->|"true"| GET6_RETURN
    SUB6_VALUE -->|"false"| SUB6_ENABLE
    SUB6_ENABLE -->|"true"| GET6_ENABLE
    SUB6_ENABLE -->|"false"| SUB6_STATE
    SUB6_STATE -->|"true"| GET6_STATE
    SUB6_STATE -->|"false"| END_NODE

    COND7 -->|"true"| SUB7_VALUE
    COND7 -->|"false"| COND8
    SUB7_VALUE -->|"true"| GET7_RETURN
    SUB7_VALUE -->|"false"| SUB7_STATE2
    SUB7_STATE2 -->|"true"| GET7_STATE2
    SUB7_STATE2 -->|"false"| END_NODE

    COND8 -->|"true"| SUB8_VALUE
    COND8 -->|"false"| COND9
    SUB8_VALUE -->|"true"| GET8_RETURN
    SUB8_VALUE -->|"false"| SUB8_ENABLE
    SUB8_ENABLE -->|"true"| GET8_ENABLE
    SUB8_ENABLE -->|"false"| SUB8_STATE
    SUB8_STATE -->|"true"| GET8_STATE
    SUB8_STATE -->|"false"| END_NODE

    COND9 -->|"true"| SUB9_VALUE
    COND9 -->|"false"| COND10
    SUB9_VALUE -->|"true"| GET9_RETURN
    SUB9_VALUE -->|"false"| SUB9_STATE2
    SUB9_STATE2 -->|"true"| GET9_STATE2
    SUB9_STATE2 -->|"false"| END_NODE

    COND10 -->|"true"| SUB10_VALUE
    COND10 -->|"false"| COND11
    SUB10_VALUE -->|"true"| GET10_RETURN
    SUB10_VALUE -->|"false"| SUB10_STATE2
    SUB10_STATE2 -->|"true"| GET10_STATE2
    SUB10_STATE2 -->|"false"| END_NODE

    COND11 -->|"true"| SUB11_VALUE
    COND11 -->|"false"| COND12
    SUB11_VALUE -->|"true"| GET11_RETURN
    SUB11_VALUE -->|"false"| SUB11_STATE2
    SUB11_STATE2 -->|"true"| GET11_STATE2
    SUB11_STATE2 -->|"false"| END_NODE

    COND12 -->|"true"| SUB12_VALUE
    COND12 -->|"false"| COND13
    SUB12_VALUE -->|"true"| GET12_RETURN
    SUB12_VALUE -->|"false"| SUB12_STATE2
    SUB12_STATE2 -->|"true"| GET12_STATE2
    SUB12_STATE2 -->|"false"| END_NODE

    COND13 -->|"true"| SUB13_VALUE
    COND13 -->|"false"| NO_MATCH
    SUB13_VALUE -->|"true"| GET13_RETURN
    SUB13_VALUE -->|"false"| SUB13_STATE2
    SUB13_STATE2 -->|"true"| GET13_STATE2
    SUB13_STATE2 -->|"false"| RETURN_NULL2
    NO_MATCH --> RETURN_NULL2
    GET1_RETURN --> END_NODE
    GET1_ENABLE --> END_NODE
    GET1_STATE --> END_NODE
    GET2_RETURN --> END_NODE
    GET2_STATE2 --> END_NODE
    GET3_RETURN --> END_NODE
    GET3_ENABLE --> END_NODE
    GET3_STATE --> END_NODE
    GET4_RETURN --> END_NODE
    GET4_ENABLE --> END_NODE
    GET4_STATE --> END_NODE
    GET5_RETURN --> END_NODE
    GET5_ENABLE --> END_NODE
    GET5_STATE --> END_NODE
    GET6_RETURN --> END_NODE
    GET6_ENABLE --> END_NODE
    GET6_STATE --> END_NODE
    GET7_RETURN --> END_NODE
    GET7_STATE2 --> END_NODE
    GET8_RETURN --> END_NODE
    GET8_ENABLE --> END_NODE
    GET8_STATE --> END_NODE
    GET9_RETURN --> END_NODE
    GET9_STATE2 --> END_NODE
    GET10_RETURN --> END_NODE
    GET10_STATE2 --> END_NODE
    GET11_RETURN --> END_NODE
    GET11_STATE2 --> END_NODE
    GET12_RETURN --> END_NODE
    GET12_STATE2 --> END_NODE
    GET13_RETURN --> END_NODE
    GET13_STATE2 --> END_NODE
    RETURN_NULL --> END_NODE
    RETURN_NULL2 --> END_NODE
```

The method processes data across **13 key-based branches**, each corresponding to a distinct business field within the Security Options domain. The `key` parameter is compared using exact string equality (`equals`) against Japanese field names. Within each matching key branch, the `subkey` is compared case-insensitively (`equalsIgnoreCase`) to `"value"`, `"enable"`, or `"state"` to determine which attribute accessor to delegate to.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The **item name** (項目名) identifying which business field to load. Values correspond to Japanese labels such as `"選択区分"` (Choice Category), `"利用開始年月日"` (Subscription Start Year/Month/Day), `"オプションサービスコード"` (Optional Service Code), etc. Determines which of the 13 field branches is taken. |
| 2 | `subkey` | `String` | The **sub-key** (サブキー) specifying which attribute of the field to return. Valid values: `"value"` (the field's data value), `"enable"` (editability flag — Boolean), `"state"` (display state string — e.g., error/disabled state). Case-insensitive comparison. |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `choice_div_value` | `Boolean` | Choice category data value |
| `choice_div_enabled` | `Boolean` | Editability flag for choice category |
| `choice_div_state` | `String` | Display state of choice category |
| `use_staymd_value` | `String` | Subscription start date (year/month/day combined) |
| `use_staymd_state` | `String` | Display state of subscription start date |
| `use_staymd_year_value` | `String` | Subscription start year component |
| `use_staymd_year_enabled` | `Boolean` | Editability flag for subscription start year |
| `use_staymd_year_state` | `String` | Display state of subscription start year |
| `use_staymd_mon_value` | `String` | Subscription start month component |
| `use_staymd_mon_enabled` | `Boolean` | Editability flag for subscription start month |
| `use_staymd_mon_state` | `String` | Display state of subscription start month |
| `use_staymd_day_value` | `String` | Subscription start day component |
| `use_staymd_day_enabled` | `Boolean` | Editability flag for subscription start day |
| `use_staymd_day_state` | `String` | Display state of subscription start day |
| `kakin_um_value` | `String` | Billing existence flag value |
| `kakin_um_enabled` | `Boolean` | Editability flag for billing existence |
| `kakin_um_state` | `String` | Display state for billing existence |
| `op_svc_cd_value` | `String` | Optional service code value |
| `op_svc_cd_state` | `String` | Display state of optional service code |
| `disp_op_svc_cd_nm_value` | `String` | Display-name of optional service code |
| `disp_op_svc_cd_nm_enabled` | `Boolean` | Editability flag for display name |
| `disp_op_svc_cd_nm_state` | `String` | Display state of optional service code name |
| `op_svc_kei_stat_value` | `String` | Optional service contract status value |
| `op_svc_kei_stat_state` | `String` | Display state of service contract status |
| `svc_sta_ymd_value` | `String` | Service start date (year/month/day) |
| `svc_sta_ymd_state` | `String` | Display state of service start date |
| `rsv_psb_prd_value` | `String` | Bookable period value |
| `rsv_psb_prd_state` | `String` | Display state of bookable period |
| `first_prc_calc_ymd_value` | `String` | First charge calculation date |
| `first_prc_calc_ymd_state` | `String` | Display state of first charge calculation date |
| `add_dsl_cd_value` | `String` | Registration/cancellation code value |
| `add_dsl_cd_state` | `String` | Display state of registration/cancellation code |

## 4. CRUD Operations / Called Services

This method performs **no external database or service component calls**. It delegates entirely to its own getter methods (internal bean property accessors), which read from in-memory instance fields. There are no CBS invocations, no SC code references, and no SQL/Entity operations.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW00846SF02DBean.getChoice_div_value` | - | - (in-memory field) | Reads `choice_div_value` (Boolean) — choice category data value |
| R | `KKW00846SF02DBean.getChoice_div_enabled` | - | - (in-memory field) | Reads `choice_div_enabled` (Boolean) — editability flag for choice category |
| R | `KKW00846SF02DBean.getChoice_div_state` | - | - (in-memory field) | Reads `choice_div_state` (String) — display state of choice category |
| R | `KKW00846SF02DBean.getUse_staymd_value` | - | - (in-memory field) | Reads `use_staymd_value` (String) — subscription start date (combined) |
| R | `KKW00846SF02DBean.getUse_staymd_state` | - | - (in-memory field) | Reads `use_staymd_state` (String) — display state of subscription start date |
| R | `KKW00846SF02DBean.getUse_staymd_year_value` | - | - (in-memory field) | Reads `use_staymd_year_value` (String) — subscription start year |
| R | `KKW00846SF02DBean.getUse_staymd_year_enabled` | - | - (in-memory field) | Reads `use_staymd_year_enabled` (Boolean) — editability flag for year |
| R | `KKW00846SF02DBean.getUse_staymd_year_state` | - | - (in-memory field) | Reads `use_staymd_year_state` (String) — display state of year |
| R | `KKW00846SF02DBean.getUse_staymd_mon_value` | - | - (in-memory field) | Reads `use_staymd_mon_value` (String) — subscription start month |
| R | `KKW00846SF02DBean.getUse_staymd_mon_enabled` | - | - (in-memory field) | Reads `use_staymd_mon_enabled` (Boolean) — editability flag for month |
| R | `KKW00846SF02DBean.getUse_staymd_mon_state` | - | - (in-memory field) | Reads `use_staymd_mon_state` (String) — display state of month |
| R | `KKW00846SF02DBean.getUse_staymd_day_value` | - | - (in-memory field) | Reads `use_staymd_day_value` (String) — subscription start day |
| R | `KKW00846SF02DBean.getUse_staymd_day_enabled` | - | - (in-memory field) | Reads `use_staymd_day_enabled` (Boolean) — editability flag for day |
| R | `KKW00846SF02DBean.getUse_staymd_day_state` | - | - (in-memory field) | Reads `use_staymd_day_state` (String) — display state of day |
| R | `KKW00846SF02DBean.getKakin_um_value` | - | - (in-memory field) | Reads `kakin_um_value` (String) — billing existence flag |
| R | `KKW00846SF02DBean.getKakin_um_enabled` | - | - (in-memory field) | Reads `kakin_um_enabled` (Boolean) — editability flag for billing |
| R | `KKW00846SF02DBean.getKakin_um_state` | - | - (in-memory field) | Reads `kakin_um_state` (String) — display state of billing flag |
| R | `KKW00846SF02DBean.getOp_svc_cd_value` | - | - (in-memory field) | Reads `op_svc_cd_value` (String) — optional service code |
| R | `KKW00846SF02DBean.getOp_svc_cd_state` | - | - (in-memory field) | Reads `op_svc_cd_state` (String) — display state of service code |
| R | `KKW00846SF02DBean.getDisp_op_svc_cd_nm_value` | - | - (in-memory field) | Reads `disp_op_svc_cd_nm_value` (String) — display name of service code |
| R | `KKW00846SF02DBean.getDisp_op_svc_cd_nm_enabled` | - | - (in-memory field) | Reads `disp_op_svc_cd_nm_enabled` (Boolean) — editability flag for display name |
| R | `KKW00846SF02DBean.getDisp_op_svc_cd_nm_state` | - | - (in-memory field) | Reads `disp_op_svc_cd_nm_state` (String) — display state of service code name |
| R | `KKW00846SF02DBean.getOp_svc_kei_stat_value` | - | - (in-memory field) | Reads `op_svc_kei_stat_value` (String) — contract status value |
| R | `KKW00846SF02DBean.getOp_svc_kei_stat_state` | - | - (in-memory field) | Reads `op_svc_kei_stat_state` (String) — display state of contract status |
| R | `KKW00846SF02DBean.getSvc_sta_ymd_value` | - | - (in-memory field) | Reads `svc_sta_ymd_value` (String) — service start date |
| R | `KKW00846SF02DBean.getSvc_sta_ymd_state` | - | - (in-memory field) | Reads `svc_sta_ymd_state` (String) — display state of service start date |
| R | `KKW00846SF02DBean.getRsv_psb_prd_value` | - | - (in-memory field) | Reads `rsv_psb_prd_value` (String) — bookable period |
| R | `KKW00846SF02DBean.getRsv_psb_prd_state` | - | - (in-memory field) | Reads `rsv_psb_prd_state` (String) — display state of bookable period |
| R | `KKW00846SF02DBean.getFirst_prc_calc_ymd_value` | - | - (in-memory field) | Reads `first_prc_calc_ymd_value` (String) — first charge calculation date |
| R | `KKW00846SF02DBean.getFirst_prc_calc_ymd_state` | - | - (in-memory field) | Reads `first_prc_calc_ymd_state` (String) — display state of calculation date |
| R | `KKW00846SF02DBean.getAdd_dsl_cd_value` | - | - (in-memory field) | Reads `add_dsl_cd_value` (String) — registration/cancellation code |
| R | `KKW00846SF02DBean.getAdd_dsl_cd_state` | - | - (in-memory field) | Reads `add_dsl_cd_state` (String) — display state of registration/cancellation code |

**Summary**: 32 Read operations, 0 Create, 0 Update, 0 Delete. All operations are in-memory field reads with no database persistence.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Web:KKW00846SFBean | `KKW00846SFBean.loadModelData(key, subkey)` -> `KKW00846SF02DBean.loadModelData(key, subkey)` | `getChoice_div_value [R] in-memory` |
| 2 | Web:KKW00846SFBean | `KKW00846SFBean.loadModelData` (parent bean delegation) -> `KKW00846SF02DBean.loadModelData` (security_op_list nested bean) | `getUse_staymd_value [R] in-memory` |
| 3 | X33 UI Framework | `X33VDataTypeBeanInterface.loadModelData(key, subkey)` framework callback -> `KKW00846SF02DBean.loadModelData` | (depends on key/subkey) |

**Caller details:**

- **KKW00846SFBean**: The parent view bean for screen KKW00846SF. It creates `KKW00846SF02DBean` instances as nested data-type beans for the "セキュリティオプションリスト" (Security Option List) field (`security_op_list`). When the parent bean's `loadModelData(key, subkey)` is invoked with a nested key like `"セキュリティオプションリスト/0/選択区分/value"`, it parses the index and delegates to the appropriate `KKW00846SF02DBean` instance's `loadModelData` method.

- **X33 UI Framework**: As a method implementing `X33VDataTypeBeanInterface.loadModelData()`, this method is invoked by the X33 framework's data-binding infrastructure during screen rendering, validation, and serialization phases.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(key == null || subkey == null)` (L484)

> Null guard: if either parameter is null, return null immediately. The Japanese comment reads "項目、サブキーがnullの場合、nullを返す" (If key or subkey is null, return null).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `int separaterPoint = key.indexOf("/")` // Find first '/' separator [-> unused local variable] |
| 2 | RETURN | `return null` |

**Block 2** — [IF/ELSE-IF/ELSE-IF] `(key.equals("選択区分"))` — Choice Category — (L491)

> The data type is Boolean. Supports 3 subkeys: value, enable, state. The Japanese comment reads "データタイプがBooleanの項目"選択区分"(項目ID:choice_div)" (Item with Boolean data type "Choice Category" / Item ID: choice_div).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getChoice_div_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // subkeyが"enable"の場合、choice_div_enableのgetterの戻り値を返す (If subkey is "enable", return the choice_div_enable getter value) |
| 4 | CALL | `return getChoice_div_enabled()` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 6 | CALL | `return getChoice_div_state()` |
| 7 | ELSE | (no match) -> fall through to next key branch |

**Block 3** — [IF/ELSE-IF/ELSE-IF] `(key.equals("利用開始年月日"))` — Subscription Start Date (Combined) — (L506)

> The data type is String. Supports 2 subkeys: value, state. The Japanese comment reads "データタイプがStringの項目"利用開始年月日"(項目ID:use_staymd)" (Item with String data type "Subscription Start Year/Month/Day" / Item ID: use_staymd).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getUse_staymd_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return status) |
| 4 | CALL | `return getUse_staymd_state()` |
| 5 | ELSE | (no match) -> fall through |

**Block 4** — [IF/ELSE-IF/ELSE-IF] `(key.equals("利用開始日（年）"))` — Subscription Start Year — (L516)

> The data type is String. Supports 3 subkeys: value, enable, state. The Japanese comment reads "データタイプがStringの項目"利用開始日（年）"(項目ID:use_staymd_year)" (Item with String data type "Subscription Start Date (Year)" / Item ID: use_staymd_year).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getUse_staymd_year_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // subkeyが"enable"の場合、use_staymd_year_enableのgetterの戻り値を返す (If subkey is "enable", return the use_staymd_year_enable getter value) |
| 4 | CALL | `return getUse_staymd_year_enabled()` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 6 | CALL | `return getUse_staymd_year_state()` |
| 7 | ELSE | (no match) -> fall through |

**Block 5** — [IF/ELSE-IF/ELSE-IF] `(key.equals("利用開始日（月）"))` — Subscription Start Month — (L527)

> The data type is String. Supports 3 subkeys: value, enable, state. The Japanese comment reads "データタイプがStringの項目"利用開始日（月）"(項目ID:use_staymd_mon)" (Item with String data type "Subscription Start Date (Month)" / Item ID: use_staymd_mon).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getUse_staymd_mon_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // subkeyが"enable"の場合、use_staymd_mon_enableのgetterの戻り値を返す (If subkey is "enable", return the use_staymd_mon_enable getter value) |
| 4 | CALL | `return getUse_staymd_mon_enabled()` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 6 | CALL | `return getUse_staymd_mon_state()` |
| 7 | ELSE | (no match) -> fall through |

**Block 6** — [IF/ELSE-IF/ELSE-IF] `(key.equals("利用開始日（日）"))` — Subscription Start Day — (L538)

> The data type is String. Supports 3 subkeys: value, enable, state. The Japanese comment reads "データタイプがStringの項目"利用開始日（日）"(項目ID:use_staymd_day)" (Item with String data type "Subscription Start Date (Day)" / Item ID: use_staymd_day).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getUse_staymd_day_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // subkeyが"enable"の場合、use_staymd_day_enableのgetterの戻り値を返す (If subkey is "enable", return the use_staymd_day_enable getter value) |
| 4 | CALL | `return getUse_staymd_day_enabled()` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 6 | CALL | `return getUse_staymd_day_state()` |
| 7 | ELSE | (no match) -> fall through |

**Block 7** — [IF/ELSE-IF/ELSE-IF] `(key.equals("課金有無"))` — Billing Existence — (L549)

> The data type is String. Supports 3 subkeys: value, enable, state. The Japanese comment reads "データタイプがStringの項目"課金有無"(項目ID:kakin_um)" (Item with String data type "Billing Existence" / Item ID: kakin_um).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getKakin_um_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // subkeyが"enable"の場合、kakin_um_enableのgetterの戻り値を返す (If subkey is "enable", return the kakin_um_enable getter value) |
| 4 | CALL | `return getKakin_um_enabled()` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 6 | CALL | `return getKakin_um_state()` |
| 7 | ELSE | (no match) -> fall through |

**Block 8** — [IF/ELSE-IF/ELSE-IF] `(key.equals("オプションサービスコード"))` — Optional Service Code — (L560)

> The data type is String. Supports 2 subkeys: value, state. The Japanese comment reads "データタイプがStringの項目"オプションサービスコード"(項目ID:op_svc_cd)" (Item with String data type "Optional Service Code" / Item ID: op_svc_cd).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getOp_svc_cd_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 4 | CALL | `return getOp_svc_cd_state()` |
| 5 | ELSE | (no match) -> fall through |

**Block 9** — [IF/ELSE-IF/ELSE-IF] `(key.equals("表示用オプションサービスコード名称"))` — Display-Name of Optional Service Code — (L571)

> The data type is String. Supports 3 subkeys: value, enable, state. The Japanese comment reads "データタイプがStringの項目"表示用オプションサービスコード名称"(項目ID:disp_op_svc_cd_nm)" (Item with String data type "Display-Name of Optional Service Code" / Item ID: disp_op_svc_cd_nm).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getDisp_op_svc_cd_nm_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // subkeyが"enable"の場合、disp_op_svc_cd_nm_enableのgetterの戻り値を返す (If subkey is "enable", return the disp_op_svc_cd_nm_enable getter value) |
| 4 | CALL | `return getDisp_op_svc_cd_nm_enabled()` |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 6 | CALL | `return getDisp_op_svc_cd_nm_state()` |
| 7 | ELSE | (no match) -> fall through |

**Block 10** — [IF/ELSE-IF/ELSE-IF] `(key.equals("オプションサービス契約ステータス"))` — Optional Service Contract Status — (L582)

> The data type is String. Supports 2 subkeys: value, state. The Japanese comment reads "データタイプがStringの項目"オプションサービス契約ステータス"(項目ID:op_svc_kei_stat)" (Item with String data type "Optional Service Contract Status" / Item ID: op_svc_kei_stat).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getOp_svc_kei_stat_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 4 | CALL | `return getOp_svc_kei_stat_state()` |
| 5 | ELSE | (no match) -> fall through |

**Block 11** — [IF/ELSE-IF/ELSE-IF] `(key.equals("サービス開始年月日"))` — Service Start Date — (L593)

> The data type is String. Supports 2 subkeys: value, state. The Japanese comment reads "データタイプがStringの項目"サービス開始年月日"(項目ID:svc_sta_ymd)" (Item with String data type "Service Start Year/Month/Day" / Item ID: svc_sta_ymd).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getSvc_sta_ymd_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 4 | CALL | `return getSvc_sta_ymd_state()` |
| 5 | ELSE | (no match) -> fall through |

**Block 12** — [IF/ELSE-IF/ELSE-IF] `(key.equals("予約可能期間"))` — Bookable Period — (L604)

> The data type is String. Supports 2 subkeys: value, state. The Japanese comment reads "データタイプがStringの項目"予約可能期間"(項目ID:rsv_psb_prd)" (Item with String data type "Bookable Period" / Item ID: rsv_psb_prd).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getRsv_psb_prd_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 4 | CALL | `return getRsv_psb_prd_state()` |
| 5 | ELSE | (no match) -> fall through |

**Block 13** — [IF/ELSE-IF/ELSE-IF] `(key.equals("初回料金計算日"))` — First Charge Calculation Date — (L615)

> The data type is String. Supports 2 subkeys: value, state. The Japanese comment reads "データタイプがStringの項目"初回料金計算日"(項目ID:first_prc_calc_ymd)" (Item with String data type "First Charge Calculation Date" / Item ID: first_prc_calc_ymd).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getFirst_prc_calc_ymd_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 4 | CALL | `return getFirst_prc_calc_ymd_state()` |
| 5 | ELSE | (no match) -> fall through |

**Block 14** — [IF/ELSE-IF/ELSE-IF] `(key.equals("登録解除コード"))` — Registration/Cancellation Code — (L626)

> The data type is String. Supports 2 subkeys: value, state. The Japanese comment reads "データタイプがStringの項目"登録解除コード"(項目ID:add_dsl_cd)" (Item with String data type "Registration/Cancellation Code" / Item ID: add_dsl_cd).

| # | Type | Code |
|---|------|------|
| 1 | IF-SUB | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getAdd_dsl_cd_value()` |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status) |
| 4 | CALL | `return getAdd_dsl_cd_state()` |
| 5 | ELSE | (no match) -> fall through |

**Block 15** — [ELSE] `return null` (L636)

> Japanese comment reads "条件に一致するプロパティが存在しない場合は、nullを返す" (If no matching property exists, return null). This is the default return for unrecognized keys or unsupported subkey values.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `選択区分` | Field | Choice Category — the classification or type of option selected within the security options area |
| `choice_div` | Field (internal ID) | Choice category — internal bean property ID prefix for the Choice Category field |
| `利用開始年月日` | Field | Subscription Start Date (Combined) — the date when the service subscription begins (year/month/day combined as a single field) |
| `use_staymd` | Field (internal ID) | Use start date (combined) — internal bean property ID prefix; "stay" = 利用 (use), "md" = month/day |
| `利用開始日（年）` | Field | Subscription Start Year — the year component of the subscription start date |
| `use_staymd_year` | Field (internal ID) | Subscription start year — internal bean property ID prefix |
| `利用開始日（月）` | Field | Subscription Start Month — the month component of the subscription start date |
| `use_staymd_mon` | Field (internal ID) | Subscription start month — internal bean property ID prefix |
| `利用開始日（日）` | Field | Subscription Start Day — the day component of the subscription start date |
| `use_staymd_day` | Field (internal ID) | Subscription start day — internal bean property ID prefix |
| `課金有無` | Field | Billing Existence — whether billing is enabled (yes/no flag) for the selected option |
| `kakin_um` | Field (internal ID) | Billing flag — "kakin" = 課金 (billing), "um" = 有無 (existence/presence) |
| `オプションサービスコード` | Field | Optional Service Code — the code identifying a specific optional/add-on service |
| `op_svc_cd` | Field (internal ID) | Optional service code — internal bean property ID prefix |
| `表示用オプションサービスコード名称` | Field | Display-Name of Optional Service Code — the human-readable label for the optional service code |
| `disp_op_svc_cd_nm` | Field (internal ID) | Display-name of optional service code — "disp" = 表示用 (for display), "nm" = 名称 (name) |
| `オプションサービス契約ステータス` | Field | Optional Service Contract Status — the current status of the optional service contract |
| `op_svc_kei_stat` | Field (internal ID) | Optional service contract status — "kei" = 契約 (contract), "stat" = ステータス (status) |
| `サービス開始年月日` | Field | Service Start Date — the date when the service itself begins (year/month/day combined) |
| `svc_sta_ymd` | Field (internal ID) | Service start date — "svc" = service, "sta" = 開始 (start), "ymd" = year/month/day |
| `予約可能期間` | Field | Bookable Period — the period during which the service can be booked/reserved |
| `rsv_psb_prd` | Field (internal ID) | Reservation possible period — "rsv" = 予約 (reservation), "psb" = 可能 (possible), "prd" = 期間 (period) |
| `初回料金計算日` | Field | First Charge Calculation Date — the date on which the first service charge is calculated |
| `first_prc_calc_ymd` | Field (internal ID) | First price calculation date — "prc" = 料金 (charge/price), "calc" = 計算 (calculation) |
| `登録解除コード` | Field | Registration/Cancellation Code — the code that classifies whether this entry is a new registration or a cancellation |
| `add_dsl_cd` | Field (internal ID) | Add/DSL code — "add" = 登録 (registration/add), "dsl" = 解除 (cancellation) |
| Security Option | Business term | セキュリティオプション — optional add-on security features or services within the K-Opticom telecom platform |
| Security Option List | Field | セキュリティオプションリスト — a list-type (repeating) field containing multiple Security Option entries, each modeled as a `KKW00846SF02DBean` instance |
| value | Subkey | Returns the data value of the field (String or Boolean depending on field type) |
| enable | Subkey | Returns the editability flag (Boolean) — whether the field is editable in the UI |
| state | Subkey | Returns the display state (String) — UI state information such as error or disabled indicators |
| X33 | Technical | Fujitsu's Web Client Application Framework — the underlying UI component architecture for enterprise web applications |
| X33VDataTypeBeanInterface | Technical | Interface defining the contract for data-type beans in the X33 framework, including `loadModelData()` and `storeModelData()` |
| KKW00846SF | Module | K-Opticom security option management screen module; the "SF" suffix indicates it is a screen (フォーム) module |
| KKW00846SF02DBean | Component | Detail-type data bean for the Security Option List; implements data-type bean and list interface contracts |

---
# NOSONAR
