## 6. Per-Branch Detail Blocks

**Block 1** - IF (null check) (L3929-3931)

> Null guard: if either parameter is null, return null immediately.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(key == null || subkey == null)` | null check guard [L3929] |
| 2 | RETURN | `return null;` | early exit on null input |

**Block 2** - EXEC (separator detection) (L3932)

> Detect "/" in key. Variable `separaterPoint` is declared but never used (dead code).

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/");` | separator position detection [dead code] [L3932] |

**Block 3** - IF/ELSE-IF/ELSE (field dispatch) (L3935-L5325)

> The main dispatch chain. Each branch matches a `key` string against Japanese UI labels. For scalar field matches, a nested if/else-if/else sub-chain dispatches on `subkey`.

### Block 3.1 - Scalar Field: "サービス契約番号" (L3935-3948)

> Data type is String field "Service Contract Number" (field ID: svc_kei_no)

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("サービス契約番号")` | match scalar field [L3935] |
| 2 | IF | `subkey.equalsIgnoreCase("value")` | value access [L3936] |
| 3 | RETURN | `return getSvc_kei_no_value();` | getter call [L3937] |
| 4 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` | enable access [L3939] |
| 5 | RETURN | `return getSvc_kei_no_enabled();` | getter call [L3940] |
| 6 | ELSE-IF | `subkey.equalsIgnoreCase("state")` | state access [L3942] |
| 7 | RETURN | `return getSvc_kei_no_state();` | getter call [L3943] |

### Block 3.2 - Scalar Field: "世代登録年月日時分秒" (L3951-3964)

> Data type is String field "Generation/Registration Date/Time" (field ID: gene_add_dtm)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` | value access [L3952] |
| 2 | RETURN | `return getGene_add_dtm_value();` | getter call [L3953] |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` | enable access [L3955] |
| 4 | RETURN | `return getGene_add_dtm_enabled();` | getter call [L3956] |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` | state access [L3958] |
| 6 | RETURN | `return getGene_add_dtm_state();` | getter call [L3959] |

### Block 3.3 - Scalar Field: "サービス契約ステータス" (L3967-3980)

> Data type is String field "Service Contract Status" (field ID: svc_kei_stat)

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` | value access [L3968] |
| 2 | RETURN | `return getSvc_kei_stat_value();` | getter call [L3969] |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` | enable access [L3971] |
| 4 | RETURN | `return getSvc_kei_stat_enabled();` | getter call [L3972] |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` | state access [L3974] |
| 6 | RETURN | `return getSvc_kei_stat_state();` | getter call [L3975] |

> **Pattern Note:** All 78+ scalar fields follow the identical Block 3.1 pattern above: one outer IF matching the `key` Japanese label, then three inner branches (value/enable/state) each calling the corresponding getter. The following table summarizes all scalar field keys mapped to their field IDs and getter method naming conventions.

### Block 3.4 - Scalar Fields Summary Table

All scalar fields use the pattern: `key.equals("Japanese Label")` -> three sub-branches for value/enable/state.

