Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol PowerRustCOBOL Bugs
Bugs Reportes sobre bugs detecatados, validación de las correcciones.
 
Respuesta

  #1
Antiguo 2 de agosto de 2026, 19:28
Eslopes
Creador de
PowerRustCOBOL
Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por ámplios conocimientos en la materia Concurso: Tercer puesto: Ganador/a del Tercer puesto en un concurso - Issue reason: Juego  Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras 
Última Actividad 20.09.2026 13:24
Posts Posts: 357
Likes enviados Enviados: 29
Likes recibidos Recibidos: 157
Predeterminado PowerRustCOBOL 1.55.6: PERFORM fuera de alcance
0 Inactivo Inactivo

Un PERFORM que nombra un procedimiento ajeno a su propio programa es ahora un ERROR de compilación

En COBOL-85 los nombres de procedimiento son estrictamente locales al programa: no existe `GLOBAL` para ellos. Un nombre que no está declarado en el programa que lo ejecuta no puede resolverse jamás, en ninguna ejecución. Eso no es un aviso, es un error, y así se notifica ahora:

"'X' is not a paragraph or section of this program. PERFORM and GO TO reach only procedures declared in the same program; a paragraph of that name elsewhere in the compilation unit is not visible here."

El analizador semántico ya entra en los programas contenidos

Cambiar la severidad por sí solo no habría servido de nada. El analizador recorría únicamente el programa externo, que en un proyecto RAD es justo el sitio donde los agentes nunca escriben: cada manejador de evento y cada procedimiento común es un programa contenido, de modo que TODO el código que producen quedaba sin analizar. Ahora cada programa anidado se analiza por derecho propio, contra su propia tabla de símbolos, porque un nombre se resuelve contra el programa que lo declara y no contra la unidad de compilación.

Hacían falta las dos mitades, y ninguna basta por separado.

Alcance del cambio

Existía la duda razonable de que elevar esta severidad rechazara COBOL que hoy funciona. Medido sobre todo el espacio de trabajo: falló exactamente una prueba, la que se había escrito para documentar el comportamiento anterior. Nada más se movió. Se añadió además una prueba que fija que `CALL "UPDATE-RECEIPT"` — la forma correcta de alcanzar un procedimiento común — sigue sin señalarse.

Cierra el segundo límite publicado en la 1.55.4

La barrera de comprobación por compilación demuestra ahora el PERFORM sin destino y lo atribuye a la operación que lo contiene, antes de gastar una ronda de revisión. Es el defecto exacto que bloqueó un flujo de trabajo real durante tres rondas, con el revisor exigiendo PERFORM para un procedimiento común al que sólo CALL puede llegar.

Corrección de la redacción usada en la 1.55.4 y la 1.55.5

Allí se describió el defecto como "un PERFORM cuyo destino vive en otro programa". Esa redacción da a entender que PERFORM tiene un alcance entre programas que se estaba tolerando. No lo tiene. El defecto es un nombre ausente de su propio programa, y dónde viva un párrafo con ese nombre es irrelevante.

Anthropic Claude Codex Agent
Eslopes is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:19.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.