## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `getKeiyakusvcinfo` | FUW00116SFLogic | Contract service info bean | Retrieves contract-selected service types (net, tel, tv selection) |
| R | `getEonet` | FUW00116SFLogic | eo Hikari Net bean | Retrieves fiber internet service data (course, discounts, options) |
| R | `getEotel` | FUW00116SFLogic | eo Hikari Telephone beans | Retrieves telephone line data (1st and 2nd line options) |
| R | `getEotv` | FUW00116SFLogic | eo Hikari TV bean | Retrieves television service data (course, STB count) |
| R | `getMobile` | FUW00116SFLogic | eo Mobile bean | Retrieves mobile service data (course, device type) |
| R | `getKeiyakuinfo` | FUW00116SFLogic | Contract party info bean | Retrieves contractor details and address overwrite flag |
| R | `getMansioninfo` | FUW00116SFLogic | Mansion info bean | Retrieves apartment building address and delivery method code |
| R | `isSelectmobile` | FUW00116SFLogic | - | Checks if mobile service is selected (svc_mob != "0") |
| R | `selectmobileKiki` | FUW00116SFLogic | - | Gets mobile device type text (router, USB, hybrid) |
| R | `getServiceFormBean` | FUW00116SFLogic | - | Gets service form bean with Mineo setplan data |
| R | `JFUMkmInfoAddUtil.isTkHosikiChgSbtCd` | JFUMkmInfoAdd | - | Checks if mansion delivery method has changed |
| R | `JFUWebCommon.getMansionTonaiSpeedCd` | JFUWebCommon | - | Gets mansion delivery speed code |
| R | `JFUWebCommon.getDispText` | JFUWebCommon | Display text map | Resolves display text keys to actual Japanese text strings |
| R | `JFUWebCommon.isTkHosikiChgSbtCd` | JFUWebCommon | - | Checks if delivery method change business rule applies |

Note: This method does not perform direct database CRUD operations. All data access is through bean accessors and utility methods that read from the pre-populated X31SDataBeanAccess objects.

## 5. Dependency Trace

### Callers

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | FUW00116SFLogic.setFormBeanMailInfo | setFormBeanMailInfo -> selectSvcNm | getDispText [R] (multiple display text lookups) |

### Terminal operations from this method

All terminal operations are Read operations against display text maps:

| Terminal | Type | Description |
|----------|------|-------------|
| JFUWebCommon.getDispText (x40+) | R | Resolves Japanese display text for service names, options, features |
| OneStopDataBeanAccess.sendMessageString | R | Extracts string values from data beans |
| OneStopDataBeanAccess.getDataBeanArray | R | Iterates content service child beans |
| X31SDataBeanAccess.sendMessageBoolean | R | Extracts boolean flags from beans |
| FUW00116SFLogic.selectmobileKiki | R | Gets mobile device type description |

## 6. Per-Branch Detail Blocks

**Block 1** — [INIT] Variable initialization (L3651)
> Initializes the StringBuilder and loads all data beans from the input parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `serviceName = new StringBuilder()` |
| 2 | CALL | `bnKykSrv = getKeiyakusvcinfo(webNewInfoBean)` — Contract service info bean |
| 3 | CALL | `bnNet = getEonet(webNewInfoBean)` — eo Hikari Net bean |
| 4 | CALL | `bnEotel = getEotel(webNewInfoBean)` — eo Hikari Telephone bean array |
| 5 | CALL | `bnTv = getEotv(webNewInfoBean)` — eo Hikari TV bean |
| 6 | CALL | `bnMob = getMobile(webNewInfoBean)` — eo Mobile bean |
| 7 | CALL | `keiyakushaInfoBean = getKeiyakuinfo(webNewInfoBean)` — Contract party info bean |
| 8 | CALL | `mansionInfoBean = getMansioninfo(webNewInfoBean)` — Mansion info bean |

**Block 2** — [INIT] Parameter extraction (L3661)
> Extracts key parameters from beans for control flow decisions.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tkHoshikiPtnCd = mansionInfoBean.sendMessageString(CommonInfoCFConst.TEIKYO_HOSHIKI_PTN_CD_16)` — Delivery method pattern code |
| 2 | SET | `mskm_ksn_svc = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06)` — Subscribed line service type |
| 3 | SET | `mskmMnsType = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06)` — Mansion type |
| 4 | SET | `svc_net = bnKykSrv.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10)` — Selected service (net) |
| 5 | SET | `svc_tv = bnKykSrv.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10)` — Selected service (tv) |
| 6 | SET | `svc_tel = bnKykSrv.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10)` — Selected service (tel) |
| 7 | SET | `svc_mob = bnMob.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14)` — Mobile course |
| 8 | SET | `famipaFlg = false` — Family Pack flag |
| 9 | SET | `mobileFlg = this.isSelectmobile(svc_mob)` — Mobile selection flag |
| 10 | SET | `securityPackFlg = false` — Security Pack flag (ANK-3149) |
| 11 | SET | `kshadd_cmf = keiyakushaInfoBean.sendMessageString(CommonInfoCFConst.KSHADD_OVERWRITE_FLG_09)` — Address overwrite flag |

**Block 3** — [IF] Contract change reservation check (L3684)
> If the contract party address is being overwritten (reservation for change), append the contract change pending text.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.KEI_OVERWRITE_TRUE.equals(kshadd_cmf)` [KEI_OVERWRITE_TRUE="Contract reservation pending"] |
| 2 | EXEC | `serviceName.append(JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_CHG_RSV))` — Contract change pending text |
| 3 | EXEC | `serviceName.append(JFUStrConst.RETURN_CODE)` — Line break |
| 4 | EXEC | `serviceName.append(JFUStrConst.RETURN_CODE)` — Line break |

