# Business Logic — KKW00846SF03DBean.loadModelData() [103 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA18001SF.KKW00846SF03DBean` |
| Layer | Service Component / View Bean (Web presentation data routing) |
| Module | `KKA18001SF` (Package: `eo.web.webview.KKA18001SF`) |

## 1. Role

### KKW00846SF03DBean.loadModelData()

This method serves as a **unified data accessor** (getter router) for the `KKW00846SF03DBean` view bean, which represents "Option Service Contract List Details" (オプションサービス契約一覧照会詳細) in the K-Opticom telecom service management system. It implements a **routing/dispatch pattern** — the method receives a `key` parameter identifying a business property by its human-readable Japanese label, and a `subkey` parameter specifying whether the caller wants the property's `"value"` or `"state"`. Based on this two-level lookup, it delegates to one of 18 internal getter methods (9 properties x 2 access modes).

The method handles **9 distinct service-type properties** related to option service contracts: contract number, contract status, service code, service code name, service start request date, reservation application date, service start date, service charge start date, and first billing calculation date. Each property can be accessed in two modes: `"value"` (the actual data value as a String) or `"state"` (the field's edit/validation state flag as a String).

This method plays a **central role in the web view data binding framework** (Fujitsu Futurity X33). The X33VViewBaseBean framework uses `loadModelData` as part of its standard bean contract to lazily retrieve display values and validation states for form fields and list items. It is called by the parent bean `KKW00846SFBean` when populating list-based UI components (data type beans) — specifically, when a data-type view bean's `loadModelData` is invoked, this method routes the request to the correct internal getter.

The method also includes an **early null guard**: if either `key` or `subkey` is `null`, it returns `null` immediately. And if no matching property key is found, it falls through to a default `null` return at line 415.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModelData(String key, String subkey)"])

    START --> NULL_CHECK["Check: key == null OR subkey == null"]

    NULL_CHECK -->|Yes| NULL_RET["Return null"]
    NULL_CHECK -->|No| FIND_SEP["Find separator index in key"]

    FIND_SEP --> BRANCH1["key equals 'オプションサービス契約番号'"]

    BRANCH1 -->|Yes| SUB1["subkey equalsIgnoreCase 'value'?"]
    BRANCH1 -->|No| BRANCH2["key equals 'オプションサービス契約ステータス'"]

    SUB1 -->|Yes| GET_OPSVCKEINO_VAL["Return getOp_svc_kei_no_value()"]
    SUB1 -->|No| SUB1_S["subkey equalsIgnoreCase 'state'?"]

    SUB1_S -->|Yes| GET_OPSVCKEINO_ST["Return getOp_svc_kei_no_state()"]
    SUB1_S -->|No| BRANCH2

    BRANCH2 -->|Yes| SUB2["subkey equalsIgnoreCase 'value'?"]
    BRANCH2 -->|No| BRANCH3["key equals 'オプションサービスコード'"]

    SUB2 -->|Yes| GET_OPSVCKEIST_VAL["Return getOp_svc_kei_stat_value()"]
    SUB2 -->|No| SUB2_S["subkey equalsIgnoreCase 'state'?"]

    SUB2_S -->|Yes| GET_OPSVCKEIST_ST["Return getOp_svc_kei_stat_state()"]
    SUB2_S -->|No| BRANCH3

    BRANCH3 -->|Yes| SUB3["subkey equalsIgnoreCase 'value'?"]
    BRANCH3 -->|No| BRANCH4["key equals 'オプションサービスコード名称'"]

    SUB3 -->|Yes| GET_OPSVCCD_VAL["Return getOp_svc_cd_value()"]
    SUB3 -->|No| SUB3_S["subkey equalsIgnoreCase 'state'?"]

    SUB3_S -->|Yes| GET_OPSVCCD_ST["Return getOp_svc_cd_state()"]
    SUB3_S -->|No| BRANCH4

    BRANCH4 -->|Yes| SUB4["subkey equalsIgnoreCase 'value'?"]
    BRANCH4 -->|No| BRANCH5["key equals 'サービス利用開始希望年月日'"]

    SUB4 -->|Yes| GET_OPSVCCD_NM_VAL["Return getOp_svc_cd_nm_value()"]
    SUB4 -->|No| SUB4_S["subkey equalsIgnoreCase 'state'?"]

    SUB4_S -->|Yes| GET_OPSVCCD_NM_ST["Return getOp_svc_cd_nm_state()"]
    SUB4_S -->|No| BRANCH5

    BRANCH5 -->|Yes| SUB5["subkey equalsIgnoreCase 'value'?"]
    BRANCH5 -->|No| BRANCH6["key equals '予約適用年月日'"]

    SUB5 -->|Yes| GET_SVCUSESTA_VAL["Return getSvc_use_sta_kibo_ymd_value()"]
    SUB5 -->|No| SUB5_S["subkey equalsIgnoreCase 'state'?"]

    SUB5_S -->|Yes| GET_SVCUSESTA_ST["Return getSvc_use_sta_kibo_ymd_state()"]
    SUB5_S -->|No| BRANCH6

    BRANCH6 -->|Yes| SUB6["subkey equalsIgnoreCase 'value'?"]
    BRANCH6 -->|No| BRANCH7["key equals 'サービス開始年月日'"]

    SUB6 -->|Yes| GET_RSVALPY_VAL["Return getRsv_aply_ymd_value()"]
    SUB6 -->|No| SUB6_S["subkey equalsIgnoreCase 'state'?"]

    SUB6_S -->|Yes| GET_RSVALPY_ST["Return getRsv_aply_ymd_state()"]
    SUB6_S -->|No| BRANCH7

    BRANCH7 -->|Yes| SUB7["subkey equalsIgnoreCase 'value'?"]
    BRANCH7 -->|No| BRANCH8["key equals 'サービス開始年月日'"]

    SUB7 -->|Yes| GET_SVCSTAYMD_VAL["Return getSvc_sta_ymd_value()"]
    SUB7 -->|No| SUB7_S["subkey equalsIgnoreCase 'state'?"]

    SUB7_S -->|Yes| GET_SVCSTAYMD_ST["Return getSvc_sta_ymd_state()"]
    SUB7_S -->|No| BRANCH8

    BRANCH8 -->|Yes| SUB8["subkey equalsIgnoreCase 'value'?"]
    BRANCH8 -->|No| BRANCH9["key equals '初回料金計算日'"]

    SUB8 -->|Yes| GET_SVCSTAYMD_CHG_VAL["Return getSvc_chrg_staymd_value()"]
    SUB8 -->|No| SUB8_S["subkey equalsIgnoreCase 'state'?"]

    SUB8_S -->|Yes| GET_SVCSTAYMD_CHG_ST["Return getSvc_chrg_staymd_state()"]
    SUB8_S -->|No| BRANCH9

    BRANCH9 -->|Yes| SUB9["subkey equalsIgnoreCase 'value'?"]
    BRANCH9 -->|No| NO_MATCH["No matching property found"]

    SUB9 -->|Yes| GET_FIRSTPRC_VAL["Return getFirst_prc_calc_ymd_value()"]
    SUB9 -->|No| SUB9_S["subkey equalsIgnoreCase 'state'?"]

    SUB9_S -->|Yes| GET_FIRSTPRC_ST["Return getFirst_prc_calc_ymd_state()"]
    SUB9_S -->|No| NO_MATCH

    NO_MATCH --> DEFAULT_NULL["Return null"]

    GET_OPSVCKEINO_VAL --> END_N["Return / Next"]
    GET_OPSVCKEINO_ST --> END_N
    GET_OPSVCKEIST_VAL --> END_N
    GET_OPSVCKEIST_ST --> END_N
    GET_OPSVCCD_VAL --> END_N
    GET_OPSVCCD_ST --> END_N
    GET_OPSVCCD_NM_VAL --> END_N
    GET_OPSVCCD_NM_ST --> END_N
    GET_SVCUSESTA_VAL --> END_N
    GET_SVCUSESTA_ST --> END_N
    GET_RSVALPY_VAL --> END_N
    GET_RSVALPY_ST --> END_N
    GET_SVCSTAYMD_VAL --> END_N
    GET_SVCSTAYMD_ST --> END_N
    GET_SVCSTAYMD_CHG_VAL --> END_N
    GET_SVCSTAYMD_CHG_ST --> END_N
    GET_FIRSTPRC_VAL --> END_N
    GET_FIRSTPRC_ST --> END_N
    NULL_RET --> END_N
    DEFAULT_NULL --> END_N
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The human-readable Japanese label identifying which service contract property to access. Values include: "オプションサービス契約番号" (Option Service Contract Number), "オプションサービス契約ステータス" (Option Service Contract Status), "オプションサービスコード" (Option Service Code), "オプションサービスコード名称" (Option Service Code Name), "サービス利用開始希望年月日" (Service Usage Start Desired Date), "予約適用年月日" (Reservation Application Date), "サービス開始年月日" (Service Start Date), "サービス開始年月日" (Service Start Date — second occurrence), "初回料金計算日" (First Billing Calculation Date). Each key maps to a specific bean property that stores option service contract information. |
| 2 | `subkey` | `String` | Specifies the access mode for the requested property. Can be `"value"` (returns the actual data value of the property as a String) or `"state"` (returns the field's state/edit flag as a String). The comparison is case-insensitive (`equalsIgnoreCase`). This dual-mode pattern allows the X33 web framework to distinguish between displaying data and checking field validation/editability. |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `op_svc_kei_no_value` | `String` | Option service contract number — the unique identifier for an option service line item |
| `op_svc_kei_no_state` | `String` | Edit/validation state flag for the contract number field |
| `op_svc_kei_stat_value` | `String` | Option service contract status — e.g., active, canceled, pending |
| `op_svc_kei_stat_state` | `String` | Edit/validation state flag for the contract status field |
| `op_svc_cd_value` | `String` | Option service code — a code identifying the specific option service type |
| `op_svc_cd_state` | `String` | Edit/validation state flag for the service code field |
| `op_svc_cd_nm_value` | `String` | Option service code name — the human-readable name of the service code |
| `op_svc_cd_nm_state` | `String` | Edit/validation state flag for the service code name field |
| `svc_use_sta_kibo_ymd_value` | `String` | Service usage start desired date (year/month/day) — customer's requested start date |
| `svc_use_sta_kibo_ymd_state` | `String` | Edit/validation state flag for the start date field |
| `rsv_aply_ymd_value` | `String` | Reservation application date (year/month/day) — date the reservation was applied |
| `rsv_aply_ymd_state` | `String` | Edit/validation state flag for the reservation date field |
| `svc_sta_ymd_value` | `String` | Service start date (year/month/day) — actual service activation date |
| `svc_sta_ymd_state` | `String` | Edit/validation state flag for the service start date field |
| `svc_chrg_staymd_value` | `String` | Service charge start date (year/month/day) — date billing begins |
| `svc_chrg_staymd_state` | `String` | Edit/validation state flag for the charge start date field |
| `first_prc_calc_ymd_value` | `String` | First billing calculation date (year/month/day) — date of first charge calculation |
| `first_prc_calc_ymd_state` | `String` | Edit/validation state flag for the first billing date field |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW00846SF03DBean.getFirst_prc_calc_ymd_state` | KKW00846SF03DBean | - | Returns the state flag for the first billing calculation date field |
| R | `KKW00846SF03DBean.getFirst_prc_calc_ymd_value` | KKW00846SF03DBean | - | Returns the value of the first billing calculation date field |
| R | `KKW00846SF03DBean.getOp_svc_cd_nm_state` | KKW00846SF03DBean | - | Returns the state flag for the option service code name field |
| R | `KKW00846SF03DBean.getOp_svc_cd_nm_value` | KKW00846SF03DBean | - | Returns the value of the option service code name field |
| R | `KKW00846SF03DBean.getOp_svc_cd_state` | KKW00846SF03DBean | - | Returns the state flag for the option service code field |
| R | `KKW00846SF03DBean.getOp_svc_cd_value` | KKW00846SF03DBean | - | Returns the value of the option service code field |
| R | `KKW00846SF03DBean.getOp_svc_kei_no_state` | KKW00846SF03DBean | - | Returns the state flag for the option service contract number field |
| R | `KKW00846SF03DBean.getOp_svc_kei_no_value` | KKW00846SF03DBean | - | Returns the value of the option service contract number field |
| R | `KKW00846SF03DBean.getOp_svc_kei_stat_state` | KKW00846SF03DBean | - | Returns the state flag for the option service contract status field |
| R | `KKW00846SF03DBean.getOp_svc_kei_stat_value` | KKW00846SF03DBean | - | Returns the value of the option service contract status field |
| R | `KKW00846SF03DBean.getRsv_aply_ymd_state` | KKW00846SF03DBean | - | Returns the state flag for the reservation application date field |
| R | `KKW00846SF03DBean.getRsv_aply_ymd_value` | KKW00846SF03DBean | - | Returns the value of the reservation application date field |
| R | `KKW00846SF03DBean.getSvc_chrg_staymd_state` | KKW00846SF03DBean | - | Returns the state flag for the service charge start date field |
| R | `KKW00846SF03DBean.getSvc_chrg_staymd_value` | KKW00846SF03DBean | - | Returns the value of the service charge start date field |
| R | `KKW00846SF03DBean.getSvc_sta_ymd_state` | KKW00846SF03DBean | - | Returns the state flag for the service start date field |
| R | `KKW00846SF03DBean.getSvc_sta_ymd_value` | KKW00846SF03DBean | - | Returns the value of the service start date field |
| R | `KKW00846SF03DBean.getSvc_use_sta_kibo_ymd_state` | KKW00846SF03DBean | - | Returns the state flag for the service usage start desired date field |
| R | `KKW00846SF03DBean.getSvc_use_sta_kibo_ymd_value` | KKW00846SF03DBean | - | Returns the value of the service usage start desired date field |

**CRUD Summary:**

This method performs **exclusively Read (R) operations**. It is a pure accessor — it does not create, update, or delete any data, nor does it invoke any external SC (Service Component) or CBS (Common Business Service). All called methods are internal JavaBean getters within the same class (`KKW00846SF03DBean`), which simply return the current values of instance fields. There are **zero database or service layer interactions** in this method.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW00846SFBean (list data bean) | `KKW00846SFBean.getModelData(key, subkey)` -> `KKW00846SF03DBean.loadModelData(key, subkey)` | `getOp_svc_kei_no_value [R] in-memory` |
| 2 | Screen:KKW00846SFBean (list data bean) | `KKW00846SFBean.getModelData(key, subkey)` -> `KKW00846SF03DBean.loadModelData(key, subkey)` (via X33VListedBeanInterface) | `getOp_svc_cd_value [R] in-memory` |
| 3 | Screen:KKW00846SFBean (list data bean) | `KKW00846SFBean.getListData(key, index)` -> `KKW00846SF03DBean.loadModelData(subkey)` (for list item data-type beans) | `getSvc_sta_ymd_value [R] in-memory` |
| 4 | Screen:KKW00846SFBean (list data bean) | `KKW00846SFBean.getSaveData(key, index)` -> `KKW00846SF03DBean.loadModelData(subkey)` (for saving list item data) | `getFirst_prc_calc_ymd_value [R] in-memory` |
| 5 | X33 Framework (auto-generated) | `X33VViewBaseBean` lifecycle -> `KKW00846SF03DBean.loadModelData(key, subkey)` (as part of data-type bean interface) | All 18 getters [R] in-memory |

**How callers use this method:**
- **KKW00846SFBean** (the parent master/detail bean) creates `KKW00846SF03DBean` instances as nested list data beans for the "オプションサービス契約一覧照会詳細" (Option Service Contract List Inquiry Details) data-type view bean. When the framework or the parent bean needs to read/write data from/to these list items, it calls `loadModelData` on each `KKW00846SF03DBean` instance.
- The **X33 Framework** (Fujitsu Futurity) calls `loadModelData` as part of its standard bean lifecycle for data-type view beans, allowing the UI to dynamically retrieve field values and states for display in list-based screen components.

## 6. Per-Branch Detail Blocks

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

> Null guard: if either the property name key or the access mode subkey is null, return null immediately. This prevents NPE and signals "no data available" to the caller.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `if(key == null || subkey == null)` // Returns null if either param is null |
| 2 | RETURN | `return null;` // 項目,サブキーがnullの場合、nullを返す (Return null if item name or subkey is null) |

---

**Block 2** — [EXEC] `(key.indexOf("/"))` (L319)

> Calculate the separator index in the key. Note: the result is never used — this appears to be a dead variable assignment (the variable `separaterPoint` is declared but never referenced in subsequent code).

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

---

**Block 3** — [IF/ELSE-IF CHAIN] `key.equals(...)` (L322–415)

> Main dispatch logic: 9 nested if/else-if branches, each checking a specific Japanese property label. Within each branch, a nested if/else-if checks the subkey ("value" or "state") and delegates to the appropriate getter.

**Block 3.1** — [IF] `key.equals("オプションサービス契約番号")` [オプションサービス契約番号 = "Option Service Contract Number"] (L322)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `if(key.equals("オプションサービス契約番号"))` // Data type String item: "Option Service Contract Number" (item ID: op_svc_kei_no) |

**Block 3.1.1** — [IF] `subkey.equalsIgnoreCase("value")` (L323)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getOp_svc_kei_no_value();` // Return the contract number value |

**Block 3.1.2** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L325)

> subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getOp_svc_kei_no_state();` // Return the contract number state flag |

---

**Block 3.2** — [ELSE-IF] `key.equals("オプションサービス契約ステータス")` [オプションサービス契約ステータス = "Option Service Contract Status"] (L332)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `else if(key.equals("オプションサービス契約ステータス"))` // Data type String item: "Option Service Contract Status" (item ID: op_svc_kei_stat) |

**Block 3.2.1** — [IF] `subkey.equalsIgnoreCase("value")` (L333)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getOp_svc_kei_stat_value();` // Return the contract status value |

**Block 3.2.2** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L335)

> subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getOp_svc_kei_stat_state();` // Return the contract status state flag |

---

**Block 3.3** — [ELSE-IF] `key.equals("オプションサービスコード")` [オプションサービスコード = "Option Service Code"] (L342)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `else if(key.equals("オプションサービスコード"))` // Data type String item: "Option Service Code" (item ID: op_svc_cd) |

**Block 3.3.1** — [IF] `subkey.equalsIgnoreCase("value")` (L343)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getOp_svc_cd_value();` // Return the service code value |

**Block 3.3.2** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L345)

> subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getOp_svc_cd_state();` // Return the service code state flag |

---

**Block 3.4** — [ELSE-IF] `key.equals("オプションサービスコード名称")` [オプションサービスコード名称 = "Option Service Code Name"] (L352)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `else if(key.equals("オプションサービスコード名称"))` // Data type String item: "Option Service Code Name" (item ID: op_svc_cd_nm) |

**Block 3.4.1** — [IF] `subkey.equalsIgnoreCase("value")` (L353)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getOp_svc_cd_nm_value();` // Return the service code name value |

**Block 3.4.2** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L355)

> subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getOp_svc_cd_nm_state();` // Return the service code name state flag |

---

**Block 3.5** — [ELSE-IF] `key.equals("サービス利用開始希望年月日")` [サービス利用開始希望年月日 = "Service Usage Start Desired Date"] (L362)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `else if(key.equals("サービス利用開始希望年月日"))` // Data type String item: "Service Usage Start Desired Date" (item ID: svc_use_sta_kibo_ymd) |

**Block 3.5.1** — [IF] `subkey.equalsIgnoreCase("value")` (L363)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_use_sta_kibo_ymd_value();` // Return the desired start date value |

