## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Extract SOD info maps from sodMap (L9366–L9384)
| # | Type | Code |
|---|------|------|
| 1 | SET | `sod_kihon_info_Map = (HashMap)sodMap.get(SOD_KIHON_INFO)` // SOD basic info |
| 2 | SET | `svc_kei_info_Map = (HashMap)sodMap.get(SVC_KEI_INFO)` // Service contract info |
| 3 | SET | `svc_kei_ucwk_info_Map = (HashMap)sodMap.get(SVC_KEI_UCWK_INFO)` // Service contract detail info |
| 4 | SET | `opsvkei_info_Map = (HashMap)sodMap.get(OPSVKEI_INFO)` // Option service info |
| 5 | SET | `kktsvkei_info_Map = (HashMap)sodMap.get(KKTSVKEI_INFO)` // Machine provision service info |
| 6 | EXEC | `sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map)` |
| 7 | EXEC | `svc_kei_info_Map = shkkaMap(svc_kei_info_Map)` |
| 8 | EXEC | `svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map)` |
| 9 | EXEC | `opsvkei_info_Map = shkkaMap(opsvkei_info_Map)` |
| 10 | EXEC | `kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map)` |

**Block 2** — [SET] Initialize before/after hash variables (L9386–L9403)
| # | Type | Code |
|---|------|------|
| 1 | SET | `chbfEKK0351A010SCHash = null` // Before option service agreement result |
| 2 | SET | `chafEKK0351A010SCHash = null` // After option service agreement result |
| 3 | SET | `chbfEKK0361A010SCHash = null` // Before option service contract <ISP> |
| 4 | SET | `chafEKK0361A010SCHash = null` // After option service contract <ISP> |
| 5 | SET | `chbfEKK0401A010SCHash = null` // Before sub-option service contract |
| 6 | SET | `chafEKK0401A010SCHash = null` // After sub-option service contract |
| 7 | SET | `chbfEKK0411A010SCHash = null` // Before sub-option service contract <ISP> |
| 8 | SET | `chafEKK0411A010SCHash = null` // After sub-option service contract <ISP> |
| 9 | SET | `chafEKK0341A010SCHash = null` // After machine provision service agreement |

**Block 3** — [SET] Extract option info required parameters (L9414–L9444)
| # | Type | Code |
|---|------|------|
| 1 | SET | `ido_div = (String)sod_kihon_info_Map.get(INFO_IDO_DIV)` // Discontinuity division |
| 2 | SET | `svc_kei_no = (String)svc_kei_info_Map.get(INFO_SVC_KEI_NO)` // Service contract number |
| 3 | SET | `chbf_opsvkei_no = (String)opsvkei_info_Map.get(INFO_CHBF_OPSVKEI_NO)` // Before opt svc number |
| 4 | SET | `chbf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(INFO_CHBF_OPSVKEI_GENE_ADD_DTM)` // Before opt svc gen dtm |
| 5 | SET | `chaf_opsvkei_no = (String)opsvkei_info_Map.get(INFO_CHAF_OPSVKEI_NO)` // After opt svc number |
| 6 | SET | `chaf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(INFO_CHAF_OPSVKEI_GENE_ADD_DTM)` // After opt svc gen dtm |
| 7 | SET | `chbf_sbopsvkei_no = (String)opsvkei_info_Map.get(INFO_CHBF_SBOPSVKEI_NO)` // Before sub-opt svc number |
| 8 | SET | `chaf_sbopsvkei_no = (String)opsvkei_info_Map.get(INFO_CHAF_SBOPSVKEI_NO)` // After sub-opt svc number |
| 9 | SET | `chbf_sbopsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(INFO_CHBF_SBOPSVKEI_GENE_ADD_DTM)` // Before gen dtm |
| 10 | SET | `chaf_sbopsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(INFO_CHAF_SBOPSVKEI_GENE_ADD_DTM)` // After gen dtm |
| 11 | SET | `svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(INFO_SVC_KEI_UCWK_NO)` // Service contract detail number |
| 12 | SET | `chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM)` // After detail gen dtm |
| 13 | SET | `chaf_kktk_svc_kei_no = (String)kktsvkei_info_Map.get(INFO_CHAF_KKTSVKEI_NO)` // After machine provision svc number |
| 14 | SET | `chaf_kktk_svc_kei_gene_add_dtm = (String)kktsvkei_info_Map.get(INFO_CHAF_KKTSVKEI_GENE_ADD_DTM)` // After machine provision gen dtm |

