mcpField
C
cobol-migration-analyzer

cobol-migration-analyzer

github.com/dauquangthanh开发1775 次安装40 周前更新
代码仓库

关于 cobol-migration-analyzer

面向评估旧版 COBOL 和 JCL 系统并迁移至 Java 的团队。它提取程序结构与依赖关系,将 copybook 映射为 Java 类,并通过附带脚本估算迁移复杂度。

主要功能

  1. 01提取 COBOL 结构与逻辑
  2. 02分析 JCL 作业及依赖
  3. 03生成 copybook 对应的 Java POJO
  4. 04构建跨代码库依赖图
  5. 05估算迁移复杂度

适用场景

  1. 01盘点 COBOL 和 JCL 资产
  2. 02将 copybook 映射为 Java 数据类
  3. 03迁移前梳理依赖关系
  4. 04估算迁移工作量与风险

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dauquangthanh/hanoi-rainbow --skill cobol-migration-analyzer

安装后在 Claude Code 中输入/cobol-migration-analyzer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
java-class-template.java
migration-report-template.md
references/
messaging-integration.md
performance-patterns.md
pseudocode-cobol-rules.md
pseudocode-common-rules.md
testing-strategy.md
transaction-handling.md
scripts/
analyze-dependencies.ps1
analyze-dependencies.sh
estimate-complexity.py
extract-structure.py
generate-java-classes.py

详细介绍

COBOL 迁移分析器

分析遗留 COBOL 程序和 JCL 脚本,以便迁移到 Java。提取业务逻辑、数据结构和依赖项,生成可执行的迁移策略。

核心能力

1. COBOL 程序分析

提取 COBOL 分区(IDENTIFICATION、ENVIRONMENT、DATA、PROCEDURE)、Working-Storage 变量、文件定义(FD)、业务逻辑段落、PERFORM 语句、CALL 层次结构、嵌入式 SQL 和错误处理模式。

2. JCL 作业分析

解析 JCL 作业步骤、程序调用、数据依赖项(DD 语句)、条件逻辑(COND、IF/THEN/ELSE)、返回码和资源需求。

3. Copybook 处理

提取包含层级编号、REDEFINES 子句、组项、OCCURS 子句和图片子句的记录布局。根据 copybook 结构生成 Java POJO。

4. 依赖映射

构建完整的依赖关系图,展示代码库中的 CALL 层次结构、copybook 用法、文件依赖项、数据库表访问和共享工具引用。

工作流

第 1 步:发现 COBOL 资源

查找 COBOL 程序、JCL 作业和 copybook:

find . -name "*.cbl" -o -name "*.CBL" -o -name "*.cob"
find . -name "*.jcl" -o -name "*.JCL"
find . -name "*.cpy" -o -name "*.CPY"

使用 scripts/analyze-dependencies.sh 或 scripts/analyze-dependencies.ps1 生成依赖关系图。

第 2 步:提取结构

使用 scripts/extract-structure.py 解析 COBOL 程序,并以 JSON 格式提取分区、变量、段落和依赖项。

第 3 步:生成 Java 代码

使用 scripts/generate-java-classes.py 将 copybook 转换为 Java POJO,并添加适当的数据类型和 Bean Validation 注解。

第 4 步:估算复杂度

使用 scripts/estimate-complexity.py,根据 LOC、外部调用、文件操作、SQL 语句和控制流计算迁移复杂度。

第 5 步:制定迁移策略

记录程序概述、依赖项、数据结构、业务逻辑模式、拟议的 Java 设计、迁移估算和待办事项。

快速参考

