feat(charka): E/S de ficheros — SELECT/FD/OPEN/READ/WRITE/CLOSE
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>
This commit is contained in:
@@ -3,6 +3,29 @@
|
||||
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): E/S de ficheros — SELECT / FD / OPEN / READ / WRITE / CLOSE
|
||||
|
||||
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 a un
|
||||
fichero, lo cierra, lo relee con `READ ... AT END` y las muestra.
|
||||
Verificado: el intérprete sombra y el crate compilado dan la misma
|
||||
salida.
|
||||
- Alcance v1: organización «line sequential»; sin ficheros indexados
|
||||
ni relativos, sin `FILE STATUS`.
|
||||
|
||||
### feat(charka): PERFORM ... THRU como rango real de párrafos
|
||||
|
||||
`PERFORM A THRU C` ejecuta A, B y C; antes el transpilador sólo
|
||||
|
||||
Reference in New Issue
Block a user