---

# Business Logic — KKW02404SFLogic.setHktgiBean() [95 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW02404SF.KKW02404SFLogic` |
| Layer | Controller / Screen Logic (Package: `eo.web.webview.KKW02404SF`, suffix `SFLogic` indicates a Screen Logic class) |
| Module | `KKW02404SF` (Package: `eo.web.webview.KKW02404SF`) |

## 1. Role

### KKW02404SFLogic.setHktgiBean()

This method performs the **initial customer-contract-succession data transfer** for the KKW02404SF screen, which handles **Fixed Global IP Address Information Provision** (固定グローバルIPアドレス情報照会) — a telecom operator service for querying and managing customer contracts related to reserved global IP address allocations. The method's primary business purpose is to **bootstrap the screen's working DataBean from the customer contract succession context** when the screen first loads (初回データ保持用 — for initial data preservation). It reads key identification and administrative fields from the customer contract succession bean (hktgiBean) — including SYSID, service contract number, movement (transfer/change) classification, movement reasons with associated memos, option service contract number, processing classification, and application numbers — and copies each into the screen's primary parameter DataBean. This enables downstream processing steps (executeInitSvc, setDataInit) to operate on a fully initialized screen state. The method implements a **flat sequential transfer pattern** for scalar fields and a **loop-based list propagation pattern** for the variable-length movement-reason sub-list. It is a **private helper method** called exclusively by `actionInit()` during screen initialization, meaning it serves as a **data preparation utility within the screen's boot sequence** rather than a reusable cross-module component.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setHktgiBean(paramBean)"])
    START --> GET_DATE["JCCWebCommon.getOpeDate"]
    GET_DATE --> SET_USE_YMD["paramBean[0].sendMessageString(USE_YMD, use_ymd)"]
    SET_USE_YMD --> GET_HKTGI_LIST["paramBean[0].getDataBeanArray(CUST_KEI_HKTGI_LIST)"]
    GET_HKTGI_LIST --> GET_FIRST_BEAN["hktgilist.getDataBean(0)"]
    GET_FIRST_BEAN --> TRANSFER_SYSID["Transfer SYSID from hktgiBean to paramBean[0]"]
    TRANSFER_SYSID --> TRANSFER_SVC_KEI_NO["Transfer SVC_KEI_NO from hktgiBean to paramBean[0]"]
    TRANSFER_SVC_KEI_NO --> TRANSFER_IDO_DIV["Transfer IDO_DIV from hktgiBean to paramBean[0]"]
    TRANSFER_IDO_DIV --> GET_IDO_RSN_LIST["paramBean[0].getDataBeanArray(IDO_RSN_LIST)"]
    GET_IDO_RSN_LIST --> GET_IDO_RSN_MEMO["Get IDO_RSN_MEMO_01 from hktgiBean"]
    GET_IDO_RSN_MEMO --> GET_IDO_RSN_CNT["Get IDO_RSN_CD_01 count from hktgiBean"]
    GET_IDO_RSN_CNT --> FOR_LOOP_START{"For loop: i < cnt ?"}
    FOR_LOOP_START --> YES_LOOP["YES - loop body"]
    FOR_LOOP_START --> NO_LOOP["NO - exit loop"]
    YES_LOOP --> CHECK_IDO_RSN_BEAN{"ido_rsn_list.getCount() - 1 >= i ?"}
    CHECK_IDO_RSN_BEAN --> YES_BEAN["ido_rsn_bean = getDataBean(i)"]
    CHECK_IDO_RSN_BEAN --> NO_BEAN["ido_rsn_bean = addDataBean()"]
    YES_BEAN --> CHECK_NULL{"ido_rsn_bean == null ?"}
    NO_BEAN --> CHECK_NULL
    CHECK_NULL --> YES_NULL["continue (skip iteration)"]
    CHECK_NULL --> NO_NULL["Get IDO_RSN_CD from hktgiBean"]
    YES_NULL --> FOR_INCR["i++"]
    NO_NULL --> SET_IDO_RSN_CD["ido_rsn_bean.sendMessageString(IDO_RSN_CD_02, ido_rsn_cd)"]
    SET_IDO_RSN_CD --> SET_IDO_RSN_MEMO["ido_rsn_bean.sendMessageString(IDO_RSN_MEMO_02, ido_rsn_memo)"]
    SET_IDO_RSN_MEMO --> FOR_INCR
    FOR_INCR --> FOR_LOOP_START
    NO_LOOP --> TRANSFER_OP_SVC["Transfer OP_SVC_KEI_NO from hktgiBean to paramBean[0]"]
    TRANSFER_OP_SVC --> TRANSFER_TRAN_DIV["Transfer TRAN_DIV from hktgiBean to paramBean[0]"]
    TRANSFER_TRAN_DIV --> TRANSFER_MSKM_NO["Transfer MSKM_NO from hktgiBean to paramBean[0]"]
    TRANSFER_MSKM_NO --> TRANSFER_MSKM_DTL_NO["Transfer MSKM_DTL_NO from hktgiBean to paramBean[0]"]
    TRANSFER_MSKM_DTL_NO --> SET_RSV_APLY_YMD["paramBean[0].sendMessageString(RSV_APLY_YMD, 20991231)"]
    SET_RSV_APLY_YMD --> END_NODE(["Return / Next"])