**Block 4** — [EXEC] Sanitize strings and early exit check (L9446–L9460)
| # | Type | Code |
|---|------|------|
| 1 | SET | `chaf_opsvkei_no = shkkaChr(chaf_opsvkei_no)` |
| 2 | SET | `chaf_opsvkei_gene_add_dtm = shkkaChr(chaf_opsvkei_gene_add_dtm)` |
| 3 | SET | `chbf_opsvkei_no = shkkaChr(chbf_opsvkei_no)` |
| 4 | SET | `chbf_opsvkei_gene_add_dtm = shkkaChr(chbf_opsvkei_gene_add_dtm)` |
| 5 | EXEC | `ipv6_svc_kei_ucwk_no = shkkaChr(svc_kei_ucwk_no)` |
| 6 | EXEC | `ipv6_svc_kei_ucwk_gadtm = shkkaChr(chaf_svc_kei_ucwk_gene_add_dtm)` |

**Block 5** — [IF: early exit] If after-change option service number is blank, return immediately (address-change SOD skips option cancellation) (L9462–L9464)
| # | Type | Code |
|---|------|------|
| 1 | EXEC | `return param` // Early exit when chaf_opsvkei_no is blank |

**Block 6** — [IF] If before-change option service info is present, fetch before data (L9469–L9555)
| # | Type | Code |
|---|------|------|
| 1 | SET | `chbfInHash = new HashMap<String, Object>()` |
| 2 | SET | `chbfResultHash = new HashMap<String, Object>()` |
| 3 | SET | `chbfInHash.put(OP_SVC_KEI_NO, chbf_opsvkei_no)` |
| 4 | SET | `chbfInHash.put(GENE_ADD_DTM, chbf_opsvkei_gene_add_dtm)` |
| 5 | EXEC | `statusCode = callEKK0351A010SC(param, handle, chbfInHash, chbfResultHash, FUNC_CODE_1)` |
| 6 | IF | `if (0 != statusCode) throw CCException/SCCallException` |
| 7 | SET | `chbfEKK0351A010SCHash = (HashMap)chbfResultHash.get(TEMPLATE_ID_EKK0351A010)` |
| 8 | SET | `opSvcCd = (String)chbfEKK0351A010SCHash.get(OP_SVC_CD)` |
| 9 | EXEC | `opSvcKind = jdgOpSvcKind(opSvcCd)` |
| 10 | IF | `if (null == opSvcKind) return param` |
| 11 | IF-ELSEIF | `if SVC_KIND_NET.equals(opSvcKind[0])` -> `callEKK0361A010SC` for before ISP |
| 11.1 | IF | `else if SVC_KIND_TEL.equals(opSvcKind[0])` -> commented out EKK0371A010 |
| 12 | IF | `if "1".equals(opSvcKind[1]) && !isBlank(chbf_sbopsvkei_no)` -> sub-option branch |
| 12.1 | IF | `if SVC_KIND_NET.equals(opSvcKind[0])` -> `callEKK0411A010SC` for before SBOP ISP |
| 12.2 | EXEC | `callEKK0401A010SC` for before SBOP (shared net/phone) |

**Block 7** — [IF] Fetch after-change option service information (L9560–L9655)
| # | Type | Code |
|---|------|------|
| 1 | SET | `chafInHash = new HashMap<String, Object>()` |
| 2 | SET | `chafResultHash = new HashMap<String, Object>()` |
| 3 | SET | `chafInHash.put(OP_SVC_KEI_NO, chaf_opsvkei_no)` |
| 4 | SET | `chafInHash.put(GENE_ADD_DTM, chaf_opsvkei_gene_add_dtm)` |
| 5 | EXEC | `statusCode = callEKK0351A010SC(param, handle, chafInHash, chafResultHash, FUNC_CODE_1)` |
| 6 | IF | `if (0 != statusCode) throw CCException/SCCallException` |
| 7 | SET | `chafEKK0351A010SCHash = (HashMap)chafResultHash.get(TEMPLATE_ID_EKK0351A010)` |
| 8 | SET | `opSvcCd = (String)chafEKK0351A010SCHash.get(OP_SVC_CD)` |
| 9 | EXEC | `opSvcKind = jdgOpSvcKind(opSvcCd)` |
| 10 | IF | `if (null == opSvcKind) return param` |
| 11 | IF-ELSEIF | `if SVC_KIND_NET.equals(opSvcKind[0])` -> `callEKK0361A010SC` for after ISP |
| 11.1 | IF | `else if SVC_KIND_TEL.equals(opSvcKind[0])` -> commented out EKK0371A010 |
| 12 | IF | `if "1".equals(opSvcKind[1]) && !isBlank(chaf_sbopsvkei_no)` -> sub-option branch |
| 12.1 | IF | `if SVC_KIND_NET.equals(opSvcKind[0])` -> `callEKK0411A010SC` for after SBOP ISP |
| 12.2 | EXEC | `callEKK0401A010SC` for after SBOP (shared net/phone) |

