# Business Logic — JBSbatKKDelSavePrdKikData.getShijishoInfOp() [105 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.business.service.JBSbatKKDelSavePrdKikData` |
| Layer | Service (Package: `eo.business.service`) |
| Module | `service` (Package: `eo.business.service`) |

## 1. Role

### JBSbatKKDelSavePrdKikData.getShijishoInfOp()

This method retrieves POP ID (Point of Presence Identifier) and WEB ID information for Option ISP (Internet Service Provider) service contracts during a batch processing flow that prepares instruction sheet (指示書, shijisho) registration data. It operates as a dedicated data-fetching helper within the broader instruction information registration pipeline — invoked by `addShijishoInf()`, which orchestrates the collection of four distinct data categories (system ID, service contract, POP/WEB ID, authentication ID, and billing account number) before persisting them all via `insertShijisho()`. The method executes a parameterized SELECT query against the `KK_T_OPSVKEI_ISP` (Option ISP Service Contract Line Items) table, iterating through the result cursor to extract POP ID records and WEB ID records separately. For each non-null POP ID, it assembles a 14-parameter metadata map with `PARAMETER_2 = "02"` (POP_ID type flag); for each non-null WEB ID, it assembles a 14-parameter map with `PARAMETER_2 = "04"` (WEB_ID type flag). To prevent duplicate entries in a multi-key scenario (tracked via change request IT2-2016-0000001), it applies deduplication logic using a composite key formed from `PARAMETER_1 + PARAMETER_2 + PARAMETER_3`. The method implements a cursor-based iteration pattern with early-return optimization, SQL parameter substitution, and post-processing cleanup (cursor close + reinitialization) to manage maximum open cursor limits.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["getShijishoInfOp(key_op_svc_kei_no, shijishoInfList)"])
    COND_EMPTY{"key_op_svc_kei_no.size() == 0"}
    EARLY_END(["return / End"])
    GET_SQL["db_KK_T_OPSVKEI_ISP.getSql(KK_T_OPSVKEI_ISP_KK_SELECT_025)"]
    FIX_IN["setInParam(tgSql, key_op_svc_kei_no)"]
    SET_SQL["db_KK_T_OPSVKEI_ISP.setSqlMap() with modified SQL"]
    EXEC_SQL["executeKK_T_OPSVKEI_ISP_KK_SELECT_025()"]
    RESTORE_SQL["db_KK_T_OPSVKEI_ISP.setSqlMap() restore original"]
    OPEN_CURSOR["db_KK_T_OPSVKEI_ISP.selectNext()"]
    INIT_LISTS["chkKeyList_pop = new ArrayList()
chkKeyList_web = new ArrayList()"]
    CHK_ROW{"dbMap != null?"}
    POP_NOT_NULL{"POP_ID not null/blank?"}
    BUILD_WK_MAP_P["Build wkMap: POP_ID info
TRN_CD=N01
PARAMETER_2=02
PARAMETER_3=TSYRN_SVKEI_CD_SEQ
PARAMETER_4=POP_ID
PARAMETER_5=SHOSA_YMD
PARAMETER_6=SVC_ENDYMD
PARAMETER_7=MLAD
PARAMETER_8=MK_FLG
PARAMETER_9/12=getSysDateTimeStamp
PARAMETER_10/13=batchUserId"]
    CHK_KEY_POP{"!chkKeyList_pop.contains(compositeKey)?"}
    ADD_POP["chkKeyList_pop.add()
shijishoInfList.add(wkMap)"]
    WEB_NOT_NULL{"WEB_ID not null/blank?"}
    BUILD_WK_MAP_W["Build wkMap: WEB_ID info
TRN_CD=N01
PARAMETER_2=04
PARAMETER_3=1
PARAMETER_4=WEB_ID
PARAMETER_5=SHOSA_YMD
PARAMETER_6=SVC_ENDYMD
PARAMETER_7=empty
PARAMETER_8=MK_FLG
PARAMETER_9/12=getSysDateTimeStamp
PARAMETER_10/13=batchUserId"]
    CHK_KEY_WEB{"!chkKeyList_web.contains(compositeKey)?"}
    ADD_WEB["chkKeyList_web.add()
shijishoInfList.add(wkMap)"]
    NEXT_ROW["dbMap = db_KK_T_OPSVKEI_ISP.selectNext()"]
    CLOSE_DB["db_KK_T_OPSVKEI_ISP.close()"]
    REINIT_DB["db_KK_T_OPSVKEI_ISP = new JBSbatSQLAccess()"]
    FINAL_END(["End"])

    START --> COND_EMPTY
    COND_EMPTY -->|Yes| EARLY_END
    COND_EMPTY -->|No| GET_SQL
    GET_SQL --> FIX_IN
    FIX_IN --> SET_SQL
    SET_SQL --> EXEC_SQL
    EXEC_SQL --> RESTORE_SQL
    RESTORE_SQL --> OPEN_CURSOR
    OPEN_CURSOR --> INIT_LISTS
    INIT_LISTS --> CHK_ROW
    CHK_ROW -->|Yes| POP_NOT_NULL
    CHK_ROW -->|No| CLOSE_DB
    POP_NOT_NULL -->|Yes| BUILD_WK_MAP_P
    POP_NOT_NULL -->|No| WEB_NOT_NULL
    BUILD_WK_MAP_P --> CHK_KEY_POP
    CHK_KEY_POP -->|Yes| ADD_POP
    CHK_KEY_POP -->|No| WEB_NOT_NULL
    ADD_POP --> WEB_NOT_NULL
    WEB_NOT_NULL -->|Yes| BUILD_WK_MAP_W
    WEB_NOT_NULL -->|No| NEXT_ROW
    BUILD_WK_MAP_W --> CHK_KEY_WEB
    CHK_KEY_WEB -->|Yes| ADD_WEB
    CHK_KEY_WEB -->|No| NEXT_ROW
    ADD_WEB --> NEXT_ROW
    NEXT_ROW --> CHK_ROW
    CLOSE_DB --> REINIT_DB
    REINIT_DB --> FINAL_END
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key_op_svc_kei_no` | `ArrayList<String>` | List of Option Service Contract Line Item numbers — serves as the WHERE-clause filter for the SQL query against `KK_T_OPSVKEI_ISP`. Each string identifies a specific Option ISP service contract line item whose POP ID and WEB ID data should be extracted. If the list is empty, the method returns immediately with no processing (early-exit optimization). |
| 2 | `shijishoInfList` | `ArrayList<HashMap<String, String>>` | The target instruction sheet (指示書, shijisho) registration info list. This is an output parameter — the method appends deduplicated HashMap entries to this list. Each HashMap contains 14 structured parameters (`PARAMETER_1` through `PARAMETER_14`) along with `TRN_CD`, `TRGT_TABLE_ID`, and `TRAN_TRGT_SYSID` fields that describe the POP ID or WEB ID metadata for downstream instruction sheet registration. |

**Instance fields / external state read:**
- `this.opeDate` — The operation date used as a bind parameter in the SQL execution (line ~8393).
- `db_KK_T_OPSVKEI_ISP` — The database access interface for `KK_T_OPSVKEI_ISP` table; provides SQL retrieval, parameterized execution, and cursor-based iteration.
- `commonItem.getBatchUserId()` — The batch user ID injected into `PARAMETER_10` and `PARAMETER_13` for audit trail purposes.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `db_KK_T_OPSVKEI_ISP.getSql(KK_T_OPSVKEI_ISP_KK_SELECT_025)` | JBSbatKKDelSavePrdKikData | KK_T_OPSVKEI_ISP | Retrieves the SQL text for SELECT_025 query from the SQL map — prepares the base SELECT statement for Option ISP data. |
| - | `setInParam(tgSql, key_op_svc_kei_no)` | JBSbatKKDelSavePrdKikData | - | Builds the IN-clause SQL fragment from the list of Option service contract line item numbers for parameterized query substitution. |
| - | `db_KK_T_OPSVKEI_ISP.setSqlMap(KK_T_OPSVKEI_ISP_KK_SELECT_025, modifiedSql)` | JBSbatKKDelSavePrdKikData | - | Temporarily replaces the SQL with the parameterized version containing the IN clause. |
| R | `executeKK_T_OPSVKEI_ISP_KK_SELECT_025(param)` | JBSbatKKDelSavePrdKikData | KK_T_OPSVKEI_ISP | Executes the parameterized SELECT query to populate the result cursor. Uses `opeDate` as the bind parameter. |
| - | `db_KK_T_OPSVKEI_ISP.setSqlMap(KK_T_OPSVKEI_ISP_KK_SELECT_025, tgSql)` | JBSbatKKDelSavePrdKikData | - | Restores the original (unmodified) SQL template in the SQL map for subsequent reuse. |
| R | `db_KK_T_OPSVKEI_ISP.selectNext()` | JBSbatKKDelSavePrdKikData | KK_T_OPSVKEI_ISP | Fetches the next row from the result cursor during iteration (cursor-based row processing). |
| R | `dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.POP_ID)` | JBSbatKKDelSavePrdKikData | KK_T_OPSVKEI_ISP | Reads the POP ID (Point of Presence ID) field from the current cursor row. |
| R | `dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.WEB_ID)` | JBSbatKKDelSavePrdKikData | KK_T_OPSVKEI_ISP | Reads the WEB ID (web authentication ID) field from the current cursor row. |
| R | `dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SYSID)` | JBSbatKKDelSavePrdKikData | KK_T_OP_SVC_KEI (joined) | Reads the system ID from the service contract table (likely joined in the SELECT query). |
| R | `dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_KEI_NO)` | JBSbatKKDelSavePrdKikData | KK_T_OP_SVC_KEI (joined) | Reads the service contract line item number for `PARAMETER_1`. |
| R | `dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SHOSA_YMD)` | JBSbatKKDelSavePrdKikData | KK_T_OP_SVC_KEI (joined) | Reads the review date for `PARAMETER_5`. |
| R | `dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD)` | JBSbatKKDelSavePrdKikData | KK_T_OP_SVC_KEI (joined) | Reads the service end date for `PARAMETER_6`. |
| R | `dbMap.getString(JBSbatKK_T_OP_SVC_KEI.MK_FLG)` | JBSbatKKDelSavePrdKikData | KK_T_OP_SVC_KEI (joined) | Reads the mark flag for `PARAMETER_8`. |
| R | `dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.TSYRN_SVKEI_CD_SEQ)` | JBSbatKKDelSavePrdKikData | KK_T_OPSVKEI_ISP | Reads the other-system-linked service contract code sequence number for `PARAMETER_3`. |
| R | `dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD)` | JBSbatKKDelSavePrdKikData | KK_T_OPSVKEI_ISP | Reads the mail address for `PARAMETER_7` (POP_ID branch only). |
| R | `JCCBatCommon.getSysDateTimeStamp()` / `JKKBatCommon.getSysDateTimeStamp()` | JCCBatCommon / JKKBatCommon | - | Retrieves the system date-time stamp for `PARAMETER_9` and `PARAMETER_12` (audit fields). |
| - | `commonItem.getBatchUserId()` | commonItem | - | Retrieves the current batch user ID for `PARAMETER_10` and `PARAMETER_13` (audit fields). |
| - | `JBSbatKKDelSavePrdKikData.close()` | JBSbatKKDelSavePrdKikData | - | Closes the database cursor to free resources and prevent exceeding the maximum open cursor limit. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: JBSbatKKDelSavePrdKikData | `JBSbatKKDelSavePrdKikData.addShijishoInf()` → `getShijishoInfOp()` | `executeKK_T_OPSVKEI_ISP_KK_SELECT_025 [R] KK_T_OPSVKEI_ISP` |

**Notes:**
- `addShijishoInf()` is the direct caller within the same class (`JBSbatKKDelSavePrdKikData`).
- `addShijishoInf()` is invoked at line ~3453, which itself is called during a larger batch deletion/save processing flow for Option ISP product contracts.
- No screen/batch entry points (e.g., KKSVxxxx) were found within 8 hops — this method is purely a batch-side utility.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(key_op_svc_kei_no.size() == 0)` (L8377)