| Block | Japanese Key | Field ID | Value Getter |
|-------|-------------|----------|-------------|
| 3.5 | "サービス契約ステータス名称" | svc_kei_stat_nm | getSvc_kei_stat_nm_value() |
| 3.6 | "システムID" | sysid | getSysid_value() |
| 3.7 | "システムID名称" | sysid_nm | getSysid_nm_value() |
| 3.8 | "サービスコード" | svc_cd | getSvc_cd_value() |
| 3.9 | "サービスコード名称" | svc_cd_nm | getSvc_cd_nm_value() |
| 3.10 | "申込明細番号" | mskm_dtl_no | getMskm_dtl_no_value() |
| 3.11 | "面開発案件番号" | menkaihat_anken_no | getMenkaihat_anken_no_value() |
| 3.12 | "料金グループコード" | prc_grp_cd | getPrc_grp_cd_value() |
| 3.13 | "料金グループコード名称" | prc_grp_cd_nm | getPrc_grp_cd_nm_value() |
| 3.14 | "料金コースコード" | pcrs_cd | getPcrs_cd_value() |
| 3.15 | "料金コースコード名称" | pcrs_cd_nm | getPcrs_cd_nm_value() |
| 3.16 | "料金プランコード" | pplan_cd | getPplan_cd_value() |
| 3.17 | "料金プランコード名称" | pplan_cd_nm | getPplan_cd_nm_value() |
| 3.18 | "提供方式契約番号" | tk_hoshiki_kei_no | getTk_hoshiki_kei_no_value() |
| 3.19 | "サービス利用開始希望年月日" | svc_use_sta_kibo_ymd | getSvc_use_sta_kibo_ymd_value() |
| 3.20 | "予約適用開始希望年月日" | rsv_tsta_kibo_ymd | getRsv_tsta_kibo_ymd_value() |
| 3.21 | "IS速報書出力要否" | id_sokhosho_output_yh | getId_sokhosho_output_yh_value() |
| 3.22 | "IS速報書出力要否名称" | id_sokhosho_output_yh_nm | getId_sokhosho_output_yh_nm_value() |
| 3.23 | "サービス契約後続業務依頼年月日" | svc_kei_kzkwrk_reqymd | getSvc_kei_kzkwrk_reqymd_value() |
| 3.24 | "照会年月日" | shosa_ymd | getShosa_ymd_value() |
| 3.25 | "照会取消年月日" | shosa_cl_ymd | getShosa_cl_ymd_value() |
| 3.26 | "審結果コード" | skekka_cd | getSkekka_cd_value() |
| 3.27 | "審結果コード名称" | skekka_cd_nm | getSkekka_cd_nm_value() |
| 3.28 | "審結果詳細コード" | skekka_dtl_cd | getSkekka_dtl_cd_value() |
| 3.29 | "審結果補記コード" | skekka_hoki_cd | getSkekka_hoki_cd_value() |
| 3.30 | "審結果補記コード名称" | skekka_hoki_cd_nm | getSkekka_hoki_cd_nm_value() |
| 3.31 | "審結果送信コード" | skekka_send_cd | getSkekka_send_cd_value() |
| 3.32 | "審結果送信コード名称" | skekka_send_cd_nm | getSkekka_send_cd_nm_value() |
| 3.33 | "支払い方法継続フラグ" | payway_keizoku_flg | getPayway_keizoku_flg_value() |
| 3.34 | "支払い方法継続フラグ名称" | payway_keizoku_flg_nm | getPayway_keizoku_flg_nm_value() |
| 3.35 | "試用加入年月日" | ftrial_kanyu_ymd | getFtrial_kanyu_ymd_value() |
| 3.36 | "試用期間終了年月日" | ftrial_prd_endymd | getFtrial_prd_endymd_value() |
| 3.37 | "本加入年月日" | honkanyu_ymd | getHonkanyu_ymd_value() |
| 3.38 | "本加入移行期限年月日" | honkanyu_iko_kigen_ymd | getHonkanyu_iko_kigen_ymd_value() |
| 3.39 | "契約締結年月日" | kei_cnc_ymd | getKei_cnc_ymd_value() |
| 3.40 | "プラン開始年月日" | plan_staymd | getPlan_staymd_value() |
| 3.41 | "プラン終了年月日" | plan_endymd | getPlan_endymd_value() |
| 3.42 | "プラン課金開始年月日" | plan_chrg_staymd | getPlan_chrg_staymd_value() |
| 3.43 | "プラン課金終了年月日" | plan_chrg_endymd | getPlan_chrg_endymd_value() |
| 3.44 | "プラン終了種類コード" | plan_end_sbt_cd | getPlan_end_sbt_cd_value() |
| 3.45 | "プラン終了種類コード名称" | plan_end_sbt_cd_nm | getPlan_end_sbt_cd_nm_value() |
| 3.46 | "予約適用年月日" | rsv_aply_ymd | getRsv_aply_ymd_value() |
| 3.47 | "予約取消年月日" | rsv_cl_ymd | getRsv_cl_ymd_value() |
| 3.48 | "予約適用コード" | rsv_aply_cd | getRsv_aply_cd_value() |
| 3.49 | "予約適用コード名称" | rsv_aply_cd_nm | getRsv_aply_cd_nm_value() |
| 3.50 | "サービスキャンセル年月日" | svc_cancel_ymd | getSvc_cancel_ymd_value() |
| 3.51 | "サービスキャンセル理由コード" | svc_cancel_rsn_cd | getSvc_cancel_rsn_cd_value() |
| 3.52 | "サービス開始年月日" | svc_sta_ymd | getSvc_sta_ymd_value() |
| 3.53 | "サービス課金開始年月日" | svc_chrg_staymd | getSvc_chrg_staymd_value() |
| 3.54 | "レーター発送仕区分" | letter_hasso_shiwake_div | getLetter_hasso_shiwake_div_value() |
| 3.55 | "レーター発送仕区分名称" | letter_hasso_shiwake_div_nm | getLetter_hasso_shiwake_div_nm_value() |
| 3.56 | "サンキューレーター送付先コード" | thnx_letter_shs_cd | getThnx_letter_shs_cd_value() |
| 3.57 | "WEBオプション追加不可フラグ" | web_op_add_fail_flg | getWeb_op_add_fail_flg_value() |
| 3.58 | "サービス停止年月日" | svc_stp_ymd | getSvc_stp_ymd_value() |
| 3.59 | "サービス停止理由コード" | svc_stp_rsn_cd | getSvc_stp_rsn_cd_value() |
| 3.60 | "サービス停止解除年月日" | svc_stp_rls_ymd | getSvc_stp_rls_ymd_value() |
| 3.61 | "サービス停止解除理由コード" | svc_stp_rls_rsn_cd | getSvc_stp_rls_rsn_cd_value() |
| 3.62 | "休止中断コード" | pause_stp_cd | getPause_stp_cd_value() |
| 3.63 | "休止中断コード名称" | pause_stp_cd_nm | getPause_stp_cd_nm_value() |
| 3.64 | "サービス休止年月日" | svc_pause_ymd | getSvc_pause_ymd_value() |
| 3.65 | "サービス休止理由コード" | svc_pause_rsn_cd | getSvc_pause_rsn_cd_value() |
| 3.66 | "サービス休止理由メモ" | svc_pause_rsn_memo | getSvc_pause_rsn_memo_value() |
| 3.67 | "サービス休止解除年月日" | svc_pause_rls_ymd | getSvc_pause_rls_ymd_value() |
| 3.68 | "サービス休止解除理由コード" | svc_pause_rls_rsn_cd | getSvc_pause_rls_rsn_cd_value() |
| 3.69 | "サービス休止解除理由メモ" | svc_pause_rls_rsn_memo | getSvc_pause_rls_rsn_memo_value() |
| 3.70 | "サービス終了年月日" | svc_endymd | getSvc_endymd_value() |
| 3.71 | "サービス課金終了年月日" | svc_chrg_endymd | getSvc_chrg_endymd_value() |
| 3.72 | "サービス解約年月日" | svc_dsl_ymd | getSvc_dsl_ymd_value() |
| 3.73 | "サービス解約理由コード" | svc_dlre_cd | getSvc_dlre_cd_value() |
| 3.74 | "サービス解約理由コード名称" | svc_dlre_cd_nm | getSvc_dlre_cd_nm_value() |
| 3.75 | "サービス解約理由メモ" | svc_dlre_memo | getSvc_dlre_memo_value() |
| 3.76 | "サービス解約手順完了フラグ" | svc_dsl_ttdki_fin_flg | getSvc_dsl_ttdki_fin_flg_value() |
| 3.77 | "回復年月日" | kaihk_ymd | getKaihk_ymd_value() |
| 3.78 | "サービスキャンセル取消年月日" | svc_cancel_cl_ymd | getSvc_cancel_cl_ymd_value() |
| 3.79 | "サービス解約取消年月日" | svc_dsl_cl_ymd | getSvc_dsl_cl_ymd_value() |
| 3.80 | "変更元法人サービス契約受付番号" | chge_mt_hojinsvkei_uk_no | getChge_mt_hojinsvkei_uk_no_value() |
| 3.81 | "変更元法人サービス契約受付番号子" | chge_mt_hojinsvkei_uk_nopt | getChge_mt_hojinsvkei_uk_nopt_value() |
| 3.82 | "変更先法人サービス契約受付番号" | chge_sk_hojinsvkei_uk_no | getChge_sk_hojinsvkei_uk_no_value() |
| 3.83 | "変更先法人サービス契約受付番号子" | chge_sk_hojinsvkei_uk_nopt | getChge_sk_hojinsvkei_uk_nopt_value() |
| 3.84 | "変更元法人eO読替サービス契約番号" | chmt_hjin_eo_ykae_svkei_no | getChmt_hjin_eo_ykae_svkei_no_value() |
| 3.85 | "変更先法人eO読替サービス契約番号" | chsk_hjin_eo_ykae_svkei_no | getChsk_hjin_eo_ykae_svkei_no_value() |
| 3.86 | "違約金発生コード" | pnlty_hassei_cd | getPnlty_hassei_cd_value() |
| 3.87 | "違約金変更理由コード" | pnlty_chge_rsn_cd | getPnlty_chge_rsn_cd_value() |
| 3.88 | "違約金変更理由コード名称" | pnlty_chge_rsn_cd_nm | getPnlty_chge_rsn_cd_nm_value() |
| 3.89 | "異動区分" | ido_div | getIdo_div_value() |
| 3.90 | "異動区分名称" | ido_div_nm | getIdo_div_nm_value() |
| 3.91 | "初期デフォルトパスワード" | shk_dflt_pwd | getShk_dflt_pwd_value() |
| 3.92 | "面開発案件仮登録フラグ" | menkaihat_anken_kr_add_flg | getMenkaihat_anken_kr_add_flg_value() |
| 3.93 | "面開発案件仮登録フラグ名称" | menkaihat_anken_kr_add_flg_nm | getMenkaihat_anken_kr_add_flg_nm_value() |
| 3.94 | "紹介コード" | intr_cd | getIntr_cd_value() |
| 3.95 | "照会解約完了コード" | shosa_dsl_fin_cd | getShosa_dsl_fin_cd_value() |
| 3.96 | "照会解約完了コード名称" | shosa_dsl_fin_cd_nm | getShosa_dsl_fin_cd_nm_value() |
| 3.97 | "異動.NG状態コード" | ido_ng_stat_cd | getIdo_ng_stat_cd_value() |
| 3.98 | "異動.NG状態コード名称" | ido_ng_stat_cd_nm | getIdo_ng_stat_cd_nm_value() |
| 3.99 | "課金開始年月日補正有無" | chrg_sta_ymd_hosei_um | getChrg_sta_ymd_hosei_um_value() |
| 3.100 | "課金開始年月日補正有無名称" | chrg_sta_ymd_hosei_um_nm | getChrg_sta_ymd_hosei_um_nm_value() |
| 3.101 | "サービス休止課金開始年月日" | svc_pause_chrg_sta_ymd | getSvc_pause_chrg_sta_ymd_value() |
| 3.102 | "業務連絡備考" | work_rrk_biko | getWork_rrk_biko_value() |
| 3.103 | "自動照会処理状態コード" | auto_shosa_tran_stat_cd | getAuto_shosa_tran_stat_cd_value() |
| 3.104 | "自動照会処理状態コード名称" | auto_shosa_tran_stat_cd_nm | getAuto_shosa_tran_stat_cd_nm_value() |
| 3.105 | "機器未登録リスト出力済フラグ" | kiki_miadd_list_oputzm_flg | getKiki_miadd_list_oputzm_flg_value() |
| 3.106 | "機器未登録リスト出力済フラグ名称" | kiki_miadd_list_oputzm_flg_nm | getKiki_miadd_list_oputzm_flg_nm_value() |
| 3.107 | "整理番号" | seiri_no | getSeiri_no_value() |
| 3.108 | "最終更新年月日時分秒" | last_upd_dtm | getLast_upd_dtm_value() |