**Block 8** — [SET] State comparison: classify transitions (L9662–L9678)
| # | Type | Code |
|---|------|------|
| 1 | SET | `selectOdrNaiyoCd = ""` // Selected order content code |
| 2 | SET | `opsuveiStatBefore = chbfEKK0351A010SCHash.get(OP_SVC_KEI_STAT)` |
| 3 | SET | `opsuveiStatAfter = chafEKK0351A010SCHash.get(OP_SVC_KEI_STAT)` |
| 4 | SET | `isNewOpsvkei = isBlank(chbf_opsvkei_no) && !isBlank(chaf_opsvkei_no)` // New option service |
| 5 | SET | `isDslOpsvkei = SVC_KEI_STAT_910.equals(opSvcKeiStatAfter) || SVC_KEI_STAT_920.equals(opSvcKeiStatAfter)` // Cancelled/terminated |
| 6 | SET | `isKaihkOpsvkei = (SVC_KEI_STAT_910->100/030) || (SVC_KEI_STAT_920->020/030)` // Restored |
| 7 | SET | `isChgOpsvkei = (100->100) || (020->020) || (030->030)` // Modified (same status) |

**Block 9** — [IF] Branch: OP_SVC_CD = "B001" (Mail) (L9680–L10068)
> Handles email option service registration, modification, cancellation, and restoration. Also handles sub-option services: virus check, mailbox capacity, and email alias.
| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_ml = chaf_opsvkei_no` |
| 2 | SET | `op_gadtm_ml = chaf_opsvkei_gene_add_dtm` |
| 3 | SET | `mlad = chafEKK0361A010SCHash.get(MLAD)` |
| 4 | IF | **Block 9.1** — `if isNewOpsvkei` -> new mail registration |
| 4.1 | IF | `if chgOpsvKeiJdg(...) && 0 < sameTrnJdg(...)` -> get same transaction number |
| 4.2 | IF | `if chgOpsvKeiJdg(...)` -> `addSOD(ODR_NAIYO_CD_108)` Mail register |
| 5 | IF | **Block 9.2** — `else if isDslOpsvkei` -> mail cancellation (ODR_NAIYO_CD_116) |
| 6 | IF | **Block 9.3** — `else if isKaihkOpsvkei` -> mail restoration (ODR_NAIYO_CD_120) |
| 7 | IF | **Block 9.4** — `else if isChgOpsvkei` -> mail modification (MLAD comparison) |
| 7.1 | IF | `if chbfMlad != chafMlad` -> cancel old (117, 119), register new (108) |
| 8 | SUB | **Block 9.5** — Sub-option service handling: virus check (114/115), mailbox capacity (113), email alias (110/111/112) |

**Block 10** — [IF] Branch: OP_SVC_CD = "B002" (Homepage) (L10070–L10429)
> Handles web homepage registration, modification, cancellation, and restoration. Also handles sub-option services: access analysis and homepage capacity.
| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_hp = chaf_opsvkei_no` |
| 2 | SET | `op_gadtm_hp = chaf_opsvkei_gene_add_dtm` |
| 3 | IF | `if isNewOpsvkei` && URL domain/account set -> `addSOD(ODR_NAIYO_CD_121)` WEB register |
| 3.1 | SUB | Sub-option: access analysis registration (124), homepage capacity change (123) |
| 4 | IF | `else if isDslOpsvkei` -> `addSOD(ODR_NAIYO_CD_126)` WEB cancel |
| 5 | IF | `else if isKaihkOpsvkei` -> `addSOD(ODR_NAIYO_CD_128)` WEB restore |
| 6 | IF | `else if isChgOpsvkei` -> cancel old (126, 127), register new (121) if URL account changed |
| 7 | SUB | Sub-option: access analysis (124/125), homepage capacity (123) |

