# Business Logic — JKKUsePlaceAdInfUpdCC.getParameterErrorInfo() [96 LOC]

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

## 1. Role

### JKKUsePlaceAdInfUpdCC.getParameterErrorInfo()

This method performs **parameter input validation** for address change operations in the K-Opticom customer backbone system — specifically when a subscriber requests a change of their service location address (`利用住所住所情報変更`). It validates nine address-related fields extracted from a parameter map, checking each for requiredness (mandatory or optional), data type conformity (numeric, alphanumeric, or general name), and character-length boundaries. The method follows a **fail-fast sequential validation pattern**: it iterates through each field one at a time, and if a validation error is detected for any field, it immediately records the error and returns — ensuring only the first error encountered is reported to the caller (the UI screen can then display the specific field to fix).

The method operates on **residential address data** used across FTTH (Fiber To The Home) broadband service installations, relocations, and address corrections. It does not branch by service type; instead, it validates the address payload uniformly regardless of the underlying service contract. As a shared utility called from `JKKUsePlaceAdInfUpdCC.execute()`, its role in the larger system is the **first-line quality gate** before any database updates or downstream service component calls proceed. It returns an empty list when all fields pass validation, signaling to the caller that the address change processing should continue.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["getParameterErrorInfo(dataMap)"])
    START --> INIT["Initialize errList = empty ArrayList"]
    INIT --> GET_SVC["Get svcKeiKaisenUWNo from dataMap"]
    GET_SVC --> CHK_SVC["checkError(svcKeiKaisenUWNo, required=true, type=NUM_ALF_1, min=12, max=12)"]
    CHK_SVC --> ERR_SVC{errCd != null?}
    ERR_SVC -->|Yes| ADD_SVC["addErrorMap(errCd, svc_kei_kaisen_ucwk_no, value)"]
    ADD_SVC --> RET_SVC["Return errList early"]
    ERR_SVC -->|No| GET_POST["Get postCd from dataMap"]
    GET_POST --> CHK_POST["checkError(postCd, required=true, type=NUM_1, min=7, max=7)"]
    CHK_POST --> ERR_POST{errCd != null?}
    ERR_POST -->|Yes| ADD_POST["addErrorMap(errCd, ad_pcd, value)"]
    ADD_POST --> RET_POST["Return errList early"]
    ERR_POST -->|No| GET_STATE["Get state from dataMap"]
    GET_STATE --> CHK_STATE["checkError(state, required=true, type=NAME_AD, min=1, max=4)"]
    CHK_STATE --> ERR_STATE{errCd != null?}
    ERR_STATE -->|Yes| ADD_STATE["addErrorMap(errCd, ad_state, value)"]
    ADD_STATE --> RET_STATE["Return errList early"]
    ERR_STATE -->|No| GET_CITY["Get city from dataMap"]
    GET_CITY --> CHK_CITY["checkError(city, required=false, type=NAME_AD, min=1, max=12)"]
    CHK_CITY --> ERR_CITY{errCd != null?}
    ERR_CITY -->|Yes| ADD_CITY["addErrorMap(errCd, ad_city, value)"]
    ADD_CITY --> RET_CITY["Return errList early"]
    ERR_CITY -->|No| GET_OAZ["Get oaztsu from dataMap"]
    GET_OAZ --> CHK_OAZ["checkError(oaztsu, required=false, type=NAME_AD, min=1, max=18)"]
    CHK_OAZ --> ERR_OAZ{errCd != null?}
    ERR_OAZ -->|Yes| ADD_OAZ["addErrorMap(errCd, ad_oaztsu, value)"]
    ADD_OAZ --> RET_OAZ["Return errList early"]
    ERR_OAZ -->|No| GET_AZC["Get azcho from dataMap"]
    GET_AZC --> CHK_AZC["checkError(azcho, required=false, type=NAME_AD, min=1, max=12)"]
    CHK_AZC --> ERR_AZC{errCd != null?}
    ERR_AZC -->|Yes| ADD_AZC["addErrorMap(errCd, ad_azcho, value)"]
    ADD_AZC --> RET_AZC["Return errList early"]
    ERR_AZC -->|No| GET_BNC["Get bnchigo from dataMap"]
    GET_BNC --> CHK_BNC["checkError(bnchigo, required=true, type=NAME_AD, min=1, max=61)"]
    CHK_BNC --> ERR_BNC{errCd != null?}
    ERR_BNC -->|Yes| ADD_BNC["addErrorMap(errCd, ad_bnchigo, value)"]
    ADD_BNC --> RET_BNC["Return errList early"]
    ERR_BNC -->|No| GET_ADR["Get adrttm from dataMap"]
    GET_ADR --> CHK_ADR["checkError(adrttm, required=false, type=NAME_AD, min=1, max=45)"]
    CHK_ADR --> ERR_ADR{errCd != null?}
    ERR_ADR -->|Yes| ADD_ADR["addErrorMap(errCd, ad_adrttm, value)"]
    ADD_ADR --> RET_ADR["Return errList early"]
    ERR_ADR -->|No| GET_RM["Get adrrm from dataMap"]
    GET_RM --> CHK_RM["checkError(adrrm, required=false, type=NAME_AD, min=1, max=15)"]
    CHK_RM --> ERR_RM{errCd != null?}
    ERR_RM -->|Yes| ADD_RM["addErrorMap(errCd, ad_adrrm, value)"]
    ADD_RM --> RET_RM["Return errList early"]
    ERR_RM -->|No| RET_OK["Return errList (empty — all valid)"]
    RET_OK --> END(["Return / Next"])
