# Business Logic — JKKKikiIchiranKkKaifukuCC.isKktkSvcKeiJyushoUpdate() [120 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKKikiIchiranKkKaifukuCC` |
| Layer | Controller / Common Component (CC) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKKikiIchiranKkKaifukuCC.isKktkSvcKeiJyushoUpdate()

This method performs the **Equipment-Provided Service Contract Address Update** operation (機器提供サービス契約住所更新メソッド), which is the core business transaction for modifying all address-related fields and equipment details associated with a customer's telecom service contract line item. It operates as a **delegated dispatch pattern**: first it queries the current service contract wiring details via EKK0251B003 to detect whether the customer's address has diverged from what was previously registered (address change detection), then re-fetches the latest equipment-provided service contract agreement data via EKK0341A010 to ensure the update is based on the most current state. Based on the address change detection result, it determines the separate address designation flag (kiki_shs_kbt_shitei_flg) and the address check level (kikiSohusAdChkLv), which control whether additional address verification is required. Finally, it constructs a comprehensive 60-field input payload covering equipment specifications, both billing and delivery addresses, contract dates, financial terms (penalty codes, warranty), and delivery instructions, then delegates to the EKK0341C230 service component to persist the full contract update to the database. The method always returns `true` upon successful completion, indicating the update flow executed without error.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["isKktkSvcKeiJyushoUpdate"])

    START --> GET_CC_MSG["GET ccMsg from param.getData"]

    GET_CC_MSG --> CALL_EKK0251B003["CALL execEKK0251B003"]

    CALL_EKK0251B003 --> SET_FLG["SET kiki_shs_kbt_shitei_flg = 0"]

    SET_FLG --> CHECK_KOBETSU{isKobetsuJyusho?}

    CHECK_KOBETSU --> |true| GET_MAN_INPUT["GET kikiShsAdManInputFlg"]
    CHECK_KOBETSU --> |false| SET_FLG1["SET kiki_shs_kbt_shitei_flg = 1"]

    SET_FLG1 --> GET_MAN_INPUT

    GET_MAN_INPUT --> GET_SCRN_ID["GET scrnId from ccMsg"]

    GET_SCRN_ID --> INIT_CHK_LV["SET kikiSohusAdChkLv"]

    INIT_CHK_LV --> CHECK_MAN_INPUT{Input flag equals 0?}

    CHECK_MAN_INPUT --> |yes| SET_CHK_LV1["SET kikiSohusAdChkLv = 1"]
    CHECK_MAN_INPUT --> |no| SET_CHK_LV0["SET kikiSohusAdChkLv = 0"]

    SET_CHK_LV1 --> CALL_EKK0341A010["CALL execEKK0341A010"]
    SET_CHK_LV0 --> CALL_EKK0341A010

    CALL_EKK0341A010 --> BUILD_IN["BUILD ekk0341c230IN input array"]

    BUILD_IN --> CALL_EKK0341C230["CALL callSC EKK0341C230"]

    CALL_EKK0341C230 --> SET_UPD_DTM["CALL setSvcUpDtm"]

    SET_UPD_DTM --> RETURN_TRUE["RETURN true"]