**Block 11** — [IF] Branch: OP_SVC_CD = "B005" (MLIST - Mailing List) (L10431–L10534)
> Handles mailing list registration, cancellation, and restoration.
| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_mlist = chaf_opsvkei_no` |
| 2 | SET | `same_trn_no = ""` // Clear same transaction number |
| 3 | IF | `if isNewOpsvkei` -> `addSOD(ODR_NAIYO_CD_129)` ML register |
| 4 | IF | `else if isDslOpsvkei` -> `addSOD(ODR_NAIYO_CD_131)` ML cancel |
| 5 | IF | `else if isKaihkOpsvkei` -> `addSOD(ODR_NAIYO_CD_133)` ML restore |

**Block 12** — [IF] Branch: OP_SVC_CD = "B001" (FIXIPAD - Fixed IP Address) (L10536–L10852)
> Handles fixed IP address registration, restoration, and cancellation. Calls EKK0161A010SC for service contract details. Performs pause judgment.
| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashUcwk.put(SVC_KEI_UCWK_NO, chafEKK0351A010SCHash.get("svc_kei_ucwk_no"))` |
| 2 | SET | `inHashUcwk.put(OPE_DATE, JCCBPCommon.getOpeDate(null))` |
| 3 | EXEC | `callEKK0161A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_2)` |
| 4 | SET | `svc_kei_ucwk_no = new String[1]` |
| 5 | SET | `svc_kei_ucwk_gadtm = new String[1]` |
| 6 | SET | `svc_kei_ucwk_no[0] = retHash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO)` |
| 7 | SET | `old_vrsb_jdg_svc_dtl_cd = getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, svc_kei_ucwk_no[0], pplan_cd)` |
| 8 | IF | `if isBlank(chbf_opsvkei_no)` -> `addSOD(ODR_NAIYO_CD_152)` Fixed IP register |
| 9 | IF | `else if SVC_KEI_STAT_910/920.equals(chafStatus)` -> pause judgment branch |
| 9.1 | EXEC | `param = pauseJdg(param, handle, null, svc_kei_no, pause_jdg_cd)` |
| 9.2 | IF | `if PAUSE_JDG_CD_1.equals(pause_jdg_cd[0])` -> FTTH auth: remove suspension (107), delete (104), register (101), temporary stop (106) |
| 9.3 | IF | `if PAUSE_JDG_CD_0.equals(pause_jdg_cd[0])` -> Fixed IP cancel (154), FTTH auth delete (104), register (101) |
| 10 | IF | `else if SVC_KEI_STAT_910->100` (before terminated, after in service) -> `addSOD(ODR_NAIYO_CD_153)` Fixed IP restore |

**Block 13** — [IF] Branch: OP_SVC_CD = "B015" (MLTISE - Multi-Session) (L10854–L11152)
> Handles static and dynamic multisession control for option services. Calls EKK0351B002SC to list option services.
| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_mltise = chaf_opsvkei_no` |
| 2 | EXEC | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1)` |
| 3 | FOR | Loop through msgList to get op_svc_kei_stat |
| 4 | IF | `if SVC_KEI_STAT_100.equals(op_svc_kei_stat)` -> static multisession branch |
| 4.1 | IF | `if isNewOpsvkei` -> `addSOD(ODR_NAIYO_CD_144)` Static multisession register |
| 4.2 | IF | `else if isDslOpsvkei` -> pause judgment, then cancel (145) and temp stop (106) or just cancel (145) |
| 4.3 | IF | `else if isKaihkOpsvkei` -> `addSOD(ODR_NAIYO_CD_161)` Static multisession restore |
| 4.4 | IF | `else if isChgOpsvkei` -> `addSOD(ODR_NAIYO_CD_162)` Static multisession count change |
| 5 | IF | `else` -> dynamic multisession branch (142/143) |
| 5.1 | IF | `if isNewOpsvkei` -> `addSOD(ODR_NAIYO_CD_142)` Dynamic multisession register |
| 5.2 | IF | `else if isDslOpsvkei` -> cancel (143) with pause judgment |
| 5.3 | IF | `else if isKaihkOpsvkei` -> `addSOD(ODR_NAIYO_CD_142)` Dynamic multisession register |
| 5.4 | IF | `else if isChgOpsvkei` -> cancel old (143), register new (142) |