### Block 3.109 - Data Type Bean List Fields (L5248-L5325)

> If key matches a repeat table field name, delegate to sub-bean's `listKoumokuIds()`.

| # | Type | Code |
|---|------|------|
| 1 | IF | `key.equals("STB変更申込リスト")` | STB change application list [L5248] |
| 2 | RETURN | `return KKW00129SF07DBean.listKoumokuIds();` | delegate to sub-bean |
| 3 | ELSE-IF | `key.equals("サービス契約情報")` | Service Contract Info [L5255] |
| 4 | RETURN | `return KKW00129SF02DBean.listKoumokuIds();` | delegate to sub-bean |
| 5 | ELSE-IF | `key.equals("サービス契約＜eo光TV＞同意情報")` | EO TV agreement info [L5262] |
| 6 | RETURN | `return KKW00129SF03DBean.listKoumokuIds();` | delegate to sub-bean |
| 7 | ELSE-IF | `key.equals("申込明細同意情報")` | Application detail agreement [L5269] |
| 8 | RETURN | `return KKW00129SF04DBean.listKoumokuIds();` | delegate to sub-bean |
| 9 | ELSE-IF | `key.equals("回線対象サービス契約同意情報")` | Line-target agreement info [L5276] |
| 10 | RETURN | `return KKW00129SF05DBean.listKoumokuIds();` | delegate to sub-bean |
| 11 | ELSE-IF | `key.equals("サービス契約回線内詳同意情報")` | Line-detail agreement info [L5283] |
| 12 | RETURN | `return KKW00129SF06DBean.listKoumokuIds();` | delegate to sub-bean |
| 13 | ELSE-IF | `key.equals("サービス契約共通情報一覧照会明細")` | Common info inquiry detail [L5290] |
| 14 | RETURN | `return KKW00129SF08DBean.listKoumokuIds();` | delegate to sub-bean |
| 15 | ELSE-IF | `key.equals("顧客契約引継リスト")` | Customer contract succession [L5297] |
| 16 | RETURN | `return KKW00129SF09DBean.listKoumokuIds();` | delegate to sub-bean |
| 17 | ELSE-IF | `key.equals("TVコース変更情報リスト")` | TV course change info list [L5304] |
| 18 | RETURN | `return KKW00129SF10DBean.listKoumokuIds();` | delegate to sub-bean |

**Block 4** - ELSE (default return) (L5325)

> If no key matches, return empty ArrayList.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return new ArrayList<String>();` | empty list fallback [L5325] |
