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 8 de agosto de 2026, 23:53
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 27.10.2026 07:38
Posts Posts: 396
Likes enviados Enviados: 31
Likes recibidos Recibidos: 172
Predeterminado EXEC RUST en manejadores: handle 0 is not live
0 Inactivo Inactivo

PowerRustCOBOL 1.61.2 - corrección

Commit: A handler's EXEC RUST block failed with "handle 0 is not live" (1.61.2)

Dos defectos coincidían en el mismo manejador de eventos generado por el RAD, y ambos daban el mismo mensaje:

Código:
FFI failed: EXEC RUST cannot bind COBOL-TEXT: handle 0 is not live
1. Los elementos OBJECT REFERENCE del propio manejador no recibían objeto. Un manejador de eventos es un programa anidado con su propia WORKING-STORAGE, y sólo se construían los objetos de los elementos del programa más externo. Un elemento declarado dentro del manejador se quedaba sin handle, así que el primer bloque que intentaba enlazarlo fallaba. El mismo bloque funcionaba en cuanto el elemento se movía al formulario y se marcaba GLOBAL, y por eso el fallo parecía un problema del bloque y no de la declaración. Ahora cada programa anidado obtiene sus propios objetos, creados una vez y conservados entre llamadas igual que el elemento, y la CLASS se resuelve también con el REPOSITORY del programa que lo contiene (un manejador generado no declara ninguno).

2. MOVE / SET sobre un elemento OBJECT REFERENCE destruía el objeto. El valor se escribía en el almacenamiento del elemento, que es justamente donde vive el handle: al sobrescribirlo, el objeto quedaba inalcanzable y el siguiente bloque daba el error de arriba. SET cobol-text TO TextBox-1::Text - la forma de pasar a un bloque lo que escribe el operador - caía en esto siempre. Ahora la escritura atraviesa el handle y llega al objeto. Escribir un valor en una clase sin forma escalar (una colección, o un tipo propio) se informa como error de tipo indicando el elemento y su clase, en lugar de romper el handle en silencio.

Ejemplo

Código:
       IDENTIFICATION DIVISION.
       PROGRAM-ID. BUTTON-1--ONCLICK IS COMMON PROGRAM.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 cobol-text  USAGE IS OBJECT REFERENCE RUST-STRING.
       01 rust-result USAGE IS OBJECT REFERENCE RUST-STRING.
       PROCEDURE DIVISION.
       MAIN.
           SET cobol-text TO TextBox-1::Text
           EXEC RUST
           *rust_result = format!("{} dice hola", cobol_text);
           END-EXEC
           SET Label-1::Caption TO rust-result
           GOBACK.
Las clases que admiten esa escritura son las que tienen un único valor escalar: RUST-STRING, cualquier ancho entero, los flotantes y RUST-BOOL.

Documentación: PowerRustCOBOL/docs/developers-guide-en.md at main · CloudLandBeta/PowerRustCOBOL · GitHub

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 10:01.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.