# Business Logic — JBSbatKKKojiKnrIfFileLoad.setKojiClInf() [153 LOC]

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

## 1. Role

### JBSbatKKKojiKnrIfFileLoad.setKojiClInf()

This method validates and assembles **work cancellation information (工事取消情報)** data for output file generation. It serves as a data preparation step within the batch processing pipeline `JBSbatKKKojiKnrIfFileLoad.execute()`, which reads raw input records and distributes them into typed data groups based on record division codes (レコード区分). Specifically, when the batch encounters a record with division code `90` ("Work Cancellation Info"), it delegates to `setKojiClInf()` to sanitize and format that record.

The method implements a **two-phase processing pattern**: first, it validates 14 individual fields from the input `data_list` array using typed validators (`isHannkakuESuuji` for half-width alphanumeric checks, `isYearMonthDay` for date validation), incrementing a per-record error counter (`err_cunt`) for each failure. Second, if zero errors were accumulated, it builds a single comma-delimited string by appending each field value followed by a comma separator (`CONMA`), then appends a trailing blank region (space + comma) and the record division field (index 0) before terminating the line with a newline (`KAIGYOU_CODE`). If any validation fails, the record is silently dropped — no data is appended to the output.

The method acts as a **routing/dispatch utility** within the batch service: it is called exclusively by `execute()` within a record-division-based switch construct, processing only records marked as work cancellation (division code "90"). The results are appended into the `koji_cl_inf` `StringBuilder`, which is later written to a dedicated output file by `kojiClInfFileOput()`.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setKojiClInf(data_list, koji_cl_inf)"])
    START --> DEBUG_START["Debug: setKojiClInf_START"]
    DEBUG_START --> ERR_INIT["Set err_cunt = 0"]
    ERR_INIT --> V1["Validate: data_list[1] Service contract number"]
    V1 --> FAIL1{Valid?}
    FAIL1 -->|No| INC1["err_cunt++"]
    FAIL1 -->|Yes| V2["Validate: data_list[2] Service contract circuit internal number"]
    INC1 --> V2
    V2 --> FAIL2{Valid?}
    FAIL2 -->|No| INC2["err_cunt++"]
    FAIL2 -->|Yes| V3["Validate: data_list[3] Association year-month-day"]
    INC2 --> V3
    V3 --> FAIL3{Valid?}
    FAIL3 -->|No| INC3["err_cunt++"]
    FAIL3 -->|Yes| V4["Validate: data_list[4] Account number"]
    INC3 --> V4
    V4 --> FAIL4{Valid?}
    FAIL4 -->|No| INC4["err_cunt++"]
    FAIL4 -->|Yes| V5["Validate: data_list[5] New/Change/Unchanged flag"]
    INC4 --> V5
    V5 --> FAIL5{Valid?}
    FAIL5 -->|No| INC5["err_cunt++"]
    FAIL5 -->|Yes| V6["Validate: data_list[6] Work case type code"]
    INC5 --> V6
    V6 --> FAIL6{Valid?}
    FAIL6 -->|No| INC6["err_cunt++"]
    FAIL6 -->|Yes| V7["Validate: data_list[7] Work case number"]
    INC6 --> V7
    V7 --> FAIL7{Valid?}
    FAIL7 -->|No| INC7["err_cunt++"]
    FAIL7 -->|Yes| V8["Validate: data_list[8] Work case cancellation code"]
    INC7 --> V8
    V8 --> FAIL8{Valid?}
    FAIL8 -->|No| INC8["err_cunt++"]
    FAIL8 -->|Yes| V9["Validate: data_list[9] Work suspension notification date"]
    INC8 --> V9
    V9 --> FAIL9{Valid?}
    FAIL9 -->|No| INC9["err_cunt++"]
    FAIL9 -->|Yes| V10["Validate: data_list[10] Work case cancellation fee existence"]
    INC9 --> V10
    V10 --> FAIL10{Valid?}
    FAIL10 -->|No| INC10["err_cunt++"]
    FAIL10 -->|Yes| V11["Validate: data_list[11] Work case cancellation registration date"]
    INC10 --> V11
    V11 --> FAIL11{Valid?}
    FAIL11 -->|No| INC11["err_cunt++"]
    FAIL11 -->|Yes| V12["Validate: data_list[12] Work hold flag"]
    INC11 --> V12
    V12 --> FAIL12{Valid?}
    V12 -->|No| INC12["err_cunt++"]
    INC12 --> V13["Validate: data_list[13] Suspension reason code 1"]
    FAIL12 -->|Yes| V13
    V13 --> FAIL13{Valid?}
    FAIL13 -->|No| INC13["err_cunt++"]
    FAIL13 -->|Yes| V14["Validate: data_list[14] Suspension reason code 2"]
    INC13 --> V14
    V14 --> FAIL14{Valid?}
    FAIL14 -->|No| INC14["err_cunt++"]
    FAIL14 -->|Yes| LOG1["Debug: log reason code 1 and 2"]
    INC14 --> LOG1
    LOG1 --> ERR_CHECK{err_cunt == 0?}
    ERR_CHECK -->|No| DEBUG_END["Debug: setKojiClInf_END"]
    ERR_CHECK -->|Yes| BUILD["Build comma-separated record"]
    BUILD --> B1["Append fields 1-14 with CONMA=, separator"]
    B1 --> B2["Append SPACE+CONMA trailing blank"]
    B2 --> B3["Append field 0 record division"]
    B3 --> B4["Append KAIGYOU_CODE=newline"]
    B4 --> DEBUG_END