```

The method executes a linear sequence of data-transfer operations:

1. **Operation Date Acquisition** — Calls `JCCWebCommon.getOpeDate()` to retrieve the current operational date and stores it under the key `USE_YMD` ("運用年月日" — Operation Year-Month-Day) in the screen DataBean.

2. **Customer Contract Succession Bean Extraction** — Retrieves the customer contract succession list (`CUST_KEI_HKTGI_LIST`) and takes the first entry as the source bean (`hktgiBean`) for all subsequent field transfers.

3. **Scalar Field Transfers** — Six scalar fields are read from `hktgiBean` and written to `paramBean[0]`: SYSID, Service Contract Number, Movement Classification, Option Service Contract Number, Processing Classification, Application Number, and Application Detail Number. Each transfer follows the pattern: `hktgiBean.sendMessageString(SOURCE_KEY, GET) → paramBean[0].sendMessageString(TARGET_KEY, SET, value)`.

4. **Movement Reason List Propagation (Loop)** — Iterates over the count of movement-reason codes in the source bean. For each index, it either retrieves an existing bean from the target list or creates a new one via `addDataBean()`. Each propagated entry copies the movement reason code (`IDO_RSN_CD_01` to `IDO_RSN_CD_02`) and the shared movement-reason memo. A null-check with `continue` guards against unexpected nulls.

5. **Reservation Application Date Hardcoding** — Sets the reservation application date (`RSV_APLY_YMD`) to the sentinel value `"20991231"` (December 31, 2099), which is a conventional "no expiration" placeholder in Japanese telecom systems.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `paramBean` | `X31SDataBeanAccess[]` | The screen's working DataBean array (single-element). This is the **target DataBean** that receives all initialized values for the Fixed Global IP Address Information Provision screen. It holds the complete screen state including operational date, customer contract identifiers, movement/change details, application tracking numbers, and reservation dates. The first element (`paramBean[0]`) is the active screen DataBean. |

**Instance fields / external state read:**

| Source | Type | Business Description |
|--------|------|---------------------|
| `this` (via `JCCWebCommon.getOpeDate`) | `KKW02404SFLogic` instance | Used to pass the screen logic context to the date acquisition utility, which accesses screen-level session/context information to determine the operational date. |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JCCWebCommon.getOpeDate` | - | - | Reads the current operational date from the system/session context |
| R | `X31SDataBeanAccess.getDataBeanArray` | - | - | Reads the customer contract succession list DataBean array from the source DataBean |
| R | `X31SDataBeanAccessArray.getDataBean` | - | - | Reads the first (index 0) customer contract succession entry bean |
| R | `X31SDataBeanAccess.sendMessageString` | - | - | Reads scalar field values (SYSID, SVC_KEI_NO, IDO_DIV, IDO_RSN_MEMO_01, etc.) from the hktgiBean |
| C | `X31SDataBeanAccessArray.addDataBean` | - | - | Creates a new entry in the movement reason list when the target list lacks an element at the current index |
| R | `X31SDataBeanAccessArray.getCount` | - | - | Checks the count of existing entries in the movement reason list for index validation |
| R | `X31SDataBeanAccess.sendMessage` | - | - | Reads the count of movement reason codes from the hktgiBean (returns Integer via Object) |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Logic:KKW02404SFLogic.actionInit() | `actionInit()` -> `setHktgiBean(paramBean)` | `sendMessageString` (no CRUD — DataBean field set), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD), `sendMessageString` (no CRUD) |