**Block 4** — [IF] Network service selection (L3692)
> Main network (Fiber internet) processing block. Executes only when net service is selected.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.SELECT_SVC_NET_CHOICE.equals(svc_net)` [SELECT_SVC_NET_CHOICE="1"] |
| 2 | SET | `netCourse = bnNet.sendMessageString(CommonInfoCFConst.NET_COURSE_11)` — Network course |
| 3 | SET | `netSokuwari = bnNet.sendMessageString(CommonInfoCFConst.NET_SOKUWARI_11)` — Instant discount |
| 4 | SET | `netKosokuwari = bnNet.sendMessageString(CommonInfoCFConst.NET_KOSOKUWARI_11)` — Fast discount |
| 5 | SET | `netChowari = bnNet.sendMessageString(CommonInfoCFConst.NET_CHOWARI_11)` — Long discount |
| 6 | SET | `netAutoKeizoku = bnNet.sendMessageString(CommonInfoCFConst.AUTO_KEIZOKU_11)` — Auto-renewal |
| 7 | SET | `tonai_speed_cd = JFUWebCommon.getMansionTonaiSpeedCd(mansionInfoBean)` — Delivery speed code |
| 8 | SET | `netFamipa = bnNet.sendMessageString(CommonInfoCFConst.FP_MSKM_11)` — Family Pack |
| 9 | SET | `netRemote = bnNet.sendMessageString(CommonInfoCFConst.RMTSPRT_MSKM_11)` — Remote Support |
| 10 | SET | `netMeshWiFi = bnNet.sendMessageString(CommonInfoCFConst.MESH_WIFI_11)` — Mesh WiFi |
| 11 | SET | `netPlc = bnNet.sendMessageString(CommonInfoCFConst.PLC_MSKM_11)` — PLC |
| 12 | SET | `netStb = bnNet.sendMessageString(CommonInfoCFConst.NET_STICK_STB_MSKM_11)` — Stick STB |
| 13 | SET | `netSmalin = bnNet.sendMessageString(CommonInfoCFConst.TABLET_TANMT_MSKM_11)` — Smartlin |
| 14 | SET | `netGh = bnNet.sendMessageString(CommonInfoCFConst.GH_TANMT_11)` — GH (ANK-3217) |
| 15 | SET | `netSecurityPack = bnNet.sendMessageString(CommonInfoCFConst.SECURITY_PACK_MSKM_11)` — Security Pack |
| 16 | SET | `netInetsgwl = bnNet.sendMessageString(CommonInfoCFConst.INETSGWL_MSKM_11)` — Internet Gateway |
| 17 | SET | `netNtfmlprm = bnNet.sendMessageString(CommonInfoCFConst.NTFMLPRM_MSKM_11)` — Notif. Family Premium |
| 18 | SET | `netPremiumPack = bnNet.sendMessageString(CommonInfoCFConst.PREMIUM_PACK_11)` — Premium Pack |
| 19 | SET | `netPc_pln = bnNet.sendMessageString(CommonInfoCFConst.KK_COMP_PC_MSKM_11)` — PC Plan |
| 20 | SET | `netPcw_pln = bnNet.sendMessageString(CommonInfoCFConst.KK_COMP_PCW_MSKM_11)` — PCW Plan |
| 21 | SET | `netTv_pln = bnNet.sendMessageString(CommonInfoCFConst.KK_COMP_TV_MSKM_11)` — TV Plan |

**Block 4.1** — [IF] Network service type determination (L3733)
> Determines the display name for the network service based on address type and mansion type.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.MSKM_KSN_SVC_HOME.equals(mskm_ksn_svc)` [MSKM_KSN_SVC_HOME="1"] |
| 2 | SET | `mlNetSvcNm = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_NET_HF)` — Net Home text |
| 1 | ELSE-IF | `JFUStrConst.MSKM_KSN_SVC_MANSION.equals(mskm_ksn_svc) && JFUStrConst.MSKM_MNS_TYPE_MEZON.equals(mskmMnsType)` [MSKM_KSN_SVC_MANSION="2", MSKM_MNS_TYPE_MEZON="2"] |
| 2 | SET | `mlNetSvcNm = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_NET_MZ)` — Net Mansion Mezon text |
| 1 | ELSE-IF | `JFUStrConst.MSKM_KSN_SVC_MANSION.equals(mskm_ksn_svc) && JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(mskmMnsType)` [MSKM_MNS_TYPE_MANSION="1"] |
| 2 | SET | `mlNetSvcNm = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_NET_MF)` — Net Mansion text |

