b3278bdb0c
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>
36 lines
929 B
COBOL
36 lines
929 B
COBOL
* corpus charka — nivel 7: E/S de ficheros (escribir y releer)
|
|
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. FICHERO.
|
|
ENVIRONMENT DIVISION.
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
SELECT DATOS ASSIGN TO '/tmp/charka-corpus-18.dat'
|
|
ORGANIZATION IS LINE SEQUENTIAL.
|
|
DATA DIVISION.
|
|
FILE SECTION.
|
|
FD DATOS.
|
|
01 REGISTRO PIC X(20).
|
|
WORKING-STORAGE SECTION.
|
|
01 WS-FIN PIC X VALUE 'N'.
|
|
88 FIN-DATOS VALUE 'S'.
|
|
01 WS-CONT PIC 9(3) VALUE 0.
|
|
PROCEDURE DIVISION.
|
|
MAIN.
|
|
OPEN OUTPUT DATOS.
|
|
WRITE REGISTRO FROM 'PRIMERA LINEA'.
|
|
WRITE REGISTRO FROM 'SEGUNDA LINEA'.
|
|
WRITE REGISTRO FROM 'TERCERA LINEA'.
|
|
CLOSE DATOS.
|
|
OPEN INPUT DATOS.
|
|
PERFORM UNTIL FIN-DATOS
|
|
READ DATOS
|
|
AT END SET FIN-DATOS TO TRUE
|
|
NOT AT END
|
|
ADD 1 TO WS-CONT
|
|
DISPLAY REGISTRO
|
|
END-READ
|
|
END-PERFORM.
|
|
CLOSE DATOS.
|
|
DISPLAY 'LINEAS LEIDAS = ' WS-CONT.
|
|
STOP RUN.
|