**Notes:**
- This method has **no direct screen entry point** (no `KKSV*` controller class calls it). It is a **private helper** invoked only from `actionInit()`, which is itself a screen initialization method within the same `KKW02404SFLogic` class.
- The `KKW02404SF` module corresponds to the **Fixed Global IP Address Information Provision** screen.
- Terminal operations are exclusively **DataBean field reads/writes** (`sendMessageString`, `sendMessage`, `getDataBean`, `getDataBeanArray`, `addDataBean`, `getCount`) — no database CRUD, SC/CBS calls, or external service invocations occur within this method.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] (L312-314)

> Acquire the operational date from the system context and store it in the screen DataBean.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `use_ymd = JCCWebCommon.getOpeDate(this, null)` // Obtain the current operational date [-> JCCWebCommon.getOpeDate] |
| 2 | SET | `paramBean[0].sendMessageString(KKW02404SFConst.USE_YMD, X31CWebConst.DATABEAN_SET_VALUE, use_ymd)` // Store operation year-month-day in screen DataBean [-> USE_YMD="運用年月日" (KKW02404SFConst.java:99)], [-> DATABEAN_SET_VALUE (X31CWebConst)] |

**Block 2** — [SET] (L317-320)

> Extract the customer contract succession list and get the first (primary) contract bean as the source of all field transfers.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `hktgilist = paramBean[0].getDataBeanArray(KKW02404SFConst.CUST_KEI_HKTGI_LIST)` // Get the customer contract succession list from screen DataBean [-> CUST_KEI_HKTGI_LIST="顧客契約引継リスト" (KKW02404SFConst.java:164)] |
| 2 | CALL | `hktgiBean = hktgilist.getDataBean(0)` // Take the first entry from the succession list |

**Block 3** — [IF] (L323-325)

> Transfer SYSID from the customer contract succession bean to the screen DataBean.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `sysid = hktgiBean.sendMessageString(KKW02404SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE)` // Read SYSID from hktgiBean [-> SYSID_01="SYSID" (KKW02404SFConst.java:205)], [-> DATABEAN_GET_VALUE (X31CWebConst)] |
| 2 | EXEC | `paramBean[0].sendMessageString(KKW02404SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, sysid)` // Write SYSID to screen DataBean [-> SYSID="SYSID" (KKW02404SFConst.java:64)], [-> DATABEAN_SET_VALUE (X31CWebConst)] |

**Block 4** — [IF] (L328-330)

> Transfer Service Contract Number from the succession bean to the screen DataBean.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `svc_kei_no = hktgiBean.sendMessageString(KKW02404SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE)` // Read service contract number from hktgiBean [-> SVC_KEI_NO_01="サービス契約番号" (KKW02404SFConst.java:209)], [-> DATABEAN_GET_VALUE (X31CWebConst)] |
| 2 | EXEC | `paramBean[0].sendMessageString(KKW02404SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svc_kei_no)` // Write service contract number to screen DataBean [-> SVC_KEI_NO="サービス契約番号" (KKW02404SFConst.java:59)], [-> DATABEAN_SET_VALUE (X31CWebConst)] |

**Block 5** — [IF] (L333-335)

> Transfer Movement Classification (異動区分) from the succession bean to the screen DataBean. Movement classification indicates whether the customer contract has been transferred, changed, or maintained.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ido_div = hktgiBean.sendMessageString(KKW02404SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_GET_VALUE)` // Read movement classification from hktgiBean [-> IDO_DIV_01="異動区分" (KKW02404SFConst.java:213)], [-> DATABEAN_GET_VALUE (X31CWebConst)] |
| 2 | EXEC | `paramBean[0].sendMessageString(KKW02404SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, ido_div)` // Write movement classification to screen DataBean [-> IDO_DIV="異動区分" (KKW02404SFConst.java:54)], [-> DATABEAN_SET_VALUE (X31CWebConst)] |

**Block 6** — [SET] (L338)

> Retrieve the movement reason list DataBean array from the screen DataBean. This list will be populated in the subsequent loop.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ido_rsn_list = paramBean[0].getDataBeanArray(KKW02404SFConst.IDO_RSN_LIST)` // Get movement reason list [-> IDO_RSN_LIST="異動理由リスト" (KKW02404SFConst.java:59)] |

**Block 7** — [SET] (L341-343)

