# Business Logic — KKW01033SF01DBean.loadModelData() [131 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW01033SF.KKW01033SF01DBean` |
| Layer | Service / Data Bean (View data binding component) |
| Module | `KKW01033SF` (Package: `eo.web.webview.KKW01033SF`) |

## 1. Role

### KKW01033SF01DBean.loadModelData()

This method serves as the central data-dispatching entry point for the KKW01033SF screen's view data binding layer. It implements the `X33VDataTypeBeanInterface.loadModelData()` contract defined by the Fujitsu Futurity X33 web framework, enabling dynamic access to the bean's model properties through string-based key/subkey lookup rather than direct method calls.

The method performs a **routing/dispatch pattern**: it examines the `key` parameter — which represents a business field name (e.g., "SYSID", "サービス契約番号" (Service Contract Number), "異動理由コード" (Movement Reason Code)) — and branches to retrieve either the field's value ("value") or its edit state ("state") via the corresponding getter. This two-argument key/subkey scheme allows the X33 framework's data binding engine to resolve field references at runtime without compile-time knowledge of individual property names.

It supports **10 data types**: SYSID (item ID), Service Contract Number, Service Contract Detail Number, Movement Classification (change/relocation type), Movement Reason Code (special indexed-list handling), Application Number, Application Detail Number, Popup Mode, Movement Classification Selection Screen Transition Pattern, and External System Code. The method is used as a **shared utility** — the parent bean `KKW01033SFBean` creates `KKW01033SF01DBean` instances and delegates field access through this method during screen initialization and data binding phases.