```

**Processing Summary:**

1. **Retrieve screen parameter map** — fetches `ccMsg` HashMap from the request parameter object using `dataMapKey` as the key. This map carries all screen-level business data (service contract numbers, address fields, function codes, etc.).

2. **Query current service contract wiring details** — calls `execEKK0251B003` (EKK0251B003: Service Contract Wiring Details Inquiry for currently-in-use contracts) with `FUNC_CODE = "1"` to retrieve the existing contract data. This provides the baseline for address change detection.

3. **Determine separate address designation flag** — initializes `kiki_shs_kbt_shitei_flg` to `"0"` (not a separate address), then calls `isKobetsuJyusho` which compares 11 address fields between the screen data and the query result. If any field differs (address was changed), it sets `kiki_shs_kbt_shitei_flg = "1"` (is a separate address).

4. **Determine address check level** — reads the manual input flag (`kiki_shs_ad_man_input_flg`) from the screen parameters. If the flag equals `"0"` (not manual input, i.e., address was auto-derived or modified programmatically), the check level is set to `"1"` (require address verification). If the flag is non-zero (manual input from screen), the check level is `"0"` (skip verification).

5. **Re-fetch latest service contract data** — calls `execEKK0341A010` (EKK0341A010: Equipment-Provided Service Contract Agreement Inquiry) with `FUNC_CODE = "2"` to retrieve the most up-to-date contract agreement data, including equipment specs, addresses, delivery details, and contract dates.

6. **Build and execute update** — constructs a 60-field `Object[][]` input array for EKK0341C230 (Equipment-Provided Service Contract Information Change) by merging data from `ccMsg` (screen parameters) and `kktkSvcKeiMsg` (re-fetched contract data). Calls `callSC` to execute the update.

7. **Set update timestamp** — extracts the update datetime from the response and writes it to the work area via `setSvcUpDtm`. Returns `true`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle providing transaction and connection context for service component invocations. Carries the current user's database session and transaction state. |
| 2 | `scCall` | `ServiceComponentRequestInvoker` | Service component invocation bridge used to dispatch calls to CBS/SC layers (EKK0251B003, EKK0341A010, EKK0341C230). Acts as the delegation point for all backend service requests. |
| 3 | `param` | `IRequestParameterReadWrite` | Request parameter object that carries screen data and work-area data. Used to retrieve the `ccMsg` map (`getData(dataMapKey)`) and to store the update timestamp (`setSvcUpDtm`). |
| 4 | `dataMapKey` | `String` | Key identifying the screen parameter data map within `param`. Used as the lookup key for `getData()` and as the correlation key for all SC invocations via `callSC`. Typically encodes the template ID or screen context. |
| 5 | `temporaryData` | `HashMap<String, Object>` | Temporary storage map carrying cross-method data within the same request flow. Passed to `execEKK0341A010` for potential intermediate data sharing. |

**Read instance fields or external state:**
- None directly read — all data is obtained through parameter methods (`param.getData`, `ccMsg.get`, `kktkSvcKeiMsg.getString`) or method calls.

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `execEKK0251B003` (via `callSC`) | EKK0251B003CBS | KK_T_SVC_SEIYAKU (Service Contract) | Queries currently-in-use service contract wiring details (FUNC_CODE="1"). Retrieves current address and equipment data for change detection. |
| R | `execEKK0341A010` (via `callSC`) | EKK0341A010CBS | KK_T_KKTK_SVC_KEI (Equipment-Provided Service Contract) | Re-fetches latest equipment-provided service contract agreement data (FUNC_CODE="2") with updated values post-possible concurrent modification. |
| U | `callSC` (EKK0341C230) | EKK0341C230CBS | KK_T_KKTK_SVC_KEI (Equipment-Provided Service Contract) | Updates the full equipment-provided service contract information including equipment specs, both billing and delivery addresses, contract dates, and financial terms. |

### Internal helper calls:

| CRUD | Method | Description |
|------|--------|-------------|
| R | `isKobetsuJyusho` | Compares 11 address fields between screen data and the EKK0251B003 query result to determine if address changed. Pure in-memory comparison, no DB access. |
| R | `getNullToStr` | Utility — converts null strings to empty strings to avoid NPE during comparisons. |
| R | `getSvcUpDtm` | Utility — retrieves the current update timestamp from param for the pre-update timestamp field (UPD_DTM_BF). |
| U | `setSvcUpDtm` | Sets the post-update timestamp extracted from the EKK0341C230 response back into the work area. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS:JKKKikiIchiranKkKaifukuCC.execKikiKaifuku | `execKikiKaifuku` -> `isKktkSvcKeiJyushoUpdate` | `EKK0251B003 [R] KK_T_SVC_SEIYAKU`, `EKK0341A010 [R] KK_T_KKTK_SVC_KEI`, `EKK0341C230 [U] KK_T_KKTK_SVC_KEI` |

**Notes:** This method is called from `execKikiKaifuku()` within the same class `JKKKikiIchiranKkKaifukuCC`. No direct screen (KKSV*) or batch (KKBV*) entry points were found within 8 hops. The terminal operations are three service component calls: two reads (EKK0251B003, EKK0341A010) and one update (EKK0341C230), all targeting the service contract entity tables.

## 6. Per-Branch Detail Blocks

### Block 1 — SET (L1373-1374)

> Retrieve the screen parameter map from the request parameter object.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMsg = param.getData(dataMapKey)` // Get HashMap<String, Object> for the screen context |