COBOL 到 Java 的类型映射
COBOL PictureJava Type说明
PIC 9(n)int、long、BigInteger无符号数值
PIC S9(n)int、long、BigInteger有符号数值
PIC 9(n)V9(m)BigDecimal无符号小数
PIC S9(n)V9(m)BigDecimal有符号小数
PIC S9(n)V9(m) COMP-3BigDecimal压缩十进制数——精度至关重要!
PIC S9(n) COMP / BINARYint、long二进制存储
PIC S9(n) COMP-1float单精度(财务数据应避免使用)
PIC S9(n) COMP-2double双精度(财务数据应避免使用)
PIC X(n)String字母数字/字符
PIC A(n)String仅字母
PIC N(n)String国家字符/Unicode
OCCURS nList<T> 或 T[]固定长度数组/表
OCCURS n DEPENDING ONList<T>可变长度数组
88 levelenum 或常量条件名称
INDEXint表索引(在 COBOL 中从 1 开始)
常见模式转换
  • 文件 I/O:READ...AT END → 使用 try-with-resources 的 BufferedReader 或 NIO 流
  • 文件更新:REWRITE → 数据库或文件系统中的更新操作
  • 表查找:SEARCH → 使用流进行线性搜索
  • 二分搜索:SEARCH ALL → Collections.binarySearch() 或 stream().filter().findFirst()
  • 字符串操作:STRING/UNSTRING → StringBuilder 或 String.split()
  • 检查:INSPECT → String.replace()、replaceAll() 或正则表达式
  • CALL 语句:→ 方法调用或服务调用
  • EVALUATE:→ switch 语句(Java 14+ 支持增强型 switch)
  • 日期运算:FUNCTION INTEGER-OF-DATE → LocalDate 操作
  • ACCEPT DATE/TIME:→ LocalDate.now()、LocalTime.now()
  • 条件名称(Level 88):→ enum 或类型化常量
  • 计算型 GO TO:→ 策略模式或 switch 语句
  • REDEFINES:→ 联合类型、ByteBuffer 视图或独立的访问器类
  • COPY 语句:→ 包导入或共享实体类
示例:将 Copybook 转换为 Java POJO

COBOL Copybook:

01  EMPLOYEE-RECORD.
    05  EMP-ID        PIC 9(6).
    05  EMP-NAME      PIC X(30).
    05  EMP-SALARY    PIC S9(7)V99 COMP-3.

生成的 Java:

public class EmployeeRecord {
    private int empId;
    private String empName;
    private BigDecimal empSalary;
    // getters/setters
}

迁移注意事项

关键模式:

  1. 始终对 COMP-3 和带小数的数值使用 BigDecimal(绝不使用 float/double)
  2. 保留精度:金融计算使用具有精确小数位数的 BigDecimal
  3. 从 1 开始的索引:注明 COBOL 数组从 1 开始,Java 数组从 0 开始
  4. 隐式转换:明确处理 COBOL 自动进行的数值↔字符串转换
  5. REDEFINES:建模为联合类型、ByteBuffer 覆盖层或独立的视图类
  6. 计算型 GO TO:重构为策略模式或 switch 语句
  7. ALTER 语句:重构为结构化控制流(if/while/switch)
  8. PERFORM THRU:映射为一个包含完整段落范围的单一方法
  9. BY REFERENCE 与 BY CONTENT:注明参数传递语义
  10. 严格测试:使用生产数据样本进行验证,尤其是 COMP-3

输出要求:

  • 程序概览和类型分类
  • 完整的依赖关系图(CALL 树、copybook、文件、数据库表)
  • 数据结构映射(copybook → Java 类)
  • 业务逻辑概要(关键段落 → 方法)
  • 拟议的 Java 架构(服务、存储库、实体)
  • 迁移工作量估算(复杂度评分、LOC、风险因素)
  • 按优先级排列的待办事项

高级主题

有关详细的转换规则和模式,请参阅:

工具和脚本

所有脚本均支持跨平台执行(Windows PowerShell、bash):

  • analyze-dependencies.sh/ps1 - 生成依赖关系图
  • extract-structure.py - 将 COBOL 结构解析为 JSON
  • generate-java-classes.py - 将 copybook 转换为 Java POJO
  • estimate-complexity.py - 计算迁移复杂度评分

脚本仅使用标准库,并输出 JSON,便于与 CI/CD 管道集成。

评论

支持 Markdown