> Early-exit: if no Option service contract line items are provided, return immediately with no processing.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return;` // 抽出対象なしの場合、処理終了 — "If no extraction target, end processing" |

---

**Block 2** — [EXEC] SQL preparation and execution (L8383–8394)

> Retrieves the base SQL template, substitutes the IN clause with the provided key list, executes the query, then restores the original SQL template.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tgSql = db_KK_T_OPSVKEI_ISP.getSql(KK_T_OPSVKEI_ISP_KK_SELECT_025)` // 実行SQL取得 — "Retrieve execution SQL" |
| 2 | CALL | `setInParam(tgSql, key_op_svc_kei_no)` // IN句を補正 — "Correct the IN clause" |
| 3 | SET | `db_KK_T_OPSVKEI_ISP.setSqlMap(KK_T_OPSVKEI_ISP_KK_SELECT_025, modifiedSql)` // 実行SQLのIN句を補正 — "Correct IN clause of execution SQL" |
| 4 | SET | `param = new Object[]{this.opeDate}` // Bind parameter array with operation date |
| 5 | CALL | `executeKK_T_OPSVKEI_ISP_KK_SELECT_025(param)` // SQL実行 — "Execute SQL" |
| 6 | SET | `db_KK_T_OPSVKEI_ISP.setSqlMap(KK_T_OPSVKEI_ISP_KK_SELECT_025, tgSql)` // 次のためにSQLを元に返す — "Return SQL to original for next processing" |

