feat(charka): INITIALIZE — resetear datos y grupos

El verbo de COBOL para volver un dato (o un registro entero) a su
valor por defecto.

- IR: Stmt::Initialize { targets }. El model de charka-ir registra
  ahora los grupos y sus datos elementales (DataModel::groups,
  GroupInfo { name, members }).
- Parser: INITIALIZE name-1 name-2 ...
- Codegen y shadow: cada destino, si es un grupo, se expande a sus
  miembros; cada dato elemental se pone a 0 (numérico) o a espacios
  (alfanumérico); una tabla OCCURS resetea todos sus elementos.
- Corpus: programa nuevo 15-resetear (resetea un grupo y un escalar).
  Verificado: el intérprete sombra y el crate compilado por scaffold
  dan la misma salida.

Tests: charka-ir 28, charka-codegen 22, charka-shadow 20. fmt +
clippy limpios.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 22:28:47 +00:00
parent 7867d6830e
commit fa65f20206
15 changed files with 260 additions and 17 deletions
@@ -0,0 +1,20 @@
* corpus charka nivel 6: INITIALIZE (resetear datos y grupos)
IDENTIFICATION DIVISION.
PROGRAM-ID. RESETEAR.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-REGISTRO.
05 WS-NOMBRE PIC X(6) VALUE 'PEDRO'.
05 WS-EDAD PIC 9(3) VALUE 42.
01 WS-CONTADOR PIC 9(3) VALUE 77.
PROCEDURE DIVISION.
MAIN.
DISPLAY 'ANTES NOMBRE=' WS-NOMBRE.
DISPLAY 'ANTES EDAD=' WS-EDAD.
DISPLAY 'ANTES CONT=' WS-CONTADOR.
INITIALIZE WS-REGISTRO.
INITIALIZE WS-CONTADOR.
DISPLAY 'DESP NOMBRE=' WS-NOMBRE.
DISPLAY 'DESP EDAD=' WS-EDAD.
DISPLAY 'DESP CONT=' WS-CONTADOR.
STOP RUN.
@@ -0,0 +1,6 @@
ANTES NOMBRE=PEDRO
ANTES EDAD=042
ANTES CONT=077
DESP NOMBRE=
DESP EDAD=000
DESP CONT=000
+1
View File
@@ -23,6 +23,7 @@ salida correcta, una línea por `DISPLAY`.
| `12-cadenas` | 6 | `STRING` (concatenar) y `UNSTRING` (partir) |
| `13-inspeccion` | 6 | `INSPECT` — contar (`TALLYING`) y reemplazar |
| `14-clasifica` | 6 | `EVALUATE TRUE` y rangos `WHEN ... THRU` |
| `15-resetear` | 6 | `INITIALIZE` — resetear datos y grupos |
## Formato