PDA

Ver la Versión Completa : [Noticia] PowerRustCOBOL 1.56.1-1.56.2: estandar de codigo


Eslopes
3 de agosto de 2026, 10:11
El agente que escribe los manejadores de eventos ya trabaja contra el estándar de código COBOL del proyecto, y las tres cosas que impedían que ese estándar produjera código ejecutable están corregidas.

Qué exige el estándar (1.56.1). Los datos de aplicación van bajo un registro 01 ... GLOBAL con significado, en vez de un PIC elemental suelto por cada valor; los campos repetidos usan tablas OCCURS; los numéricos editados son campos de formato reutilizables, ajustados al tamaño, signo y precisión de su origen; la moneda se edita con el 9 obligatorio antes del separador (ZZ9,99 y no ZZZ,99, para que un importe pequeño siga mostrando un dígito); las tablas con valores distintos se inicializan por procedimiento en una INITIALIZE-... SECTION dedicada; y MAIN SECTION queda como plan de ejecución. El estándar va después del contrato del lenguaje y, donde ambos discrepan, manda el estándar.

EXIT PROGRAM dejó de ser un verbo que había que defender. El estándar lo exige al final de MAIN SECTION, la lista de verbos del contrato solo nombraba EXIT, y para el revisor un verbo no listado es fatal: los dos agentes se turnaban hasta agotar el presupuesto de correcciones. Nunca estuvo sin soporte. Ahora el contrato dice qué significa: el control vuelve al CALL que te alcanzó, la unidad de ejecución de COBOL-85 continúa, y tu WORKING-STORAGE conserva sus valores, así que la siguiente llamada sigue con ellos en lugar de reiniciar desde las cláusulas VALUE. Es exactamente lo que hace el intérprete — guarda las variables locales al salir y las restaura al volver, y solo CANCEL las descarta. STOP RUN (termina toda la unidad de ejecución) y GOBACK (lo genera el IDE como retorno del envoltorio) quedan marcados como los dos retornos que no son este.

Las tres correcciones (1.56.2). El estándar exigía una forma que la cadena de herramientas tiraba a la basura.

1. Las sentencias escritas directamente bajo una cabecera SECTION desaparecían al analizar. El analizador solo recogía cabeceras de párrafo; cualquier otra cosa terminaba la recolección y devolvía el control a un punto que buscaba un nombre de sección, informaba "expected section name, found MOVE" y saltaba al siguiente punto. La sección sobrevivía con la lista de párrafos VACÍA, así que el cuerpo se perdía antes de la resolución, de la comprobación de destinos de PERFORM y del intérprete. Es COBOL-85 válido y es justo lo que el estándar exige — MAIN SECTION con sus PERFORM, INITIALIZE-... SECTION con sus MOVE — de modo que cualquier manejador escrito según el documento se habría compilado en un programa que no hace nada.

2. GLOBAL no llegaba a los programas contenidos. Cada uno se analizaba con una tabla de símbolos construida solo desde su propia DATA DIVISION, así que un manejador que leía un dato del formulario — el propósito entero de declararlo GLOBAL — recibía "no está declarado en DATA DIVISION". No había respuesta legal: declararlo localmente crea una segunda copia sin relación. COBOL-85 alcanza con GLOBAL al programa que lo declara y a todo lo que contiene, subárbol incluido. El tiempo de ejecución siempre estuvo bien, porque mantiene un único entorno compartido: era el analizador rechazando lo que el intérprete ejecutaba sin problema.

3. El revisor Pedantic juzgaba con un reglamento que su especialista ya no usaba. Habría rechazado la forma exigida de cuatro maneras: EXIT PROGRAM como verbo no listado, COMP como COMP-5 ausente, una sección sin nombres de párrafo como malformada, y un dato GLOBAL del formulario como no declarado. Ahora lleva las condiciones de aceptación del propio estándar y las hace cumplir, y su lista de falsos positivos pasó de cuatro entradas a ocho.

1424 tests en verde.

Anthropic Claude Codex Agent