Files
cobol-java-v3/benchmark-programs/README.md
T
NB-076 94400d50d4 feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 09:53:21 +08:00

8.9 KiB
Raw Blame History

电信请求书系统 — COBOL 测试基准程序集

Telecom Billing System — COBOL Test Benchmark Suite

基于 cobol-test-benchmark.md 的 35 种 COBOL 程序类型 + 8 项横跨功能测试,映射为模拟的电信请求书(计费)处理系统。

系统架构

                          ┌───────────────────┐
                          │   外部系统 CDR     │
                          │   (CSV 格式)       │
                          └─────────┬─────────┘
                                    │
                          ┌─────────▼─────────┐
                          │  15/21 CDR 取込   │  CSV→FB转换
                          └─────────┬─────────┘
                                    │
                          ┌─────────▼─────────┐
                          │ 13/27/31 CDR校验   │  字段/半角/重複
                          └─────────┬─────────┘
                                    │
                     ┌──────────────┼──────────────┐
                     │              │              │
              ┌──────▼──────┐ ┌────▼────┐ ┌──────▼──────┐
              │ 34 CDR 排序 │ │35 CDR合并│ │ 29 编码转换 │
              └──────┬──────┘ └────┬────┘ └──────┬──────┘
                     │              │              │
                     └──────────────┼──────────────┘
                                    │
              ┌─────────────────────▼─────────────────────┐
              │     02 合同↔CDR 匹配 (1:N)                │
              │     03 线路↔请求书 (N:1)                   │
              │     01 请求书↔支付对账 (1:1)               │
              │     16-22 二级/组合匹配                    │
              └─────────────────────┬─────────────────────┘
                                    │
              ┌─────────────────────▼─────────────────────┐
              │     24 资费表检索 (SEARCH ALL)             │
              │     25 计费子程序 (CALL)                   │
              │     05/06 条件判定 (IF/EVALUATE)           │
              └─────────────────────┬─────────────────────┘
                                    │
              ┌─────────────────────▼─────────────────────┐
              │  07/08/30 用量/费用汇总 (key切)            │
              │  32/33 混合处理                           │
              └─────────────────────┬─────────────────────┘
                                    │
              ┌─────────────────────▼─────────────────────┐
              │     04 请求书编辑输出 (GETPUT/报表)         │
              │     09/23/26 DB更新/检索                   │
              │     14 在线照会 (CICS模拟)                  │
              └─────────────────────┬─────────────────────┘
                                    │
              ┌─────────────────────▼─────────────────────┐
              │     10/11/12 请求书分割输出                 │
              │     28 SYSIN批量参数                      │
              └───────────────────────────────────────────┘

35 类型 → 电信业务映射

目录 电信功能 COBOL 类型 处理阶段
01-matching-1-1 请求书↔支付对账 1:1匹配 对账
02-matching-1-N 合同↔通话明细匹配 1:N匹配 计费前
03-matching-N-1 多线路→请求书汇集 N:1匹配 计费后
04-edit-getput 请求书编辑输出 编辑 输出
05-branch-if 料金阶梯判定(IF) IF分支 计费
06-branch-evaluate 套餐类型判定 EVALUATE分支 计费
07-keybreak-summary 加入者月汇总 key切汇总 集计
08-keybreak-aggregate 套餐统计 key切聚合 集计
09-db-update 客户DB更新 DB更新 DB
10-divide-50 请求书50分割输出 50分割 输出
11-divide-25 明细25分割 25分割 输出
12-divide-100 数据100分割 100分割 输出
13-validation-nodup CDR字段校验 校验(无重复) 前处理
14-online-cics 在线客户照会 online/CICS 在线
15-csv-fb-nolf 外部CDR CSV取込(无LF) CSV→FB 取込
16-matching-2stage-1-1 二级请求书核对 二级1:1 对账
17-matching-2stage-N-1 线路汇总→请求书 二级N:1 集计
18-matching-MN-to-M 合同↔套餐匹配 M:N→M条 计费
19-matching-MN-to-N 套餐适用明细 M:N→N条 计费
20-matching-MN-to-MxN CDR详细清单 M:N→M×N 计费
21-csv-fb-lf CDR CSV取込(有LF) CSV→FB(LF) 取込
22-matching-2stage-MN 二级套餐匹配 二级M:N 计费
23-select-condition 客户合同检索 SELECT条件 DB
24-table-search 资费表检索 内部表 计费
25-subprogram 计费子程序 子程序 计费
26-db-search 客户信息检索 DB检索 DB
27-validation-halfwidth 电话号码格式校验 半角校验 前处理
28-sysin 批量参数设定 SYSIN读取 共通
29-ascii-ebcdic 主机编码转换 编码转换 接口
30-keybreak-other 通话状态变化检测 key切非汇总 检测
31-validation-withdup 重复CDR检测 校验(含重复) 前处理
32-mix-1N-samekeybreak 合同+月别集计 1:N+同key切 混合
33-mix-1N-diffkeybreak 线路+类型切替 1:N+异key切 混合
34-sort CDR排序 SORT 前处理
35-merge 多源CDR合并 MERGE 取込

横跨功能

目录 电信业务场景
cross-cutting/variable-length 可变长CDR记录、ODO套餐明细表
cross-cutting/loop 批量处理循环(PERFORM变种)
cross-cutting/numeric-precision 资费计算精度(ROUNDED/SIZE ERROR)
cross-cutting/japanese 客户名日文处理(PIC N/全角假名)
cross-cutting/date 账期计算(闰年/和历/月末)
cross-cutting/rerun 请求书再发行(幂等性)
cross-cutting/exclusion 排他控制(文件竞争)
cross-cutting/performance 大容量CDR处理性能
cross-cutting/file-organization RRDS/索引文件编成

流水线处理 (pipeline/)

端到端批处理流程:

1. CDR取込   → 15-csv-fb-nolf  (外部CDR CSV→固定长)
2. CDR校验   → 13-validation-nodup  (字段校验)
3. CDR排序   → 34-sort  (按客户/时间排序)
4. 合同匹配  → 02-matching-1-N  (合同↔CDR关联)
5. 资费检索  → 24-table-search  (套餐单价查找)
6. 计费计算  → 25-subprogram  (时长×单价)
7. 月汇总    → 07-keybreak-summary  (加入者别集计)
8. 请求书    → 04-edit-getput  (请求书输出)
9. 分割      → 10-divide-50  (请求书50分割)
cd pipeline && bash run-pipeline.sh

快速开始

# 编译全部
bash common/scripts/build.sh

# 运行全部测试
bash common/scripts/run_tests.sh

# 运行流水线
cd pipeline && bash run-pipeline.sh

# 单个测试
cd 34-sort && bash run.sh

数据约定

  • 客户ID: CUST000001 格式 (10字节)
  • 合同ID: CTR000001 格式 (10字节)
  • CDR编号: CDR000001 格式 (10字节)
  • 请求书ID: INV2025001 格式 (10字节)
  • 电话号码: 8613800138001 格式 (中国手机, 11字节)
  • 套餐代码: P01/P02/P03 (3字节)
  • 金额: 分为单位 (9字节整数)
  • 日期: YYYYMMDD 格式 (8字节)
  • 账期: YYYYMM 格式 (6字节)