### Block 2 — CALL (L1376)

> Query the current service contract wiring details to establish the baseline for address change detection.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ekk0251b003cbsMsg = execEKK0251B003(handle, scCall, param, dataMapKey)` // FUNC_CODE="1" - Currently-in-use contract inquiry |

### Block 3 — IF (address change detection) (L1378-1382)

> Determine the separate address designation flag. If `isKobetsuJyusho` returns false (address fields differ between screen data and query result), the flag is set to "1" indicating a separate (changed) address is in use.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kiki_shs_kbt_shitei_flg = "0"` // Default: not a separate address |
| 2 | IF | `!isKobetsuJyusho(ccMsg, ekk0251b003cbsMsg)` [Address differs] |

### Block 3.1 — nested SET inside IF (L1380-1381)

> Address was changed — set the separate address designation flag.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kiki_shs_kbt_shitei_flg = "1"` [-> Address diverged from baseline, separate address designation] |

**isKobetsuJyusho internal comparison fields (11 fields compared):**

| Field (ccMsg key) | Field (EKK0251B003 response) | Business Meaning |
|---|---|---|
| `kiki_sohus_ad_cd` | `KAISEN_PLACE_AD_CD` | Billing address code |
| `kiki_sohus_pcd` | `KAISEN_PLACE_PCD` | Postal code |
| `kiki_sohus_state_nm` | `KAISEN_PLACE_STATE_NM` | Prefecture name |
| `kiki_sohus_city_nm` | `KAISEN_PLACE_CITY_NM` | City name |
| `kiki_sohus_oaztsu_nm` | `KAISEN_PLACE_OAZTSU_NM` | District name |
| `kiki_sohus_azcho_nm` | `KAISEN_PLACE_AZCHO_NM` | Town/Block name |
| `kiki_sohus_bnchigo` | `KAISEN_PLACE_BNCHIGO` | Building number / reference |
| `kiki_sohus_adrttm` | `KAISEN_PLACE_ADRTTM` | Address supplement line 1 |
| `kiki_sohus_adrrm` | `KAISEN_PLACE_ADRRM` | Address supplement line 2 (room) |
| `kiki_sohus_telno` | `KAISEN_PLACE_TELNO` | Phone number |

### Block 4 — EXEC / SET (L1384-1388)

> Read screen-level configuration values. Note: commented-out code for screen ID KKW06201 (子画面から実行された場合) is present but inactive — it would force manual input flag to "1" if executed from that specific sub-screen.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `kikiShsAdManInputFlg = (String)ccMsg.get("kiki_shs_ad_man_input_flg")` // Manual input flag from screen |
| 2 | EXEC | `scrnId = getNullToStr((String)ccMsg.get("check_scrn_id"))` // Screen ID (currently unused — commented block) |

### Block 5 — SET (L1394)

> Initialize the address check level variable.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kikiSohusAdChkLv = ""` // Default initialization |

### Block 6 — IF/ELSE (manual input flag branching) (L1397-1403)

> Determine address check level based on whether the address was manually entered on screen. If the input flag is "0" (not manual / system-derived), set check level to "1" (require verification). Otherwise, set to "0" (skip verification).

| # | Type | Code |
|---|------|------|
| 1 | IF | `"0".equals(kikiShsAdManInputFlg)` [Not manual input] |

### Block 6.1 — nested SET (L1399-1400)

> Non-manual input — address was auto-derived or programmatically set; require verification.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kikiSohusAdChkLv = "1"` [-> Require address verification] |

### Block 6.2 — nested ELSE (L1402-1403)

> Manual input from screen — skip additional address verification.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kikiSohusAdChkLv = "0"` [-> Skip address verification] |

### Block 7 — CALL (L1407)

