Files
sergio 47c49acd47 feat(charka): STRING y UNSTRING — manejo de cadenas
Dos verbos comunes de COBOL para construir y partir cadenas.

- IR: Stmt::StringConcat { sources, into } y
  Stmt::Unstring { source, delimiter, into }.
- Parser: STRING a b DELIMITED BY SIZE INTO t END-STRING y
  UNSTRING s DELIMITED BY d INTO a b c END-UNSTRING.
- Codegen: STRING -> format! concatenado; UNSTRING -> un bloque que
  parte con str::split y reparte los trozos a los destinos.
- Shadow: el intérprete concatena / parte el texto y lo reparte.
- Corpus: programa nuevo 12-cadenas. Verificado: el intérprete sombra
  y el crate compilado por scaffold dan la misma salida.

Alcance v1: STRING con DELIMITED BY SIZE (otros delimitadores se
ignoran); sin WITH POINTER ni ON OVERFLOW.

Tests: charka-ir 25, charka-codegen 19, charka-shadow 17. fmt +
clippy limpios.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 22:09:10 +00:00

26 lines
716 B
COBOL

* corpus charka nivel 6: STRING y UNSTRING
IDENTIFICATION DIVISION.
PROGRAM-ID. CADENAS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NOMBRE PIC X(3) VALUE 'ANA'.
01 WS-APELLIDO PIC X(5) VALUE 'PEREZ'.
01 WS-COMPLETO PIC X(20).
01 WS-CSV PIC X(15) VALUE 'ROJO,VERDE,AZUL'.
01 WS-C1 PIC X(8).
01 WS-C2 PIC X(8).
01 WS-C3 PIC X(8).
PROCEDURE DIVISION.
MAIN.
STRING WS-NOMBRE DELIMITED BY SIZE
WS-APELLIDO DELIMITED BY SIZE
INTO WS-COMPLETO
END-STRING.
DISPLAY 'COMPLETO=' WS-COMPLETO.
UNSTRING WS-CSV DELIMITED BY ',' INTO WS-C1 WS-C2 WS-C3
END-UNSTRING.
DISPLAY 'C1=' WS-C1.
DISPLAY 'C2=' WS-C2.
DISPLAY 'C3=' WS-C3.
STOP RUN.