**Block 4.2** — [IF] Network course override for delivery method change (L3748)
> When the mansion delivery method has changed, the network course is overridden based on the speed code.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUWebCommon.isTkHosikiChgSbtCd(mansionInfoBean) && JFUStrConst.MT_CD01214_COURCE_CHANGE.contains(tonai_speed_cd)` [MT_CD01214_COURCE_CHANGE=["CD01214_008", "CD01214_009"]] |
| 2 | IF | `JFUStrConst.CD01214_008.equals(tonai_speed_cd)` [CD01214_008="Speed code 008"] |
| 3 | SET | `netCourse = JFUStrConst.NET_COURSE_5G` [NET_COURSE_5G="5"] |
| 4 | ELSE | |
| 5 | SET | `netCourse = JFUStrConst.NET_COURSE_10G` [NET_COURSE_10G="6"] |

**Block 4.3** — [IF/ELSE-IF] Network course display text selection (L3766)
> Maps the netCourse value to a human-readable course name. VDSL mansion courses are hidden.

| # | Type | Code |
|---|------|------|
| 1 | IF | VDSL mansion check: `mskmMnsType equals MSKM_MNS_TYPE_MANSION AND tkHoshikiPtnCd in [TK_HOSHIKI_PTN_VDSL, TK_HOSHIKI_PTN_VDSLS]` — Hide VDSL course |
| 2 | SET | `netCourse = JFUStrConst.EMPTY` |
| 3 | ELSE-IF | `JFUStrConst.NET_COURSE_100M.equals(netCourse)` [NET_COURSE_100M="1"] |
| 4 | SET | `mlCourse = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_100M)` |
| 5 | ELSE-IF | `JFUStrConst.NET_COURSE_200M.equals(netCourse)` [NET_COURSE_200M="2"] |
| 6 | SET | `mlCourse = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_200M)` |
| 7 | ELSE-IF | `JFUStrConst.NET_COURSE_1G.equals(netCourse)` [NET_COURSE_1G="3"] |
| 8 | SET | `mlCourse = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_1G)` |
| 9 | ELSE-IF | `JFUStrConst.NET_COURSE_100M_LIGHT.equals(netCourse)` [NET_COURSE_100M_LIGHT="4"] |
| 10 | SET | `mlCourse = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_100ML)` |
| 11 | ELSE-IF | `JFUStrConst.NET_COURSE_5G.equals(netCourse)` [NET_COURSE_5G="5"] |
| 12 | SET | `mlCourse = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_5G)` |
| 13 | ELSE-IF | `JFUStrConst.NET_COURSE_10G.equals(netCourse)` [NET_COURSE_10G="6"] |
| 14 | SET | `mlCourse = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_10G)` |
| 15 | ELSE | Dynamic fallback |
| 16 | SET | `mlCourse = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_NET_CRS_ + netCourse)` |

**Block 4.4** — [SET] Service name assembly (L3793)
> Combines the service type name and course into the StringBuilder.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `serviceName.append(mlNetSvcNm)` — Type name |
| 2 | EXEC | `serviceName.append(mlCourse)` — Course |

**Block 4.5** — [IF/IF/IF/IF] Net discount options check (L3797)
> Each discount is checked independently and appended if selected.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.NET_SOKUWARI_MSKM.equals(netSokuwari)` — Instant discount |
| 2 | EXEC | `serviceName.append(JFUStrConst.RETURN_CODE); serviceName.append(mlSokuwari)` |
| 3 | IF | `JFUStrConst.NET_KOSOKUWARI_MSKM.equals(netKosokuwari)` — Fast discount |
| 4 | EXEC | `serviceName.append(JFUStrConst.RETURN_CODE); serviceName.append(mlKosokuwari)` |
| 5 | IF | `JFUStrConst.NET_CHOWARI_MSKM.equals(netChowari)` — Long discount |
| 6 | EXEC | `serviceName.append(JFUStrConst.RETURN_CODE); serviceName.append(mlChowari)` |
| 7 | IF | `JFUStrConst.NET_AUTO_KEIZOKU_MSKM.equals(netAutoKeizoku)` — Auto-renewal |
| 8 | EXEC | `serviceName.append(JFUStrConst.RETURN_CODE); serviceName.append(mlAutoKeizoku)` |

