# Business Logic — FUW03501SFLogic.getCommonInfo() [119 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW03501SF.FUW03501SFLogic` |
| Layer | Controller / Web Logic (Front-end Web Layer) |
| Module | `FUW03501SF` (Package: `eo.web.webview.FUW03501SF`) |

## 1. Role

### FUW03501SFLogic.getCommonInfo()

This method serves as the **common information extraction service** for the FUW03501SF screen module. It retrieves and consolidates a complete set of customer contract, service, and optional service data from a shared front-end data bean (`X31SDataBeanAccess`) into a single result `HashMap`. The method extracts SSO (Single Sign-On) authentication info, current customer contract details, service contract hierarchies, optional service contract details, and billing contract summaries — forming a unified view of the customer's subscription state. Its primary business purpose is to identify the active **Dial-Up Connection (DIAL)** optional service contract, capture its associated pricing codes (PCRS_CD, PPLAN_CD), and produce a composite pricing branch identifier string (`NOW_PPLAN_STR`) that downstream logic uses for fee determination and pricing plan selection. The method also tracks how many active Dial-Up Connection contracts exist (`DIAL_CONNECT_NOW_CNT`), which is critical for enforcing subscription limits. This method is a shared utility called by multiple entry points (`cfm`, `init`, `mskm`) and also referenced by the JCC request processing pipeline (multi-login check, preprocess, request flag setting) and the front-end common header component (message list population). It implements a **delegation + builder pattern**: it delegates to other beans to retrieve nested data structures, then builds a flattened result map for downstream consumption.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["getCommonInfo(commoninfoBean)"])

    START --> INIT["Initialize resMap and local variables"]

    INIT --> WEB_CHG["Retrieve Web Change Info Bean (WEB_CHG_INFO)"]
    WEB_CHG --> SSO_INFO["Retrieve SSO Info from Web Change (SSO_INFO)"]
    SSO_INFO --> GEN_CUST["Retrieve Current Customer Contract Info (GEN_CUST_KEI_INFO)"]
    GEN_CUST --> SVC_KEI["Retrieve Service Contract Info (SVC_KEI_INFO)"]
    SVC_KEI --> PRC_GRP["Get Processing Group Code via PRC_GRP_CD_23"]

    PRC_GRP --> SVC_UCWK["Retrieve Service Contract Detail Info (SVC_KEI_UCWK_INFO)"]
    SVC_UCWK --> ISP_PWD["Get ISP Auth ID Password via ISP_NINSHO_ID_PWD_24"]

    ISP_PWD --> DIAL_LOOP_START["For each Optional Service Contract (n=0..count)"]
    DIAL_LOOP_START --> GET_OPSVC["Get OP_SVC_CD_28 and OP_SVC_KEI_STAT_28"]

    GET_OPSVC --> CONDITION{OP_SVC_CD == "B020" AND status != "910" AND status != "920"}

    CONDITION -->|True| MATCH_FOUND["Increment dialKeiCnt, capture opSvcCd, pcrsCd, pplanCd, opSvcKeiNo, timestamps"]
    MATCH_FOUND --> NINSHO_CHECK{opSvcKeiNo != null}

    NINSHO_CHECK -->|True| GET_NINSHO["Get DUPCON_NINSHO_ID_28"]
    GET_NINSHO --> DIAL_LOOP_END["Continue to next Optional Service"]

    NINSHO_CHECK -->|False| DIAL_LOOP_END
    CONDITION -->|False| DIAL_LOOP_END

    DIAL_LOOP_END --> DIAL_LOOP_CHECK{More Optional Services?}
    DIAL_LOOP_CHECK -->|Yes| DIAL_LOOP_START
    DIAL_LOOP_CHECK -->|No| SEIKY_LOOP["For each Billing Contract (k=0..count)"]

    SEIKY_LOOP --> SEIKY_LOOP_BODY["Iterate SeikyKeiInfoBeans (no extraction)")
    SEIKY_LOOP_BODY --> PPLAN_STR["Build pplanStr: opSvcCd + \"_\" + pcrsCd + \"_\" + pplanCd"]

    PPLAN_STR --> PUT_BEANS["Put Beans into resMap (SSO_INFO, SVC_KEI_INFO, SEIKY_KEI_INFO, OP_SVC_KEI_INFO)"]

    PUT_BEANS --> PUT_VALUES["Put Values into resMap (DIAL_CONNECT_NOW_CNT, PRC_GRP_CD_23, NOW_OP_SVC_CD, NOW_PCRS_CD, NOW_PPLAN_CD, NOW_PPLAN_STR, NOW_DIAL_NISHO_ID, AF_DIAL_NINSHO_ID_PWD, OP_SVC_KEI_NO_28, GENE_ADD_DTM_28, LAST_UPD_DTM_28)"]

    PUT_VALUES --> END_RETURN(["Return resMap"])