```

**Validation Rules Summary:**

| # | Field | Required | Type | Min Len | Max Len |
|---|-------|----------|------|---------|---------|
| 1 | Service Contract Line Internal Number | Yes | NUM_ALF_1 | 12 | 12 |
| 2 | Postal Code | Yes | NUM_1 | 7 | 7 |
| 3 | Prefecture Name | Yes | NAME_AD | 1 | 4 |
| 4 | City Name | No | NAME_AD | 1 | 12 |
| 5 | District/Block Name | No | NAME_AD | 1 | 18 |
| 6 | Block Name | No | NAME_AD | 1 | 12 |
| 7 | Lot Number | Yes | NAME_AD | 1 | 61 |
| 8 | Building Name | No | NAME_AD | 1 | 45 |
| 9 | Room Number | No | NAME_AD | 1 | 15 |

**Type Definitions:**
- `NUM_ALF_1` — Numeric and alphanumeric characters only (digits 0-9, a-z, A-Z)
- `NUM_1` — Numeric characters only (digits 0-9)
- `NAME_AD` — Japanese address name characters (kanji, hiragana, katakana, alphanumeric)

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `dataMap` | `HashMap<String, Object>` | A map containing address change request parameters. It carries the complete address payload submitted by the user through the screen, keyed by parameter names such as `svc_kei_kaisen_ucwk_no` (service contract line internal number), `ad_pcd` (postal code), `ad_state` (prefecture), etc. The method extracts each value by its key, converts it to String, and validates it. |

**Internal constants and state used by this method:**

| Constant | Value | Business Description |
|----------|-------|---------------------|
| `PARAM_SVC_KEI_KAISEN_UCWK_NO` | `"svc_kei_kaisen_ucwk_no"` | Service contract line internal number — unique identifier for a specific line within a service contract |
| `PARAM_AD_PCD` | `"ad_pcd"` | Postal code (日本郵便番号) — 7-digit Japanese postal code |
| `PARAM_AD_STATE_NM` | `"ad_state"` | Prefecture name (都道府県名) — e.g., Tokyo, Osaka |
| `PARAM_AD_CITY_NM` | `"ad_city"` | City/municipality name (市区町村名) |
| `PARAM_AD_OAZTSU_NM` | `"ad_oaztsu"` | District/block name (大字通名称) — larger geographic subdivision within a city |
| `PARAM_AD_AZCHO_NM` | `"ad_azcho"` | Block name (字丁目名) — finer subdivision within a district |
| `PARAM_AD_BNCHIGO` | `"ad_bnchigo"` | Lot number (番地号) — specific land parcel identifier |
| `PARAM_AD_ADRTTM` | `"ad_adrttm"` | Building name (建物名) — optional building/apartment name |
| `PARAM_AD_ADRRM` | `"ad_adrrm"` | Room number (部屋番号) — optional unit/apt number within a building |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKUsePlaceAdInfUpdCC.checkError` | JKKUsePlaceAdInfUpdCC | - | Calls `checkError` in `JKKUsePlaceAdInfUpdCC` — validates a single string field against requiredness, type, and length constraints |
| C | `JKKUsePlaceAdInfUpdCC.createErrorMap` | JKKUsePlaceAdInfUpdCC | - | Calls `createErrorMap` in `JKKUsePlaceAdInfUpdCC` — builds an error map with `errCode`, `errMessage`, and the problematic field value |