---

**Block 3** — [EXEC] Open cursor (L8396)

> Opens a cursor iterator over the SELECT result set for row-by-row processing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `dbMap = db_KK_T_OPSVKEI_ISP.selectNext()` // 削除対象データのキーを格納 — "Store keys of deletion-target data" |

---

**Block 4** — [EXEC] Deduplication list initialization (L8398–8402)

> Initializes two separate tracking lists (POP and WEB) to prevent duplicate key output — per IT2-2016-0000001 change request.

| # | Type | Code |
|---|------|------|
| 1 | SET | `chkKeyList_pop = new ArrayList<String>()` // 同一キー複数出力防止用（POPID）— "Prevent duplicate key output (POP ID)" [IT2-2016-0000001] |
| 2 | SET | `chkKeyList_web = new ArrayList<String>()` // 同一キー複数出力防止用（WEBID）— "Prevent duplicate key output (WEB ID)" [IT2-2016-0000001] |

---

**Block 5** — [WHILE] `(dbMap != null)` (L8405)

> Iterates through each row of the SELECT result set. For each row, checks and processes both POP ID and WEB ID fields independently.

| # | Type | Code |
|---|------|------|
| 1 | SET | `dbMap = db_KK_T_OPSVKEI_ISP.selectNext()` // Advance cursor (at end of loop body) |