```

**Constant Resolution Reference:**

| Constant | Resolved Value | Business Meaning |
|----------|---------------|------------------|
| `JFUStrConst.CD00136_B020` | `"B020"` | Optional Service Code — Dial-Up Connection (ダイアルアップ接続) |
| `JFUStrConst.CD00037_910` | `"910"` | Service Contract Status — Terminated (解約済) |
| `JFUStrConst.CD00037_920` | `"920"` | Service Contract Status — Canceled (キャンセル済) |
| `X31CWebConst.DATABEAN_GET_VALUE` | `"<constant>"` | Command to retrieve data bean value via sendMessageString |
| `STR_UNDERBAR` | `"_"` | Separator character for pricing branch string |

**Processing Summary:**
The method follows a nested-delegation traversal pattern. It enters a hierarchical data bean structure: `commoninfoBean` -> `WEB_CHG_INFO` -> `SSO_INFO`, `GEN_CUST_KEI_INFO` -> `SVC_KEI_INFO` -> `SVC_KEI_UCWK_INFO` -> `OP_SVC_KEI_INFO`. For each optional service entry, it applies a conditional filter: only contracts whose service code is `"B020"` (Dial-Up Connection) and whose status is neither `"910"` (Terminated) nor `"920"` (Canceled) are considered active. The first matching contract's details are captured (overwriting in each iteration, so the last active one prevails). After iterating all optional services and billing contracts, it assembles the result map with both the extracted beans and primitive values.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `commoninfoBean` | `X31SDataBeanAccess` | The shared front-end data bean containing a nested hierarchy of customer and service contract information. Acts as the single source of truth for all common screen data — including SSO authentication context, current customer profile, service contract tree, optional service contracts, and billing contracts. This bean is populated by the front-end framework before the logic layer processes it. |

**Instance Fields Read by This Method:**

None — this is a `private static` method that relies exclusively on its parameter and local variables. No instance/state fields are accessed.

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `getDataBeanArray(String)` | - | - | Nested bean retrieval — extracts a data bean array from the hierarchy by key (e.g., `WEB_CHG_INFO`, `SSO_INFO`) |
| R | `getDataBean(int)` | - | - | Element extraction — retrieves the nth element from a data bean array |
| R | `sendMessageString(String, String)` | - | - | Value accessor — retrieves a string value from a data bean by key (equivalent to a getter) |
| R | `getCount()` | - | - | Collection size — returns the number of elements in a data bean array |
| - | `put(String, Object)` | - | - | Map insertion — stores bean or value into the result map by key |
| - | `append(String)` | - | - | String building — appends characters to construct the pricing branch identifier |
| - | `toString()` | - | - | String conversion — converts StringBuffer to String for map storage |

**Note:** This method is a pure read/extraction operation. It does not invoke any SC (Service Component) or CBS (Business Service) methods, nor does it access any database tables directly. All data comes from the `commoninfoBean` parameter which was pre-populated by prior layers of the application.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 15 methods.
Terminal operations from this method: `getDataBean` [R], `getDataBean` [R], `getDataBean` [R], `getDataBean` [R], `getCount` [R], `getCount` [R], `getCount` [R], `getDataBeanArray` [R], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-], `sendMessageString` [-]  # NOSONAR

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JCCRequestProcessLogic.multiLoginCheck()` | Screen Entry -> multiLoginCheck -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 2 | `JCCRequestProcessLogic.preprocess()` | Screen Entry -> preprocess -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 3 | `JCCRequestProcessLogic.setReqestFlg()` | Screen Entry -> setReqestFlg -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 4 | `JCCRequestProcessLogic.multiLoginCheck()` | Screen Entry -> multiLoginCheck -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 5 | `JCCRequestProcessLogic.preprocess()` | Screen Entry -> preprocess -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 6 | `JCCRequestProcessLogic.setReqestFlg()` | Screen Entry -> setReqestFlg -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 7 | `JCCFrontCommonHeader.setMsgListAndItemMsgList()` | Common Header -> setMsgListAndItemMsgList -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 8 | `JCCRequestProcessLogic.multiLoginCheck()` | Screen Entry -> multiLoginCheck -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 9 | `JCCRequestProcessLogic.preprocess()` | Screen Entry -> preprocess -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 10 | `JCCRequestProcessLogic.setReqestFlg()` | Screen Entry -> setReqestFlg -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 11 | `FUW03501SFLogic.cfm()` | FUW03501SF -> cfm -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 12 | `FUW03501SFLogic.init()` | FUW03501SF -> init -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 13 | `FUW03501SFLogic.mskm()` | FUW03501SF -> mskm -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 14 | `JCCRequestProcessLogic.multiLoginCheck()` | Screen Entry -> multiLoginCheck -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |
| 15 | `JCCRequestProcessLogic.preprocess()` | Screen Entry -> preprocess -> getCommonInfo | `getDataBean [R]`, `sendMessageString [-]`, `getCount [R]` |

