El formateo de informes de COBOL: supresión de ceros a la izquierda,
coma de millares e inserción del punto decimal. Rebanada vertical.
- charka-lexer: el punto separador exige un espacio detrás; un punto
pegado a un carácter (ZZ9.99) ya no es terminador, sino símbolo —
el parser lo reensambla dentro de la cláusula PICTURE.
- charka-runtime: format_edited(valor, pic) — 9, Z, coma, punto, B.
- charka-ir: Field::edit guarda la PICTURE; el campo es texto.
- charka-codegen / charka-shadow: MOVE a un campo de edición pasa por
format_edited antes de almacenar.
- Corpus: 19-reporte. Sombra y crate compilado dan la misma salida.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
El gran hueco que faltaba para el COBOL real: el procesamiento de
ficheros secuenciales. Una rebanada vertical por los seis crates.
- charka-parser: la ENVIRONMENT division ya no se ignora — se parsea
FILE-CONTROL (SELECT name ASSIGN TO "ruta"); del FILE SECTION se
asocia cada FD con su registro 01. Program::files.
- charka-runtime: tipo CobFile — un fichero «line sequential» (cada
registro una línea). Lectura: carga a memoria. Escritura: acumula y
vuelca al cerrar.
- charka-ir: Ir::files y los statements Open/Close/Read/Write. READ
lleva sus bloques AT END / NOT AT END.
- charka-codegen: un campo CobFile por fichero en el struct Program;
los verbos emiten llamadas al runtime.
- charka-shadow: el intérprete hace E/S de ficheros real.
- Corpus: programa nuevo 18-fichero — escribe tres líneas, las relee
con READ ... AT END y las muestra. Verificado: el intérprete sombra
y el crate compilado por scaffold dan la misma salida.
Alcance v1: organización line sequential; sin ficheros indexados ni
relativos, sin FILE STATUS.
Tests: charka-parser 17, charka-runtime 19, charka-ir 30,
charka-codegen 25, charka-shadow 23. fmt + clippy limpios.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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>