---

**Block 5.1** — [IF] `(!JKKStringUtil.isNullBlank(dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.POP_ID)))` (L8408)

> Extracts POP ID information from the current row. If POP_ID is present (not null/blank), assembles a 14-parameter metadata map describing the POP ID entity for instruction sheet registration.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkMap = new HashMap<String, String>()` |
| 2 | SET | `wkMap.put("TRN_CD", "N01")` // 取引コード = Transaction code |
| 3 | SET | `wkMap.put("TRGT_TABLE_ID", "TNM00050_D")` // 対象テーブルID = Target table ID |
| 4 | SET | `wkMap.put("TRAN_TRGT_SYSID", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SYSID))` // 対象システムID = Target system ID |
| 5 | SET | `wkMap.put("PARAMETER_YK_CNT", "14")` // パラメータ数 = Number of parameters (always 14) |
| 6 | SET | `wkMap.put("PARAMETER_1", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_KEI_NO))` // サービス契約番号 = Service contract number |
| 7 | SET | `wkMap.put("PARAMETER_2", "02")` // Type flag: 02 = POP ID [POP_ID_TYPE_FLAG] |
| 8 | SET | `wkMap.put("PARAMETER_3", dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.TSYRN_SVKEI_CD_SEQ))` // 他システム連係サービス契約コード通番 = Other system-linked service contract code sequence number |
| 9 | SET | `wkMap.put("PARAMETER_4", dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.POP_ID))` // ポイント・オブ・プレゼンスID = Point of Presence Identifier (actual POP ID value) |
| 10 | SET | `wkMap.put("PARAMETER_5", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SHOSA_YMD))` // 照会年月 = Review month/date |
| 11 | SET | `wkMap.put("PARAMETER_6", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD))` // サービス終了年月日 = Service end date |
| 12 | SET | `wkMap.put("PARAMETER_7", dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD))` // メールアドレス = Mail address |
| 13 | SET | `wkMap.put("PARAMETER_8", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.MK_FLG))` // マークフラグ = Mark flag |
| 14 | SET | `wkMap.put("PARAMETER_9", JKKBatCommon.getSysDateTimeStamp())` // 処理日時 = Processing date-time |
| 15 | SET | `wkMap.put("PARAMETER_10", commonItem.getBatchUserId())` // 処理ユーザID = Processing user ID |
| 16 | SET | `wkMap.put("PARAMETER_11", "")` // Empty placeholder |
| 17 | SET | `wkMap.put("PARAMETER_12", JKKBatCommon.getSysDateTimeStamp())` // 変更日時 = Update date-time |
| 18 | SET | `wkMap.put("PARAMETER_13", commonItem.getBatchUserId())` // 変更ユーザID = Update user ID |
| 19 | SET | `wkMap.put("PARAMETER_14", "")` // Empty placeholder |
| 20 | SET | `wkChkKey = wkMap.get("PARAMETER_1") + wkMap.get("PARAMETER_2") + wkMap.get("PARAMETER_3")` // Composite dedup key: SVC_KEI_NO + "02" + TSYRN_SVKEI_CD_SEQ |

---

**Block 5.1.1** — [IF] `(!chkKeyList_pop.contains(wkChkKey))` (L8424)

> Deduplication check: if this composite key (service contract number + POP type flag + sequence number) has not been seen before, add it to the tracking list and the output list.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `chkKeyList_pop.add(wkChkKey)` // 同一キー確認 — "Confirm unique key" [IT2-2016-0000001] |
| 2 | EXEC | `shijishoInfList.add(wkMap)` // 指示書登録リスト追加 — "Add to instruction sheet registration list" [IT2-2016-0000001] |

> **Previously (before IT2-2016-0000001):** `shijishoInfList.add(wkMap)` was called unconditionally, which could produce duplicate entries when the same key appeared multiple times. The change request added the dedup tracking logic.

---

**Block 5.2** — [IF] `(!JKKStringUtil.isNullBlank(dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.WEB_ID)))` (L8433)

> Extracts WEB ID information from the current row. If WEB_ID is present (not null/blank), assembles a 14-parameter metadata map describing the WEB ID entity. The structure mirrors the POP_ID block but with different fixed values: `PARAMETER_2 = "04"` (WEB_ID type flag), `PARAMETER_3 = "1"`, and `PARAMETER_4 = WEB_ID` (instead of POP_ID).

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkMap = new HashMap<String, String>()` |
| 2 | SET | `wkMap.put("TRN_CD", "N01")` |
| 3 | SET | `wkMap.put("TRGT_TABLE_ID", "TNM00050_D")` |
| 4 | SET | `wkMap.put("TRAN_TRGT_SYSID", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SYSID))` |
| 5 | SET | `wkMap.put("PARAMETER_YK_CNT", "14")` |
| 6 | SET | `wkMap.put("PARAMETER_1", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_KEI_NO))` |
| 7 | SET | `wkMap.put("PARAMETER_2", "04")` // Type flag: 04 = WEB ID [WEB_ID_TYPE_FLAG] |
| 8 | SET | `wkMap.put("PARAMETER_3", "1")` // Fixed value for WEB ID branch |
| 9 | SET | `wkMap.put("PARAMETER_4", dbMap.getString(JBSbatKK_T_OPSVKEI_ISP.WEB_ID))` // ウェブID = Web ID (actual WEB ID value) |
| 10 | SET | `wkMap.put("PARAMETER_5", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SHOSA_YMD))` |
| 11 | SET | `wkMap.put("PARAMETER_6", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_ENDYMD))` |
| 12 | SET | `wkMap.put("PARAMETER_7", "")` // Empty — no mail address needed for WEB ID |
| 13 | SET | `wkMap.put("PARAMETER_8", dbMap.getString(JBSbatKK_T_OP_SVC_KEI.MK_FLG))` |
| 14 | SET | `wkMap.put("PARAMETER_9", JKKBatCommon.getSysDateTimeStamp())` |
| 15 | SET | `wkMap.put("PARAMETER_10", commonItem.getBatchUserId())` |
| 16 | SET | `wkMap.put("PARAMETER_11", "")` |
| 17 | SET | `wkMap.put("PARAMETER_12", JKKBatCommon.getSysDateTimeStamp())` |
| 18 | SET | `wkMap.put("PARAMETER_13", commonItem.getBatchUserId())` |
| 19 | SET | `wkMap.put("PARAMETER_14", "")` |
| 20 | SET | `wkChkKey = wkMap.get("PARAMETER_1") + wkMap.get("PARAMETER_2") + wkMap.get("PARAMETER_3")` // Composite dedup key: SVC_KEI_NO + "04" + "1" |