**Notes on Callers:**
- **JCCRequestProcessLogic** callers indicate that `getCommonInfo` is used at the JCC (Joint Control Center) request processing level — specifically during multi-login validation (`multiLoginCheck`), general preprocessing (`preprocess`), and request flag setup (`setReqestFlg`). This means the method is invoked as a shared utility across multiple JCC-gated screens to build a common customer/service view early in the request lifecycle.
- **JCCFrontCommonHeader** caller indicates the method is used to populate common header message lists across screens.
- **FUW03501SFLogic** callers (`cfm`, `init`, `mskm`) indicate the method is a core data preparation step for the FUW03501SF screen's Confirm, Init, and Masking operations.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Local Variable Initialization (L523)

> Initializes the result map and all local variables for the extraction operation.

| # | Type | Code |
|---|------|------|
| 1 | SET | `resMap = new HashMap<String, Object>()` // Return value container |
| 2 | SET | `ssoInfoBean = null` // SSO authentication info bean |
| 3 | SET | `genCustKeiInfoBean = null` // Current customer contract bean |
| 4 | SET | `svcKeiInfoBean = null` // Service contract info bean |
| 5 | SET | `seikyKeiInfoBean = null` // Billing contract info bean |
| 6 | SET | `svcKeiUcwkInfoBean = null` // Service contract detail info bean |
| 7 | SET | `opSvcKeiInfoBean = null` // Optional service contract info bean |
| 8 | SET | `dialKeiCnt = 0` // Dial-Up Connection active count |
| 9 | SET | `prcGpCd = null` // Processing group code |
| 10 | SET | `opSvcCd = null` // Current optional service code |
| 11 | SET | `pcrsCd = null` // Current pricing course code |
| 12 | SET | `pplanCd = null` // Current pricing plan code |
| 13 | SET | `ninshoId = null` // Dial-Up authentication ID |
| 14 | SET | `ninshoIdPwd = null` // ISP authentication ID password |
| 15 | SET | `opSvcKeiNo = null` // Optional service contract number |
| 16 | SET | `geneAddTime = null` // Registration date/time |
| 17 | SET | `updDtm = null` // Last update date/time |

**Block 2** — [EXEC] Retrieve Web Change Info (L535-L536)

> Extracts the web change information bean array and its first element, then retrieves the current customer contract info array from within.
>
> `WEB_CHG_INFO = "WEB変更情報"` (Web Change Info)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `webChgInfoBeanArray = commoninfoBean.getDataBeanArray(WEB_CHG_INFO)` // Get nested bean array |
| 2 | CALL | `webChgInfoBean = webChgInfoBeanArray.getDataBean(0)` // Get first element |
| 3 | CALL | `genCustKeiInfoArray = webChgInfoBean.getDataBeanArray(GEN_CUST_KEI_INFO)` // Get current customer contracts |

**Block 3** — [EXEC] Retrieve SSO Info (L538-L539)

