---

# Business Logic — JBSbatKKKojiKnrnInfCheck.setPrgIfAdd() [275 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.business.service.JBSbatKKKojiKnrnInfCheck` |
| Layer | Batch (Service Component within `koptBatch`) |
| Module | `service` (Package: `eo.business.service`) |

## 1. Role

### JBSbatKKKojiKnrnInfCheck.setPrgIfAdd()

This method serves as the central **progress-state classification and registration entry point** within the work-information batch processing pipeline (`JBSbatKKKojiKnrnInfCheck`). It receives raw record data (`String[] data`) parsed from external input files — files that carry various work event types such as design equipment reports, work completion reports, work schedule forecasts, and provisional cancellation notices. Based on the **record division** (`recDiv`) code embedded at the end of each record, the method dispatches into one of eight branches, each of which extracts the relevant fields, resolves a **progress status code** (`prgStat`) that reflects the current stage of a construction project line, and assembles the output record for the progress registration file. It implements the **routing/dispatch pattern**, delegating to `getKojiUkOptyIdoDiv()` for a KU_T_KOJIAK table lookup (construction receipt contract timing) and to `editPrgTkjk2()` for special-note-2 text formatting. The method enriches the output with system date/time and, for provisional cancellation records (E0/F0), captures additional progress registration fields (`prgAddIdoDiv`, `prgAddPrgStat`, `prgAddPrgYmdDtm`) into instance variables for downstream use by callers. Ultimately, it appends a 6-element output tuple to `prgOutData`, which is later written to a progress registration file. This method is a **shared utility** called by nine output-producing methods within the same class, serving as the single entry point where all work-information record types converge for progress-state classification.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setPrgIfAdd(data)"])
    CHECK_LENGTH["Check data.length > 0"]
    INIT_VARS["Initialize local variables: prgAddIdoDiv, prgAddPrgStat, prgAddPrgYmdDtm, recDiv, prgStat, kojiakNo"]
    GET_SYS_DATE["Get system datetime via JBSbatDateUtil.getSystemDateTimeStamp()"]
    COMPOSE_PRG_YMD["Compose prgYmdDtm from super.opeDate + datetime"]
    EXTRACT_SVC_NO["Extract svc_kei_no = data[0]"]
    CHECK_REC_DIV["Check recDiv value"]
    REC_20["REC_DOV_20 = 20 (Design equipment info)"]
    EXTRACT_DSGN_20["Extract kojiakNo=data[6], dsgn_result_cd=data[7]"]
    CHECK_DSGN_CD{"Check dsgn_result_cd"}
    DSGN_KIJUNNAI["DSGN_EQUIP_CD_KIJUNNAI = 1 (Within standard)"]
    SET_PRG_OK["Set prgStat = TAKNI_DSGN_OK = 9550 (Main/Home design OK)"]
    SET_PRG_NG["Set prgStat = TAKNI_DSGN_NG = 955E (Main/Home design NG)"]
    REC_40["REC_DOV_40 = 40 (Work completion info)"]
    EXTRACT_40["Extract kojiakNo=data[6], opmskjakRsltCd=data[7]"]
    CHECK_OPMS{"Check opmskjakRsltCd"}
    OPMS_OK["OPMSKJAK_RSLT_CD_OK = 1 (OK)"]
    SET_KOJI_FIN["Set prgStat = KOJI_FIN = 9700 (Work completed)"]
    SET_KOJI_NG["Set prgStat = KOJI_NG = 957E (Work NG)"]
    REC_90["REC_DOV_90 = 90 (Work cancellation info)"]
    SET_KOJI_CL["Set prgStat = KOJI_CL = 9704 (Work cancelled)"]
    REC_B0["REC_DOV_B0 = B0 (Home work info)"]
    SET_TAKNI_KOJI["Set prgStat = TAKNI_KOJI_INF_TRKM = 9660 (Home work info intake)"]
    REC_60_61["REC_DOV_60 = 60 or REC_DOV_61 = 61 (Work schedule: Net/TV)"]
    SET_KOJI_RSV["Set prgStat = KOJI_RSV_INF_TRKM = 9610 (Work schedule intake)"]
    REC_E0["REC_DOV_E0 = E0 (Provisional cancel receipt)"]
    SET_KR_CNCL_UK["Set prgStat = KOJI_KR_CNCL_UK = 9706 (Provisional cancellation receipt)"]
    REC_F0["REC_DOV_F0 = F0 (Provisional cancel acceptance cancel)"]
    SET_KR_CNCL_CL_UK["Set prgStat = KOJI_KR_CNCL_CL_UK = 9707 (Provisional cancel acceptance cancel)"]
    LOG_KOJI["Log kojiakNo and prgStat"]
    CALL_GET_DIV["Call getKojiUkOptyIdoDiv(kojiakNo) - KU_T_KOJIAK lookup"]
    LOG_DIV["Log kojiUkOptyIdoDiv and svc_kei_no"]
    CHECK_PRG_ADD["Check if recDiv is E0 or F0"]
    SET_PRG_ADD_VARS["Set prgAddIdoDiv, prgAddPrgStat, prgAddPrgYmdDtm"]
    CALL_EDIT_TKJK["Call editPrgTkjk2(recDiv, data)"]
    ADD_TO_LIST["Add output to prgOutData list"]
    END_NODE(["Return / Next"])

    START --> CHECK_LENGTH
    CHECK_LENGTH -->|Yes| INIT_VARS
    INIT_VARS --> GET_SYS_DATE
    GET_SYS_DATE --> COMPOSE_PRG_YMD
    COMPOSE_PRG_YMD --> EXTRACT_SVC_NO
    EXTRACT_SVC_NO --> CHECK_REC_DIV
    CHECK_REC_DIV -->|REC_DOV_20 = 20| REC_20
    CHECK_REC_DIV -->|REC_DOV_40 = 40| REC_40
    CHECK_REC_DIV -->|REC_DOV_90 = 90| REC_90
    CHECK_REC_DIV -->|REC_DOV_B0 = B0| REC_B0
    CHECK_REC_DIV -->|REC_DOV_60 = 60 or REC_DOV_61 = 61| REC_60_61
    CHECK_REC_DIV -->|REC_DOV_E0 = E0| REC_E0
    CHECK_REC_DIV -->|REC_DOV_F0 = F0| REC_F0
    REC_20 --> EXTRACT_DSGN_20
    EXTRACT_DSGN_20 --> CHECK_DSGN_CD
    CHECK_DSGN_CD -->|DSGN_EQUIP_CD_KIJUNNAI = 1| DSGN_KIJUNNAI
    DSGN_KIJUNNAI --> SET_PRG_OK
    CHECK_DSGN_CD -->|else| SET_PRG_NG
    REC_40 --> EXTRACT_40
    EXTRACT_40 --> CHECK_OPMS
    CHECK_OPMS -->|OPMSKJAK_RSLT_CD_OK = 1| OPMS_OK
    OPMS_OK --> SET_KOJI_FIN
    CHECK_OPMS -->|else| SET_KOJI_NG
    REC_90 --> SET_KOJI_CL
    REC_B0 --> SET_TAKNI_KOJI
    REC_60_61 --> SET_KOJI_RSV
    REC_E0 --> SET_KR_CNCL_UK
    REC_F0 --> SET_KR_CNCL_CL_UK
    SET_PRG_OK --> LOG_KOJI
    SET_PRG_NG --> LOG_KOJI
    SET_KOJI_FIN --> LOG_KOJI
    SET_KOJI_NG --> LOG_KOJI
    SET_KOJI_CL --> LOG_KOJI
    SET_TAKNI_KOJI --> LOG_KOJI
    SET_KOJI_RSV --> LOG_KOJI
    SET_KR_CNCL_UK --> LOG_KOJI
    SET_KR_CNCL_CL_UK --> LOG_KOJI
    LOG_KOJI --> CALL_GET_DIV
    CALL_GET_DIV --> LOG_DIV
    LOG_DIV --> CHECK_PRG_ADD
    CHECK_PRG_ADD -->|E0 or F0| SET_PRG_ADD_VARS
    CHECK_PRG_ADD -->|else| CALL_EDIT_TKJK
    SET_PRG_ADD_VARS --> CALL_EDIT_TKJK
    CALL_EDIT_TKJK --> ADD_TO_LIST
    ADD_TO_LIST --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `data` | `String[]` | A CSV-record-equivalent array representing a single parsed line from an external work-information input file. The first element (`data[0]`) is the **Service Contract Number** (`svc_kei_no`), `data[5]` is the **Construction Project Category Code** (`kojiak_sbt_cd`), `data[6]` is the **Construction Project Number** (`kojiakNo`), and the last element determines the **Record Division** (`recDiv`) which branches the processing. Index positions 7, 8, 9, 10, etc., hold record-type-specific fields (e.g., design result code, OPMS work completion result code). |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `prgAddIdoDiv` | `String` | Progress registration division (timing) — set for E0/F0 provisional cancellation records |