```

**CRITICAL — Constant Resolution:**

| Constant | Resolved Value | Business Meaning |
|----------|---------------|------------------|
| `CONMA` | `","` | Comma separator used to delimit fields in the output CSV-style record |
| `KAIGYOU_CODE` | `"
"` | Newline (carriage return) that terminates each record line in the output file |
| `SPACE` | `""` | Empty string used as placeholder for blank regions in the record format |

The method has two primary conditional branches:
1. **Validation failures** — Each of the 14 validation `if` blocks independently increments the error counter when a field fails its type/length check. These branches handle data integrity enforcement for each individual field.
2. **Zero-error success path** — When `err_cunt == 0`, the method proceeds to assemble the output record. If `err_cunt > 0`, the record is silently skipped (no data appended).

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `data_list` | `ArrayList<String>` | A list of 15 string fields (indices 0–14) representing parsed columns from a single input record of work cancellation data. Index 0 holds the record division code (レコード区分 = "90" for work cancellation). Indices 1–14 hold the actual data fields: service contract number, circuit internal number, association date, account number, new/change/unchanged flag, work case type code, work case number, work case cancellation code, work suspension notification date, cancellation fee existence flag, cancellation registration date, work hold flag, suspension reason code 1, and suspension reason code 2. |
| 2 | `koji_cl_inf` | `StringBuilder` | A shared mutable string buffer that accumulates formatted work cancellation records. The method appends one comma-delimited record to this buffer if all validations pass. This builder is shared across multiple methods in the class (each record type has its own builder) and is eventually written to the work cancellation output file. |

**Instance fields read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `super.logPrint` | Debug log utility | Reference to the parent class's debug logging facility, used for start/end trace and field-level debug output |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JACBatCommon.printDebugLog` | JACBatCommon | - | Calls `printDebugLog` in `JACBatCommon` |
| - | `JACbatDebugLogUtil.printDebugLog` | JACbatDebugLog | - | Calls `printDebugLog` in `JACbatDebugLogUtil` |
| - | `JCKLcsRenkeiUtil.printDebugLog` | JCKLcsRenkei | - | Calls `printDebugLog` in `JCKLcsRenkeiUtil` |
| - | `JKKHttpCommunicator.printDebugLog` | JKKHttpCommunicator | - | Calls `printDebugLog` in `JKKHttpCommunicator` |
| - | `JBSbatKKCashPostAddMail.printDebugLog` | JBSbatKKCashPostAddMail | - | Calls `printDebugLog` in `JBSbatKKCashPostAddMail` |
| - | `JBSbatKKKojiKnrIfFileLoad.isHannkakuESuuji` | JBSbatKKKojiKnrIfFileLoad | - | Calls `isHannkakuESuuji` in `JBSbatKKKojiKnrIfFileLoad` (half-width alphanumeric validation) |
| - | `JBSbatKKKojiKnrIfFileLoad.isHannkakuSuuji1` | JBSbatKKKojiKnrIfFileLoad | - | Calls `isHannkakuSuuji1` in `JBSbatKKKojiKnrIfFileLoad` (half-width numeric validation) |
| - | `JBSbatKKKojiKnrIfFileLoad.isYearMonthDay` | JBSbatKKKojiKnrIfFileLoad | - | Calls `isYearMonthDay` in `JBSbatKKKojiKnrIfFileLoad` (YYYYMMDD date validation) |