> Extracts SSO (Single Sign-On) authentication information from the web change info.
>
> `SSO_INFO = "SSO情報"` (SSO Info)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ssoInfoArray = webChgInfoBean.getDataBeanArray(SSO_INFO)` // Get SSO bean array |
| 2 | CALL | `ssoInfoBean = ssoInfoArray.getDataBean(0)` // Get first SSO bean |

**Block 4** — [EXEC] Retrieve Current Customer Contract Info (L542)

> Gets the first element of the current customer contract info array.
>
> `GEN_CUST_KEI_INFO = "現顧客契約情報"` (Current Customer Contract Info)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `genCustKeiInfoBean = genCustKeiInfoArray.getDataBean(0)` // Get first customer contract |

**Block 5** — [EXEC] Retrieve Service Contract Info (L545-L546)

> Extracts the service contract array from the customer contract, and retrieves the first (primary) service contract.
>
> `SVC_KEI_INFO = "サービス契約情報"` (Service Contract Info)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `svcKeiInfoArray = genCustKeiInfoBean.getDataBeanArray(SVC_KEI_INFO)` // Get service contracts |
| 2 | CALL | `svcKeiInfoBean = svcKeiInfoArray.getDataBean(0)` // Get primary service contract |

**Block 6** — [CALL] Get Processing Group Code (L548)

> Retrieves the processing group code from the primary service contract bean using a special command accessor.
>
> `PRC_GRP_CD_23 = "料金グループコード"` (Pricing Group Code)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `prcGpCd = svcKeiInfoBean.sendMessageString(PRC_GRP_CD_23, DATABEAN_GET_VALUE)` // Get pricing group code |

**Block 7** — [EXEC] Retrieve Service Contract Detail Info (L551-L552)

> Extracts the service contract detail info (nested under the service contract) which contains authentication credentials.
>
> `SVC_KEI_UCWK_INFO = "サービス契約内訳情報"` (Service Contract Detail Info)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `svcKeiUcwkInfoArray = svcKeiInfoBean.getDataBeanArray(SVC_KEI_UCWK_INFO)` // Get service contract details |
| 2 | CALL | `svcKeiUcwkInfoBean = svcKeiUcwkInfoArray.getDataBean(0)` // Get first detail entry |

**Block 8** — [CALL] Get ISP Auth ID Password (L554)

> Retrieves the ISP authentication ID and password from the service contract detail info.
>
> `ISP_NINSHO_ID_PWD_24 = "ISP認証IDパスワード"` (ISP Auth ID Password)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ninshoIdPwd = svcKeiUcwkInfoBean.sendMessageString(ISP_NINSHO_ID_PWD_24, DATABEAN_GET_VALUE)` // Get ISP credentials |

**Block 9** — [FOR] Iterate Optional Service Contracts (L557-L595)

> Traverses all optional service contracts attached to the service contract detail. For each, checks if it is an active Dial-Up Connection service and captures its details.
>
> `OP_SVC_KEI_INFO = "オプションサービス契約情報"` (Optional Service Contract Info)

| # | Type | Code |
|---|------|------|
| 1 | SET | `n = 0` // Loop counter |
| 2 | EXEC | Loop condition: `n < opSvcKeiInfoArray.getCount()` |
| 3 | SET | `opSvcKeiInfoBean = opSvcKeiInfoArray.getDataBean(n)` // Get nth optional service |

**Block 9.1** — [EXEC] Get Optional Service Code and Status (L561-L562)

> Retrieves the optional service code and service contract status for filtering.
>
> `OP_SVC_CD_28 = "オプションサービスコード"` (Optional Service Code)
> `OP_SVC_KEI_STAT_28 = "<service_status_key>"` (Service Contract Status)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `chkOpSvcCd = opSvcKeiInfoBean.sendMessageString(OP_SVC_CD_28, DATABEAN_GET_VALUE)` // Get service code |
| 2 | CALL | `opSvcKeiStat = opSvcKeiInfoBean.sendMessageString(OP_SVC_KEI_STAT_28, DATABEAN_GET_VALUE)` // Get status |

**Block 9.2** — [IF] Dial-Up Connection Active Filter (L564-L565)

> Checks if the optional service is a Dial-Up Connection (`B020`) and the status is NOT terminated (`910`) and NOT canceled (`920`). Both conditions must hold for the contract to be counted.
>
> `JFUStrConst.CD00136_B020 = "B020"` (Dial-Up Connection)
> `JFUStrConst.CD00037_910 = "910"` (Service Contract Status: Terminated / 解約済)
> `JFUStrConst.CD00037_920 = "920"` (Service Contract Status: Canceled / キャンセル済)
>
> Comment: `ダイアルアップ接続サービス契約数 サービス契約ステータスが910(解約済)または920(キャンセル済)の場合セットしない` (Dial-Up Connection service contract count — do not set if service contract status is 910 (Terminated) or 920 (Canceled))