| `prgAddPrgStat` | `String` | Progress registration progress status — set for E0/F0 provisional cancellation records |
| `prgAddPrgYmdDtm` | `String` | Progress registration year/month/day/hour/minute/second — set for E0/F0 provisional cancellation records |
| `prgOutData` | `List<String[]>` | Progress registration output target data list — records are appended here for downstream file writing |
| `super.opeDate` | `String` (inherited) | Batch operation date used to compose the progress timestamp |
| `super.logPrint` | `JACBatLogPrint` (inherited) | Debug logging utility for recording intermediate values |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JBSbatInterface.getSystemDateTimeStamp` | JBSbatInterface | - | Calls `getSystemDateTimeStamp` in `JBSbatDateUtil` to retrieve current system date/time |
| R | `JBSbatKKKojiKnrnInfCheck.getKojiUkOptyIdoDiv` | JBSbatKKKojiKnrnInfCheck | `KU_T_KOJIAK` | Calls `getKojiUkOptyIdoDiv(kojiakNo)` which performs a PK SELECT on `KU_T_KOJIAK` table via `executeKU_T_KOJIAK_PKSELECT()` to retrieve the `KOJI_UK_OPTNTY_IDO_DIV` (construction receipt contract division/timing) |
| U | `JBSbatKKKojiKnrnInfCheck.editPrgTkjk2` | JBSbatKKKojiKnrnInfCheck | `ZM_M_CD_NM_KANRI` | Calls `editPrgTkjk2(recDiv, data)` which performs a code name lookup via `getCodeName()` on `ZM_M_CD_NM_KANRI` to format the special-note-2 text; the method then appends to `prgOutData` |
| - | `JACBatCommon.printDebugLog` | JACBatCommon | - | Calls `printDebugLog` for intermediate logging |
| - | `JACbatDebugLogUtil.printDebugLog` | JACbatDebugLogUtil | - | Calls `printDebugLog` for intermediate logging |
| - | `JCKLcsRenkeiUtil.printDebugLog` | JCKLcsRenkeiUtil | - | Calls `printDebugLog` for intermediate logging |
| - | `JKKHttpCommunicator.printDebugLog` | JKKHttpCommunicator | - | Calls `printDebugLog` for intermediate logging |
| - | `JBSbatKKCashPostAddMail.printDebugLog` | JBSbatKKCashPostAddMail | - | Calls `printDebugLog` for intermediate logging |
| - | `JKKAdEditCC.substring` | JKKAdEditCC | - | Calls utility method for string truncation |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls utility method for string truncation |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls utility method for string truncation |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls utility method for string truncation |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 9 methods.
Terminal operations from this method: `editPrgTkjk2` [U], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `getKojiUkOptyIdoDiv` [R], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-]  # NOSONAR

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: `JBSbatKKKojiKnrnInfCheck.dsgnEquipInfOutPut()` | `execute()` -> `dsgnEquipInfOutPut()` -> `setPrgIfAdd()` | `getKojiUkOptyIdoDiv [R] KU_T_KOJIAK`, `editPrgTkjk2 [U] ZM_M_CD_NM_KANRI` |
| 2 | Batch: `JBSbatKKKojiKnrnInfCheck.kojiClInfOutPut()` | `execute()` -> `kojiClInfOutPut()` -> `setPrgIfAdd()` | `getKojiUkOptyIdoDiv [R] KU_T_KOJIAK`, `editPrgTkjk2 [U] ZM_M_CD_NM_KANRI` |
| 3 | Batch: `JBSbatKKKojiKnrnInfCheck.kojiFinInfOutPut()` | `execute()` -> `kojiFinInfOutPut()` -> `setPrgIfAdd()` | `getKojiUkOptyIdoDiv [R] KU_T_KOJIAK`, `editPrgTkjk2 [U] ZM_M_CD_NM_KANRI` |
| 4 | Batch: `JBSbatKKKojiKnrnInfCheck.kojiRsvInfNetOutPut()` | `execute()` -> `kojiRsvInfNetOutPut()` -> `setPrgIfAdd()` | `getKojiUkOptyIdoDiv [R] KU_T_KOJIAK`, `editPrgTkjk2 [U] ZM_M_CD_NM_KANRI` |
| 5 | Batch: `JBSbatKKKojiKnrnInfCheck.kojiRsvInfTVOutPut()` | `execute()` -> `kojiRsvInfTVOutPut()` -> `setPrgIfAdd()` | `getKojiUkOptyIdoDiv [R] KU_T_KOJIAK`, `editPrgTkjk2 [U] ZM_M_CD_NM_KANRI` |
| 6 | Batch: `JBSbatKKKojiKnrnInfCheck.krCnclClInfOutPut()` | `execute()` -> `krCnclClInfOutPut()` -> `setPrgIfAdd()` | `getKojiUkOptyIdoDiv [R] KU_T_KOJIAK`, `editPrgTkjk2 [U] ZM_M_CD_NM_KANRI` |
| 7 | Batch: `JBSbatKKKojiKnrnInfCheck.krCnclUkInfOutPut()` | `execute()` -> `krCnclUkInfOutPut()` -> `setPrgIfAdd()` | `getKojiUkOptyIdoDiv [R] KU_T_KOJIAK`, `editPrgTkjk2 [U] ZM_M_CD_NM_KANRI` |
| 8 | Batch: `JBSbatKKKojiKnrnInfCheck.takniKojiInfOutPut()` | `execute()` -> `takniKojiInfOutPut()` -> `setPrgIfAdd()` | `getKojiUkOptyIdoDiv [R] KU_T_KOJIAK`, `editPrgTkjk2 [U] ZM_M_CD_NM_KANRI` |
| 9 | Batch: `JBSbatKKKojiKnrnInfCheck` (root) | `execute()` (main entry point) -> (calls 8 output methods above) -> `setPrgIfAdd()` | — |

## 6. Per-Branch Detail Blocks

**Block 1** — IF `(data.length > 0)` (L3842)
> Extract the record division from the last field of the data array. If the data array is empty, log an error and return early.

| # | Type | Code |
|---|------|------|
| 1 | SET | `recDiv = data[lastIndex]` // Record division extracted from last field [-> `"20"`, `"40"`, `"90"`, `"B0"`, `"60"`, `"61"`, `"E0"`, `"F0"`] |
| 2 | EXEC | `super.logPrint.printDebugLog("lastIndex:" + lastIndex)` // Log last index |
| 3 | EXEC | `super.logPrint.printDebugLog("Record division recDiv:" + recDiv)` // Log recDiv value |

**Block 2** — ELSE (L3852)
> Early exit when data array is empty.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("Record division acquisition abnormal? Progress registration halted")` // Log error message |
| 2 | RETURN | `return;` // Early return — no further processing |