This method is a **pure validation and data-formatting utility** — it does not perform any Create, Read, Update, or Delete operations on entities or databases. All called methods are either:
- **Validation helpers** (`isHannkakuESuuji`, `isHannkakuSuuji1`, `isYearMonthDay`) — self-contained utility methods within the same class that check field content against type/length rules
- **Debug logging** (`printDebugLog`) — tracing calls for operational observability

There are no SC Codes, CBS IDs, or database entity/table interactions in this method's call graph.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 methods.
Terminal operations from this method: `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `isHannkakuESuuji` [-], `isHannkakuESuuji` [-], `isHannkakuESuuji` [-], `isYearMonthDay` [-], `isHannkakuESuuji` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: `execute()` in `JBSbatKKKojiKnrIfFileLoad` | `execute()` → (record division code check: `REC_DOV_90` equals record_div) → `setKojiClInf(data_list, koji_cl_inf)` | `isHannkakuESuuji` [validate] — `isHannkakuSuuji1` [validate] — `isYearMonthDay` [validate] — `printDebugLog` [log] |

**Call chain context:** The `execute()` method iterates over input records in a loop, reading a record division field (`rec_div`) from each record. When the division code matches `REC_DOV_90` (which represents "Work Cancellation Info" / 工事取消情報), it calls `setKojiClInf()` to validate and format the work cancellation record data, appending the result to the `koji_cl_inf` StringBuilder. After all records are processed, `execute()` calls `kojiClInfFileOput()` to write the accumulated `koji_cl_inf` content to the output file.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] validation of service contract number (L2427)

> Validates the service contract number (サービス契約番号) field at `data_list.get(1)` — expects a half-width alphanumeric string of max 10 characters, required.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(1), 10, true, "工事取消情報：サービス契約番号")` // half-width alphanumeric, 10 chars max, required flag=true |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 2** — [IF] validation of service contract circuit internal number (L2433)

> Validates the service contract circuit internal number (サービス契約回線内訳番号) field at `data_list.get(2)` — expects a half-width alphanumeric string of max 12 characters, required.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(2), 12, true, "工事取消情報：サービス契約回線内訳番号")` // half-width alphanumeric, 12 chars max, required |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 3** — [IF] validation of association year-month-day (L2439)

> Validates the association date (連年月日) field at `data_list.get(3)` — expects a valid YYYYMMDD date format, required.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isYearMonthDay(data_list.get(3), true, "工事取消情報：連年月日")` // YYYYMMDD date validation, required |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 4** — [IF] validation of account number (L2445)

> Validates the account number (通番) field at `data_list.get(4)` — expects a half-width numeric string of max 12 characters, required.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuSuuji1(data_list.get(4), 12, true, "工事取消情報：通番")` // half-width numeric, 12 chars max, required |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 5** — [IF] validation of new/change/unchanged flag (L2451)

> Validates the new/change/unchanged flag (新規変更区分) field at `data_list.get(5)` — expects a half-width alphanumeric string of max 1 character, optional (required=false).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(5), 1, false, "工事取消情報：新規変更区分")` // half-width alphanumeric, 1 char max, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 6** — [IF] validation of work case type code (L2457)

> Validates the work case type code (工事案件種別コード) field at `data_list.get(6)` — expects a half-width alphanumeric string of max 3 characters, optional.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(6), 3, false, "工事取消情報：工事案件種別コード")` // half-width alphanumeric, 3 chars max, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 7** — [IF] validation of work case number (L2463)

> Validates the work case number (工事案件番号) field at `data_list.get(7)` — expects a half-width alphanumeric string of max 10 characters, optional.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(7), 10, false, "工事取消情報：工事案件番号")` // half-width alphanumeric, 10 chars max, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 8** — [IF] validation of work case cancellation code (L2469)

> Validates the work case cancellation code (工事案件取消結果コード) field at `data_list.get(8)` — expects a half-width alphanumeric string of max 1 character, optional.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(8), 1, false, "工事取消情報：工事案件取消結果コード")` // half-width alphanumeric, 1 char max, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 9** — [IF] validation of work suspension notification date (L2475)

> Validates the work suspension notification date (工事中止通知年月日) field at `data_list.get(9)` — expects a valid YYYYMMDD date format, optional.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isYearMonthDay(data_list.get(9), false, "工事取消情報：工事中止通知年月日")` // YYYYMMDD date validation, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 10** — [IF] validation of work case cancellation fee existence (L2481)