> Re-fetch the latest equipment-provided service contract agreement data to ensure the update uses the most current values (handles potential concurrent modifications). FUNC_CODE="2" indicates equipment-provided service contract inquiry.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `kktkSvcKeiMsg = execEKK0341A010(handle, scCall, param, dataMapKey, temporaryData, (String)ccMsg.get("kktk_svc_kei_no"))` // FUNC_CODE="2" |

### Block 8 — SET (L1410-1478)

> Build the comprehensive 60-field input array for the EKK0341C230 service contract update. Data sources: `ccMsg` (screen parameters), `kktkSvcKeiMsg` (re-fetched contract data from EKK0341A010), and computed values (`kiki_shs_kbt_shitei_flg`, `kikiSohusAdChkLv`, `getSvcUpDtm(param)`).

The input array maps fields as follows (all as `{field_constant, value}` pairs):

| # | Field Constant | Source | Business Meaning |
|---|---|---|---|
| 1 | TEMPLATEID | `"EKK0341C230"` | Template ID constant |
| 2 | FUNC_CODE | `ccMsg["func_code"]` | Function code from screen |
| 3 | KKTK_SVC_KEI_NO | `ccMsg["kktk_svc_kei_no"]` | Equipment-provided service contract number |
| 4 | KKTK_SBT_CD | `kktkSvcKeiMsg.getString(KKTK_SBT_CD)` | Equipment-provided service detail code |
| 5 | HAMBAI_SBT_CD | `kktkSvcKeiMsg.getString(HAMBAI_SBT_CD)` | Sales detail code |
| 6 | TAKNKIKI_MODEL_CD | `kktkSvcKeiMsg.getString(TAKNKIKI_MODEL_CD)` | Rental equipment model code |
| 7 | KIKI_SEIZO_NO | `kktkSvcKeiMsg.getString(KIKI_SEIZO_NO)` | Equipment serial number |
| 8 | HDD_CAPA_CD | `kktkSvcKeiMsg.getString(HDD_CAPA_CD)` | HDD capacity code |
| 9 | TSUSHIN_KIKI_SET_CD | `kktkSvcKeiMsg.getString(TSUSHIN_KIKI_SET_CD)` | Communication equipment set code |
| 10 | LINK_STB_FLG | `kktkSvcKeiMsg.getString(LINK_STB_FLG)` | Link STB (Set-Top Box) flag |
| 11 | KIKI_HKAT_SHITEI_SOKO_CD | `kktkSvcKeiMsg.getString(KIKI_HKAT_SHITEI_SOKO_CD)` | Equipment installation location code |
| 12 | KIKI_HKAT_SHITEI_SKDN_CD | `kktkSvcKeiMsg.getString(KIKI_HKAT_SHITEI_SKDN_CD)` | Equipment installation telephone number code |
| 13 | KIKI_SORYO_UM | `kktkSvcKeiMsg.getString(KIKI_SORYO_UM)` | Equipment rent amount |
| 14 | KIKI_SOHUS_NM | `ccMsg["kiki_sohus_nm"]` | Equipment provider name |
| 15 | KIKI_SOHUS_KANA | `ccMsg["kiki_sohus_kana"]` | Equipment provider name (kana) |
| 16 | KIKI_SOHUS_AD_CD | `ccMsg["kiki_sohus_ad_cd"]` | Equipment provider address code |
| 17 | KIKI_SOHUS_PCD | `ccMsg["kiki_sohus_pcd"]` | Equipment provider postal code |
| 18 | KIKI_SOHUS_STATE_NM | `ccMsg["kiki_sohus_state_nm"]` | Equipment provider prefecture |
| 19 | KIKI_SOHUS_CITY_NM | `ccMsg["kiki_sohus_city_nm"]` | Equipment provider city |
| 20 | KIKI_SOHUS_OAZTSU_NM | `ccMsg["kiki_sohus_oaztsu_nm"]` | Equipment provider district |
| 21 | KIKI_SOHUS_AZCHO_NM | `ccMsg["kiki_sohus_azcho_nm"]` | Equipment provider town/block |
| 22 | KIKI_SOHUS_BNCHIGO | `ccMsg["kiki_sohus_bnchigo"]` | Equipment provider reference |
| 23 | KIKI_SOHUS_ADRTTM | `ccMsg["kiki_sohus_adrttm"]` | Equipment provider address line 1 |
| 24 | KIKI_SOHUS_ADRRM | `ccMsg["kiki_sohus_adrrm"]` | Equipment provider address line 2 (room) |
| 25 | KIKI_SOHUS_TELNO | `ccMsg["kiki_sohus_telno"]` | Equipment provider phone number |
| 26 | KIKI_SOHUS_KSH_AD_SAI_FLG | `kktkSvcKeiMsg.getString(KIKI_SOHUS_KSH_AD_SAI_FLG)` | Equipment provider address rearrangement flag |
| 27 | KIKI_SHS_KBT_SHITEI_FLG | `kiki_shs_kbt_shitei_flg` | Computed: separate address designation flag |
| 28 | KIKI_STC_SAKI_NM | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_NM)` | Delivery destination name |
| 29 | KIKI_STC_SAKI_KANA | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_KANA)` | Delivery destination name (kana) |
| 30 | KIKI_STC_SAKI_AD_CD | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_AD_CD)` | Delivery destination address code |
| 31 | KIKI_STC_SAKI_PCD | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_PCD)` | Delivery destination postal code |
| 32 | KIKI_STC_SAKI_STATE_NM | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_STATE_NM)` | Delivery destination prefecture |
| 33 | KIKI_STC_SAKI_CITY_NM | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_CITY_NM)` | Delivery destination city |
| 34 | KIKI_STC_SAKI_OAZTSU_NM | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_OAZTSU_NM)` | Delivery destination district |
| 35 | KIKI_STC_SAKI_AZCHO_NM | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_AZCHO_NM)` | Delivery destination town/block |
| 36 | KIKI_STC_SAKI_BNCHIGO | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_BNCHIGO)` | Delivery destination reference |
| 37 | KIKI_STC_SAKI_ADRTTM | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_ADRTTM)` | Delivery destination address line 1 |
| 38 | KIKI_STC_SAKI_ADRRM | `kktkSvcKeiMsg.getString(KIKI_STC_SAKI_ADRRM)` | Delivery destination address line 2 |
| 39 | KIKI_STC_SK_KSH_AD_SAI_FLG | `kktkSvcKeiMsg.getString(KIKI_STC_SK_KSH_AD_SAI_FLG)` | Delivery destination address rearrangement flag |
| 40 | KIKI_STC_SK_TELNO | `kktkSvcKeiMsg.getString(KIKI_STC_SK_TELNO)` | Delivery destination phone number |
| 41 | KIKI_STS_KKK_SEIRI_CHU_FLG | `kktkSvcKeiMsg.getString(KIKI_STS_KKK_SEIRI_CHU_FLG)` | Equipment status processing flag |
| 42 | AD_MI_FIX_FLG | `kktkSvcKeiMsg.getString(AD_MI_FIX_FLG)` | Address correction fix flag |
| 43 | HAISO_DIV | `kktkSvcKeiMsg.getString(HAISO_DIV)` | Delivery classification |
| 44 | FTRIAL_KANYU_YMD | `kktkSvcKeiMsg.getString(FTRIAL_KANYU_YMD)` | Free trial start date |
| 45 | FTRIAL_PRD_ENDYMD | `kktkSvcKeiMsg.getString(FTRIAL_PRD_ENDYMD)` | Free trial period end date |
| 46 | HONKANYU_YMD | `kktkSvcKeiMsg.getString(HONKANYU_YMD)` | Actual connection date |
| 47 | HONKANYU_IKO_KIGEN_YMD | `kktkSvcKeiMsg.getString(HONKANYU_IKO_KIGEN_YMD)` | Actual connection planned date |
| 48 | HOSHO_CD | `kktkSvcKeiMsg.getString(HOSHO_CD)` | Warranty code |
| 49 | PNLTY_HASSEI_CD | `kktkSvcKeiMsg.getString(PNLTY_HASSEI_CD)` | Penalty occurrence code |
| 50 | IDO_DIV | `ccMsg["ido_div"]` | Transfer classification |
| 51 | CAS_CARD_USE_KYODAK_YMD | `kktkSvcKeiMsg.getString(CAS_CARD_USE_KYODAK_YMD)` | CAS card usage request date |
| 52 | KIKI_HUKA_INFO_CD | `kktkSvcKeiMsg.getString(KIKI_HUKA_INFO_CD)` | Equipment additional info code |
| 53 | HAISO_WAY_CD | `kktkSvcKeiMsg.getString(HAISO_WAY_CD)` | Delivery method code |
| 54 | KIKI_ITENS_MV_JSSIS_SKCD | `kktkSvcKeiMsg.getString(KIKI_ITENS_MV_JSSIS_SKCD)` | Equipment item transfer code |
| 55 | HAISO_REQ_SHITEI_YMD | `ccMsg["haiso_req_shitei_ymd"]` | Delivery request designated date |
| 56 | UPD_DTM_BF | `getSvcUpDtm(param)` | Pre-update timestamp |
| 57 | KIKI_SHS_AD_MAN_INPUT_FLG | `kikiShsAdManInputFlg` | Manual input flag |
| 58 | KAISHU_KIKI_UM | `""` (hardcoded empty) | Equipment return cost |
| 59 | SVC_STA_JI_HIS_JOKYO_SKCD | `kktkSvcKeiMsg.getString(SVC_STA_JI_HIS_JOKYO_SKCD)` | Service status history code |
| 60 | KIKI_SOHUS_AD_CHK_LV | `kikiSohusAdChkLv` | Computed: address check level |
| 61 | KIKI_STI_JI_KRIPLACE_SKCD | `kktkSvcKeiMsg.getString(KIKI_STI_JI_KRIPLACE_SKCD)` | Equipment installation location code |
| 62 | KIKI_STI_JI_KOCOMP_CD | `kktkSvcKeiMsg.getString(KIKI_STI_JI_KOCOMP_CD)` | Equipment installation floor code |
| 63 | KIKI_STI_JI_KOCOMP_SLF_CD | `kktkSvcKeiMsg.getString(KIKI_STI_JI_KOCOMP_SLF_CD)` | Equipment installation floor self code |
| 64 | KIKI_STI_JI_YTKSKOF_CD | `kktkSvcKeiMsg.getString(KIKI_STI_JI_YTKSKOF_CD)` | Equipment installation room code |
| 65 | KIKI_STI_JI_YTKSKOF_SLF_CD | `kktkSvcKeiMsg.getString(KIKI_STI_JI_YTKSKOF_SLF_CD)` | Equipment installation room self code |