This method performs **no direct database CRUD operations**. It is a pure validation layer that:
- Reads input data from the `dataMap` parameter (no DB access)
- Invokes `checkError()` to validate each field (local validation, no CBS/SC)
- Invokes `createErrorMap()` to construct error records (in-memory object creation)

The method is purely a **read and validate** operation — it does not create, update, or delete any entity data. All error records are assembled in memory and returned to the caller for display.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 methods.
Terminal operations from this method: `createErrorMap` [C], `checkError` [-], `createErrorMap` [C], `checkError` [-], `createErrorMap` [C], `checkError` [-], `createErrorMap` [C], `checkError` [-], `createErrorMap` [C], `checkError` [-], `createErrorMap` [C], `checkError` [-], `createErrorMap` [C], `checkError` [-], `createErrorMap` [C], `checkError` [-], `createErrorMap` [C], `checkError` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Controller: `JKKUsePlaceAdInfUpdCC.execute()` | `JKKUsePlaceAdInfUpdCC.execute(handle, param, fixedText)` → `getParameterErrorInfo(paramMap)` → `checkError(...)` → `createErrorMap(...)` | `checkError [-]`, `createErrorMap [C]` |

**Call chain explanation:**
1. The `execute()` method in `JKKUsePlaceAdInfUpdCC` is the primary entry point — it is a business component (CC) called by screen handlers during the address change workflow.
2. `execute()` first calls `getParameterErrorInfo(paramMap)` to validate address parameters before any further processing.
3. If errors are found, `execute()` sets the return code to `RETURN_CD_1000` (customization check error) and returns immediately without proceeding to initialization or database updates.
4. If validation passes, `execute()` continues to `setupInitData()`, `addMskm()`, `updateUsePlaceAd()`, and `variousChange()` — the actual address change processing.

## 6. Per-Branch Detail Blocks

**Block 1** — [BLOCK] `(L276)` Initialize error list container

> Creates an empty ArrayList to hold validation error maps. All subsequent error entries are added here, or it is returned empty if all validations pass.

| # | Type | Code |
|---|------|------|
| 1 | SET | `errList = new ArrayList<HashMap<String, Object>>()` // Initialize empty error list |

---

**Block 2** — [IF] `(svcKeiKaisenUWNo check)` — Service Contract Line Internal Number — REQUIRED [CONSTANT: `PARAM_SVC_KEI_KAISEN_UCWK_NO = "svc_kei_kaisen_ucwk_no"`] (L279)