For the "異動理由コード" (Movement Reason Code) branch, the method handles a **special indexed-list scenario** where the key contains a slash separator (`/`) followed by an index or the wildcard `*`. It supports retrieving the list size, a specific list element by index, or delegating subkey access to each element's own `loadModelData()`. This enables dynamic population of dropdowns or repeater fields in the UI.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> COND_NULL["key == null || subkey == null"]
    COND_NULL -->|Yes| RET_NULL1["Return null"]
    COND_NULL -->|No| FIND_SEP["Find '/' in key"]

    FIND_SEP --> COND_SYSID["key equals 'SYSID'"]
    COND_SYSID -->|Yes| SUBKEY_VAL_SYSID["subkey.equalsIgnoreCase('value')"]
    SUBKEY_VAL_SYSID -->|Yes| RET_SYSID["Return getSysid_value()"]
    SUBKEY_VAL_SYSID -->|No| SUBKEY_ST_SYSID["subkey.equalsIgnoreCase('state')"]
    SUBKEY_ST_SYSID -->|Yes| RET_SYSID_ST["Return getSysid_state()"]
    SUBKEY_ST_SYSID -->|No| COND_SVCKEINO["else if chain"]
    RET_SYSID --> COND_SVCKEINO
    RET_SYSID_ST --> COND_SVCKEINO

    COND_SYSID -->|No| COND_SVCKEINO["key equals 'サービス契約番号' (Service Contract Number)"]
    COND_SVCKEINO -->|Yes| SUBKEY_VAL_SVC["subkey.equalsIgnoreCase('value')"]
    SUBKEY_VAL_SVC -->|Yes| RET_SVC_VAL["Return getSvc_kei_no_value()"]
    SUBKEY_VAL_SVC -->|No| SUBKEY_ST_SVC["subkey.equalsIgnoreCase('state')"]
    SUBKEY_ST_SVC -->|Yes| RET_SVC_ST["Return getSvc_kei_no_state()"]
    SUBKEY_ST_SVC -->|No| COND_SVCUCWK["else if chain"]
    RET_SVC_VAL --> COND_SVCUCWK
    RET_SVC_ST --> COND_SVCUCWK

    COND_SVCKEINO -->|No| COND_SVCUCWK["key equals 'サービス契約内訳番号' (Service Contract Detail Number)"]
    COND_SVCUCWK -->|Yes| SUBKEY_VAL_SVCU["subkey.equalsIgnoreCase('value')"]
    SUBKEY_VAL_SVCU -->|Yes| RET_SVCU_VAL["Return getSvc_kei_ucwk_no_value()"]
    SUBKEY_VAL_SVCU -->|No| SUBKEY_ST_SVCU["subkey.equalsIgnoreCase('state')"]
    SUBKEY_ST_SVCU -->|Yes| RET_SVCU_ST["Return getSvc_kei_ucwk_no_state()"]
    SUBKEY_ST_SVCU -->|No| COND_IDO["else if chain"]
    RET_SVCU_VAL --> COND_IDO
    RET_SVCU_ST --> COND_IDO

    COND_SVCUCWK -->|No| COND_IDO["key equals '異動区分' (Movement Classification)"]
    COND_IDO -->|Yes| SUBKEY_VAL_IDO["subkey.equalsIgnoreCase('value')"]
    SUBKEY_VAL_IDO -->|Yes| RET_IDO_VAL["Return getIdo_div_value()"]
    SUBKEY_VAL_IDO -->|No| SUBKEY_ST_IDO["subkey.equalsIgnoreCase('state')"]
    SUBKEY_ST_IDO -->|Yes| RET_IDO_ST["Return getIdo_div_state()"]
    SUBKEY_ST_IDO -->|No| COND_IDORSN["else if chain"]
    RET_IDO_VAL --> COND_IDORSN
    RET_IDO_ST --> COND_IDORSN

    COND_IDO -->|No| COND_IDORSN["key equals '異動理由コード' (Movement Reason Code)"]
    COND_IDORSN -->|Yes| EXTRACT_KEY["Extract key substring after '/'"]
    EXTRACT_KEY --> IDX_ASTERISK["key equals '*'"]
    IDX_ASTERISK -->|Yes| RET_SIZE["Return Integer.valueOf(ido_rsn_cd_list.size())"]
    IDX_ASTERISK -->|No| TRY_PARSE["Parse key as Integer index"]
    TRY_PARSE -->|NumberFormatException| RET_NULL2["Return null"]
    TRY_PARSE -->|Success| IDX_NULL["tmpIndexInt == null"]
    IDX_NULL -->|Yes| RET_NULL3["Return null"]
    IDX_NULL -->|No| IDX_BOUNDS["tmpIndex in [0, size)?"]
    IDX_BOUNDS -->|No| RET_NULL4["Return null"]
    IDX_BOUNDS -->|Yes| CALL_LOAD["X33VDataTypeStringBean.loadModelData(subkey)"]
    RET_SIZE --> END_NODE(["End"])
    RET_NULL2 --> END_NODE
    RET_NULL3 --> END_NODE
    RET_NULL4 --> END_NODE
    CALL_LOAD --> END_NODE

    COND_IDORSN -->|No| COND_MSKM["key equals '申込番号' (Application Number)"]
    COND_MSKM -->|Yes| SUBKEY_VAL_MSKM["subkey.equalsIgnoreCase('value')"]
    SUBKEY_VAL_MSKM -->|Yes| RET_MSKM_VAL["Return getMskm_no_value()"]
    SUBKEY_VAL_MSKM -->|No| SUBKEY_ST_MSKM["subkey.equalsIgnoreCase('state')"]
    SUBKEY_ST_MSKM -->|Yes| RET_MSKM_ST["Return getMskm_no_state()"]
    SUBKEY_ST_MSKM -->|No| COND_MSKMDTL["else if chain"]
    RET_MSKM_VAL --> COND_MSKMDTL
    RET_MSKM_ST --> COND_MSKMDTL

    COND_MSKM -->|No| COND_MSKMDTL["key equals '申込詳細番号' (Application Detail Number)"]
    COND_MSKMDTL -->|Yes| SUBKEY_VAL_MSKMD["subkey.equalsIgnoreCase('value')"]
    SUBKEY_VAL_MSKMD -->|Yes| RET_MSKMD_VAL["Return getMskm_dtl_no_value()"]
    SUBKEY_VAL_MSKMD -->|No| SUBKEY_ST_MSKMD["subkey.equalsIgnoreCase('state')"]
    SUBKEY_ST_MSKMD -->|Yes| RET_MSKMD_ST["Return getMskm_dtl_no_state()"]
    SUBKEY_ST_MSKMD -->|No| COND_POPUP["else if chain"]
    RET_MSKMD_VAL --> COND_POPUP
    RET_MSKMD_ST --> COND_POPUP

    COND_MSKMDTL -->|No| COND_POPUP["key equals 'ポップアップモード' (Popup Mode)"]
    COND_POPUP -->|Yes| SUBKEY_VAL_POP["subkey.equalsIgnoreCase('value')"]
    SUBKEY_VAL_POP -->|Yes| RET_POP_VAL["Return getPopup_mode_value()"]
    SUBKEY_VAL_POP -->|No| SUBKEY_ST_POP["subkey.equalsIgnoreCase('state')"]
    SUBKEY_ST_POP -->|Yes| RET_POP_ST["Return getPopup_mode_state()"]
    SUBKEY_ST_POP -->|No| COND_IDOSENI["else if chain"]
    RET_POP_VAL --> COND_IDOSENI
    RET_POP_ST --> COND_IDOSENI

    COND_POPUP -->|No| COND_IDOSENI["key equals '異動区分選択画面遷移パターン' (Movement Classification Screen Transition Pattern)"]
    COND_IDOSENI -->|Yes| SUBKEY_VAL_SENI["subkey.equalsIgnoreCase('value')"]
    SUBKEY_VAL_SENI -->|Yes| RET_SENI_VAL["Return getIdo_div_seni_ptn_value()"]
    SUBKEY_VAL_SENI -->|No| SUBKEY_ST_SENI["subkey.equalsIgnoreCase('state')"]
    SUBKEY_ST_SENI -->|Yes| RET_SENI_ST["Return getIdo_div_seni_ptn_state()"]
    SUBKEY_ST_SENI -->|No| COND_SYSCD["else if chain"]
    RET_SENI_VAL --> COND_SYSCD
    RET_SENI_ST --> COND_SYSCD

    COND_IDOSENI -->|No| COND_SYSCD["key equals '外部システムコード' (External System Code)"]
    COND_SYSCD -->|Yes| SUBKEY_VAL_SYSCD["subkey.equalsIgnoreCase('value')"]
    SUBKEY_VAL_SYSCD -->|Yes| RET_SYSCD_VAL["Return getSyscd_value()"]
    SUBKEY_VAL_SYSCD -->|No| SUBKEY_ST_SYSCD["subkey.equalsIgnoreCase('state')"]
    SUBKEY_ST_SYSCD -->|Yes| RET_SYSCD_ST["Return getSyscd_state()"]
    SUBKEY_ST_SYSCD -->|No| RET_NULL5["Return null"]
    RET_SYSCD_VAL --> END_NODE
    RET_SYSCD_ST --> END_NODE
    RET_NULL5 --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The **field name** used by the X33 view data binding framework to request a specific model property. Can be a simple identifier like "SYSID", a Japanese-labeled field name (e.g., "サービス契約番号" / "Service Contract Number"), or a compound key with a slash-separated index for list items (e.g., "異動理由コード/0" to access the first movement reason code). Case-sensitive for most branches; the "異動理由コード" branch additionally extracts the substring after '/'. |