**Block 4.6** — [IF/IF/IF/IF/IF/IF/IF/IF/IF/IF/IF] Net accessory options check (L3817)
> Each accessory option is checked independently. Family Pack sets famipaFlg, Security Pack sets securityPackFlg.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.FP_MSKM_MSKM.equals(netFamipa)` — Family Pack |
| 2 | EXEC | `serviceName.append(RC); serviceName.append(mlFamipa); famipaFlg = true` |
| 3 | IF | `JFUStrConst.SECURITY_PAC_MSKM.equals(netSecurityPack)` — Security Pack (ANK-3149) |
| 4 | EXEC | `serviceName.append(RC); serviceName.append(mlSecurityPack); securityPackFlg = true` |
| 5 | IF | `JFUStrConst.RMTSPRT_MSKM_MSKM.equals(netRemote) \|\| JFUStrConst.SMALIN_PREMIUM_PACK_MSKM.equals(netPremiumPack)` — Remote Support or Premium Pack (ANK-3149) |
| 6 | EXEC | `serviceName.append(RC); serviceName.append(mlRemote)` |
| 7 | IF | `JFUStrConst.NET_STICK_STB_MSKM.equals(netStb)` — Stick STB |
| 8 | EXEC | `serviceName.append(RC); serviceName.append(mlStb)` |
| 9 | IF | `JFUStrConst.MESH_WIFI_MSKM.equals(netMeshWiFi)` — Mesh WiFi |
| 10 | EXEC | `serviceName.append(RC); serviceName.append(mlMeshWiFi)` |
| 11 | IF | `JFUStrConst.PLC_MSKM_MSKM.equals(netPlc)` — PLC |
| 12 | EXEC | `serviceName.append(RC); serviceName.append(mlPlc)` |
| 13 | IF | `JFUStrConst.SMALIN_TABLET_MSKM.equals(netSmalin)` — Smartlin |
| 14 | EXEC | `serviceName.append(RC); serviceName.append(mlSmalin)` |
| 15 | IF | `JFUStrConst.GH_TANMT_BUY.equals(netGh)` — GH (ANK-3217) |
| 16 | EXEC | `serviceName.append(RC); serviceName.append(mlGh)` |
| 17 | IF | `JFUStrConst.INETSGWL_MSKM.equals(netInetsgwl)` — Internet Gateway (ANK-3149) |
| 18 | EXEC | `serviceName.append(RC); serviceName.append(mlInetsgwl)` |
| 19 | IF | `JFUStrConst.NTFMLPRM_MSKM.equals(netNtfmlprm)` — Notif. Family Premium (ANK-3149) |
| 20 | EXEC | `serviceName.append(RC); serviceName.append(mlNtfmlprm)` |
| 21 | IF | `JFUStrConst.PC_PLN_MSKM.equals(netPc_pln)` — PC Plan (ANK-3484) |
| 22 | EXEC | `serviceName.append(RC); serviceName.append(mlPcplan)` |
| 23 | IF | `JFUStrConst.PCW_PLN_MSKM.equals(netPcw_pln)` — PCW Plan (ANK-3484) |
| 24 | EXEC | `serviceName.append(RC); serviceName.append(mlPcwplan)` |
| 25 | IF | `JFUStrConst.TV_PLN_MSKM.equals(netTv_pln)` — TV Plan (ANK-3484) |
| 26 | EXEC | `serviceName.append(RC); serviceName.append(mlTvplan)` |

**Block 4.7** — [IF] Mineo Setplan check (L3889)
> Checks for Mineo carrier selection with either phone number format (setplan_kbn=2) or contract number format (setplan_kbn=1).

| # | Type | Code |
|---|------|------|
| 1 | SET | `serviceFormBean = getServiceFormBean()` |
| 2 | IF | Mineo Setplan condition: (MINEO_SETPLAN_KBN="2" AND area code + city code + local number all non-empty) OR (MINEO_SETPLAN_KBN="1" AND contract number non-empty) |
| 3 | SET | `mineoNo = new StringBuilder()` |
| 4 | IF | `MINEO_SETPLAN_KBN = "2"` — Phone number format |
| 5 | EXEC | `mineoNo.append(areaCd).append(cityCd).append(local)` |
| 6 | ELSE | `MINEO_SETPLAN_KBN = "1"` — Contract number format |
| 7 | EXEC | `mineoNo.append(uktkNo)` |
| 8 | EXEC | `serviceName.append(RC); serviceName.append(mlNtfmlmineoSetPlan).append(mineoNo.toString())` |

**Block 4.8** — [IF] Tel/TV/Mobile combined line break (L3920)
> If telephone, TV, or mobile services are selected together with network, append extra line breaks.

| # | Type | Code |
|---|------|------|
| 1 | IF | `svcTel equals SELECT_SVC_TEL_CHOICE OR svcTv equals SELECT_SVC_TV_CHOICE OR mobileFlg = true` |
| 2 | EXEC | `serviceName.append(RC); serviceName.append(RC)` |
| 3 | ELSE | — |

**Block 5** — [IF] Telephone service processing (L3927)
> Telephone processing block — handles 1-line and 2-line telephone services with feature options.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.SELECT_SVC_TEL_CHOICE.equals(svcTel)` [SELECT_SVC_TEL_CHOICE="1"] |
| 2 | SET | `telCourse = webNewInfoBean.sendMessageString(CommonInfoCFConst.TEL_COURSE_06)` |

**Block 5.1** — [IF/ELSE-IF] Telephone course determination (L3938)
> Determines the 1-line or 2-line service display name.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.TEL_COURSE_1BANGOU_SVC.equals(telCourse)` — 1-line service |
| 2 | SET | `mlTelNm = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_TEL1)` |
| 3 | ELSE-IF | `JFUStrConst.TEL_COURSE_2BANGOU_SVC.equals(telCourse)` — 2-line service |
| 4 | SET | `mlTelNm = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_TEL2)` |
| 5 | EXEC | Load `bmp_um_2 = bnEotel[1].sendMessageString(BMP_USE)` — 2nd line number phone |
| 6 | EXEC | Load `bmp_cancel_2 = bnEotel[1].sendMessageString(BMP_CANCEL_FLG)` — 2nd line cancel flag |

**Block 5.2** — [IF/ELSE] 2nd line number phone usage (L3952)
> Checks if the 2nd line has a number phone active and not cancelled.

| # | Type | Code |
|---|------|------|
| 1 | IF | `bmp_um_2 equals USE_BMP_USE AND bmp_cancel_2 not BMP_CANCEL_FLG_CNL` |
| 2 | SET | `mlBnpUm2 = JFUWebCommon.getDispText(..., ML_DSP_USE)` |
| 3 | ELSE | |
| 4 | SET | `mlBnpUm2 = JFUWebCommon.getDispText(..., ML_DSP_NOT_USE)` |

**Block 5.3** — [IF/ELSE] 1st line number phone usage (L3972)
> Checks if the 1st line has a number phone active and not cancelled.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | Load `bmp_um_1 = bnEotel[0].sendMessageString(BMP_USE)` |
| 2 | EXEC | Load `bmp_cancel_1 = bnEotel[0].sendMessageString(BMP_CANCEL_FLG)` |
| 3 | IF | `bmp_um_1 equals USE_BMP_USE AND bmp_cancel_1 not BMP_CANCEL_FLG_CNL` |
| 4 | SET | `mlBnpUm1 = JFUWebCommon.getDispText(..., ML_DSP_USE)` |
| 5 | ELSE | |
| 6 | SET | `mlBnpUm1 = JFUWebCommon.getDispText(..., ML_DSP_NOT_USE)` |

**Block 5.4** — [SET] Telephone feature extraction (L3988)
> Loads all 6 feature flags for the 1st telephone line.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mlBnp1 = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_BNP1)` — 1st line number phone text |
| 2 | EXEC | `telHashinTch1 = bnEotel[0].sendMessageString(HASHINNO_TCH_12)` — Notification notify |
| 3 | EXEC | `telHashinDsp1 = bnEotel[0].sendMessageString(HASHINNO_DSP_12)` — Notification display |
| 4 | EXEC | `telEasepack1 = bnEotel[0].sendMessageString(EASE_PACK_12)` — Anshin Phone Pack |
| 5 | EXEC | `telEohtlPackThree1 = bnEotel[0].sendMessageString(EOHTL_PACK3_12)` — eoHikari Phone Pack 3 |
| 6 | EXEC | `telEohtlPackSeven1 = bnEotel[0].sendMessageString(EOHTL_PACK7_12)` — eoHikari Phone Pack 7 |
| 7 | EXEC | `telHitsuchiKyohi1 = bnEotel[0].sendMessageString(HITSUCHI_DNY_12)` — Do-not-disturb reject |

