# Maguyva 对 COBOL 的支持：面向遗留系统现代化的依赖分析

Canonical source: https://maguyva.ai/zh-hans/languages/cobol

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva 通过 AST 解析和符号提取支持 COBOL，让 AI 智能体能够在开展现代化或重构工作之前，先梳理程序结构、Copybook 使用情况和依赖路径。

## 支持情况速览

- 支持等级: AST 和符号支持
- 编程语言
- 扩展名: .cbl, .cob, .cpy
- 真正的 AST 解析，支撑语法感知搜索和结构化上下文。
- 命名符号支撑语义查找和交叉引用。启用关系提取后，即可使用图谱导航。
- 该语言为图谱感知搜索提供符号和关系；支持的边类型随其原生构造而异。
- 同时支持 AST 解析和符号提取。

## 最适合场景

- 对仍支撑关键业务流程的 COBOL 系统开展现代化工作的团队。
- 需要先梳理 Copybook、批处理逻辑和过程式流程，再进行修改的代码仓库或提取出的代码库。
- 以理解并记录遗留系统为首要目标、而非盲目重写的智能体辅助探索工作。

## 智能体工作流

- 在规划现代化步骤之前，梳理程序与 Copybook 之间的关系。
- 识别拟议变更会涉及哪些例程或数据定义。
- 为工程师在编写文档、迁移或重构规划时，提供更安全的起点。

## 为什么 COBOL 是 Maguyva 的一个有意义的适配场景

任何产品都能声称支持现代应用语言的 AI 能力。COBOL 更有价值，因为它逼着产品诚实面对自己真正擅长什么。在遗留代码中，价值不在于快速生成代码，而在于发现、依赖梳理、细致审查和现代化规划。

如果说 Maguyva 在 COBOL 上有用，那是因为它能帮助工程师在着手迁移之前，先理解这个仍然举足轻重的系统。

## Maguyva 在 COBOL 中实际提取了什么

Maguyva 覆盖 `.cbl`、`.cob` 和 `.cpy`，让 Copybook 能与程序处于同一个搜索层面。在关系分析过程中，它还会剥离调用目标外围的引号和括号——这一点在 COBOL 代码库中尤为重要，因为这些包裹符号很常见，足以让朴素的文本匹配变得嘈杂。

对于面向对象的 COBOL，Maguyva 会提取类继承关系。当父类和子类定义在同一个源文件中时，它还会关联方法重写关系。类限定的方法名称可以区分重写方法和父类方法，帮助智能体在修改类之前检查继承的行为。

## 面向现代化探索的实用 MCP 工作流

最佳切入点通常是面向探索的：

- 用 `get_task_context` 处理诸如“追踪客户批处理更新流程中的 Copybook 使用情况”这类提问。
- 用 `text_pattern_search` 查找程序名、Copybook 名以及稳定的批处理入口点。
- 在你确定了某个共享例程或定义、需要查看其使用位置之后，用 `dependency_search`。

## 这个页面何时有用

这个页面适用于遗留代码探索与现代化规划，而非代码生成。如果你的系统同时混用了 COBOL 与更新的服务层，可以对比 [Java](/zh-hans/languages/java) 或 [C#](/zh-hans/languages/csharp)。如果你只需要完整的支持矩阵，请查看 [兼容性](/zh-hans/docs/compatibility)。

## 引擎细节

- COBOL 支持涵盖 `.cbl`、`.cob` 和 `.cpy`，让 Copybook（可复用代码定义文件）能与程序一起被搜索。
- 带引号的调用目标会在关系分析前，通过剥离包裹引号和括号进行归一化。
- 面向对象的 COBOL 支持类继承。当父类和子类定义在同一个源文件中时，方法重写使用类限定名称。

## 常用 MCP 入口工具

- `get_task_context`: 从这里开始诸如“追踪客户批量更新流程中的 Copybook 使用情况”这类探索性提示。
- `text_pattern_search`: 当术语稳定时，用它查找程序名称、Copybook 名称和批处理入口点。
- `dependency_search`: 在你确定某个例程或共享定义后，用它查看该定义在何处被使用。