> Read the movement reason memo from the succession bean. This memo value will be propagated to all movement reason list entries in the loop below. (Memo support is enabled — Start/End markers indicate this was added for a specific requirement.)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ido_rsn_memo = hktgiBean.sendMessageString(KKW02404SFConst.IDO_RSN_MEMO_01, X31CWebConst.DATABEAN_GET_VALUE)` // Read movement reason memo from hktgiBean [-> IDO_RSN_MEMO_01="異動理由メモ" (KKW02404SFConst.java:235)], [-> DATABEAN_GET_VALUE (X31CWebConst)] |

**Block 8** — [SET] (L346)

> Read the count of movement reason codes from the hktgiBean. This count determines the number of iterations in the following loop.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `cnt = (Integer)hktgiBean.sendMessage(KKW02404SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_COUNT)` // Get the number of movement reason code elements [-> IDO_RSN_CD_01="異動理由コード" (KKW02404SFConst.java:217)], [-> DATABEAN_GET_COUNT (X31CWebConst)] |

**Block 9** — [FOR] (L349-374)

> Iterate over each movement reason code index, copying the reason code and the shared memo from the succession bean to the screen's movement reason list. This ensures the screen DataBean has a complete, index-aligned copy of all movement reasons.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ido_rsn_bean = null` // Initialize local variable [-> Loop variable] |

**Block 9.1** — [IF] (`ido_rsn_list.getCount() - 1 >= i`) (L351-353)

> Check if the target list already has an entry at the current index. If yes, retrieve it; otherwise, create a new entry.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ido_rsn_bean = ido_rsn_list.getDataBean(i)` // Retrieve existing entry [-> IF: target list has sufficient entries] |

**Block 9.2** — [ELSE] (L354-356)

> The target list does not yet have an entry at this index. Create a new one by appending to the list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ido_rsn_bean = ido_rsn_list.addDataBean()` // Create and append new entry [-> ELSE: target list needs new entry] |

**Block 9.3** — [IF] (`ido_rsn_bean == null`) (L357-360)

> Null-safety guard: if the bean creation failed (unexpected), skip this iteration.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `continue` // Skip this iteration — prevents NullPointerException on subsequent accesses |

**Block 9.4** — [IF] (L364-365)

> Read the movement reason code at the current index from the succession bean and write it into the target list entry under the output key.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ido_rsn_cd = hktgiBean.sendMessageString(KKW02404SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_VALUE, i)` // Read movement reason code at index i [-> IDO_RSN_CD_01="異動理由コード" (KKW02404SFConst.java:217)], [-> DATABEAN_GET_VALUE (X31CWebConst)], [-> i = loop index] |
| 2 | EXEC | `ido_rsn_bean.sendMessageString(KKW02404SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_cd)` // Write movement reason code to target entry [-> IDO_RSN_CD_02="異動理由コード" (KKW02404SFConst.java:240)], [-> DATABEAN_SET_VALUE (X31CWebConst)] |

**Block 9.5** — [IF] (L368-370)

> Copy the movement reason memo (read in Block 7) to the target entry. This memo applies uniformly to all movement reason list entries. The original commented-out line (`""`) shows memo was previously set to empty; the current implementation propagates the actual memo value.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ido_rsn_bean.sendMessageString(KKW02404SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_memo)` // Write movement reason memo to target entry [-> IDO_RSN_MEMO_02="異動理由メモ" (KKW02404SFConst.java:245)], [-> DATABEAN_SET_VALUE (X31CWebConst)], [-> ido_rsn_memo from Block 7] |

**Block 10** — [IF] (L375-377)

> Transfer the Option Service Contract Number (オプションサービス契約番号) from the succession bean to the screen DataBean. This represents the contract number for any optional add-on services associated with the customer contract.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `op_svc_kei_no = hktgiBean.sendMessageString(KKW02404SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE, 0)` // Read option service contract number from hktgiBean at index 0 [-> OP_SVC_KEI_NO_01="オプションサービス契約番号" (KKW02404SFConst.java:221)], [-> DATABEAN_GET_VALUE (X31CWebConst)], [-> index 0] |
| 2 | EXEC | `paramBean[0].sendMessageString(KKW02404SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_no)` // Write option service contract number to screen DataBean [-> OP_SVC_KEI_NO="オプションサービス契約番号" (KKW02404SFConst.java:75)], [-> DATABEAN_SET_VALUE (X31CWebConst)] |

**Block 11** — [IF] (L380-382)