**Block 5.5** — [SET] Telephone base assembly (L3994)
> Assembles the telephone service name and number phone status.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `serviceName.append(mlTelNm)` |
| 2 | EXEC | `serviceName.append(RC)` |
| 3 | EXEC | `serviceName.append(mlBnp1)` |
| 4 | EXEC | `serviceName.append(mlBnpUm1)` |

**Block 5.6** — [IF/IF/IF/IF/IF/IF] 1st line feature checks (L4000)
> Six independent feature checks for the 1st telephone line.

| # | Type | Code |
|---|------|------|
| 1 | IF | `telHashinTch1 equals HASHINNO_TCH_CHOICE` — Notification notify |
| 2 | EXEC | `serviceName.append(RC); serviceName.append(mlHashinTch1)` |
| 3 | IF | `telEasepack1 equals EASE_PACK_CHOICE` — Anshin Phone Pack |
| 4 | EXEC | `serviceName.append(RC); serviceName.append(mltelEasepack1)` |
| 5 | IF | `telEohtlPackThree1 equals EOHTL_PACK3_CHOICE` — eoHikari Phone Pack 3 |
| 6 | EXEC | `serviceName.append(RC); serviceName.append(mlEohtlPackThree1)` |
| 7 | IF | `telEohtlPackSeven1 equals EOHTL_PACK7_CHOICE` — eoHikari Phone Pack 7 |
| 8 | EXEC | `serviceName.append(RC); serviceName.append(mlEohtlPackSeven1)` |
| 9 | IF | `telHashinDsp1 equals HASHINNO_DSP_CHOICE` — Notification display |
| 10 | EXEC | `serviceName.append(RC); serviceName.append(mlHashinDsp1)` |
| 11 | IF | `telHitsuchiKyohi1 equals HITSUCHI_DNY_CHOICE` — Do-not-disturb reject |
| 12 | EXEC | `serviceName.append(RC); serviceName.append(mlHitsuchiKyohi1)` |

**Block 5.7** — [IF] 2nd line telephone processing (L4044)
> Handles the 2nd telephone line if it is a 2-line service.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.TEL_COURSE_2BANGOU_SVC.equals(telCourse)` |
| 2 | EXEC | `serviceName.append(RC); serviceName.append(mlBnp2); serviceName.append(mlBnpUm2)` |
| 3 | EXEC | Load 6 feature flags from bnEotel[1] (same as Block 5.4 for 2nd line) |
| 4 | IF | `telHashinTch2 equals HASHINNO_TCH_CHOICE` |
| 5 | EXEC | `serviceName.append(RC); serviceName.append(mlHashinTch2)` |
| 6 | IF | `telEasepack2 equals EASE_PACK_CHOICE` |
| 7 | EXEC | `serviceName.append(RC); serviceName.append(mltelEasepack2)` |
| 8 | IF | `telEohtlPackThree2 equals EOHTL_PACK3_CHOICE` |
| 9 | EXEC | `serviceName.append(RC); serviceName.append(mlEohtlPackThree2)` |
| 10 | IF | `telEohtlPackSeven2 equals EOHTL_PACK7_CHOICE` |
| 11 | EXEC | `serviceName.append(RC); serviceName.append(mlEohtlPackSeven2)` |
| 12 | IF | `telHashinDsp2 equals HASHINNO_DSP_CHOICE` |
| 13 | EXEC | `serviceName.append(RC); serviceName.append(mlHashinDsp2)` |
| 14 | IF | `telHitsuchiKyohi2 equals HITSUCHI_DNY_CHOICE` |
| 15 | EXEC | `serviceName.append(RC); serviceName.append(mlHitsuchiKyohi2)` |
| 16 | IF | `svcTv equals SELECT_SVC_TV_CHOICE OR mobileFlg = true` |
| 17 | EXEC | `serviceName.append(RC); serviceName.append(RC)` |

**Block 6** — [IF] Television service processing (L4103)
> Television service block — handles eo Hikari TV course and set-top box details.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.SELECT_SVC_TV_CHOICE.equals(svcTv)` [SELECT_SVC_TV_CHOICE="1"] |
| 2 | SET | `mlTvCourse = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_TV)` |
| 3 | SET | `eoTVCourse = bnTv.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13)` |
| 4 | SET | `stbCnt = bnTv.sendMessageString(CommonInfoCFConst.STB_CNT_13)` |
| 5 | EXEC | `serviceName.append(mlTvCourse); serviceName.append(RC)` |

**Block 6.1** — [IF/ELSE-IF/ELSE] TV course determination (L4113)
> Three TV course branches: Basic/HD course with STB loop, BS Star channel set, or standard Digital/BS.