**Block 14** — [IF] Branch: OP_SVC_CD = "D001" (DUP - Dial-Up Connection) (L11154–L11200)
> Handles dial-up connection registration, modification, and cancellation.
| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_dial = chaf_opsvkei_no` |
| 2 | EXEC | `callEKK0161B004SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1)` |
| 3 | SET | `op_svc_kei_no_dial = chaf_opsvkei_no` |
| 4 | IF | `if isNewOpsvkei` -> `addSOD(ODR_NAIYO_CD_134)` Dial-up register |
| 5 | IF | `else if isDslOpsvkei` -> cancel (137), delete (138) |
| 6 | IF | `else if isKaihkOpsvkei` -> `addSOD(ODR_NAIYO_CD_134)` Dial-up restore |
| 7 | IF | `else if isChgOpsvkei` -> `addSOD(ODR_NAIYO_CD_136)` Dial-up plan change |

**Block 15** — [IF] Branch: OP_SVC_CD = "F002" (FMTCEL - Femtocell) (L11202–L11255)
> Handles femtocell registration and cancellation.
| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_fmtcel = chaf_opsvkei_no` |
| 2 | IF | `if isBlank(chbf_opsvkei_no)` -> `addSOD(ODR_NAIYO_CD_164)` Femtocell register |
| 3 | IF | `else if SVC_KEI_STAT_910/920.equals(chafStatus)` -> cancel (166), delete (167) |
| 4 | IF | `else if SVC_KEI_STAT_910->100` -> `addSOD(ODR_NAIYO_CD_164)` Femtocell restore |

**Block 16** — [IF] Branch: OP_SVC_CD = "T003" (WARKMI - Assigned Telephone) (L11257–L11318)
> Handles assigned telephone service with OLS and SIP registration.
| # | Type | Code |
|---|------|------|
| 1 | IF | `if isBlank(chbf_opsvkei_no) || (910->100)` -> new/restore |
| 2 | EXEC | `callEKK0341A010SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)` |
| 3 | EXEC | `getEKK0251B001SC(param, handle, svc_kei_no, FUNC_CODE_1)` |
| 4 | SET | `svc_kei_kaisen_ucwk_no = eKK0251B001Hash.get(SVC_KEI_KAISEN_UCWK_NO)` |
| 5 | SET | `svc_kei_kaisen_ucwk_gadtm = eKK0251B001Hash.get(GENE_ADD_DTM)` |
| 6 | SET | `sameTrnNo = new String[1]` |
| 7 | EXEC | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 8 | SET | `sod_pattern_ipv6 = 1` // Register |
| 9 | SET | `jdgIpv6(handle, param, "", chaf_opsvkei_no, chafEKK0361A010SCHash)` |

**Block 17** — [IF] Branch: OP_SVC_CD = "T005" (TENSO - Call Forwarding) (L11320–L11444)
> Handles call forwarding service including SIP routing and forwarding selection.
| # | Type | Code |
|---|------|------|
| 1 | SET | `chbfOpSvcKeiStat = chbfEKK0351A010SCHash.get(OP_SVC_KEI_STAT)` |
| 2 | SET | `chafOpSvcKeiStat = chafEKK0351A010SCHash.get(OP_SVC_KEI_STAT)` |
| 3 | IF | `if !chbfOpSvcKeiStat.equals(chafOpSvcKeiStat)` -> status changed |
| 4 | EXEC | `callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1)` |
| 5 | EXEC | `callEKK1041B001SC(param, handle, ORDER_SBT_CD_TEL, null, null, svc_kei_no)` |
| 6 | FOR | Loop to count Z1 orders (svc_order_cd matches 2[0134] && rcnt_yokyu_sbt_cd >= 02) |
| 7 | IF | `if isBmpNon && isOrderedZ1 < 4` -> SIP register (218), forwarding register (236) |
| 8 | IF | `else if isOrderedZ1 >= 4` -> forwarding register (236) |
| 9 | IF | `else` -> forwarding cancel (237) |
| 10 | SUB | Sub-option: forwarding selection (238/239) if chafSbopSvcCd == SBOP_SVC_CD_TENSOSEL |