| 2 | `subkey` | `String` | The **attribute type** to retrieve from the identified field. Accepts "value" (returns the field's current data value) or "state" (returns the field's edit/validation state string). Case-insensitive comparison (`equalsIgnoreCase`). |

**Instance fields / external state read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `ido_rsn_cd_list` | `X33VDataTypeList` | List of movement reason code entries — each element is an `X33VDataTypeStringBean`. Used only in the "異動理由コード" (Movement Reason Code) branch to support indexed access and size queries. Initialized to `null` in constructor and populated by the parent bean during screen initialization. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `KKW01033SF01DBean.getSysid_value` | KKW01033SF01DBean | - | Returns the sysid_value field (item ID string value) |
| R | `KKW01033SF01DBean.getSysid_state` | KKW01033SF01DBean | - | Returns the sysid_state field (item ID edit state) |
| R | `KKW01033SF01DBean.getSvc_kei_no_value` | KKW01033SF01DBean | - | Returns the svc_kei_no_value field (service contract number string value) |
| R | `KKW01033SF01DBean.getSvc_kei_no_state` | KKW01033SF01DBean | - | Returns the svc_kei_no_state field (service contract number edit state) |
| R | `KKW01033SF01DBean.getSvc_kei_ucwk_no_value` | KKW01033SF01DBean | - | Returns the svc_kei_ucwk_no_value field (service contract detail number string value) |
| R | `KKW01033SF01DBean.getSvc_kei_ucwk_no_state` | KKW01033SF01DBean | - | Returns the svc_kei_ucwk_no_state field (service contract detail number edit state) |
| R | `KKW01033SF01DBean.getIdo_div_value` | KKW01033SF01DBean | - | Returns the ido_div_value field (movement classification string value) |
| R | `KKW01033SF01DBean.getIdo_div_state` | KKW01033SF01DBean | - | Returns the ido_div_state field (movement classification edit state) |
| R | `KKW01033SF01DBean.getIdo_rsn_cd_list` (via direct field access) | KKW01033SF01DBean | - | Direct field access to the movement reason code list for size query and indexed element retrieval |
| R | `KKW01033SF01DBean.getMskm_no_value` | KKW01033SF01DBean | - | Returns the mskm_no_value field (application number string value) |
| R | `KKW01033SF01DBean.getMskm_no_state` | KKW01033SF01DBean | - | Returns the mskm_no_state field (application number edit state) |
| R | `KKW01033SF01DBean.getMskm_dtl_no_value` | KKW01033SF01DBean | - | Returns the mskm_dtl_no_value field (application detail number string value) |
| R | `KKW01033SF01DBean.getMskm_dtl_no_state` | KKW01033SF01DBean | - | Returns the mskm_dtl_no_state field (application detail number edit state) |
| R | `KKW01033SF01DBean.getPopup_mode_value` | KKW01033SF01DBean | - | Returns the popup_mode_value field (popup mode string value) |
| R | `KKW01033SF01DBean.getPopup_mode_state` | KKW01033SF01DBean | - | Returns the popup_mode_state field (popup mode edit state) |
| R | `KKW01033SF01DBean.getIdo_div_seni_ptn_value` | KKW01033SF01DBean | - | Returns the ido_div_seni_ptn_value field (movement classification screen transition pattern string value) |
| R | `KKW01033SF01DBean.getIdo_div_seni_ptn_state` | KKW01033SF01DBean | - | Returns the ido_div_seni_ptn_state field (movement classification screen transition pattern edit state) |
| R | `KKW01033SF01DBean.getSyscd_value` | KKW01033SF01DBean | - | Returns the syscd_value field (external system code string value) |
| R | `KKW01033SF01DBean.getSyscd_state` | KKW01033SF01DBean | - | Returns the syscd_state field (external system code edit state) |
| R | `KKW01033SF01DBean.loadModelData` | KKW01033SF01DBean | - | Delegates subkey access to the indexed child bean (X33VDataTypeStringBean) for movement reason code list items |