**Block 3** — Processing initialization (L3857–L3864)
> Acquire system datetime and compose the progress timestamp from batch operation date + time portion.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sysrtem_date = JBSbatDateUtil.getSystemDateTimeStamp()` // Get system date/time |
| 2 | SET | `prgYmdDtm = super.opeDate + sysrtem_date.substring(8)` // Progress year/month/day/hour/minute/second — batch operation date + hhmmssSSS portion |
| 3 | SET | `svc_kei_no = data[0]` // Service contract number |

**Block 4** — IF-ELSE-IF chain (L3867–L4032) — Branch 1: `REC_DOV_20` (Design equipment info)
> Handle design equipment records. Extract the construction project number and design result code, then determine whether the design is within standard (OK) or outside standard (NG), mapping to progress status 9550 or 955E.

| # | Type | Code |
|---|------|------|
| 1 | IF | `REC_DOV_20.equals(recDiv)` [-> `"20" = Design equipment info`] (L3867) |
| 2 | SET | `kojiakNo = data[6]` // Construction project number |
| 3 | SET | `dsgn_result_cd = data[7]` // Design result code |
| 4 | IF | `DSGN_EQUIP_CD_KIJUNNAI.equals(dsgn_result_cd)` [-> `"1" = Within standard`] (L3874) |
| 5 | SET | `prgStat = TAKNI_DSGN_OK` [-> `"9550" = Main/Home design OK`] |
| 6 | ELSE | (L3879) |
| 7 | SET | `prgStat = TAKNI_DSGN_NG` [-> `"955E" = Main/Home design NG`] |

**Block 5** — ELSE-IF (L3884) — Branch 2: `REC_DOV_40` (Work completion info)
> Handle work completion records. Extract OPMS work completion result code and map to progress status 9700 (OK) or 957E (NG).

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `REC_DOV_40.equals(recDiv)` [-> `"40" = Work completion info`] (L3884) |
| 2 | SET | `kojiakNo = data[6]` // Construction project number |
| 3 | SET | `opmskjakRsltCd = data[7]` // OPMS work completion result code |
| 4 | IF | `OPMSKJAK_RSLT_CD_OK.equals(opmskjakRsltCd)` [-> `"1" = OK`] (L3893) |
| 5 | SET | `prgStat = KOJI_FIN` [-> `"9700" = Work completed`] |
| 6 | ELSE | (L3898) |
| 7 | SET | `prgStat = KOJI_NG` [-> `"957E" = Work NG`] |

**Block 6** — ELSE-IF (L3904) — Branch 3: `REC_DOV_90` (Work cancellation info)
> Handle work cancellation records. Simply set progress status to 9704 (Work cancelled). No conditional branching beyond the recDiv check.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `REC_DOV_90.equals(recDiv)` [-> `"90" = Work cancellation info`] (L3904) |
| 2 | SET | `kojiakNo = data[6]` // Construction project number |
| 3 | SET | `prgStat = KOJI_CL` [-> `"9704" = Work cancelled`] |

**Block 7** — ELSE-IF (L3910) — Branch 4: `REC_DOV_B0` (Home work info)
> Handle home work info records. Set progress status to 9660 (Home work info intake). Previously used 9610 (Work schedule info) but was changed in v9.00.00.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `REC_DOV_B0.equals(recDiv)` [-> `"B0" = Home work info`] (L3910) |
| 2 | SET | `kojiakNo = data[6]` // Construction project number |
| 3 | SET | `prgStat = TAKNI_KOJI_INF_TRKM` [-> `"9660" = Home work info intake` (changed from 9610 in v9.00.00)] |

**Block 8** — ELSE-IF (L3919) — Branch 5: `REC_DOV_60` / `REC_DOV_61` (Work schedule info: Net/TV)
> Handle work schedule records (added in v9.00.00). Both net (60) and TV (61) schedule types map to progress status 9610 (Work schedule intake).

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `REC_DOV_60.equals(recDiv) || REC_DOV_61.equals(recDiv)` [-> `"60" = Work schedule (Net)`, `"61" = Work schedule (TV)`] (L3919) |
| 2 | SET | `kojiakNo = data[6]` // Construction project number |
| 3 | SET | `prgStat = KOJI_RSV_INF_TRKM` [-> `"9610" = Work schedule intake`] |

**Block 9** — ELSE-IF (L3930) — Branch 6: `REC_DOV_E0` (Provisional cancellation receipt)
> Handle provisional cancellation receipt records (added in ANK-3136). Set progress status to 9706 and capture progress registration variables.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `REC_DOV_E0.equals(recDiv)` [-> `"E0" = Work provisional cancellation receipt`] (L3930) |
| 2 | SET | `kojiakNo = data[6]` // Construction project number |
| 3 | SET | `prgStat = KOJI_KR_CNCL_UK` [-> `"9706" = Work provisional cancellation receipt`] |

**Block 10** — ELSE-IF (L3938) — Branch 7: `REC_DOV_F0` (Provisional cancel acceptance cancellation)
> Handle provisional cancellation acceptance cancellation records (added in ANK-3136). Set progress status to 9707.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `REC_DOV_F0.equals(recDiv)` [-> `"F0" = Work provisional cancellation acceptance cancellation`] (L3938) |
| 2 | SET | `kojiakNo = data[6]` // Construction project number |
| 3 | SET | `prgStat = KOJI_KR_CNCL_CL_UK` [-> `"9707" = Work provisional cancellation acceptance cancellation`] |

**Block 11** — Post-branch: Logging (L3946–L3952)
> Log the resolved construction project number, progress status, division timing, and service contract number.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("Construction project number--->" + kojiakNo)` |
| 2 | EXEC | `super.logPrint.printDebugLog("Progress status--->" + prgStat)` |