| # | Type | Code |
|---|------|------|
| 1 | COND | `CD00136_B020.equals(chkOpSvcCd) && !CD00037_910.equals(opSvcKeiStat) && !CD00037_920.equals(opSvcKeiStat)` |

**Block 9.2.1** — [EXEC] Capture Dial-Up Contract Details (L566-L577)

> When the filter matches, increment the active count and capture all relevant fields from this optional service contract.

| # | Type | Code |
|---|------|------|
| 1 | SET | `dialKeiCnt++` // Increment active Dial-Up contract count |
| 2 | SET | `opSvcCd = chkOpSvcCd` // Capture optional service code = "B020" |
| 3 | CALL | `pcrsCd = opSvcKeiInfoBean.sendMessageString(PCRS_CD_28, DATABEAN_GET_VALUE)` // Get pricing course code |
| 4 | CALL | `pplanCd = opSvcKeiInfoBean.sendMessageString(PPLAN_CD_28, DATABEAN_GET_VALUE)` // Get pricing plan code |
| 5 | CALL | `opSvcKeiNo = opSvcKeiInfoBean.sendMessageString(OP_SVC_KEI_NO_28, DATABEAN_GET_VALUE)` // Get contract number |
| 6 | CALL | `geneAddTime = opSvcKeiInfoBean.sendMessageString(GENE_ADD_DTM_28, DATABEAN_GET_VALUE)` // Get registration timestamp |
| 7 | CALL | `updDtm = opSvcKeiInfoBean.sendMessageString(LAST_UPD_DTM_28, DATABEAN_GET_VALUE)` // Get last update timestamp |
| 8 | SET | `PRCRS_CD_28 = "<pricing_course_key>"` (Pricing Course Code) |
| 9 | SET | `PPLAN_CD_28 = "<pricing_plan_key>"` (Pricing Plan Code) |
| 10 | SET | `OP_SVC_KEI_NO_28 = "オプションサービス契約番号"` (Optional Service Contract Number) |
| 11 | SET | `GENE_ADD_DTM_28 = "世代登録年月日时分秒"` (Registration Date/Time) |
| 12 | SET | `LAST_UPD_DTM_28 = "<last_update_key>"` (Last Update Timestamp) |

**Block 9.2.2** — [IF] Authentication ID Extraction (L580)

> If the optional service contract number is non-null, also extract the authentication ID used for Dial-Up connection.
>
> `DUPCON_NINSHO_ID_28 = "ダイアルアップ接続用認証ID"` (Authentication ID for Dial-Up Connection)

| # | Type | Code |
|---|------|------|
| 1 | COND | `opSvcKeiNo != null` |

**Block 9.2.2.1** — [CALL] Get Dial-Up Authentication ID (L583)

