94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
50 lines
2.0 KiB
Markdown
50 lines
2.0 KiB
Markdown
# 18-matching-MN-to-M: M:N Matching with M Output Records
|
|
|
|
## 电信业务场景
|
|
|
|
合同↔套餐M:N→M条。多个合同关联多个套餐的组合匹配,输出按合同件数(M件)的匹配结果。
|
|
|
|
## Description
|
|
|
|
M:N matching where both sides can have duplicate keys. The output contains
|
|
one record per master record that has at least one matching detail record
|
|
with the same key. This tests the ability to handle M:N relationships
|
|
and produce one output per matched master.
|
|
|
|
The algorithm skips master groups with no matching detail key, and skips
|
|
detail key groups that have no corresponding master key.
|
|
|
|
## Record Layout
|
|
|
|
Standard record (45 bytes, copybook STD-REC.cpy):
|
|
| Field | Type | Length | Description |
|
|
|------------|-------------------|--------|--------------------|
|
|
| STD-KEY | PIC X | 10 | Record key |
|
|
| STD-DATA-1 | PIC X | 20 | Text data |
|
|
| STD-DATA-2 | PIC 9 | 10 | Numeric data |
|
|
| STD-DATA-3 | PIC S9(7)V99 COMP-3| 5 | Packed decimal |
|
|
|
|
## Files
|
|
|
|
| File | Purpose |
|
|
|---------------------------------|--------------------------------------|
|
|
| main-18-matching-MN-to-M.cbl | Main COBOL program (fixed format) |
|
|
| data-gen.sh | Generate test data for all files |
|
|
| run.sh | Compile, run, verify |
|
|
| README.md | This file |
|
|
|
|
## Data Design
|
|
|
|
- master.dat: 5 records -- KEY00001 (2), KEY00002 (2), KEY00003 (1)
|
|
- detail.dat: 4 records -- KEY00001 (2), KEY00003 (2)
|
|
- Matching keys: KEY00001, KEY00003
|
|
- Unmatched: KEY00002 (master only)
|
|
- Output: 3 records = 135 bytes
|
|
|
|
## Expected Behavior
|
|
|
|
- KEY00001 group (2 master records): matches detail KEY00001 -> output 2 records
|
|
- KEY00002 group (2 master records): no matching detail -> output 0 records
|
|
- KEY00003 group (1 master record): matches detail KEY00003 -> output 1 record
|
|
- Total: 3 output records
|