feat(charka): PICTURE de edición — Z, coma de millares y punto decimal

El formateo de informes de COBOL: supresión de ceros a la izquierda,
coma de millares e inserción del punto decimal. Rebanada vertical.

- charka-lexer: el punto separador exige un espacio detrás; un punto
  pegado a un carácter (ZZ9.99) ya no es terminador, sino símbolo —
  el parser lo reensambla dentro de la cláusula PICTURE.
- charka-runtime: format_edited(valor, pic) — 9, Z, coma, punto, B.
- charka-ir: Field::edit guarda la PICTURE; el campo es texto.
- charka-codegen / charka-shadow: MOVE a un campo de edición pasa por
  format_edited antes de almacenar.
- Corpus: 19-reporte. Sombra y crate compilado dan la misma salida.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 23:00:15 +00:00
parent b3278bdb0c
commit 634a43006a
15 changed files with 264 additions and 23 deletions
@@ -0,0 +1,22 @@
* corpus charka nivel 19: PICTURE de edición (Z, coma, punto)
IDENTIFICATION DIVISION.
PROGRAM-ID. REPORTE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-A PIC 9(5)V99 VALUE 1234.5.
01 WS-B PIC 9(5)V99 VALUE 7.
01 WS-EDIT PIC Z,ZZZ,ZZ9.99.
01 WS-CONT PIC ZZZ,ZZ9.
PROCEDURE DIVISION.
MAIN.
MOVE WS-A TO WS-EDIT.
DISPLAY '[' WS-EDIT ']'.
MOVE WS-B TO WS-EDIT.
DISPLAY '[' WS-EDIT ']'.
MOVE 0 TO WS-EDIT.
DISPLAY '[' WS-EDIT ']'.
MOVE 234567 TO WS-CONT.
DISPLAY '[' WS-CONT ']'.
MOVE 89 TO WS-CONT.
DISPLAY '[' WS-CONT ']'.
STOP RUN.
@@ -0,0 +1,5 @@
[ 1,234.50]
[ 7.00]
[ 0.00]
[234,567]
[ 89]
+1
View File
@@ -27,6 +27,7 @@ salida correcta, una línea por `DISPLAY`.
| `16-bandera` | 5 | `SET` de nombres de condición (nivel 88) a `TRUE` |
| `17-rangopar` | 5 | `PERFORM ... THRU` — un rango de párrafos |
| `18-fichero` | 7 | E/S de ficheros: `SELECT`/`FD`/`OPEN`/`READ`/`WRITE`|
| `19-reporte` | 6 | PICTURE de edición (`Z,ZZ9.99`) — formato de informe|
## Formato