**Classification rationale:** All operations are **Read (R)** only. This method never writes, creates, updates, or deletes data. It reads local bean fields via getters or direct field access, performs string parsing operations, and delegates to child beans. No SC Code (Service Component) or database table interaction occurs at this level — it is purely a data-dispatching layer.

## 5. Dependency Trace

The code graph identifies one direct caller of this method:

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW01033SF | `KKW01033SFBean` creates `KKW01033SF01DBean` instance -> calls `tmpBean.loadModelData(key, subkey)` | `getSysid_value`, `getSvc_kei_no_value`, `getIdo_div_value`, `getMskm_no_value`, `getPopup_mode_value`, etc. (all R, local bean fields) |

**Notes:**
- `KKW01033SFBean` is the parent screen bean for the KKW01033SF screen. It instantiates `KKW01033SF01DBean` as a child data bean and delegates field lookups through this `loadModelData()` method during screen rendering and data binding.
- This is a standard X33 framework data bean delegation pattern: the parent bean creates the child, and child field access is routed through the child's `loadModelData()` for framework integration.

## 6. Per-Branch Detail Blocks

**Block 1** — IF (null guard) `(key == null || subkey == null)` (L341)

> Guard clause: returns null if either argument is null. Prevents NPE in subsequent string operations.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `if (key == null || subkey == null)` |
| 2 | RETURN | `return null;` // key,subkeyがnullの場合、nullを返す [Return null if key or subkey is null] |