> Transfer the Processing Classification (処理区分) from the succession bean to the screen DataBean. Processing classification indicates whether the current screen is displaying a cancellation (解約), restoration (回復), reservation cancellation (予約取消), or other operation type.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `tran_div = hktgiBean.sendMessageString(KKW02404SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE)` // Read processing classification from hktgiBean [-> TRAN_DIV_01="処理区分" (KKW02404SFConst.java:229)], [-> DATABEAN_GET_VALUE (X31CWebConst)] |
| 2 | EXEC | `paramBean[0].sendMessageString(KKW02404SFConst.TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, tran_div)` // Write processing classification to screen DataBean [-> TRAN_DIV="処理区分" (KKW02404SFConst.java:81)], [-> DATABEAN_SET_VALUE (X31CWebConst)] |

**Block 12** — [IF] (L385-387)

> Transfer the Application Number (申請番号) from the succession bean to the screen DataBean. This is the unique identifier for the application/registration request.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `mskm_no = hktgiBean.sendMessageString(KKW02404SFConst.MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE)` // Read application number from hktgiBean [-> MSKM_NO_01="申請番号" (KKW02404SFConst.java:233)], [-> DATABEAN_GET_VALUE (X31CWebConst)] |
| 2 | EXEC | `paramBean[0].sendMessageString(KKW02404SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_no)` // Write application number to screen DataBean [-> MSKM_NO="申請番号" (KKW02404SFConst.java:91)], [-> DATABEAN_SET_VALUE (X31CWebConst)] |

**Block 13** — [IF] (L390-392)

> Transfer the Application Detail Number (申請明細番号) from the succession bean to the screen DataBean. This identifies the specific line item within the application.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `mskm_dtl_no = hktgiBean.sendMessageString(KKW02404SFConst.MSKM_DTL_NO_01, X31CWebConst.DATABEAN_GET_VALUE)` // Read application detail number from hktgiBean [-> MSKM_DTL_NO_01="申請明細番号" (KKW02404SFConst.java:237)], [-> DATABEAN_GET_VALUE (X31CWebConst)] |
| 2 | EXEC | `paramBean[0].sendMessageString(KKW02404SFConst.MSKM_DTL_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_dtl_no)` // Write application detail number to screen DataBean [-> MSKM_DTL_NO="申請明細番号" (KKW02404SFConst.java:96)], [-> DATABEAN_SET_VALUE (X31CWebConst)] |

**Block 14** — [COMMENTED OUT] (L395-402)

> Aging (エンジンク / Engineering) related fields — Engineering type code and engineering target value. These were previously implemented but are now commented out (likely deprecated or handled by `setDataInit()`). The engineering type code reads from `FIXIPAD` ("IPアドレス" — IP Address) and the target value reads from `SUB_NETMASK` ("サブネットマスク" — Subnet Mask).

| # | Type | Code |
|---|------|------|
| 1 | COMMENT | `// aging_sbt_cd = hktgiBean.sendMessageString(KKW02404SFConst.FIXIPAD, DATABEAN_GET_VALUE)` // [FIXIPAD="IPアドレス" (KKW02404SFConst.java:38)] |
| 2 | COMMENT | `// paramBean[0].sendMessageString(KKW02404SFConst.AGING_SBT_CD, DATABEAN_SET_VALUE, aging_sbt_cd)` // [AGING_SBT_CD="エンジニア種別コード" (KKW02404SFConst.java:122)] |
| 3 | COMMENT | `// aging_tg_value = hktgiBean.sendMessageString(KKW02404SFConst.SUB_NETMASK, DATABEAN_GET_VALUE)` // [SUB_NETMASK="サブネットマスク" (KKW02404SFConst.java:26)] |
| 4 | COMMENT | `// paramBean[0].sendMessageString(KKW02404SFConst.AGING_TG_VALUE, DATABEAN_SET_VALUE, aging_tg_value)` // [AGING_TG_VALUE="エンジニア対象値" (KKW02404SFConst.java:117)] |

**Block 15** — [SET] (L406-407)