**Block 3.5.2** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L365)

> subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_use_sta_kibo_ymd_state();` // Return the desired start date state flag |

---

**Block 3.6** — [ELSE-IF] `key.equals("予約適用年月日")` [予約適用年月日 = "Reservation Application Date"] (L372)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `else if(key.equals("予約適用年月日"))` // Data type String item: "Reservation Application Date" (item ID: rsv_aply_ymd) |

**Block 3.6.1** — [IF] `subkey.equalsIgnoreCase("value")` (L373)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getRsv_aply_ymd_value();` // Return the reservation application date value |

**Block 3.6.2** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L375)

> subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getRsv_aply_ymd_state();` // Return the reservation application date state flag |

---

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

> Data type String item: "Service Start Date" (item ID: svc_sta_ymd)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `else if(key.equals("サービス開始年月日"))` // Data type String item: "Service Start Date" (item ID: svc_sta_ymd) |

**Block 3.7.1** — [IF] `subkey.equalsIgnoreCase("value")` (L383)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_sta_ymd_value();` // Return the service start date value |

**Block 3.7.2** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L385)

> subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_sta_ymd_state();` // Return the service start date state flag |

---

**Block 3.8** — [ELSE-IF] `key.equals("サービス開始年月日")` [サービス開始年月日 = "Service Charge Start Date"] (L392)

> Data type String item: "Service Charge Start Date" (item ID: svc_chrg_staymd). Note: the Japanese key text is identical to Block 3.7 ("サービス開始年月日"), but the item ID is different (svc_chrg_staymd vs svc_sta_ymd). This is a potential bug — both branches use the same string literal.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `else if(key.equals("サービス開始年月日"))` // Data type String item: "Service Charge Start Date" (item ID: svc_chrg_staymd) |

**Block 3.8.1** — [IF] `subkey.equalsIgnoreCase("value")` (L393)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_chrg_staymd_value();` // Return the service charge start date value |

