47c49acd47
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>
26 lines
716 B
COBOL
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.
|