4d9ce11b1e
El pipeline COBOL->Rust queda completo (7 crates) y validado de punta a punta. charka-shadow certifica que el transpilador preserva la semántica del COBOL original con una ejecución sombra: un intérprete que corre el Ir directamente sobre charka-runtime, sin compilar nada. Es una segunda ruta de ejecución, independiente del código que emite charka-codegen — si la sombra y el transpilado divergieran, sería un bug. - interpret(&Ir) -> Outcome ejecuta el IR y captura las líneas de DISPLAY; run_source(&str) corre el pipeline completo. - Tope de pasos (Halt::StepLimit): un bucle que no termina se corta en vez de colgarse. - Módulos: field (datos -> campos vivos) / interp (el motor). Corpus nuevo crates/modules/charka/corpus/ — 7 programas COBOL de complejidad graduada (01-hola .. 07-clasificar) con sus salidas esperadas verificadas a mano: DISPLAY, aritmética con GIVING, IF/ELSE, PERFORM TIMES/UNTIL, grupos, COMPUTE con paréntesis, ROUNDED, IF anidado con AND. Material de prueba del pipeline entero. 11 tests (los 7 del corpus + fuente vacío, STOP RUN, tope de pasos, error de léxico); fmt + clippy limpios. No hay GnuCOBOL en la máquina: la referencia v1 es el corpus; un modo futuro diferenciará contra el compilador real. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
17 lines
423 B
COBOL
17 lines
423 B
COBOL
* corpus charka — nivel 4: PERFORM UNTIL en línea (factorial)
|
|
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. FACTORIAL.
|
|
DATA DIVISION.
|
|
WORKING-STORAGE SECTION.
|
|
01 WS-N PIC 9(2) VALUE 6.
|
|
01 WS-I PIC 9(2) VALUE 1.
|
|
01 WS-FACT PIC 9(8) VALUE 1.
|
|
PROCEDURE DIVISION.
|
|
MAIN.
|
|
PERFORM UNTIL WS-I > WS-N
|
|
MULTIPLY WS-I BY WS-FACT
|
|
ADD 1 TO WS-I
|
|
END-PERFORM.
|
|
DISPLAY 'FACTORIAL DE 6 = ' WS-FACT.
|
|
STOP RUN.
|