| # | Type | Code |
|---|------|------|
| 1 | IF | `eoTVCourse equals EO_TV_COURSE_BASIC = "2"` — Basic/HD course with STB |
| 2 | SET | `intStbCnt = Integer.valueOf(stbCnt)` |
| 3 | FOR | `i = 0; i < intStbCnt; i++` — Loop over STB units |
| 4 | SET | `mlStb = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_STB_TV[i])` — STB type text |
| 5 | SET | `stbHd = bnTv.sendMessageString(ML_STB_HD[i])` — STB HD type |
| 6 | IF | `stbHd equals STB_HD_BASIC = "1"` — Basic HD |
| 7 | SET | `mlStbHd = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_BASIC)` |
| 8 | ELSE-IF | `stbHd equals STB_HD_PREMIUM = "2"` — Premium HD |
| 9 | SET | `mlStbHd = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_PREMIUM)` |
| 10 | ELSE-IF | `stbHd equals STB_SM_COMPACT = "3"` — Smart Compact |
| 11 | SET | `mlStbHd = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_S_COMPACT)` |
| 12 | ELSE-IF | `stbHd equals STB_SM_BASIC = "4"` — Smart Basic |
| 13 | SET | `mlStbHd = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_S_BASIC)` |
| 14 | ELSE | — Smart Premium |
| 15 | SET | `mlStbHd = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_S_PREMIUM)` |
| 16 | SET | `mlStbNm = bnTv.sendMessageString(ML_STB_HD_NM[i])` — STB name |
| 17 | IF | `i > 0` — Append return code for additional STBs |
| 18 | EXEC | `serviceName.append(RC)` |
| 19 | EXEC | `serviceName.append(mlStb); serviceName.append(mlStbHd); serviceName.append(mlStbNm)` |
| 20 | SET | `guideCnt = bnTv.sendMessageString(CommonInfoCFConst.GUIDEMG_CNT_13)` |
| 21 | IF | `guideCnt not equals GUIDEMG_CNT_UNNECESSARY = "0" AND guideCnt not empty` |
| 22 | EXEC | `serviceName.append(RC); serviceName.append(JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_TV_GUIDE + guideCnt))` |
| 23 | ELSE-IF | `eoTVCourse equals EO_TV_COURSE_BS_STAR = "3"` — BS Star channel set |
| 24 | EXEC | `serviceName.append(JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_BS_STAR))` |
| 25 | ELSE | — Digital/BS |
| 26 | EXEC | `serviceName.append(JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_BS))` |
| 27 | IF | `mobileFlg = true` |
| 28 | EXEC | `serviceName.append(RC); serviceName.append(RC)` |

**Block 7** — [IF] Mobile service processing (L4185)
> Mobile service block — handles various mobile courses (WiFi, 3G, WiMAX, Hybrid).

| # | Type | Code |
|---|------|------|
| 1 | IF | `mobileFlg = true` |
| 2 | IF | `svc_mob equals MOBILE_COURSE_WIFI = "1"` — WiFi course |
| 3 | EXEC | `serviceName.append(JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00114, ML_DSP_WIFI))` |
| 4 | ELSE-IF | `svc_mob equals MOBILE_COURSE_3G_7_2M = "3"` — 3G 7.2M |
| 5 | EXEC | `serviceName.append(7.2M text); serviceName.append(RC); serviceName.append(selectmobileKiki(bnMob))` |
| 6 | ELSE-IF | `svc_mob equals MOBILE_COURSE_3G_21M = "4"` — 3G 21M |
| 7 | EXEC | `serviceName.append(21M text); serviceName.append(RC); serviceName.append(selectmobileKiki(bnMob))` |
| 8 | ELSE-IF | `svc_mob equals MOBILE_COURSE_WIMAX = "5"` — WiMAX |
| 9 | EXEC | `serviceName.append(WiMAX text); serviceName.append(RC); serviceName.append(selectmobileKiki(bnMob))` |
| 10 | ELSE-IF | `svc_mob equals MOBILE_COURSE_3G_HHB = "6"` — 3G 7.2M Hybrid |
| 11 | EXEC | `serviceName.append(7.2M text); serviceName.append(RC); serviceName.append(selectmobileKiki(bnMob))` |
| 12 | ELSE-IF | `svc_mob equals MOBILE_COURSE_3G_21M_HHB = "7"` — 3G 21M Hybrid |
| 13 | EXEC | `serviceName.append(21M text); serviceName.append(RC); serviceName.append(selectmobileKiki(bnMob))` |

**Block 8** — [IF/FOR] Content services processing (L4211)
> Iterates over content service child beans, filters by subscription flag, and appends.

| # | Type | Code |
|---|------|------|
| 1 | SET | `contentsMskmList = new ArrayList<String>()` |
| 2 | IF | `webNewInfoBean.getDataBeanArray(CommonInfoCFConst.CONT_SVC_INFO).getCount() > 0` |
| 3 | SET | `contentsList = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.CONT_SVC_INFO)` |
| 4 | FOR | `i = 0; i < contentsList.getCount(); i++` |
| 5 | SET | `contentsInfoBean = contentsList.getDataBean(i)` |
| 6 | IF | `contentsInfoBean.sendMessageBoolean(CommonInfoCFConst.CONT_SVC_MSKM_CHOICE_67)` — Subscription active |
| 7 | EXEC | `contentsMskmList.add(contentsInfoBean.sendMessageString(CommonInfoCFConst.CONT_SVC_NM_67))` |
| 8 | IF | `contentsMskmList.size() > 0` |
| 9 | EXEC | `serviceName.append(RC); serviceName.append(RC); serviceName.append(mlContents)` |
| 10 | FOR | `contentsNm : contentsMskmList` |
| 11 | EXEC | `serviceName.append(RC); serviceName.append("  ・"); serviceName.append(contentsNm)` |

**Block 9** — [IF/IF] Security Pack details (L4241)
> Appends Security Pack detailed text based on mansion type.

