sekacorn/Corn-COBOL-to-JAVA
GitHub: sekacorn/Corn-COBOL-to-JAVA
一个确定性 COBOL 到 Java 的 transpiler,解决遗留系统迁移中的审计与合规难题。
Stars: 1 | Forks: 1
# Corn COBOL-to-Java 编译器
**以自动化、准确且符合您需求的方式现代化数百万行 COBOL 代码。**
[](https://github.com/sekacorn/corn-cobol-to-java/actions/workflows/ci.yml)
[](LICENSE)
[](https://openjdk.org/)
[](https://maven.apache.org/)
[](#nist-ccvs85-conformance)
## 问题
世界仍在依赖 COBOL 运行。95% 的 ATM 交易、80% 的面对面交易以及 43% 的所有银行系统都依赖于 COBOL 程序——许多程序编写于 30-40 年前。编写这些程序的开发者正在退休,主机的成本持续攀升,而无所作为的风险每季度都在增长。
## 解决方案
Corn 是一个 **确定性、基于规则的 COBOL-to-Java 编译器**——不是猜测的黑盒 LLM。每次翻译都是可重现、可审计、可追溯到原始源代码的。为金融机构和政府机构所要求的标准而构建。
## 实际效果演示
### 翻译 —— COBOL 输入,Java 输出
粘贴任意 COBOL 程序,在秒级获得可编译的 Java 代码。支持并排视图、复制与下载。

### 分析 —— 了解您的工作内容
自动化的复杂度评分、语句计数、分区分解、功能检测与解析诊断。在迁移之前理解每一个程序。

### 组合 —— 规划迁移阶段
一目了然地查看整个 COBOL 组合。程序会根据复杂度和风险自动分组为迁移阶段。明确哪些先迁移、哪些需要额外关注。

### 成本估算器 —— 构建商业案例
配置团队费率与组合规模。即时获得各阶段的成本分解——自动翻译、评审、修复、测试与部署。为获得预算批准的演示文稿而设计。

### 执行跟踪 —— 证明等价性
带变量状态跟踪的逐步执行跟踪。提供审计与监管机构所需的 COBOL/Java 差异可视化证据。

## 为何选择 Corn
| | 传统重写 | LLM 翻译 | **Corn** |
|---|---|---|---|
| **确定性** | 手动 | 否 | **是** |
| **可审计** | 依赖团队 | 否 | **完整跟踪** |
| **可重现** | 否 | 否 | **每次一致** |
| **成本** | $50-100/LOC | 未知 | **$3-5/LOC** |
| **时间线** | 数年 | 数月 + 重做 | **数周至数月** |
| **符合监管要求** | 手动提供证据 | 不被接受 | **内置合规性** |
## 平台能力
### 当前已实现
- **基于 ANTLR4 的 COBOL 解析器**,目标为 ANSI-85,支持 52.5% 的 NIST CCVS85 一致性
- **确定性 Java 代码生成**——相同输入始终产生相同输出
- **完整流水线**:解析、中间表示、生成、编译、执行、验证
- **40+ 种 COBOL 语句支持**,包括算术、控制流、文件 I/O、字符串操作与 INSPECT
- **符合 508 标准的演示 UI**,支持实时翻译、分析、组合规划与成本估算
- **REST API 服务器**,便于集成到现有工作流
- **基于执行的验证**,对比预期输出结果
### 支持的 COBOL 语句
| 类别 | 语句 |
|----------|-----------|
| **算术** | `ADD`、`SUBTRACT`、`MULTIPLY`、`DIVIDE`、`COMPUTE`(支持 `ROUNDED`、`ON SIZE ERROR`、`GIVING`,格式 1 与 2) |
| **控制流** | `IF`/`ELSE`、`EVALUATE`/`WHEN`、`PERFORM`(简单、`UNTIL`、`VARYING`、`TIMES`、`TEST BEFORE`/`AFTER`)、`GO TO`、`STOP RUN`、`EXIT`、`GOBACK` |
| **数据移动** | `MOVE`、`INITIALIZE`、`SET` |
| **I/O** | `DISPLAY`、`ACCEPT`、`OPEN`、`CLOSE`、`READ`、`WRITE`、`REWRITE`、`DELETE`、`START` |
| **字符串** | `STRING`、`UNSTRING`、`INSPECT`(`TALLYING`、`REPLACING`、`CONVERTING`) |
| **程序** | `CALL`(带 `ON EXCEPTION`)、`SEARCH`、`SORT`、`MERGE` |
## 屏幕截图 —— CLI
### CLI 帮助

### 翻译流程
将 9 个 COBOL 程序翻译为 Java,零错误:

### 验证流水线
解析、生成、编译、执行——完全自动化:

### 分析器
每个程序的 JSON 格式分析报告:

## 示例翻译
**COBOL 输入:**
```
IDENTIFICATION DIVISION.
PROGRAM-ID. ARITHMETIC.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-A PIC 9(5) VALUE 100.
01 WS-B PIC 9(5) VALUE 50.
01 WS-RESULT PIC 9(5) VALUE 0.
PROCEDURE DIVISION.
ADD WS-A TO WS-B GIVING WS-RESULT.
DISPLAY "RESULT: " WS-RESULT.
STOP RUN.
```
**生成的 Java:**
```
package com.generated.cobol;
import java.math.BigDecimal;
import com.sekacorn.corn.runtime.CobolMath;
import com.sekacorn.corn.runtime.ArithmeticContext;
public class Arithmetic {
private BigDecimal wsA = new BigDecimal("100");
private BigDecimal wsB = new BigDecimal("50");
private BigDecimal wsResult = BigDecimal.ZERO;
public void run() { mainPara(); }
private void mainPara() {
wsResult = CobolMath.compute(wsA.add(wsB),
ArithmeticContext.ofPicture(0, 18)).getValue();
System.out.println(String.valueOf("RESULT: ")
+ String.valueOf(wsResult));
return;
}
public static void main(String[] args) { new Arithmetic().run(); }
}
```
## 快速开始
### 要求
- Java 21
- Maven 3.8+
### 构建
```
mvn clean install
```
### 运行演示 UI
```
java -jar modules/server/target/corn-demo-server.jar
# 打开 http://localhost:8085
```
### 运行 CLI
```
java -jar modules/cli/target/corn-cobol-to-java.jar --help
# 将 COBOL 转换为 Java
java -jar modules/cli/target/corn-cobol-to-java.jar translate ./cobol \
--output ./output/java --codegen-level 2
# 验证完整流程(解析 → 生成 → 编译 → 执行)
java -jar modules/cli/target/corn-cobol-to-java.jar validate ./cobol \
--output ./corn-validation
# 分析 COBOL 源代码
java -jar modules/cli/target/corn-cobol-to-java.jar analyze ./cobol
```
## 架构
```
COBOL source (.cbl)
→ CobolPreprocessor (fixed-form → free-form normalization)
→ ANTLR4 Lexer/Parser (CobolLexer.g4 / CobolParser.g4)
→ CobolIRBuildingVisitor (parse tree → immutable IR)
→ JavaCodeGenerator (IR → Java source via visitor pattern)
→ Generated Java (imports com.sekacorn.corn.runtime.*)
```
### 模块结构
```
modules/
ir/ Immutable IR: Program, DataItem, Statement (40+), Expression (8)
lexer-parser/ ANTLR4 grammars, CobolSourceParser, CobolPreprocessor
codegen-java/ JavaCodeGenerator, JavaStatementVisitor, JavaExpressionVisitor
runtime-java/ CobolRuntime, CobolMath, CobolString, CobolFile (zero external deps)
server/ Lightweight HTTP API for the demo UI (JDK HttpServer, zero extra deps)
cli/ Picocli CLI: translate, validate, analyze, report, init, refactor, gui
```
## NIST CCVS85 一致性
解析器已通过美国政府 **NIST CCVS85** COBOL-85 编译器一致性测试套件验证——包含 14 类别的 415 个程序。这是用于认证生产 COBOL 编译器的相同测试套件。
| 类别 | 通过 | 总计 | 比率 |
|----------|------|-------|------|
| RL(相对 I/O) | 18 | 26 | **69.2%** |
| SQ(顺序 I/O) | 55 | 84 | **65.5%** |
| IC(程序间通信) | 30 | 47 | **63.8%** |
| IF(固有函数) | 28 | 45 | **62.2%** |
| NC(核心) | 58 | 95 | **61.1%** |
| IX(索引 I/O) | 13 | 29 | 44.8% |
| OB(已废弃) | 3 | 7 | 42.9% |
| ST(排序/合并) | 7 | 25 | 28.0% |
| SM(源管理) | 3 | 13 | 23.1% |
| SG(分段) | 3 | 13 | 23.1% |
| DB(调试) | 0 | 15 | 0.0% |
| RW(报告写入器) | 0 | 6 | 0.0% |
| CM(通信) | 0 | 9 | 0.0% |
| EX(EXEC) | 0 | 1 0.0% |
| **总计** | **218** | **415** | **52.5%** |
## 合规与标准
- **Section 508 / WCAG 2.1 AA** —— 演示 UI 符合无障碍标准,支持 ARIA 标签、键盘导航、跳过链接以及足够的颜色对比度
- **NIST CCVS85** —— 解析器通过美国政府 COBOL-85 编译器一致性测试套件验证
- **NIST SP 800-218 (SSDF)** —— 遵循安全的软件开发实践
- **零拷贝依赖**——生产环境中不包含 GPL/LGPL/AGPL 依赖
- **SBOM 生成**——每次构建生成 CycloneDX 物料清单
## 路线图
| 阶段 | 重点 | 状态 |
|-------|-------|--------|
| **核心流水线** | 解析、中间表示、代码生成、运行时、CLI | 已发布 |
| **演示平台** | Web UI、REST API、组合与成本工具 | 已发布 |
| **NIST 75%+** | 语法扩展、COPY/REPLACE 预处理 | 进行中 |
| **语义分析** | 类型检查、数据流、死代码检测 | 私有仓库 |
| **企业特性** | EXEC CICS、EXEC SQL、COMP-3 变体、多程序 | 私有仓库 |
| **生产平台** | Rust 编写的高性能引擎、云部署 | 私有仓库 |
## 仓库结构
```
corn-cobol-to-java/
demo-ui/ Web-based demo UI (HTML/CSS/JS)
docs/ Architecture, patent application, value proposition
modules/ Maven modules (ir, lexer-parser, codegen-java, runtime-java, server, cli)
samples/ Sample COBOL programs
README.md
LICENSE
pom.xml
```
## 文档
- [架构](docs/ARCHITECTURE.md)
- [价值主张](docs/VALUE_PROPOSITION.md)
## 许可
本仓库在 **Corn Evaluation License** 下分发,仅限非生产环境评估使用。完整条款请参见 [LICENSE](LICENSE)。
如需生产许可、企业协议或合作咨询,请联系:
**Cornmeister LLC** | `sekacorn@gmail.com`
*由 Cornmeister LLC 打造,马里兰州,美国。*
标签:ANSI-85, ANTLR4, BigDecimal, CCVS85, CI, COBOL, COBOL to Java, Java 21, JS文件枚举, Maven, NIST, SEO, 不可变IR, 云计算, 代码分析, 代码迁移, 关键词优化, 凭证管理, 动态调试, 可维护性, 域名枚举, 复杂度评估, 文档结构分析, 源码转换, 漏洞验证, 现代化, 确定性编译, 编译器, 自动翻译, 规则引擎, 财务系统, 迁移规划, 金融计算, 银行系统