94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
70 lines
2.3 KiB
Markdown
70 lines
2.3 KiB
Markdown
# 21-csv-fb-lf: CSV to Fixed-Block Conversion (with Line Feed)
|
|
|
|
## 电信业务场景
|
|
|
|
外部CDR CSV取込(有LF)。读取含改行的CSV格式CDR文件,通过INSPECT REPLACING将改行展开为多条固定长记录。
|
|
|
|
## Description
|
|
|
|
Reads a LINE SEQUENTIAL CSV file where Field3 may contain pipe ('|')
|
|
markers that indicate record-splitting points. Uses INSPECT TALLYING
|
|
to count markers and INSPECT REPLACING to transform them, then writes
|
|
one output record per segment. One CSV input line can produce multiple
|
|
output records ("line feed expansion").
|
|
|
|
## Record Layout
|
|
|
|
### Input (LINE SEQUENTIAL CSV)
|
|
|
|
| Field | Description |
|
|
|--------|--------------------------------------|
|
|
| FIELD1 | Key code |
|
|
| FIELD2 | Group identifier |
|
|
| FIELD3 | Data values (may contain '|' markers) |
|
|
|
|
Field3 with '|' markers:
|
|
```
|
|
ITEM1|ITEM2|ITEM3 -> produces 3 output records
|
|
```
|
|
|
|
### Output (fixed-length: 100 bytes)
|
|
|
|
Format: `FIELD1|FIELD2|SEGMENT` padded to 100 bytes.
|
|
|
|
## Files
|
|
|
|
| File | Purpose |
|
|
|------------------------|--------------------------------|
|
|
| main-21-csv-fb-lf.cbl | Main COBOL program |
|
|
| data-gen.sh | Generate CSV test data |
|
|
| run.sh | Compile, run, verify |
|
|
| README.md | This file |
|
|
|
|
## Tests
|
|
|
|
| Test Case | Description |
|
|
|-------------------------|-------------------------------------|
|
|
| No pipe markers | 1:1 mapping, no expansion |
|
|
| Single pipe | 1 input line -> 2 output records |
|
|
| Double pipe | 1 input line -> 3 output records |
|
|
| Empty field3 | Empty field handling |
|
|
| Leading pipe | Leading empty segment |
|
|
| Trailing pipe | Trailing empty segment |
|
|
| Multiple segments | Many markers in one field |
|
|
| Quoted pipe | Pipe within quotes (literal) |
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
cd 21-csv-fb-lf
|
|
bash data-gen.sh
|
|
bash run.sh
|
|
```
|
|
|
|
## Expected Behavior
|
|
|
|
- Each '|' separator produces an additional output record.
|
|
- INSPECT TALLYING counts the markers.
|
|
- INSPECT REPLACING transforms markers for processing.
|
|
- Output records are fixed-length (100 bytes).
|