| # | Type | Code |
|---|------|------|
| 1 | IF | `securityPackFlg = true` |
| 2 | IF | `mskm_ksnSvc equals MSKM_KSN_SVC_MANSION AND mskmMnsType equals MSKM_MNS_TYPE_MANSION` — Mansion type |
| 3 | EXEC | `serviceName.append(RC); serviceName.append(RC); serviceName.append(mlSecurityPackDtl[Mansion])` |
| 4 | ELSE | — Home or other |
| 5 | EXEC | `serviceName.append(RC); serviceName.append(RC); serviceName.append(mlSecurityPackDtl[Home])` |

**Block 10** — [IF/ELSE-IF/ELSE-IF] Router/Family Pack details (L4263)
> Handles Family Pack detail text (if famipaFlg), multi-function router wireless or wired details.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mlTknRouter = JFUWebCommon.getDispText(SID_FUW00114, ML_DSP_TKN_ROUTER)` — Multi-function router title |
| 2 | SET | `mlRouterMusenDtl = JFUWebCommon.getDispText(SID_FUW00114, ML_DSP_TKN_ROUTER_MUSEN_DTL)` — Wireless router detail |
| 3 | SET | `mlRouterYusenDtl = JFUWebCommon.getDispText(SID_FUW00114, ML_DSP_TKN_ROUTER_YUSEN_DTL)` — Wired router detail |
| 4 | IF | `famipaFlg = true` |
| 5 | EXEC | `serviceName.append(RC); serviceName.append(RC); serviceName.append(mlFamipaDtl); serviceName.append(RC)` |
| 6 | IF | `!mskmMnsType equals MSKM_MNS_TYPE_MANSION` — Non-mansion check |
| 7 | EXEC | `serviceName.append(mlFamipaMail); serviceName.append(RC)` |
| 8 | EXEC | `serviceName.append(RC); serviceName.append(mlTknRouter); serviceName.append(RC); serviceName.append(mlRouterMusenDtl)` |
| 9 | ELSE-IF | `bnNet.TKN_ROUTER_MUSEN_MSKM_11 equals TKN_ROUTER_MUSEN_MSKM_MSKM` — Wireless router selected |
| 10 | EXEC | `serviceName.append(RC); serviceName.append(RC); serviceName.append(mlTknRouter); serviceName.append(RC); serviceName.append(mlRouterMusenDtl)` |
| 11 | ELSE-IF | `bnNet.TKN_ROUTER_YUSEN_MSKM_11 equals TKN_ROUTER_YUSEN_MSKM_MSKM` — Wired router selected |
| 12 | EXEC | `serviceName.append(RC); serviceName.append(RC); serviceName.append(mlTknRouter); serviceName.append(RC); serviceName.append(mlRouterYusenDtl)` |

**Block 11** — [IF] Mesh WiFi detail (L4311)
> Appends Mesh WiFi title and detail text.

| # | Type | Code |
|---|------|------|
| 1 | IF | `bnNet.MESH_WIFI_11 equals MESH_WIFI_MSKM` |
| 2 | SET | `mlMeshWifi = JFUWebCommon.getDispText(SID_FUW00114, ML_DSP_MESH_WIFI_TITLE)` |
| 3 | SET | `mlMeshWifiDtl = JFUWebCommon.getDispText(SID_FUW00114, ML_DSP_MESH_WIFI_DTL)` |
| 4 | EXEC | `serviceName.append(RC); serviceName.append(RC); serviceName.append(mlMeshWifi); serviceName.append(RC); serviceName.append(mlMeshWifiDtl)` |

**Block 12** — [IF] PLC wireless LAN detail (ANK-3529) (L4324)
> Appends PLC wireless LAN mid-receiver title and detail text.

| # | Type | Code |
|---|------|------|
| 1 | IF | `bnNet.PLC_MSKM_11 equals PLC_MSKM_MSKM` |
| 2 | SET | `mlWirelessLan = JFUWebCommon.getDispText(SID_FUW00114, ML_DSP_WIRELESS_LAN_TITLE)` |
| 3 | SET | `mlWirelessLanDtl = JFUWebCommon.getDispText(SID_FUW00114, ML_DSP_WIRELESS_LAN_DTL)` |
| 4 | EXEC | `serviceName.append(RC); serviceName.append(RC); serviceName.append(mlWirelessLan); serviceName.append(RC); serviceName.append(mlWirelessLanDtl)` |

**Block 13** — [RETURN] (L4337)
> Returns the assembled service name StringBuilder.

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `mskm_ksn_svc` | Field | Subscribed line service type — "1"=Home, "2"=Mansion, "3"=Mobile standalone |
| `mskmMnsType` | Field | Mansion type — "1"=Mansion, "2"=Mezon (mid-rise apartment) |
| `svc_net` | Field | Selected service indicator for Fiber internet |
| `svc_tel` | Field | Selected service indicator for telephone |
| `svc_tv` | Field | Selected service indicator for television |
| `svc_mob` | Field | Mobile course selection code |
| `netCourse` | Field | eo Hikari Net course — "1"=100M, "2"=200M, "3"=1G, "4"=100M Light, "5"=5G, "6"=10G |
| `netSokuwari` | Field | Instant discount (即割) indicator |
| `netKosokuwari` | Field | Fast discount (高割) indicator |
| `netChowari` | Field | Long discount (長割) indicator |
| `netAutoKeizoku` | Field | Auto-renewal (自動継続) indicator |
| `netFamipa` | Field | Family Pack (ファミリーパック) indicator |
| `netSecurityPack` | Field | eo Security Pack indicator (ANK-3149) |
| `netRemote` | Field | Remote Support Premium indicator |
| `netPremiumPack` | Field | Premium Pack indicator (ANK-3149) |
| `netMeshWiFi` | Field | eo Message WiFi (Mesh) indicator |
| `netPlc` | Field | PLC (Power Line Communication) indicator |
| `netStb` | Field | Stick-type STB (Set-Top Box) indicator |
| `netSmalin` | Field | Smartlin (tablet service) indicator |
| `netGh` | Field | GH service indicator (ANK-3217) |
| `netInetsgwl` | Field | Internet Gateway indicator (ANK-3149) |
| `netNtfmlprm` | Field | Notification Family Premium indicator (ANK-3149) |
| `netPc_pln` | Field | PC Plan indicator (ANK-3484) |
| `netPcw_pln` | Field | PC Wireless Plan indicator (ANK-3484) |
| `netTv_pln` | Field | TV Plan indicator (ANK-3484) |
| `bkKykSrv` | Field | Contract service information bean |
| `bnNet` | Field | eo Hikari Net data bean |
| `bnEotel` | Field | eo Hikari Telephone data bean array (0=1st line, 1=2nd line) |
| `bnTv` | Field | eo Hikari TV data bean |
| `bnMob` | Field | eo Mobile data bean |
| `keiyakushaInfoBean` | Field | Contract party information bean |
| `mansionInfoBean` | Field | Mansion (building) information bean |
| `tkHoshikiPtnCd` | Field | Delivery method pattern code — determines building wiring type |
| `tonai_speed_cd` | Field | Inside-building delivery speed code |
| `famipaFlg` | Field | Family Pack selected flag |
| `securityPackFlg` | Field | Security Pack selected flag |
| `mobileFlg` | Field | Mobile service selected flag |
| `kshadd_cmf` | Field | Contract address overwrite flag |
| `TEL_COURSE_1BANGOU_SVC` | Constant | 1-line telephone service |
| `TEL_COURSE_2BANGOU_SVC` | Constant | 2-line telephone service |
| `USE_BMP_USE` | Constant | Number phone (番砲) in use |
| `BMP_CANCEL_FLG_CNL` | Constant | Number phone cancel flag (cancelled) |
| `HASHINNO_TCH_CHOICE` | Constant | Notification notify selected |
| `HASHINNO_DSP_CHOICE` | Constant | Notification display selected |
| `EASE_PACK_CHOICE` | Constant | Anshin Phone Pack selected |
| `EOHTL_PACK3_CHOICE` | Constant | eoHikari Phone Pack 3 selected |
| `EOHTL_PACK7_CHOICE` | Constant | eoHikari Phone Pack 7 selected |
| `HITSUCHI_DNY_CHOICE` | Constant | Do-not-disturb reject selected |
| `EO_TV_COURSE_BASIC` | Constant | Basic/HD course = "2" |
| `EO_TV_COURSE_BS_STAR` | Constant | BS Star channel set = "3" |
| `STB_HD_BASIC` | Constant | Basic HD STB = "1" |
| `STB_HD_PREMIUM` | Constant | Premium HD STB = "2" |
| `STB_SM_COMPACT` | Constant | Smart Compact STB = "3" |
| `STB_SM_BASIC` | Constant | Smart Basic STB = "4" |
| `STB_SM_PREMIUM` | Constant | Smart Premium STB = "5" |
| `GUIDEMG_CNT_UNNECESSARY` | Constant | TV guide unnecessary = "0" |
| `MOBILE_COURSE_WIFI` | Constant | WiFi mobile course = "1" |
| `MOBILE_COURSE_3G_7_2M` | Constant | 3G 7.2M course = "3" |
| `MOBILE_COURSE_3G_21M` | Constant | 3G 21M course = "4" |
| `MOBILE_COURSE_WIMAX` | Constant | WiMAX course = "5" |
| `MOBILE_COURSE_3G_HHB` | Constant | 3G 7.2M Hybrid = "6" |
| `MOBILE_COURSE_3G_21M_HHB` | Constant | 3G 21M Hybrid = "7" |
| `KEI_OVERWRITE_TRUE` | Constant | Contract reservation pending state |
| `MT_CD01214_COURCE_CHANGE` | Constant | Delivery method change speed codes list |
| `TK_HOSHIKI_PTN_VDSL` | Constant | VDSL delivery method pattern = "1" |
| `TK_HOSHIKI_PTN_VDSLS` | Constant | VDSL-S delivery method pattern = "2" |
| `ML_DSP_*` | Constant | Display text keys for FUW00114 screen |
| `RETURN_CODE` | Constant | Line break character (newline) |
| `CONT_SVC_INFO` | Constant | Content service info bean key |
| `CONT_SVC_MSKM_CHOICE_67` | Constant | Content service subscription flag |
| `CONT_SVC_NM_67` | Constant | Content service name field |
| eo | Brand | Nippon Telecom's consumer brand for fiber internet, TV, and mobile services |
| FTTH | Business term | Fiber To The Home — fiber-optic internet connection |
| STB | Acronym | Set-Top Box — television decoder device |
| Mesh WiFi | Business term | eo Message WiFi — whole-home mesh WiFi coverage service |
| PLC | Acronym | Power Line Communication — network over electrical wiring |
| WiMAX | Business term | Wireless high-speed mobile internet service |
| Mineo | Brand | Mobile virtual network operator (MVNO) available as a carrier option |
| 番砲 (Bangoho) | Japanese term | Number phone — caller ID notification service |
| 即割 (Sokuwari) | Japanese term | Instant discount — discount applied at contract time |
| 高割 (Kosokuwari) | Japanese term | Fast discount — early payment discount |
| 長割 (Chowari) | Japanese term | Long-term discount — loyalty discount for long contracts |
| ファミリパック | Japanese term | Family Pack — bundled home networking service |
| リモートサポート | Japanese term | Remote Support Premium — remote troubleshooting service |
| eoセキュリティパック | Japanese term | eo Security Pack — cybersecurity protection service |
