mcpField
C
cobol-modernization

cobol-modernization

github.com/letta-ai开发15260 次安装4 周前更新
代码仓库

关于 cobol-modernization

该技能为将 COBOL 程序迁移到现代语言提供流程指导,面向需要维持行为一致性的开发者。重点涵盖定长数据格式分析、字节级输出比对和系统化测试。

主要功能

  1. 01分析 COBOL 数据布局与逻辑
  2. 02记录定长字段及字节格式
  3. 03建立状态重置与输出比对脚本
  4. 04覆盖验证路径和边界条件测试

适用场景

  1. 01迁移使用定长记录的 COBOL 程序
  2. 02核验现代实现与 COBOL 输出一致
  3. 03测试交易验证及边界场景

安装

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

$npx skills add https://github.com/letta-ai/skills --skill cobol-modernization

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

详细介绍

COBOL 现代化改造

概述

此技能提供了一套系统化方法,用于将 COBOL 程序转换为现代语言,同时确保行为完全等效。COBOL 现代化改造的关键挑战不仅在于转换逻辑,还在于保留精确的数据格式、定长记录结构以及字节级输出兼容性。

工作流

阶段 1:分析与文档编制

编写任何代码之前,请彻底分析 COBOL 源代码和数据文件:

  1. 阅读完整的 COBOL 源代码——了解程序结构,包括:

    • 用于变量定义和大小设置的 WORKING-STORAGE SECTION
    • 用于记录布局和字段定义的 FILE SECTION
    • 用于业务逻辑的 PROCEDURE DIVISION
  2. 明确记录所有数据格式——为每个文件创建规范:

    • 记录长度(每条记录的总字节数)
    • 字段位置(起始字节、长度)
    • 字段类型(COMP-3 数值、字母数字、压缩十进制数)
    • 填充和对齐要求
  3. 在实现前解决格式差异——如果输入文件与预期格式不符(例如,文件为 15 字节,但 COBOL 预期为 22 字节),请先调查并记录 COBOL 程序的实际处理方式,再继续后续工作。

阶段 2:设置测试框架

在实现转换之前,先创建可复用的测试基础设施:

  1. 创建状态重置脚本——自动恢复原始数据文件:

    # Example: reset_state.sh
    cp data/ACCOUNTS.DAT.orig data/ACCOUNTS.DAT
    cp data/BOOKS.DAT.orig data/BOOKS.DAT
    cp data/TRANSACTIONS.DAT.orig data/TRANSACTIONS.DAT
    
  2. 创建比较脚本——自动比较输出:

    # Example: compare_outputs.sh
    diff data/ACCOUNTS_PYTHON.DAT data/ACCOUNTS_COBOL.DAT
    diff data/BOOKS_PYTHON.DAT data/BOOKS_COBOL.DAT
    diff data/TRANSACTIONS_PYTHON.DAT data/TRANSACTIONS_COBOL.DAT
    
  3. 保留原始 COBOL 输出——先运行 COBOL 程序,并将输出保存为参考基准,然后再开始任何转换工作。

阶段 3:实现

编写现代语言的等效程序时:

  1. 完全匹配 COBOL 的数据处理方式:

    • 使用定宽字符串格式,而非可变长度格式
    • 正确处理填充(字母数字字段填充空格,数值字段填充零)
    • 处理 COBOL 数值字段中隐含的小数点
    • 匹配 COBOL 对超出长度的值的截断行为
  2. 立即验证文件写入——写入代码文件后,重新读取文件,确认内容已完整、正确地保存,再进行测试。

  3. 使用一致的命名方式——避免创建过多临时文件。采用清晰的命名方案:

    • COBOL 程序输出使用 *_COBOL.DAT
    • Python 程序输出使用 *_PYTHON.DAT
    • 每轮测试之间清理文件
阶段 4:系统化测试

测试所有代码路径,而不只是顺利执行的路径:

  1. 创建测试矩阵,涵盖所有验证场景:

    • 有效交易(成功场景)
    • 不存在的主要实体(买家、卖家、书籍等)
    • 所有权/权限验证失败
    • 余额/资源不足的情况
    • 边界条件(余额为零、最大值)
  2. 独立测试每种场景:

    • 每次测试前重置状态
    • 分别运行 COBOL 程序和现代实现
    • 使用 diff 逐字节比较输出
  3. 记录测试结果——跟踪通过的场景以及发现的任何差异。

常见问题

数据格式问题
  • 定宽字段:COBOL 使用以空格或零填充的定宽字段。现代语言默认使用可变长度字符串。
  • 数值格式:COBOL 中的 PIC 9(4)V99 表示 4 位数字、隐含小数点、2 位小数——存储为 6 个字符,不包含小数点。
  • 记录终止符:COBOL 定长记录可能不使用行终止符。请确认是否需要换行符。
测试中的错误
  • 边界情况覆盖不完整:只测试成功场景和一种失败场景,会导致某些验证路径未经测试。
  • 未验证已写入的代码:工具响应可能被截断。请务必重新读取已写入的文件,确认内容完整。
  • 状态污染:未重置状态就运行测试,会导致一连串的失败。
流程效率低下
  • 重复执行命令:为执行次数超过两次的操作创建 shell 脚本。
  • 工作区杂乱:制定统一的文件命名规范,并清理临时文件。
  • 差异尚未解决:如果数据格式与预期不符,请在继续之前彻底调查。

验证清单

在宣布现代化工作完成之前:

  • 已生成所有必需的输出文件
  • 所有数据文件均与 COBOL 输出逐字节一致(diff 无输出)
  • 已测试所有验证路径(成功路径和每种失败类型)
  • 已验证边界条件
  • 不再有临时文件或调试文件
  • 已重新读取代码,以确认内容完整且正确

评论

支持 Markdown