> Validates the work case cancellation fee existence (工事案件キャンセル料有無) field at `data_list.get(10)` — expects a half-width alphanumeric string of max 1 character, optional.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(10), 1, false, "工事取消情報：工事案件キャンセル料有無")` // half-width alphanumeric, 1 char max, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 11** — [IF] validation of work case cancellation registration date (L2487)

> Validates the work case cancellation registration date (工事案件キャンセル登録年月日) field at `data_list.get(11)` — expects a valid YYYYMMDD date format, optional.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isYearMonthDay(data_list.get(11), false, "工事取消情報：工事案件キャンセル登録年月日")` // YYYYMMDD date validation, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 12** — [IF] validation of work hold flag (L2493)

> Validates the work hold flag (工事保留フラグ) field at `data_list.get(12)` — expects a half-width alphanumeric string of max 1 character, optional.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(12), 1, false, "工事取消情報：工事保留フラグ")` // half-width alphanumeric, 1 char max, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 13** — [IF] validation of suspension reason code 1 (L2499)

> Validates the suspension reason code 1 (工事案件中止理由コード1) field at `data_list.get(13)` — expects a half-width alphanumeric string of max 2 characters, optional.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(13), 2, false, "工事取消情報：工事案件中止理由コード1")` // half-width alphanumeric, 2 chars max, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 14** — [IF] validation of suspension reason code 2 (L2505)

> Validates the suspension reason code 2 (工事案件中止理由コード2) field at `data_list.get(14)` — expects a half-width alphanumeric string of max 3 characters, optional.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isHannkakuESuuji(data_list.get(14), 3, false, "工事取消情報：工事案件中止理由コード2")` // half-width alphanumeric, 3 chars max, optional |
| 2 | IF-INNER | `err_cunt++` // increment error counter on validation failure |

**Block 15** — [EXEC] debug logging of suspension reason codes (L2511–2512)

> Logs the raw values of suspension reason codes 1 and 2 for debug purposes.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("工事案件中止理由コード1：" + data_list.get(13))` // debug log of reason code 1 |
| 2 | EXEC | `super.logPrint.printDebugLog("工事案件中止理由コード2：" + data_list.get(14))` // debug log of reason code 2 |

**Block 16** — [IF/ELSE] zero-error check (L2515)

> [CONSTANT: `err_cunt == 0`] Determines whether all 14 field validations passed. If any validation failed, this entire block is skipped and the record is dropped. If all validations passed, the method builds a single comma-delimited output record.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `koji_cl_inf.append(data_list.get(1))` // append service contract number |
| 2 | EXEC | `koji_cl_inf.append(CONMA)` // append separator [,] |
| 3 | EXEC | `koji_cl_inf.append(data_list.get(2))` // append service contract circuit internal number |
| 4 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 5 | EXEC | `koji_cl_inf.append(data_list.get(3))` // append association date |
| 6 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 7 | EXEC | `koji_cl_inf.append(data_list.get(4))` // append account number |
| 8 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 9 | EXEC | `koji_cl_inf.append(data_list.get(5))` // append new/change/unchanged flag |
| 10 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 11 | EXEC | `koji_cl_inf.append(data_list.get(6))` // append work case type code |
| 12 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 13 | EXEC | `koji_cl_inf.append(data_list.get(7))` // append work case number |
| 14 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 15 | EXEC | `koji_cl_inf.append(data_list.get(8))` // append work case cancellation code |
| 16 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 17 | EXEC | `koji_cl_inf.append(data_list.get(9))` // append work suspension notification date |
| 18 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 19 | EXEC | `koji_cl_inf.append(data_list.get(10))` // append cancellation fee existence |
| 20 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 21 | EXEC | `koji_cl_inf.append(data_list.get(11))` // append cancellation registration date |
| 22 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 23 | EXEC | `koji_cl_inf.append(data_list.get(12))` // append work hold flag |
| 24 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 25 | EXEC | `koji_cl_inf.append(data_list.get(13))` // append suspension reason code 1 |
| 26 | EXEC | `koji_cl_inf.append(CONMA)` // append separator |
| 27 | EXEC | `koji_cl_inf.append(data_list.get(14))` // append suspension reason code 2 |
| 28 | EXEC | `koji_cl_inf.append(CONMA)` // append trailing separator |
| 29 | EXEC | `koji_cl_inf.append(SPACE)` // append blank region [-> CONSTANT: `SPACE=""`] |
| 30 | EXEC | `koji_cl_inf.append(CONMA)` // append separator after blank region |
| 31 | EXEC | `koji_cl_inf.append(data_list.get(0))` // append record division field |
| 32 | EXEC | `koji_cl_inf.append(KAIGYOU_CODE)` // append newline terminator [-> CONSTANT: `KAIGYOU_CODE="
"`] |

