737ae5a696
Cimiento numérico del transpilador. Picture parsea la cláusula PICTURE (9, V, S, 9(n)); Decimal es punto fijo exacto (mantissa i128 + scale) con suma/resta/producto exactos, división con escala de resultado fija, redondeo Truncate/HalfUp y coerce a un Picture con detección de desbordamiento (ON SIZE ERROR). 22 tests. Determinista, sin deps de plataforma — base de Fase D. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.1 KiB
2.1 KiB
modules/charka/ — Transpilador COBOL → Rust
Propósito. Modernizar sistemas COBOL legados transpilándolos a Rust con un runtime determinista y un validador en sombra (shadow validator) que compara la salida del original y la del transpilado. Es el módulo más grande del ecosistema — el parser COBOL completo (CICS, SQL embebido, dialectos IBM Enterprise) es un esfuerzo multi-mes.
Crates
| crate | tipo | rol |
|---|---|---|
charka-bcd |
lib | Aritmética decimal de punto fijo con semántica COBOL: Picture, Decimal, redondeo, ON SIZE ERROR |
charka-bcd
COBOL no calcula en binario flotante: opera sobre campos decimales de
precisión fija (PIC S9(5)V99). Reproducir un programa COBOL exige
reproducir esa aritmética dígito a dígito.
Picture— parsea la cláusula PICTURE numérica (9,V,S,9(n)).Decimal— punto fijo exacto (mantissa: i128+scale); suma, resta y producto exactos; división con escala de resultado fija; redondeoTruncate/HalfUp;coercea unPicturecon detección de desbordamiento.- Determinista, sin dependencias de plataforma — mismo programa, mismos dígitos, en cualquier máquina.
Estado
charka-bcd implementado y verde (22 tests). Pendiente — el grueso
del transpilador (esfuerzo multi-mes, Fase D del plan macro):
| crate pendiente | rol |
|---|---|
charka-lexer |
tokenizador COBOL (formato fijo de columnas) |
charka-parser |
parser COBOL'85 → AST (luego CICS + SQL embebido) |
charka-ir |
representación intermedia |
charka-codegen |
emisión de Rust |
charka-shadow |
validador en sombra (original vs transpilado) |
charka-runtime |
runtime determinista (sobre charka-bcd) |
Hito intermedio sugerido: subconjunto COBOL'85 puro antes de CICS/SQL.