Files

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