**Block 17** — [EXEC] end-of-method debug log (L2574)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("setKojiClInf_END")` // debug log: method completion |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `koji_cl_inf` | Field | Work cancellation information — the formatted output string buffer containing cancelled work records in CSV-style format |
| `err_cunt` | Field | Error count — per-record counter tracking how many field validations failed during processing |
| `data_list` | Field | Input data list — a 15-element list of string values representing columns parsed from an input flat file record |
| サービス契約番号 | Field (JP) | Service contract number — the unique identifier assigned to a service contract line item (max 10 chars, half-width alphanumeric, required) |
| サービス契約回線内訳番号 | Field (JP) | Service contract circuit internal number — an internal reference for tracing circuit detail within a service contract (max 12 chars, half-width alphanumeric, required) |
| 連年月日 | Field (JP) | Association date — a date in YYYYMMDD format representing when the work was associated/registered (required for record, optional for some fields) |
| 通番 | Field (JP) | Account number / serial number — a sequential account or tracking number (max 12 chars, half-width numeric, required) |
| 新規変更区分 | Field (JP) | New/Change/Unchanged flag — indicates whether the work is a new installation, a change to existing, or unchanged (1 char, optional) |
| 工事案件種別コード | Field (JP) | Work case type code — a classification code for the type of work case being processed (max 3 chars, optional) |
| 工事案件番号 | Field (JP) | Work case number — the unique identifier for a work case / job (max 10 chars, optional) |
| 工事案件取消結果コード | Field (JP) | Work case cancellation result code — a code indicating the outcome of the work cancellation (1 char, optional) |
| 工事中止通知年月日 | Field (JP) | Work suspension notification date — the date when the work suspension was notified (YYYYMMDD, optional) |
| 工事案件キャンセル料有無 | Field (JP) | Work case cancellation fee existence — indicates whether a cancellation fee applies (1 char, optional) |
| 工事案件キャンセル登録年月日 | Field (JP) | Work case cancellation registration date — the date when the cancellation was formally registered (YYYYMMDD, optional) |
| 工事保留フラグ | Field (JP) | Work hold flag — indicates whether the work is currently on hold (1 char, optional) |
| 工事案件中止理由コード1 | Field (JP) | Work case suspension reason code 1 — the primary reason code for work suspension (max 2 chars, optional) |
| 工事案件中止理由コード2 | Field (JP) | Work case suspension reason code 2 — a secondary/detailed reason code for work suspension (max 3 chars, optional) |
| レコード区分 | Field (JP) | Record division code — a 2-character code that classifies the type of data in a record (e.g., "90" = work cancellation info) |
| `CONMA` | Constant | Comma character `","` — used as a field delimiter in the comma-separated output format |
| `KAIGYOU_CODE` | Constant | Newline character `"
"` — used as a record terminator to separate output file lines |
| `SPACE` | Constant | Empty string `""` — used as a placeholder for blank regions in the output record format |
| `isHannkakuESuuji` | Method | Half-width alphanumeric validation — checks if a string contains only half-width alphanumeric characters and does not exceed the specified max length |
| `isHannkakuSuuji1` | Method | Half-width numeric validation — checks if a string contains only half-width numeric characters and does not exceed the specified max length |
| `isYearMonthDay` | Method | Date validation — checks if a string is a valid date in YYYYMMDD format |
| `kojiClInfFileOput` | Method | Work cancellation information file output — a method in the same class that writes the accumulated `koji_cl_inf` content to an output file |
| `KOJI` | Domain term (JP) | Work / construction — appears in method and field names referring to physical work or job records |
| `CL` / `Cl` | Abbreviation | Cancellation — appears in abbreviated forms like `koji_cl_inf` (work cancellation info) and `cl_inf` (cancellation information) |
| `Knr` | Abbreviation | Cancellation details — appears in the class name `JBSbatKKKojiKnrIfFileLoad` (work cancellation detail information file load) |
| Batch (koptBatch) | Domain | This is an optical batch processing system (kopt = KOmoku optical?) that processes telecom service work records from flat files, distributes them by record type, and generates typed output files |