feat(charka): charka-runtime — soporte de ejecución (campos Num y Text)

El soporte que los programas COBOL transpilados enlazan. charka-codegen
emitirá Rust que llama a esta biblioteca, no Rust autónomo.

- Num: campo numérico (PIC 9(5)V99) — un Decimal conformado a su
  Picture. store trunca a la escala declarada, store_rounded redondea;
  al desbordar la parte entera conserva los dígitos de bajo orden (el
  ON SIZE ERROR de COBOL sin cláusula). display da los dígitos con
  relleno de ceros y signo.
- Text: campo alfanumérico (PIC X(n)) de longitud fija — store
  justifica a la izquierda y rellena/trunca; fill mueve figurativas.
- cobol_text_cmp: comparación alfanumérica con relleno de espacios.
- Reexporta Decimal/Picture/Rounding de charka-bcd.

Construido antes que charka-codegen (la nota de orden del plan los
listaba al revés): el codegen emite contra esta API. 17 tests; fmt +
clippy limpios.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 20:27:28 +00:00
parent 71a4068d12
commit 85156c1509
8 changed files with 414 additions and 6 deletions
+24
View File
@@ -3,6 +3,30 @@
Transpilador COBOL → Rust. El módulo más grande del ecosistema (Fase D
del plan macro) — el parser COBOL completo es un esfuerzo multi-mes.
### feat(charka-runtime): soporte de ejecución — campos Num y Text
Crate nuevo `crates/modules/charka/charka-runtime` — el soporte que los
programas COBOL transpilados enlazan. `charka-codegen` no emitirá Rust
autónomo: emitirá Rust que llama a esta biblioteca.
- `Num` — campo numérico (`PIC 9(5)V99`): un `Decimal` conformado a su
`Picture`. `store` trunca a la escala declarada; `store_rounded`
redondea; al desbordar la parte entera conserva los dígitos de bajo
orden (el `ON SIZE ERROR` de COBOL sin cláusula). `display` da los
dígitos con relleno de ceros y signo si corresponde.
- `Text` — campo alfanumérico (`PIC X(n)`) de longitud fija: `store`
justifica a la izquierda y rellena con espacios o trunca; `fill`
mueve las constantes figurativas (`SPACES`, `ZEROS`).
- `cobol_text_cmp` — comparación alfanumérica que rellena el más corto
con espacios.
- Reexporta `Decimal`/`Picture`/`Rounding` de `charka-bcd`.
- Construido antes que `charka-codegen` (la nota de orden del plan los
listaba al revés): el codegen emite contra esta API, así que el
runtime debe existir primero — y se verifica solo, sin el codegen.
- 17 tests: campo en cero, `VALUE` inicial, truncado y redondeo,
desbordamiento que conserva bajo orden, magnitud sin signo y signo
con signo, justificación y relleno de texto, `fill`, comparación.
### feat(charka-ir): representación intermedia — statements tipados
Crate nuevo `crates/modules/charka/charka-ir` — la tercera etapa del