**Block 18** — [IF] Branch: OP_SVC_CD = "T006" (DSP - Caller ID Display) (L11446–L11567)
> Handles caller ID display service with sub-option for anonymous call rejection.
| # | Type | Code |
|---|------|------|
| 1 | IF | `if !chbfOpSvcKeiStat.equals(chafOpSvcKeiStat)` -> status changed |
| 2 | EXEC | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 3 | IF | `if not (910/920)` -> `addSOD(ODR_NAIYO_CD_240)` Caller ID display register |
| 4 | IF | `else` -> `addSOD(ODR_NAIYO_CD_241)` Caller ID display cancel |
| 5 | SUB | Sub-option: anonymous call rejection (242/243) if chafSbopSvcCd == SBOP_SVC_CD_NOTELNO |

**Block 19** — [IF] Branch: OP_SVC_CD = "T004" (MWKTEL - Nuisance Call Blocking) (L11569–L11621)
> Handles nuisance call blocking service registration and cancellation.
| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 2 | IF | `if not (910/920)` -> `addSOD(ODR_NAIYO_CD_244)` Nuisance call blocking register |
| 3 | IF | `else` -> `addSOD(ODR_NAIYO_CD_245)` Nuisance call blocking cancel |

**Block 20** — [IF] Branch: OP_SVC_CD = "T007" (STINO - Designated Number Blocking) (L11623–L11675)
> Handles designated number blocking service registration and cancellation.
| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 2 | IF | `if not (910/920)` -> `addSOD(ODR_NAIYO_CD_246)` Designated number blocking register |
| 3 | IF | `else` -> `addSOD(ODR_NAIYO_CD_247)` Designated number blocking cancel |

**Block 21** — [IF] Branch: OP_SVC_CD = "T009" (KOKUSAI_STP - International Call Stop) [ANK-0048-00-01] (L11677–L11726)
> Handles international call stop registration and cancellation. Uses `tsuikabunAddSOD` for supplementary SOD.
| # | Type | Code |
|---|------|------|
| 1 | EXEC | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 2 | IF | `if not (910/920)` -> `tsuikabunAddSOD(ODR_NAIYO_CD_253)` International call stop register |
| 3 | IF | `else` -> `tsuikabunAddSOD(ODR_NAIYO_CD_254)` International call stop cancel |

**Block 22** — [IF] Branch: OP_SVC_CD = "F004" (IPV6) [ANK-0046-00-01] (L11730–L11806)
> Handles IPv6 service with pattern-based judgment (1=register, 3=cancel). Calls `jdgIpv6` for conditional processing.
| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_ipv6 = chaf_opsvkei_no` |
| 2 | SET | `op_gadtm_ipv6 = chaf_opsvkei_gene_add_dtm` |
| 3 | EXEC | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 4 | IF | `if isBlank(chbf_opsvkei_no)` -> `sod_pattern_ipv6 = 1`, `jdgIpv6(handle, param, "", chaf_opsvkei_no, ...)` |
| 5 | IF | `else if 910/920.equals(chafStatus)` -> `sod_pattern_ipv6 = 3`, `jdgIpv6(handle, param, "", chbf_opsvkei_no, ...)` |
| 6 | IF | `else if 910->100` (before terminated, after in service) -> `sod_pattern_ipv6 = 1`, `jdgIpv6(handle, param, "", chaf_opsvkei_no, ...)` |

**Block 23** — [IF] Branch: OP_SVC_CD = "T001" (N050 - 050 Number Swap) (L11808–L11842)
> Handles 050 number swap (number porting) registration and cancellation.
| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_tikan = chaf_opsvkei_no` |
| 2 | SET | `svc_kei_ucwk_no = new String[1]` |
| 3 | IF | `if isBlank(chbf_opsvkei_no) || (910->100)` -> `addSOD(ODR_NAIYO_CD_248)` Number swap register |
| 4 | IF | `else if (910/920) || number050Exe` -> `addSOD(ODR_NAIYO_CD_249)` Number swap cancel |
| 4.1 | SET | `number050Exe = false` |

**Block 24** — [SET] Set mae_recode tracking fields and return (L11844–L11854)
| # | Type | Code |
|---|------|------|
| 1 | SET | `mae_recode_chaf_op_svc_kei_no = new String(chaf_opsvkei_no)` |
| 2 | SET | `mae_recode_chaf_op_svc_kei_gene_add_dtm = new String(chaf_opsvkei_gene_add_dtm)` |
| 3 | SET | `mae_recode_chbf_op_svc_kei_no = new String(chbf_opsvkei_no)` |
| 4 | SET | `mae_recode_chbf_op_svc_kei_gene_add_dtm = new String(chbf_opsvkei_gene_add_dtm)` |
| 5 | RETURN | `return param` |