### Block 9 — CALL (L1480)

> Execute the service contract update via EKK0341C230, passing all 65 input fields.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ekk0341c230OUT = callSC(handle, scCall, param, dataMapKey, ekk0341c230IN)` // EKK0341C230 — Equipment-Provided Service Contract Information Change |

### Block 10 — EXEC (L1483)

> Extract the post-update timestamp from the response and write it to the work area. Comment: 更新タイムスタンプをワーク領域にセットします。 (Set the update timestamp to the work area.)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setSvcUpDtm(param, ekk0341c230OUT.getString(EKK0341C230CBSMsg.UPD_DTM))` |

### Block 11 — RETURN (L1485)

> Always returns true indicating the update completed without error.

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `kktk_svc_kei_no` | Field | Equipment-Provided Service Contract Number — unique identifier for a service contract line item associated with rented telecom equipment |
| `kktk_svc_kei` | Abbreviation | 機器提供サービス契約 (Equipment-Provided Service Contract) — a contract for telecom equipment (STB, router, etc.) rented to a customer as part of a service plan |
| `kktk_sbt_cd` | Field | Equipment-Provided Service Detail Code — classifies the type of equipment service (e.g., FTTH, cable, routing) |
| `hambai_sbt_cd` | Field | Sales Detail Code — classifies the sales arrangement type for the equipment |
| `tankaniki_model_cd` | Field | Rental Equipment Model Code — identifies the specific hardware model of the rented device |
| `kiki_seizo_no` | Field | Equipment Serial Number — unique hardware serial number |
| `kiki_sohus_nm` | Field | Equipment Provider Name — the business/customer name associated with the equipment |
| `kiki_sohus_ad_cd` | Field | Equipment Provider Address Code — postal address classification code |
| `kiki_sohus_pcd` | Field | Equipment Provider Postal Code |
| `kiki_sohus_state_nm` | Field | Equipment Provider Prefecture Name |
| `kiki_sohus_city_nm` | Field | Equipment Provider City Name |
| `kiki_sohus_oaztsu_nm` | Field | Equipment Provider District Name |
| `kiki_sohus_azcho_nm` | Field | Equipment Provider Town/Block Name |
| `kiki_sohus_bnchigo` | Field | Equipment Provider Building Reference Number |
| `kiki_sohus_adrttm` | Field | Equipment Provider Address Supplement Line 1 |
| `kiki_sohus_adrrm` | Field | Equipment Provider Address Room/Supplement Line 2 |
| `kiki_sohus_telno` | Field | Equipment Provider Phone Number |
| `kiki_shs_kbt_shitei_flg` | Field | Equipment Billing Separate Address Designation Flag — `"0"` = address matches baseline, `"1"` = address has diverged (changed since baseline) |
| `kiki_shs_ad_man_input_flg` | Field | Equipment Billing Address Manual Input Flag — `"0"` = address not manually entered (auto-derived), non-zero = manually entered on screen |
| `kikiSohusAdChkLv` | Field | Equipment Billing Address Check Level — `"0"` = skip verification, `"1"` = require verification |
| `kiki_stc_saki_*` | Fields | Delivery Destination fields (name, kana, address, phone) — where equipment should be delivered |
| `kiki_sti_ji_*` | Fields | Equipment Installation fields (location, floor, room) — physical installation coordinates for the equipment |
| `ftrial_kanyu_ymd` | Field | Free Trial Insertion Start Date — start of free trial period |
| `ftrial_prd_endymd` | Field | Free Trial Period End Date |
| `honkanyu_ymd` | Field | Actual Connection Date — date service went live |
| `hosho_cd` | Field | Warranty Code — warranty coverage classification |
| `pnalty_hassei_cd` | Field | Penalty Occurrence Code — early termination or breach penalty code |
| `ido_div` | Field | Transfer Classification — indicates if this is a port-in, port-out, or internal transfer |
| `haiso_way_cd` | Field | Delivery Method Code — how equipment is delivered (mail, in-person, etc.) |
| `haiso_req_shitei_ymd` | Field | Delivery Request Designated Date |
| `upd_dtm_bf` | Field | Pre-Update Timestamp — snapshot of the record's update time before this modification |
| `FUNC_CODE = "1"` | Constant | Service Contract Wiring Details Inquiry — queries currently-in-use service contract records |
| `FUNC_CODE = "2"` | Constant | Equipment-Provided Service Contract Inquiry — queries full equipment service contract agreement data |
| EKK0251B003 | Service Component | Service Contract Wiring Details Inquiry (Currently In-Use) — retrieves the current state of the service contract wiring for comparison |
| EKK0341A010 | Service Component | Equipment-Provided Service Contract Agreement Inquiry — fetches full equipment contract details including specs, addresses, delivery, and financial terms |
| EKK0341C230 | Service Component | Equipment-Provided Service Contract Information Change — persists the full updated service contract record to the database |
| CC | Abbreviation | Common Component — shared business logic class, not tied to a specific screen |
| SC | Abbreviation | Service Component — backend service layer module that handles specific business transactions |
| CBS | Abbreviation | Customer Business System — the broader system context for service components |
| CAANMsg | Type | Communication message object used for inter-layer data exchange between the CC layer and the CBS/SC layer |
| isKobetsuJyusho | Method | Address change detection — compares 11 address fields between screen data and the baseline query result to determine if the address was modified |
| SET | Type Category | Variable assignment or field initialization in block analysis |
| EXEC | Type Category | Method call on a parameter or local object (not a cross-component service call) |
| CALL | Type Category | Invocation of another service component or business method |