> Extracts the authentication ID for Dial-Up connection from the contract.
>
> Comment: `ダイアルアップ認証IDを取得` (Get Dial-Up authentication ID)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ninshoId = opSvcKeiInfoBean.sendMessageString(DUPCON_NINSHO_ID_28, DATABEAN_GET_VALUE)` // Get auth ID |
| 2 | SET | `DUPCON_NINSHO_ID_28 = "ダイアルアップ接続用認証ID"` (Auth ID for Dial-Up) |
| 3 | SET | `ninshoId@hf.eonet.ne.jp = "<commented_example>"` // Commented-out example value |

**Block 9.2.2.2** — [ELSE] — Not present

> If `opSvcKeiNo` is null, `ninshoId` remains `null` (initialized in Block 1). No explicit else block — the variable retains its prior value or null.

**Block 9.3** — [FOR] Continue Iteration (L578 implied)

> Loop increments `n` and continues while `n < opSvcKeiInfoArray.getCount()`. If no more optional services, exits loop.

**Block 10** — [FOR] Iterate Billing Contracts (L599-L602)

> Traverses all billing contracts attached to the service contract. Only iterates — no data is extracted or processed within this loop.
>
> `SEIKY_KEI_INFO = "請求契約情報"` (Billing Contract Info)

| # | Type | Code |
|---|------|------|
| 1 | SET | `k = 0` // Loop counter |
| 2 | EXEC | Loop condition: `k < seikyKeiInfoArray.getCount()` |
| 3 | SET | `seikyKeiInfoBean = seikyKeiInfoArray.getDataBean(k)` // Get nth billing contract (no extraction) |

**Block 11** — [SET] Build Pricing Branch String (L605-L613)

> Constructs a composite pricing branch identifier by concatenating the captured optional service code, pricing course code, and pricing plan code, separated by underscores (`_`). This string is used by downstream logic to determine the fee plan branch.
>
> `STR_UNDERBAR = "_"` (Separator character)

| # | Type | Code |
|---|------|------|
| 1 | SET | `pplanStr = new StringBuffer(16)` // Buffer for pricing branch string |
| 2 | EXEC | `pplanStr.append(opSvcCd)` // Append: opSvcCd |
| 3 | EXEC | `pplanStr.append("_")` // Separator |
| 4 | EXEC | `pplanStr.append(pcrsCd)` // Append: pcrsCd |
| 5 | EXEC | `pplanStr.append("_")` // Separator |
| 6 | EXEC | `pplanStr.append(pplanCd)` // Append: pplanCd |

**Block 12** — [SET] Put Beans into Result Map (L617-L620)

> Stores the retrieved data beans into the result map using constant-key mapping.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `resMap.put(SSO_INFO, ssoInfoBean)` // Store SSO info bean |
| 2 | EXEC | `resMap.put(SVC_KEI_INFO, svcKeiInfoBean)` // Store service contract info bean |
| 3 | EXEC | `resMap.put(SEIKY_KEI_INFO, seikyKeiInfoBean)` // Store billing contract info bean |
| 4 | EXEC | `resMap.put(OP_SVC_KEI_INFO, opSvcKeiInfoBean)` // Store optional service contract info bean |

**Block 13** — [SET] Put Primitive Values into Result Map (L623-L631)

> Stores all extracted primitive values into the result map using constant-key mapping.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `resMap.put(DIAL_CONNECT_NOW_CNT, dialKeiCnt)` // Active Dial-Up contract count |
| 2 | EXEC | `resMap.put(PRC_GRP_CD_23, prcGpCd)` // Processing group code |
| 3 | EXEC | `resMap.put(NOW_OP_SVC_CD, opSvcCd)` // Current optional service code |
| 4 | EXEC | `resMap.put(NOW_PCRS_CD, pcrsCd)` // Current pricing course code |
| 5 | EXEC | `resMap.put(NOW_PPLAN_CD, pplanCd)` // Current pricing plan code |
| 6 | EXEC | `resMap.put(NOW_PPLAN_STR, pplanStr.toString())` // Composite pricing branch string |
| 7 | EXEC | `resMap.put(NOW_DIAL_NISHO_ID, ninshoId)` // Current Dial-Up authentication ID |
| 8 | EXEC | `resMap.put(AF_DIAL_NINSHO_ID_PWD, ninshoIdPwd)` // Post-application Dial-Up auth ID password |
| 9 | EXEC | `resMap.put(OP_SVC_KEI_NO_28, opSvcKeiNo)` // Optional service contract number |
| 10 | EXEC | `resMap.put(GENE_ADD_DTM_28, geneAddTime)` // Registration date/time |
| 11 | EXEC | `resMap.put(LAST_UPD_DTM_28, updDtm)` // Last update date/time |

**Block 14** — [RETURN] Return Result (L633)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return resMap` // Return consolidated common information map |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `commoninfoBean` | Parameter | Shared front-end data bean — container holding nested customer and service contract data for the current session |
| `resMap` | Field | Result `HashMap` — output container holding beans and extracted primitive values for downstream screen rendering |
| `X31SDataBeanAccess` | Class | Data bean access class — provides methods to traverse nested data bean hierarchies (`getDataBean`, `getDataBeanArray`, `sendMessageString`) |
| `X31SDataBeanAccessArray` | Class | Data bean array wrapper — provides `getCount()` and indexed `getDataBean()` access for array elements |
| `WEB_CHG_INFO` | Constant | Web Change Info key — entry point for retrieving web-level change/operation information |
| `SSO_INFO` | Constant | SSO Info key — single sign-on authentication context for the current session |
| `GEN_CUST_KEI_INFO` | Constant | Current Customer Contract Info key — container for the customer's active contracts |
| `SVC_KEI_INFO` | Constant | Service Contract Info key — primary service contract (parent of optional services) |
| `SVC_KEI_UCWK_INFO` | Constant | Service Contract Detail Info key — sub-structure containing ISP credentials and optional services |
| `OP_SVC_KEI_INFO` | Constant | Optional Service Contract Info key — array of optional services attached to the primary service contract |
| `SEIKY_KEI_INFO` | Constant | Billing Contract Info key — array of billing contracts associated with the service contract |
| `PRC_GRP_CD_23` | Constant | Pricing Group Code key — identifies the pricing group/cost center for the service contract |
| `ISP_NINSHO_ID_PWD_24` | Constant | ISP Auth ID Password key — the ISP (Internet Service Provider) authentication credentials for the service |
| `OP_SVC_CD_28` | Constant | Optional Service Code key — identifies the type of optional service (e.g., `B020` = Dial-Up Connection) |
| `OP_SVC_KEI_STAT_28` | Constant | Service Contract Status key — current lifecycle state of the optional service contract |
| `PCRS_CD_28` | Constant | Pricing Course Code key — the pricing course/tariff category for the optional service |
| `PPLAN_CD_28` | Constant | Pricing Plan Code key — the specific pricing plan within the pricing course |
| `OP_SVC_KEI_NO_28` | Constant | Optional Service Contract Number key — unique identifier for the optional service contract |
| `GENE_ADD_DTM_28` | Constant | Registration Date/Time key — timestamp when the optional service contract was registered |
| `LAST_UPD_DTM_28` | Constant | Last Update Date/Time key — timestamp of the last modification to the optional service contract |
| `DUPCON_NINSHO_ID_28` | Constant | Auth ID for Dial-Up Connection key — the authentication ID used when establishing a Dial-Up connection |
| `DIAL_CONNECT_NOW_CNT` | Constant | Dial-Up Connection Current Count key — number of active (non-terminated, non-cancelled) Dial-Up contracts |
| `NOW_OP_SVC_CD` | Constant | Current Optional Service Code key — the optional service code of the last matched contract |
| `NOW_PCRS_CD` | Constant | Current Pricing Course Code key — the pricing course code of the last matched contract |
| `NOW_PPLAN_CD` | Constant | Current Pricing Plan Code key — the pricing plan code of the last matched contract |
| `NOW_PPLAN_STR` | Constant | Current Pricing Branch String key — composite `_`-separated string of opSvcCd+pcrsCd+pplanCd for fee plan selection |
| `NOW_DIAL_NISHO_ID` | Constant | Current Dial-Up Auth ID key — authentication ID for the Dial-Up contract |
| `AF_DIAL_NINSHO_ID_PWD` | Constant | Post-Application Dial-Up Auth ID Password key — ISP authentication ID password for the service |
| `STR_UNDERBAR` | Constant | `"_"` — underscore character used as delimiter in pricing branch string |
| `CD00136_B020` | Constant | `"B020"` — Optional Service Code for Dial-Up Connection (ダイアルアップ接続) |
| `CD00037_910` | Constant | `"910"` — Service Contract Status: Terminated (解約済) |
| `CD00037_920` | Constant | `"920"` — Service Contract Status: Canceled (キャンセル済) |
| `DATABEAN_GET_VALUE` | Constant | Command string to retrieve a data bean's value via `sendMessageString()` |
| DIAL | Business term | Dial-Up Connection — an optional internet access service (B020) that customers can subscribe to; the method's primary filtering target |
| SSO | Acronym | Single Sign-On — authentication mechanism that provides unified access across multiple screens/services |
| ISP | Acronym | Internet Service Provider — the network service component that handles customer authentication and connectivity |
| PCRS | Acronym | Pricing Course (料金コース) — a tariff category or pricing tier that groups pricing plans |
| PPLAN | Acronym | Pricing Plan (料金プラン) — the specific fee structure applied to a service contract |
| Kei | Japanese | Contract (契約) — appears in field names like `SVC_KEI_INFO` (Service Contract), `GEN_CUST_KEI_INFO` (Current Customer Contract) |
| Ninsho | Japanese | Authentication (認証) — appears in field names like `DUPCON_NINSHO_ID` (Auth ID) |
| Seiky | Japanese | Billing (請求) — appears in `SEIKY_KEI_INFO` (Billing Contract Info) |
| Ucwk | Abbreviation | Update (アップデート) — appears in `SVC_KEI_UCWK_INFO` (Service Contract Detail/Update Info) |
| Mskm | Abbreviation | Masking (マスク) — a screen operation that displays masked/sensitive data |
| cfm | Abbreviation | Confirm (確認) — a screen operation for confirming data before submission |
| D | Abbreviation | Data (データ) — appears in method suffix `DBean` indicating data bean classes |
