# Corpus COBOL de charka Programas COBOL de prueba, de complejidad **graduada**, para ejercitar el pipeline completo del transpilador (lexer → parser → IR → codegen) y el validador en sombra `charka-shadow`. Cada programa `NN-nombre.cob` viene con su `NN-nombre.expected`: la salida correcta, una línea por `DISPLAY`. | programa | nivel | qué ejercita | | ------------------- | ----- | -------------------------------------------------- | | `01-hola` | 1 | el programa mínimo — un `DISPLAY` de literal | | `02-aritmetica` | 2 | datos, `ADD`/`SUBTRACT`/`MULTIPLY` con `GIVING` | | `03-condicional` | 3 | `IF` / `ELSE` / `END-IF` | | `04-bucle` | 4 | `PERFORM n TIMES`, un párrafo aparte, `ADD` in situ| | `05-factorial` | 4 | `PERFORM UNTIL` en línea, `MULTIPLY` in situ | | `06-nomina` | 5 | grupos, `COMPUTE` con paréntesis, `ROUNDED`, V99 | | `07-clasificar` | 5 | `IF` anidado, condiciones con `AND` | | `08-varying` | 4 | `PERFORM VARYING` — el bucle con variable de control| | `09-evaluar` | 5 | `EVALUATE` — el `case` de COBOL, `WHEN` / `OTHER` | | `10-condicion` | 5 | nombres de condición (nivel 88) en `IF` | | `11-tabla` | 6 | tablas (`OCCURS`) y referencias con subíndice | | `12-cadenas` | 6 | `STRING` (concatenar) y `UNSTRING` (partir) | | `13-inspeccion` | 6 | `INSPECT` — contar (`TALLYING`) y reemplazar | ## Formato Los fuentes están en **formato libre** de COBOL (la línea entera es código; `*` al inicio es comentario). El comparador del validador **ignora los espacios finales** de cada línea — un campo `PIC X(n)` se muestra con su relleno de espacios, que aquí se omite por legibilidad. ## La salida esperada Las `.expected` se derivaron a mano de la semántica de COBOL'85. Cuando GnuCOBOL esté disponible, `charka-shadow` podrá regenerarlas desde el compilador de referencia y diferenciar contra él — el modo «sombra» pleno (original vs transpilado).