---

**Block 2** — IF (key = "SYSID") `(key.equals("SYSID"))` (L347)

> Handles the SYSID (item ID) field. Returns either the SYSID string value or its edit state based on subkey.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `int separaterPoint = key.indexOf("/");` // Find '/' position in key |
| 2 | EXEC | `if (key.equals("SYSID"))` |
| 3 | IF | `subkey.equalsIgnoreCase("value")` // Check subkey for "value" |
| 3.1 | CALL | `return getSysid_value();` // Return SYSID value |
| 3 | IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す [If subkey is "state", return the status] |
| 3.2 | CALL | `return getSysid_state();` // Return SYSID state |

---

**Block 3** — ELSE-IF (key = "サービス契約番号") `(key.equals("サービス契約番号"))` (L358)

> [データタイプがStringの項目"サービス契約番号"(項目ID:svc_kei_no)] [Field of data type String: "Service Contract Number" (item ID: svc_kei_no)]
> Returns the service contract number value or its edit state.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `else if (key.equals("サービス契約番号"))` |
| 2 | IF | `subkey.equalsIgnoreCase("value")` |
| 2.1 | CALL | `return getSvc_kei_no_value();` |
| 2 | IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す [If subkey is "state", return the status] |
| 2.2 | CALL | `return getSvc_kei_no_state();` |

---

**Block 4** — ELSE-IF (key = "サービス契約内訳番号") `(key.equals("サービス契約内訳番号"))` (L369)

> [データタイプがStringの項目"サービス契約内訳番号"(項目ID:svc_kei_ucwk_no)] [Field of data type String: "Service Contract Detail Number" (item ID: svc_kei_ucwk_no)]
> Returns the service contract detail number value or its edit state.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `else if (key.equals("サービス契約内訳番号"))` |
| 2 | IF | `subkey.equalsIgnoreCase("value")` |
| 2.1 | CALL | `return getSvc_kei_ucwk_no_value();` |
| 2 | IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す [If subkey is "state", return the status] |
| 2.2 | CALL | `return getSvc_kei_ucwk_no_state();` |

---

**Block 5** — ELSE-IF (key = "異動区分") `(key.equals("異動区分"))` (L380)

> [データタイプがStringの項目"異動区分"(項目ID:ido_div)] [Field of data type String: "Movement Classification" (item ID: ido_div)]
> Returns the movement classification value or its edit state. Movement classification determines whether the record is a new registration, change, or cancellation.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `else if (key.equals("異動区分"))` |
| 2 | IF | `subkey.equalsIgnoreCase("value")` |
| 2.1 | CALL | `return getIdo_div_value();` |
| 2 | IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す [If subkey is "state", return the status] |
| 2.2 | CALL | `return getIdo_div_state();` |

---

**Block 6** — ELSE-IF (key = "異動理由コード") `(key.equals("異動理由コード"))` (L391)