---

**Block 5.2.1** — [IF] `(!chkKeyList_web.contains(wkChkKey))` (L8449)

> Deduplication check for WEB ID entries. If this composite key has not been seen before, add it to the tracking list and the output list.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `chkKeyList_web.add(wkChkKey)` // 同一キー確認 — "Confirm unique key" [IT2-2016-0000001] |
| 2 | EXEC | `shijishoInfList.add(wkMap)` // 指示書登録リスト追加 — "Add to instruction sheet registration list" [IT2-2016-0000001] |

---

**Block 6** — [EXEC] Cursor cleanup (L8459–8460)

> Closes the database cursor and reinitializes the SQL access object to prevent exceeding the maximum open cursor count — a resource management pattern critical for batch processes that iterate over large data sets.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `db_KK_T_OPSVKEI_ISP.close()` // 最大オープンカーソル数超対策 — "Countermeasure for exceeding maximum open cursor count" |
| 2 | SET | `db_KK_T_OPSVKEI_ISP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OPSVKEI_ISP)` // Reinitialize with table name "KK_T_OPSVKEI_ISP" [-> D_TBL_NAME_KK_T_OPSVKEI_ISP = "KK_T_OPSVKEI_ISP"] |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `POP_ID` | Field | Point of Presence Identifier — the network access point ID assigned to an Option ISP service contract for broadband internet connectivity |
| `WEB_ID` | Field | Web authentication ID — user login credentials for the web-based self-service portal associated with the Option ISP contract |
| `key_op_svc_kei_no` | Parameter | Option service contract line item number list — the primary filter key for identifying which Option ISP contracts to extract POP/WEB ID data for |
| `shijishoInfList` | Parameter | Instruction sheet registration info list — the output container holding structured metadata maps for each POP/WEB ID record to be registered |
| `shijisho` (指示書) | Japanese term | Instruction sheet — a formal work order or registration document generated by the batch system for downstream processing |
| `TRN_CD` | Field | Transaction code — a type identifier for the transaction; "N01" indicates a registration-type transaction |
| `TRGT_TABLE_ID` | Field | Target table ID — identifies the target database table for the data; "TNM00050_D" refers to the instruction sheet detail table |
| `PARAMETER_YK_CNT` | Field | Parameter count — the total number of parameter fields in the map (fixed at 14) |
| `PARAMETER_2` | Field | Type flag — distinguishes record type: "02" = POP ID, "04" = WEB ID |
| `TSYRN_SVKEI_CD_SEQ` | Field | Other-system-linked service contract code sequence number — a sequence number linking this contract to external system integrations |
| `SVC_KEI_NO` | Field | Service contract line item number — the unique identifier for a service contract line item |
| `SHOSA_YMD` | Field | Review month/date — the date when the service contract was reviewed |
| `SVC_ENDYMD` | Field | Service end year/month/day — the date when the service contract ends |
| `MLAD` | Field | Mail address — the email address associated with the Option ISP contract |
| `MK_FLG` | Field | Mark flag — a validity/status flag indicating whether the record is marked as active |
| `SYSID` | Field | System ID — the identifier for the system that manages this service contract |
| `opeDate` | Field | Operation date — the batch processing date, used as a bind parameter in SQL queries |
| `KK_T_OPSVKEI_ISP` | Table | Option ISP Service Contract Line Items table — stores detailed configuration and credential data for Option ISP broadband internet service contracts |
| `KK_T_OP_SVC_KEI` | Table | Option Service Contract table — stores the parent service contract metadata (SYSID, service start/end dates, review dates) |
| `KK_T_OPSVKEI_ISP_KK_SELECT_025` | SQL Key | SELECT query key — the SQL template identifier for the query that retrieves Option ISP contract line item data |
| `JBSbatKKDelSavePrdKikData` | Class | Option Batch Delete/Save Product Contract Information Data — a batch service class handling deletion and preservation of Option product contract data |
| `getShijishoInfOp` | Method | Get Shijisho (Instruction Sheet) Information for Option — fetches POP ID and WEB ID data for instruction sheet registration |
| IT2-2016-0000001 | Change request | A change request that added deduplication logic (`chkKeyList_pop`/`chkKeyList_web`) to prevent duplicate key output when the same key appears multiple times in the result set |