> Set the Reservation Application Date (予約適用年月日) to the hardcoded sentinel value `"20991231"`. This date (December 31, 2099) is a conventional "no-expiration" or "far future" value used in Japanese telecom systems to indicate that a reservation has no scheduled expiration.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramBean[0].sendMessageString(KKW02404SFConst.RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, "20991231")` // Set reservation application date [-> RSV_APLY_YMD="予約適用年月日" (KKW02404SFConst.java:169)], hardcoded value `"20991231"` |

---

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `use_ymd` | Field | Operation Year-Month-Day — the current operational date in YYYYMMDD format, obtained from system context |
| `sysid` | Field | System ID — internal system identifier for the customer contract entity |
| `svc_kei_no` | Field | Service Contract Number (サービス契約番号) — the unique identifier for a telecom service contract line item |
| `ido_div` | Field | Movement Classification (異動区分) — indicates the type of contract change: transfer, change, new connection, or termination |
| `ido_rsn_cd` | Field | Movement Reason Code (異動理由コード) — codes explaining why a contract was moved/changed (e.g., customer request, system migration) |
| `ido_rsn_memo` | Field | Movement Reason Memo (異動理由メモ) — free-text comment explaining the movement/change reason |
| `op_svc_kei_no` | Field | Option Service Contract Number (オプションサービス契約番号) — contract number for optional add-on services linked to the main service contract |
| `tran_div` | Field | Processing Classification (処理区分) — indicates the operation type: cancellation (解約), restoration (回復), reservation cancellation (予約取消), etc. |
| `mskm_no` | Field | Application Number (申請番号) — unique identifier for a service application/registration request |
| `mskm_dtl_no` | Field | Application Detail Number (申請明細番号) — identifies a specific line item within an application |
| `rsv_aply_ymd` | Field | Reservation Application Date (予約適用年月日) — the date from which a reservation takes effect; hardcoded to 20991231 (no expiration) |
| CUST_KEI_HKTGI_LIST | Constant | Customer Contract Succession List (顧客契約引継リスト) — list of customer contracts being carried over from a previous state (e.g., after contract transfer) |
| IDO_RSN_LIST | Constant | Movement Reason List (異動理由リスト) — the screen DataBean array holding all movement reason entries |
| FIXIPAD | Constant | IP Address (IPアドレス) — fixed global IP address identifier; used in engineering/target-value context (currently commented out) |
| SUB_NETMASK | Constant | Subnet Mask (サブネットマスク) — subnet mask value for IP address configuration (currently commented out) |
| AGING_SBT_CD | Constant | Engineering Type Code (エンジニア種別コード) — classification of engineering work type (currently commented out) |
| AGING_TG_VALUE | Constant | Engineering Target Value (エンジニア対象値) — target value for engineering processing (currently commented out) |
| CHG_KAHI_FLG | Constant | Update Status Can-Flag (更新状態可否フラグ) — boolean flag controlling whether the screen data can be modified |
| hktgiBean | Variable | Customer Contract Succession Bean — the source DataBean containing pre-populated customer contract data from the succession context |
| paramBean | Variable | Screen Parameter DataBean — the target DataBean array holding the screen's complete working state |
| X31SDataBeanAccess | Class | Screen DataBean Access — the framework class providing get/set operations on screen DataBean fields via sendMessage/sendMessageString |
| X31SDataBeanAccessArray | Class | Screen DataBean Access Array — the framework class for managing arrays of DataBean entries |
| JCCWebCommon | Class | Common Web Utility — shared utility class providing screen-level operations (getOpeDate, getScreenInfo, setMessageInfo) |
| DATABEAN_GET_VALUE | Constant | DataBean read operation flag — passed as the second argument to sendMessageString to read a value |
| DATABEAN_SET_VALUE | Constant | DataBean write operation flag — passed as the second argument to sendMessageString to write a value |
| DATABEAN_GET_COUNT | Constant | DataBean count operation flag — passed to sendMessage to retrieve the number of elements at a given key |
| Fixed Global IP Address | Business term | A static public IP address allocated to a customer; the KKW02404SF screen provides inquiry/provision functionality for these allocations |
| 顧客契約引継 (Kokyaku Keiyaku Hikitsugi) | Japanese term | Customer Contract Succession — the process of carrying over an existing customer contract into a new context (e.g., after a service change or migration) |
| 異動 (Ido) | Japanese term | Movement/Change — in telecom contract management, any modification to an existing contract (transfer, status change, reason change) |
| 解約 (Kaiyaku) | Japanese term | Contract Cancellation/Termination — one of the processing classifications indicating the contract has been or will be cancelled |
| 回復 (Kaifuku) | Japanese term | Restoration — one of the processing classifications indicating contract restoration from a suspended/cancelled state |
| 予約取消 (Yoyaku Torikeshi) | Japanese term | Reservation Cancellation — one of the processing classifications indicating cancellation of a pending reservation |

---