> [配列項目 "異動理由コード"(String型。項目ID:ido_rsn_cd)] [Array field "Movement Reason Code" (String type. Item ID: ido_rsn_cd)]
> This is the **special indexed-list branch**. The key is re-parsed to extract an index after '/'. Supports size query with "*", direct index access, and delegation to child bean's `loadModelData()`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `else if (key.equals("異動理由コード"))` |
| 2 | EXEC | `key = key.substring(separaterPoint + 1);` // keyの次の要素を取得 [Get the next element of key — extract substring after '/'] |
| 3 | IF | `key.equals("*")` // インデックス値の代わりに"*"が指定されていたら、リストの要素数を返す [If "*" is specified instead of an index value, return the list element count] |
| 3.1 | SET | `return Integer.valueOf(ido_rsn_cd_list.size());` // Convert list size to Integer |
| 3 | IF | `try { tmpIndexInt = Integer.valueOf(key); }` // Parse key as integer index |
| 3.1 | CATCH | `catch (NumberFormatException e) { return null; }` // インデックス値が数値文字列でない場合は、ここでnullを返す [If index value is not a numeric string, return null here] |
| 3 | IF | `if (tmpIndexInt == null) { return null; }` // Null check after parse |
| 3 | SET | `int tmpIndex = tmpIndexInt.intValue();` // Extract primitive int |
| 3 | IF | `if (tmpIndex < 0 || tmpIndex >= ido_rsn_cd_list.size())` // インデックス値がリスト個数-1を超える場合、ここでnullを返す [If index exceeds list size-1, return null here] |
| 3.1 | RETURN | `return null;` // Out-of-bounds guard |
| 3 | CALL | `return ((X33VDataTypeStringBean)ido_rsn_cd_list.get(tmpIndex)).loadModelData(subkey);` // Delegate to child bean's loadModelData with subkey |

---

**Block 7** — ELSE-IF (key = "申込番号") `(key.equals("申込番号"))` (L424)

> [データタイプがStringの項目"申込番号"(項目ID:mskm_no)] [Field of data type String: "Application Number" (item ID: mskm_no)]
> Returns the application number value or its edit state.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `else if (key.equals("申込番号"))` |
| 2 | IF | `subkey.equalsIgnoreCase("value")` |
| 2.1 | CALL | `return getMskm_no_value();` |
| 2 | IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す [If subkey is "state", return the status] |
| 2.2 | CALL | `return getMskm_no_state();` |

---

**Block 8** — ELSE-IF (key = "申込詳細番号") `(key.equals("申込詳細番号"))` (L435)

> [データタイプがStringの項目"申込詳細番号"(項目ID:mskm_dtl_no)] [Field of data type String: "Application Detail Number" (item ID: mskm_dtl_no)]
> Returns the application detail number value or its edit state.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `else if (key.equals("申込詳細番号"))` |
| 2 | IF | `subkey.equalsIgnoreCase("value")` |
| 2.1 | CALL | `return getMskm_dtl_no_value();` |
| 2 | IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す [If subkey is "state", return the status] |
| 2.2 | CALL | `return getMskm_dtl_no_state();` |

---

**Block 9** — ELSE-IF (key = "ポップアップモード") `(key.equals("ポップアップモード"))` (L446)

> [データタイプがStringの項目"ポップアップモード"(項目ID:popup_mode)] [Field of data type String: "Popup Mode" (item ID: popup_mode)]
> Returns the popup mode value or its edit state. Controls whether popup dialogs are enabled for the screen.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `else if (key.equals("ポップアップモード"))` |
| 2 | IF | `subkey.equalsIgnoreCase("value")` |
| 2.1 | CALL | `return getPopup_mode_value();` |
| 2 | IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す [If subkey is "state", return the status] |
| 2.2 | CALL | `return getPopup_mode_state();` |

---

**Block 10** — ELSE-IF (key = "異動区分選択画面遷移パターン") `(key.equals("異動区分選択画面遷移パターン"))` (L457)

> [データタイプがStringの項目"異動区分選択画面遷移パターン"(項目ID:ido_div_seni_ptn)] [Field of data type String: "Movement Classification Selection Screen Transition Pattern" (item ID: ido_div_seni_ptn)]
> Returns the screen transition pattern value or its edit state. Determines which screen to navigate to when selecting a movement classification option.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `else if (key.equals("異動区分選択画面遷移パターン"))` |
| 2 | IF | `subkey.equalsIgnoreCase("value")` |
| 2.1 | CALL | `return getIdo_div_seni_ptn_value();` |
| 2 | IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す [If subkey is "state", return the status] |
| 2.2 | CALL | `return getIdo_div_seni_ptn_state();` |