**Block 3.8.2** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L395)

> subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getSvc_chrg_staymd_state();` // Return the service charge start date state flag |

---

**Block 3.9** — [ELSE-IF] `key.equals("初回料金計算日")` [初回料金計算日 = "First Billing Calculation Date"] (L402)

> Data type String item: "First Billing Calculation Date" (item ID: first_prc_calc_ymd)

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `else if(key.equals("初回料金計算日"))` // Data type String item: "First Billing Calculation Date" (item ID: first_prc_calc_ymd) |

**Block 3.9.1** — [IF] `subkey.equalsIgnoreCase("value")` (L403)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getFirst_prc_calc_ymd_value();` // Return the first billing calculation date value |

**Block 3.9.2** — [ELSE-IF] `subkey.equalsIgnoreCase("state")` (L405)

> subkeyが"state"の場合、ステータスを返す (If subkey is "state", return the status)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return getFirst_prc_calc_ymd_state();` // Return the first billing calculation date state flag |

---

**Block 4** — [ELSE] `(no condition) DEFAULT FALLTHROUGH` (L415)

> 条件に一致するプロパティが存在しない場合は、nullを返す (If no property matches the condition, return null)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // No matching property exists, return null |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `op_svc_kei_no` | Field | Option Service Contract Number — the unique identifier for an option service line item within a customer contract |
| `op_svc_kei_stat` | Field | Option Service Contract Status — current status of the option service contract (e.g., active, terminated, pending) |
| `op_svc_cd` | Field | Option Service Code — a code identifying the specific type of option service (e.g., additional bandwidth, backup service) |
| `op_svc_cd_nm` | Field | Option Service Code Name — the human-readable display name of the option service code |
| `svc_use_sta_kibo_ymd` | Field | Service Usage Start Desired Date (year/month/day) — the date the customer requests to begin using the service |
| `rsv_aply_ymd` | Field | Reservation Application Date (year/month/day) — the date when a service reservation application was submitted |
| `svc_sta_ymd` | Field | Service Start Date (year/month/day) — the actual date when the service was activated/started |
| `svc_chrg_staymd` | Field | Service Charge Start Date (year/month/day) — the date from which billing/charges begin for the service |
| `first_prc_calc_ymd` | Field | First Billing Calculation Date (year/month/day) — the date of the first charge/billing calculation |
| `key` | Parameter | Item name — the human-readable Japanese label used to identify which field's data to retrieve |
| `subkey` | Parameter | Sub-key — specifies the data access mode: `"value"` for the actual field value or `"state"` for the field's state flag |
| KKW00846SF03DBean | Class | Option Service Contract List Details data bean — a data-type view bean (data-type bean) that represents one row in the option service contract list within the KKW00846SF screen module |
| KKW00846SFBean | Class | Parent master/detail bean for the KKW00846SF service inquiry screen — creates and manages lists of detail data beans including KKW00846SF03DBean |
| KKA18001SF | Module | Parent service module — the overarching service functionality package containing the option service inquiry screens |
| X33VViewBaseBean | Class | Fujitsu Futurity X33 framework base bean — provides the foundation for web view data beans in the X33 framework |
| X33VDataTypeBeanInterface | Interface | X33 framework interface for data-type beans — defines the `loadModelData` contract used by the framework to retrieve field values |
| X33VListedBeanInterface | Interface | X33 framework interface for listed (multi-row) beans — defines list management methods like `listKoumokuIds` and `addElementToListData` |
| Option Service (オプションサービス) | Business term | Additional/ancillary services offered alongside the primary telecom service (e.g., extra bandwidth, premium support, backup connectivity) |
| Contract Number (契約番号) | Business term | Unique identifier for a service contract line item in the K-Opticom billing and service management system |
| X33 Framework | Technical term | Fujitsu Futurity web application framework providing bean-based data binding for JavaServer Faces (JSF) applications |