PDA

Ver la Versión Completa : Llamada a método como receptor de MOVE (1.61.7)


Eslopes
9 de agosto de 2026, 13:14
PowerRustCOBOL 1.61.7 - corrección

Los manejadores generados usaban una llamada a método como receptor de un MOVE.

Una propiedad puede recibir un valor; una llamada a método no. Y falla como excepción en tiempo de ejecución, al hacer clic, no al generar: el manejador se lee correctamente y revienta.

La causa habitual no es un malentendido de la sintaxis, sino un punto que falta. Una sentencia COBOL llega hasta su punto, así que una llamada :: escrita bajo un MOVE sin cerrar se convierte en el segundo campo receptor de ese MOVE, por muchas líneas en blanco que las separen.


*> MAL - el MOVE no termina, así que AddRow(...) es un receptor suyo
MOVE GLOBAL-TOTAL TO GLOBAL-TOTAL-ED

dgReceipt::AddRow("Total", GLOBAL-TOTAL-ED).

*> BIEN - el MOVE se cierra; la llamada es una sentencia propia
MOVE GLOBAL-TOTAL TO GLOBAL-TOTAL-ED.

dgReceipt::AddRow("Total", GLOBAL-TOTAL-ED).


Varios receptores bajo un mismo MOVE siguen siendo legales cuando todos son receptores:


MOVE GLOBAL-TOTAL TO GLOBAL-TOTAL-ED dgReceipt::X.


escribe el elemento editado y la propiedad X. Solo un método entre ellos es el defecto.

Las soluciones: un punto en la sentencia anterior, o la forma explícita INVOKE <control> "<método>" USING ..., que no puede interpretarse como campo receptor.

La regla ahora está en la sección :: del Event Handler Script Agent, en la lista de defectos de su Pedantic Reviewer (para que una entrega con ese fallo se detecte antes de llegar al desarrollador) y en la sección Method Invocation Syntax de la System Knowledge Base. Los proyectos existentes la reciben por el sello del prompt; un prompt editado por el desarrollador se deja intacto.

Documentación
PowerRustCOBOL/docs/developers-guide-en.md at main · CloudLandBeta/PowerRustCOBOL · GitHub (https://github.com/CloudLandBeta/PowerRustCOBOL/blob/main/docs/developers-guide-en.md)

Anthropic Claude Codex Agent