> Extracts the service contract line internal number from the data map and validates it. This is a **required** field that must be exactly 12 characters long, containing only alphanumeric characters.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiKaisenUWNo = (String)dataMap.get(PARAM_SVC_KEI_KAISEN_UCWK_NO)` // Extract from dataMap [-> `svc_kei_kaisen_ucwk_no`] |
| 2 | CALL | `errCd = checkError(svcKeiKaisenUWNo, true, AttrType.NUM_ALF_1, 12, 12)` // required=true, alphanumeric, fixed-length 12 [NUM_ALF_1 = alphanumeric only] |
| 3 | IF | `if (errCd != null)` // Error detected |

**Block 2.1** — [nested IF branch] — Error returned for service line number (L281)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `errList.add(createErrorMap(errCd, PARAM_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUWNo))` // Build and add error entry [-> `svc_kei_kaisen_ucwk_no`] |
| 2 | RETURN | `return errList` // Fail-fast: exit method early |

**Block 2.2** — [IF fallthrough] — No error for service line number (L280)

> Proceeds to next field validation (postal code).

---

**Block 3** — [IF] `(postCd check)` — Postal Code — REQUIRED [CONSTANT: `PARAM_AD_PCD = "ad_pcd"`] (L286)

> Extracts the 7-digit Japanese postal code. This is a **required** field containing only numeric digits, fixed at exactly 7 characters.

| # | Type | Code |
|---|------|------|
| 1 | SET | `postCd = (String)dataMap.get(PARAM_AD_PCD)` // Extract from dataMap [-> `ad_pcd`] |
| 2 | CALL | `errCd = checkError(postCd, true, AttrType.NUM_1, 7, 7)` // required=true, numeric only, fixed-length 7 [NUM_1 = numeric only] |
| 3 | IF | `if (errCd != null)` // Error detected |

**Block 3.1** — [nested IF branch] — Error returned for postal code (L288)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `errList.add(createErrorMap(errCd, PARAM_AD_PCD, postCd))` // Build and add error entry [-> `ad_pcd`] |
| 2 | RETURN | `return errList` // Fail-fast: exit method early |

**Block 3.2** — [IF fallthrough] — No error for postal code (L287)

> Proceeds to next field validation (prefecture name).

---

**Block 4** — [IF] `(state check)` — Prefecture Name — REQUIRED [CONSTANT: `PARAM_AD_STATE_NM = "ad_state"`] (L292)

> Extracts the prefecture name (e.g., "Tokyo", "Osaka"). This is a **required** field allowing Japanese address name characters, with a length between 1 and 4 characters.

| # | Type | Code |
|---|------|------|
| 1 | SET | `state = (String)dataMap.get(PARAM_AD_STATE_NM)` // Extract from dataMap [-> `ad_state`] |
| 2 | CALL | `errCd = checkError(state, true, AttrType.NAME_AD, 1, 4)` // required=true, name type, 1-4 chars [NAME_AD = Japanese address name] |
| 3 | IF | `if (errCd != null)` // Error detected |

**Block 4.1** — [nested IF branch] — Error returned for prefecture name (L294)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `errList.add(createErrorMap(errCd, PARAM_AD_STATE_NM, state))` // Build and add error entry [-> `ad_state`] |
| 2 | RETURN | `return errList` // Fail-fast: exit method early |

**Block 4.2** — [IF fallthrough] — No error for prefecture name (L293)

> Proceeds to next field validation (city name).

---

**Block 5** — [IF] `(city check)` — City Name — OPTIONAL [CONSTANT: `PARAM_AD_CITY_NM = "ad_city"`] (L298)

> Extracts the city/municipality name. This is an **optional** field — null/empty values are accepted. When provided, must contain valid Japanese address name characters between 1 and 12 characters.

| # | Type | Code |
|---|------|------|
| 1 | SET | `city = (String)dataMap.get(PARAM_AD_CITY_NM)` // Extract from dataMap [-> `ad_city`] |
| 2 | CALL | `errCd = checkError(city, false, AttrType.NAME_AD, 1, 12)` // required=false, name type, 1-12 chars |
| 3 | IF | `if (errCd != null)` // Error detected |

**Block 5.1** — [nested IF branch] — Error returned for city name (L300)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `errList.add(createErrorMap(errCd, PARAM_AD_CITY_NM, city))` // Build and add error entry [-> `ad_city`] |
| 2 | RETURN | `return errList` // Fail-fast: exit method early |

**Block 5.2** — [IF fallthrough] — No error for city name (L299)

> Proceeds to next field validation (district/block name).

---

**Block 6** — [IF] `(oaztsu check)` — District/Block Name — OPTIONAL [CONSTANT: `PARAM_AD_OAZTSU_NM = "ad_oaztsu"`] (L304)

> Extracts the larger district or thoroughfare name (e.g., "Chuo", "Nishi"). This is an **optional** field. When provided, must contain valid Japanese address name characters between 1 and 18 characters.

| # | Type | Code |
|---|------|------|
| 1 | SET | `oaztsu = (String)dataMap.get(PARAM_AD_OAZTSU_NM)` // Extract from dataMap [-> `ad_oaztsu`] |
| 2 | CALL | `errCd = checkError(oaztsu, false, AttrType.NAME_AD, 1, 18)` // required=false, name type, 1-18 chars |
| 3 | IF | `if (errCd != null)` // Error detected |

**Block 6.1** — [nested IF branch] — Error returned for district name (L306)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `errList.add(createErrorMap(errCd, PARAM_AD_OAZTSU_NM, oaztsu))` // Build and add error entry [-> `ad_oaztsu`] |
| 2 | RETURN | `return errList` // Fail-fast: exit method early |

**Block 6.2** — [IF fallthrough] — No error for district name (L305)

> Proceeds to next field validation (block name).

---

**Block 7** — [IF] `(azcho check)` — Block Name — OPTIONAL [CONSTANT: `PARAM_AD_AZCHO_NM = "ad_azcho"`] (L310)

> Extracts the block/chome name (e.g., "1-chome", "2-ban"). This is an **optional** field. When provided, must contain valid Japanese address name characters between 1 and 12 characters.

| # | Type | Code |
|---|------|------|
| 1 | SET | `azcho = (String)dataMap.get(PARAM_AD_AZCHO_NM)` // Extract from dataMap [-> `ad_azcho`] |
| 2 | CALL | `errCd = checkError(azcho, false, AttrType.NAME_AD, 1, 12)` // required=false, name type, 1-12 chars |
| 3 | IF | `if (errCd != null)` // Error detected |

**Block 7.1** — [nested IF branch] — Error returned for block name (L312)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `errList.add(createErrorMap(errCd, PARAM_AD_AZCHO_NM, azcho))` // Build and add error entry [-> `ad_azcho`] |
| 2 | RETURN | `return errList` // Fail-fast: exit method early |

**Block 7.2** — [IF fallthrough] — No error for block name (L311)

> Proceeds to next field validation (lot number).

---

**Block 8** — [IF] `(bnchigo check)` — Lot Number — REQUIRED [CONSTANT: `PARAM_AD_BNCHIGO = "ad_bnchigo"`] (L316)

> Extracts the lot number (番地号), which is the specific land parcel identifier in Japanese addresses. This is a **required** field allowing Japanese address name characters, with a length between 1 and 61 characters — the longest allowed field to accommodate complex lot numbering (e.g., "1-2-3").

| # | Type | Code |
|---|------|------|
| 1 | SET | `bnchigo = (String)dataMap.get(PARAM_AD_BNCHIGO)` // Extract from dataMap [-> `ad_bnchigo`] |
| 2 | CALL | `errCd = checkError(bnchigo, true, AttrType.NAME_AD, 1, 61)` // required=true, name type, 1-61 chars |
| 3 | IF | `if (errCd != null)` // Error detected |

**Block 8.1** — [nested IF branch] — Error returned for lot number (L318)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `errList.add(createErrorMap(errCd, PARAM_AD_BNCHIGO, bnchigo))` // Build and add error entry [-> `ad_bnchigo`] |
| 2 | RETURN | `return errList` // Fail-fast: exit method early |

**Block 8.2** — [IF fallthrough] — No error for lot number (L317)

> Proceeds to next field validation (building name).

---

**Block 9** — [IF] `(adrttm check)` — Building Name — OPTIONAL [CONSTANT: `PARAM_AD_ADRTTM = "ad_adrttm"`] (L322)

> Extracts the building or apartment name (建物名). This is an **optional** field — many residences in Japan do not have a building name. When provided, must contain valid Japanese address name characters between 1 and 45 characters.

| # | Type | Code |
|---|------|------|
| 1 | SET | `adrttm = (String)dataMap.get(PARAM_AD_ADRTTM)` // Extract from dataMap [-> `ad_adrttm`] |
| 2 | CALL | `errCd = checkError(adrttm, false, AttrType.NAME_AD, 1, 45)` // required=false, name type, 1-45 chars |
| 3 | IF | `if (errCd != null)` // Error detected |

**Block 9.1** — [nested IF branch] — Error returned for building name (L324)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `errList.add(createErrorMap(errCd, PARAM_AD_ADRTTM, adrttm))` // Build and add error entry [-> `ad_adrttm`] |
| 2 | RETURN | `return errList` // Fail-fast: exit method early |

**Block 9.2** — [IF fallthrough] — No error for building name (L323)

> Proceeds to next field validation (room number).

---

**Block 10** — [IF] `(adrrm check)` — Room Number — OPTIONAL [CONSTANT: `PARAM_AD_ADRRM = "ad_adrrm"`] (L328)

> Extracts the room or apartment number (部屋番号). This is an **optional** field. When provided, must contain valid Japanese address name characters between 1 and 15 characters.

| # | Type | Code |
|---|------|------|
| 1 | SET | `adrrm = (String)dataMap.get(PARAM_AD_ADRRM)` // Extract from dataMap [-> `ad_adrrm`] |
| 2 | CALL | `errCd = checkError(adrrm, false, AttrType.NAME_AD, 1, 15)` // required=false, name type, 1-15 chars |
| 3 | IF | `if (errCd != null)` // Error detected |

**Block 10.1** — [nested IF branch] — Error returned for room number (L330)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `errList.add(createErrorMap(errCd, PARAM_AD_ADRRM, adrrm))` // Build and add error entry [-> `ad_adrrm`] |
| 2 | RETURN | `return errList` // Fail-fast: exit method early |

**Block 10.2** — [IF fallthrough] — No error for room number (L329)

> All nine fields have passed validation.

---

**Block 11** — [RETURN] `(End of method)` (L333)

> Returns the (empty) error list to the caller, signaling that all address parameters are valid and processing can proceed.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return errList` // All validations passed — return empty list |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_kaisen_ucwk_no` | Field | Service contract line internal number — unique identifier for a specific line item within a service contract; used to trace which service line's address is being changed |
| `ad_pcd` | Field | Postal code (郵便番号) — 7-digit Japanese postal code format (e.g., "1000001") |
| `ad_state` | Field | Prefecture name (都道府県名) — the highest-level geographic division in Japan (e.g., Tokyo, Osaka, Hokkaido) |
| `ad_city` | Field | City/municipality name (市区町村名) — city, ward, town, or village within a prefecture |
| `ad_oaztsu` | Field | District/block thoroughfare name (大字通名称) — larger geographic subdivision within a city, often used in rural addresses |
| `ad_azcho` | Field | Block/chome name (字丁目名) — finer subdivision within a district (e.g., "1-chome", "2-ban") |
| `ad_bnchigo` | Field | Lot number (番地号) — specific land parcel identifier within a block; core part of Japanese addressing |
| `ad_adrttm` | Field | Building name (建物名) — name of the building or apartment complex (optional) |
| `ad_adrrm` | Field | Room number (部屋番号) — apartment/unit number within a building (optional) |
| `checkError` | Method | Core validation method — checks a string value for null/blank (requiredness), character type conformity, and length boundaries |
| `createErrorMap` | Method | Factory method that constructs an error map containing the error code, field name, and the submitted value |
| `NUM_ALF_1` | Constant (enum) | Character type: numeric and alphanumeric only (0-9, a-z, A-Z) |
| `NUM_1` | Constant (enum) | Character type: numeric characters only (0-9) |
| `NAME_AD` | Constant (enum) | Character type: Japanese address name characters (kanji, hiragana, katakana, plus alphanumeric) |
| `E1001` | Constant | Error code for required field check failure |
| `E2001` | Constant | Error code for attribute/character type check failure |
| `E3001` | Constant | Error code for length check failure |
| `KKKUsePlaceAdInfUpdCC` | Class | Use place address information update common component — handles all address change business logic for K-Opticom FTTH subscribers |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service; the primary service context for address changes in this system |
| Service Contract | Business term | Agreement between K-Opticom and a subscriber for one or more services; contains multiple service lines |
| Service Contract Line | Business term | A single service within a multi-line contract; each line has its own address |
| Fail-fast validation | Design pattern | Validation approach where the first error encountered stops processing and returns, rather than collecting all errors at once |
| K-Opticom | Business term | Japanese broadband telecommunications provider; the system owner |
| `execute()` | Method | Entry point of `JKKUsePlaceAdInfUpdCC` — orchestrates the full address change workflow including initialization, MSKM registration, and DB updates |
| SCControlMapKeys | Class | Standard Futurity framework class for setting return codes and messages in the control map |
| `RETURN_CD_1000` | Constant | Return code indicating customization check error (validation failure) |
| `RETURN_CD_1050` | Constant | Return code indicating security check error (initialization failure) |
| `RETURN_CD_9000` | Constant | Return code indicating system error (unhandled exception) |
| `sessId` | Field | Session identifier — tracks the database transaction session for the address change operation |
| `KisnPlcAdMiFixFlg` | Field | Kitten place address not-determined flag — indicates whether the residence address has been finalized |
| `KaisenPlcKshAdSaiFlg` | Field | Line location customer address mismatch flag — indicates if the service location address differs from the contract address |