**Block 12** — Lookup: `getKojiUkOptyIdoDiv` (L3955)
> Query the KU_T_KOJIAK table to retrieve the construction receipt contract division (timing) for the given construction project number.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `kojiUkOptyIdoDiv = getKojiUkOptyIdoDiv(kojiakNo)` // PK SELECT on KU_T_KOJIAK table to get KOJI_UK_OPTNTY_IDO_DIV |

**Block 13** — Post-lookup logging (L3957–L3959)
> Log the division timing and service contract number for debugging.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("Division timing--->" + kojiUkOptyIdoDiv)` |
| 2 | EXEC | `super.logPrint.printDebugLog("Service contract number--->" + svc_kei_no)` |

**Block 14** — IF (L3963) — Provisional cancellation: progress registration variable capture
> For E0/F0 records (provisional cancellation), capture the division timing, progress status, and timestamp into instance variables (`prgAddIdoDiv`, `prgAddPrgStat`, `prgAddPrgYmdDtm`) for downstream use.

| # | Type | Code |
|---|------|------|
| 1 | IF | `REC_DOV_E0.equals(recDiv) || REC_DOV_F0.equals(recDiv)` (L3963) |
| 2 | SET | `prgAddIdoDiv = kojiUkOptyIdoDiv` // Division timing (progress registration info) |
| 3 | SET | `prgAddPrgStat = prgStat` // Progress status (progress registration info) |
| 4 | SET | `prgAddPrgYmdDtm = prgYmdDtm` // Timestamp (progress registration info) |

**Block 15** — Processing: `editPrgTkjk2` (L3998)
> Format the special-note-2 text by calling `editPrgTkjk2()`. This method looks up the construction project category code name and appends record-type-specific formatting (design dates for recDiv=20, work simultaneity flags for recDiv=B0, etc.).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `tkjk2 = editPrgTkjk2(recDiv, data)` // Special-note-2 editing processing |

**Block 16** — Final: output assembly (L4008–L4009)
> Append the processed record tuple to the progress registration output data list. The tuple contains: service contract number, construction project number, division timing, progress status, progress timestamp, and edited special-note-2 text.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `prgOutData.add(new String[]{svc_kei_no, kojiakNo, kojiUkOptyIdoDiv, prgStat, prgYmdDtm, tkjk2})` // Add to progress registration output |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `recDiv` | Field | Record division — a classification code embedded in each input file record that determines which work event type is being processed (design, completion, cancellation, schedule, etc.) |
| `svc_kei_no` | Field | Service contract number — the unique identifier for a telecommunications service contract in the NHK broadcast distribution system |
| `kojiakNo` | Field | Construction project number — a unique identifier for a construction/work project line that tracks physical installation and maintenance activities |
| `kojiUkOptyIdoDiv` | Field | Construction receipt contract division/timing — indicates the timing phase of the construction contract (retrieved from `KU_T_KOJIAK` table) |
| `prgStat` | Field | Progress status — a status code indicating the current stage of the construction project (e.g., 9550 = design OK, 9700 = work completed, 9704 = work cancelled) |
| `prgYmdDtm` | Field | Progress year/month/day/hour/minute/second timestamp — composite timestamp from batch operation date + system time |
| `prgAddIdoDiv` | Instance field | Progress registration division (timing) — set only for provisional cancellation records (E0/F0) to track timing of the progress registration |
| `prgAddPrgStat` | Instance field | Progress registration status — the progress status value captured for provisional cancellation records |
| `prgAddPrgYmdDtm` | Instance field | Progress registration timestamp — the full timestamp captured for provisional cancellation records |
| `tkjk2` | Field | Special-note-2 — a formatted text field containing contextual information about the record (construction project category, design result, dates, simultaneity flags) |
| `prgOutData` | Instance field | Progress registration output target data — a list of processed records to be written to the progress registration file |
| REC_DOV_20 | Constant | Record division code `"20"` — Design equipment info |
| REC_DOV_30 | Constant | Record division code `"30"` — Transmission equipment info |
| REC_DOV_40 | Constant | Record division code `"40"` — Work completion info |
| REC_DOV_60 | Constant | Record division code `"60"` — Work schedule info (Net) |
| REC_DOV_61 | Constant | Record division code `"61"` — Work schedule info (TV) |
| REC_DOV_90 | Constant | Record division code `"90"` — Work cancellation info |
| REC_DOV_B0 | Constant | Record division code `"B0"` — Home work info |
| REC_DOV_D0 | Constant | Record division code `"D0"` — Equipment info (Net) |
| REC_DOV_D1 | Constant | Record division code `"D1"` — Equipment info (TV) |
| REC_DOV_E0 | Constant | Record division code `"E0"` — Work provisional cancellation receipt |
| REC_DOV_F0 | Constant | Record division code `"F0"` — Work provisional cancellation acceptance cancellation |
| DSGN_EQUIP_CD_KIJUNNAI | Constant | Design result code `"1"` — Within standard (design passes standard specifications) |
| OPMSKJAK_RSLT_CD_OK | Constant | OPMS work completion result code `"1"` — OK (OPMS system confirms successful completion) |
| TAKNI_DSGN_OK | Constant | Progress status `"9550"` — Main/Home design OK (design review passed) |
| TAKNI_DSGN_NG | Constant | Progress status `"955E"` — Main/Home design NG (design review failed; "NG" = "No Good" in Japanese quality terminology) |
| KOJI_FIN | Constant | Progress status `"9700"` — Work completed (construction/ installation work finished) |
| KOJI_NG | Constant | Progress status `"957E"` — Work NG (construction/ installation work failed) |
| KOJI_CL | Constant | Progress status `"9704"` — Work cancelled (construction/ installation work cancelled) |
| KOJI_RSV_INF_TRKM | Constant | Progress status `"9610"` — Work schedule info intake (construction schedule scheduled/forecasted) |
| TAKNI_KOJI_INF_TRKM | Constant | Progress status `"9660"` — Home work info intake (home-specific construction work scheduled) |
| KOJI_KR_CNCL_UK | Constant | Progress status `"9706"` — Work provisional cancellation receipt (interim cancellation of construction work has been received) |
| KOJI_KR_CNCL_CL_UK | Constant | Progress status `"9707"` — Work provisional cancellation acceptance cancellation (cancellation of the provisional cancellation acceptance) |
| KU_T_KOJIAK | Table | Construction project master table — main table storing construction project information including receipt/contract timing division |
| ZM_M_CD_NM_KANRI | Table | Code name management table — master table mapping code values to their human-readable names (used for displaying construction project category names) |
| OPMS | Acronym | Operations Planning Management System — external management system for construction project status and results |
| NG | Business term | "No Good" — Japanese quality management term meaning failure/rejection (used in progress status codes like 955E, 957E) |
| OK | Business term | "Operational Check" or "Okay" — meaning pass/approval (used in design result codes and OPMS result codes) |
| dsgn_result_cd | Field | Design result code — indicates whether the design review passed (`"1"` = within standard) or failed (`"2"` = outside standard) |
| opmskjakRsltCd | Field | OPMS work completion result code — result from OPMS system confirming or rejecting work completion |
| kojiak_sbt_cd | Field | Construction project category code — classifies the type of construction project (e.g., `"001"` = new installation, `"003"` = location change [new installation]) |
| `bmpKh` | Field | Work simultaneity possible flag — indicates whether multiple work items can be performed simultaneously on the same telephone number (`"0"` = no, other = yes) |
| `jssiFlg` | Field | Joint simultaneous work implementation flag — indicates whether joint work across multiple contractors is being performed |

---