---

**Block 11** — ELSE-IF (key = "外部システムコード") `(key.equals("外部システムコード"))` (L468)

> [ANK-2693-00-00 オーダリング案件（STEP2） ADD] [Ordering project (STEP2) — Added per ANK-2693-00-00]
> [データタイプがStringの項目"外部システムコード"(項目ID:syscd)] [Field of data type String: "External System Code" (item ID: syscd)]
> Added in the ANK-2693-00-00 ordering project STEP2. Returns the external system code value or its edit state.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `else if (key.equals("外部システムコード"))` // コメント: ANK-2693-00-00 オーダリング案件（STEP2） [Comment: ANK-2693-00-00 Ordering Project (STEP2)] |
| 2 | IF | `subkey.equalsIgnoreCase("value")` |
| 2.1 | CALL | `return getSyscd_value();` |
| 2 | IF | `subkey.equalsIgnoreCase("state")` // subkeyが"state"の場合、ステータスを返す [If subkey is "state", return the status] |
| 2.2 | CALL | `return getSyscd_state();` |

---

**Block 12** — ELSE (no match) (L469)

> [条件に合致するプロパティが存在しない場合は、nullを返す。] [If no property matches the condition, return null.]
> Fallback: no key matched any of the 10 known field names.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // 条件に合致するプロパティが存在しない場合は、nullを返す [Return null if no matching property exists] |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `sysid` | Field | System ID — unique item identifier for the screen record. Internal tracking ID used by the X33 framework. |
| `svc_kei_no` | Field | Service Contract Number — the primary contract identifier for the customer's service agreement. |
| `svc_kei_ucwk_no` | Field | Service Contract Detail Number — identifies individual line items within a service contract. |
| `ido_div` | Field | Movement Classification (異動区分) — indicates the type of change operation (e.g., new registration, modification, cancellation). Core discriminator in order management. |
| `ido_rsn_cd` | Field | Movement Reason Code (異動理由コード) — the reason code for the movement/change classification. Stored as a list of `X33VDataTypeStringBean` items, each representing one reason code option. |
| `ido_div_seni_ptn` | Field | Movement Classification Selection Screen Transition Pattern (異動区分選択画面遷移パターン) — determines which screen to navigate to when a movement classification is selected in the UI. |
| `mskm_no` | Field | Application Number (申込番号) — the main order/application identifier. |
| `mskm_dtl_no` | Field | Application Detail Number (申込詳細番号) — the detailed line-item identifier within an application. |
| `popup_mode` | Field | Popup Mode (ポップアップモード) — controls whether popup dialogs are enabled for the screen's interactive elements. |
| `syscd` | Field | External System Code (外部システムコード) — identifies an external system involved in the order process. Added per ANK-2693-00-00 (Ordering Project STEP2). |
| `X33VDataTypeBeanInterface` | Interface | Fujitsu Futurity X33 framework interface for data beans that support key/subkey-based property access. This method implements `loadModelData()` to fulfill this contract. |
| `X33VListedBeanInterface` | Interface | X33 framework interface for beans that participate in listed/repeated field rendering. |
| `X33VDataTypeList` | Class | Framework collection type used to hold lists of data bean elements (e.g., movement reason code entries). |
| `X33VDataTypeStringBean` | Class | Framework data bean type representing a single string data type element within a list. |
| "value" | Subkey | Subkey value requesting the actual data value of a field. |
| "state" | Subkey | Subkey value requesting the edit/validation state string of a field (e.g., enabled/disabled, required/optional). |
| "SYSID" | Key | Internal system item identifier — used by the X33 framework for record-level tracking. |
| ANK-2693-00-00 | Project | Ordering Project (オーダリング案件) STEP2 — a development project that added the external system code field to the screen. |
| X33 Framework | Technology | Fujitsu Futurity web client framework providing MVC-based view data binding, bean lifecycle management, and screen navigation for enterprise web applications. |
