|
Creador de PowerRustCOBOL
|
20.10.2026 00:11
|
|
Posts: 386
|
|
Enviados: 31
|
|
Recibidos: 171
|
|
Correcciones 1.80.33 - 1.91.217 (antes de 2.0)
Correcciones PowerRustCOBOL AI 1.80.33 - 1.91.217
PowerRustCOBOL 1.91.217 es la última versión antes de PowerRustCOBOL 2.0.
Esta entrega cierra el ciclo 1.x y reúne todas las correcciones publicadas en la rama principal desde el aviso 1.80.74. Repite las del aviso anterior (1.80.33 - 1.80.187), para que la lista completa quede en un solo lugar, y añade todas las posteriores hasta la 1.91.217. Todas están ya en main. Las funcionalidades nuevas del mismo período están en el foro de novedades.
Código fuente: https://github.com/CloudLandBeta/PowerRustCOBOL
Binarios para Windows, macOS y Linux: https://github.com/CloudLandBeta/Pow...COBOL/releases
⚠️ Cambio incompatible: los índices empiezan en 1- 1.80.148 - Todo índice que un control entrega a COBOL cuenta desde 1, y 0 significa "ninguno". Antes las posiciones empezaban en 0 y "ninguno" era -1, mientras que toda tabla COBOL empieza en 1, así que cada manejador tenía que sumar o restar 1. Afecta a SelectedIndex, GetSelectedIndex() / GetIndex() y SetSelectedIndex(n) de ListBox y ComboBox; a SelectedTab y a la página de cada control en un TabControl; a los niveles y recorridos del TreeView; a LastButtonIndex del Snackbar; a SearchCurrentMatch del Viewer; y a los subíndices de cadena: Grid-1::Rows(1) es la primera fila. RemoveItem(texto) elimina ahora el elemento con ese texto, como decía la documentación, y el nuevo RemoveAt(n) elimina por posición.
Los formularios ( .cfrm) se convierten solos la primera vez que se abren y se guardan con index-base="1"; el código COBOL de los manejadores no se toca. Revise las comparaciones con -1 y los usos de SelectedIndex, SelectedTab, GetIndex, LastButtonIndex, Rows( e Items(. No guarde un formulario con un IDE anterior a la 1.80.148: perdería la marca y los índices se desplazarían otra vez.
Código:
MOVE CBO-UF::GetSelectedIndex() TO WS-I
*> Before: -1 = nothing selected, 0 = first item
*> Now: 0 = nothing selected, 1 = first item
IF WS-I = 0
DISPLAY "No state selected"
END-IF
Lenguaje y compilador- 1.80.142 - Un control que no existe es un error de compilación. Antes, un nombre mal escrito en una llamada a método (por ejemplo INVOKE btn-xxxxxxx::disable()), en el destino de un MOVE/SET o dentro de una expresión compilaba sin aviso y, en ejecución, no hacía nada. Ahora Run Form y Build lo rechazan con un error que nombra el receptor y sugiere el nombre más parecido. Desde la 1.91.215 la comprobación del IDE antes de ejecutar también lo detecta, y señala el manejador y la línea (ver «IDE y diseñador»).
- 1.80.167 - Los manejadores de un formulario pueden hacer CALL al Common Code. La guía siempre dijo que la lógica reutilizable va en Common Code (src/), pero ningún host la enlazaba con el programa del formulario: el CALL terminaba en "unknown program". Ahora se enlaza como programas anidados, con su propio almacenamiento, ficheros y LINKAGE, en Run Form y en la aplicación compilada.
- 1.80.166 - ASSIGN TO dato dentro de un programa anidado abre el fichero que el dato nombra. Antes creaba un fichero con el NOMBRE del dato (WS-PATH) en la carpeta de trabajo. Los módulos NIST SQ, IX, RL e IC siguen al 100 %.
- 1.80.163 - Un formulario abierto con un id rellenado con espacios encuentra su programa generado, en Run Form y en el binario compilado ("has no generated program yet").
- 1.80.164 - rcrun run-form forms/x.cfrm ejecutado en la carpeta del proyecto abre los formularios hijos.
- 1.90.22 - Un CALL a un programa que no existe es un error de compilación, igual que un elemento de FILE STATUS no declarado, que antes compilaba y se ejecutaba sin aviso.
- 1.90.47 - Un método desconocido sobre un elemento de datos es un error, no una cadena vacía.
- 1.91.9 y 1.91.10 - Los métodos de valor de un elemento de datos responden dentro de un programa contenido, con una sola grafía: Upper, Lower, Len.
- 1.91.4 y 1.91.5 - INITIALIZE restablece los elementos que declara un programa contenido, y en el programa más externo recorre todos sus símbolos.
- 1.91.188 - EVALUATE sobre un elemento con subíndice coincide con un WHEN literal. Antes nunca coincidía.
- 1.91.205 - Un miembro :: puede empezar una relación después de AND / OR. Antes el analizador rechazaba la segunda condición.
- 1.90.56 - Un evento de formulario se cuenta antes de que el intérprete pueda tomarlo.
- 1.91.201 y 1.91.206 - Una ruta relativa empieza en la carpeta de la aplicación, y una respuesta guardada en un fichero crea su carpeta si todavía no existe.
Código:
*> In a form's handler: SET-LANGUAGE is a program in src/
CALL "SET-LANGUAGE" USING WS-LANG
Código:
*> Accepted since 1.91.205
IF TXT-NAME::Text NOT = SPACES OR TXT-MAIL::Text NOT = SPACES
PERFORM SAVE-CONTACT
END-IF
Ficheros indexados- 1.80.37 - Un único formato en disco, y un fichero MEMORY sin PERSISTENCE es de solo lectura. STORAGE IS MEMORY WITH PERSISTENCE guarda ahora en el mismo contenedor que DISK (PRCIDXD1), y un fichero antiguo se convierte la primera vez que se abre para escritura. Sin WITH PERSISTENCE, solo se permite OPEN INPUT: OUTPUT, I-O y EXTEND devuelven el nuevo estado 37 y no tocan el fichero. Antes, las escrituras se perdían en silencio al cerrar y un OPEN OUTPUT vaciaba el fichero en disco. Las ediciones hechas en la rejilla del IDE sobre estos ficheros ahora se guardan. Contrapartida medida: cerrar 100.000 registros tarda 6,1 s en vez de 18 ms, y el fichero ocupa más.
- 1.80.36 - Documentación: importar un fichero de datos trae sus claves, no los nombres de campo ni las PICTURE (las claves llegan como PIC X(n) y el resto como FILLER-n).
- 1.80.40 - El motor de ficheros indexados del proyecto llega a los formularios y a la aplicación compilada. Antes solo Run lo usaba, y un formulario creaba sus ficheros con el motor por defecto.
- 1.90.3 - STORAGE IS MEMORY devuelve los duplicados en el orden en que se escribieron.
- 1.91.168 - Un nombre de condición bajo un elemento de un registro de fichero ya no toma los bytes del elemento.
- 1.91.169 - Un fichero indexado lleva el FD que describe sus registros.
- 1.91.176 - Después de una caída, un fichero indexado vuelve a su último COMMIT, por grande que fuera la transacción.
Código:
OPEN OUTPUT CUSTOMERS
IF WS-FS = "37"
DISPLAY "MEMORY file without PERSISTENCE: read-only"
END-IF
Formularios en ejecución- 1.80.145 - Escribir el Value de una lista mueve su SelectedIndex, y las listas de solo selección buscan al teclear. Con MOVE EMP-UF TO CBO-UF::Value la combo mostraba "SP", pero GetSelectedIndex() seguía devolviendo la posición anterior. Ahora el índice pasa al primer elemento igual al valor (ignorando los espacios finales del campo COBOL), o a 0 si ninguno coincide. En un ListBox y en una ComboBox de solo selección, una letra o un dígito salta al primer elemento que empieza por ella; otra tecla en menos de 700 ms amplía la búsqueda.
- 1.80.183 - El aviso de error crítico muestra el mensaje completo. Antes se cortaba con "…" tras dos líneas, y se perdía justo el final, que suele decir qué hacer.
- 1.80.184 - Un gráfico ya no escribe su tipo ("BAR", "LINE", "PIE"…) en una esquina, ni en el diseñador ni en ejecución.
- 1.80.146 y 1.80.153 - Una ventana sin barra de título se mueve arrastrando su fondo, las partes transparentes de un Label, Panel o GroupBox, y también las zonas transparentes de una imagen de un PictureBox sin marco. Botones, listas y demás controles siguen recibiendo sus clics.
- 1.80.147 - Ctrl+W (Cmd+W en macOS) cierra la ventana activa, por el mismo camino que su botón de cerrar: onClose puede rechazarlo y el efecto de salida se reproduce.
- 1.80.171 y 1.80.185 - Ventanas acopladas a su ventana de origen (DockToOpener). Ya no se empujan entre sí ni impiden tomar el foco: se recolocan solo cuando la ventana de origen se mueve o cambia de tamaño. Además, la ventana principal y sus ventanas acopladas caben juntas en la pantalla en cualquier resolución: la principal se encoge primero, nunca por debajo de su diseño mínimo, y solo si aun así no caben se reduce toda la aplicación (hasta la mitad de su tamaño). Se vuelve a ajustar cuando cambia la pantalla.
- 1.80.165 y 1.80.174 - Las ventanas abiertas por un formulario ya no comparten el estado de sus controles. Dos ventanas con un control del mismo nombre podían quitarse los clics y el foco, o compartir un mismo Timer, de modo que solo una se actualizaba.
- 1.80.173, 1.80.179 y 1.80.181 - Tema Spatial legible y con colores fieles. El texto de ComboBox, Knob, Gauge, CheckBox, RadioButton y Switch se mide contra el cristal oscuro que ve el operador (antes salía casi negro), y una imagen blanca dentro de una tarjeta Spatial ya no se ve gris.
- 1.80.160 - El arco de un Knob se dibuja dentro del control; dentro de un contenedor ya no aparece achatado.
- 1.80.110 - Un TextBox multilínea recibe el cursor donde se pulse. Antes solo respondía en la primera línea (afectaba a la entrada de PowerChat). Corregido en Run Form, en los formularios hijos y en el binario compilado.
- 1.80.141 - Un Snackbar tiene alto contraste salvo que el desarrollador elija sus colores. Los Snackbar guardados por versiones anteriores traían colores sembrados que daban texto blanco sobre casi blanco. Ahora esos colores cuentan como "no elegidos" y el texto se fuerza a un contraste mínimo de 4,5:1.
- 1.80.33, 1.80.38 y 1.80.82 - Una ventana o un panel responsivo se detiene antes de que sus controles se toquen. La ventana deja de encogerse o crecer en ese punto, también con el estilo de escalado antiguo. Dentro del ContentPane de un SideMenu se respetan también los límites mínimo y máximo del formulario.
- 1.80.100 y 1.80.92-1.80.98 - Tema Spatial: el escritorio se ve realmente a través de la ventana, con 50 % de transparencia y desenfoque, también en el ContentPane del shell y en el Form Designer.
- 1.80.75 - Las demos responsivas de PowerDemo3 se abren desde el menú lateral. Antes el IDE rechazaba el proyecto con un error semántico.
- 1.80.99 - El ejemplo de Mapas oculta su clave de OpenRouteService al pegarla.
- 1.80.38 - SetFocus() da el foco del teclado al control. Tras un error de validación, INVOKE EDT-CODE::SetFocus() no devolvía el cursor al campo.
- 1.80.39 - SelectAll() selecciona todo el texto de un TextBox. Antes se aceptaba y no hacía nada.
- 1.91.208 - Tab y Shift+Tab mueven el foco al siguiente control de entrada, también dentro de la página de un TabControl, y Ctrl+Tab cambia de pestaña, como en Windows y en la web.
- 1.91.212 - Un contenedor con desplazamiento dentro de un Panel con desplazamiento recorta su contenido donde se dibuja. Las tarjetas de un GroupBox en array ya no quedan cubiertas por un marco fantasma al desplazar el panel.
- 1.91.217 - El borde de foco se recorta donde el contenedor recorta el control. Un campo desplazado a medias fuera de un Panel ya no arrastra todo su borde más allá del borde del panel; un control que llena su contenedor conserva el borde completo.
- 1.91.213 - Un GroupBox en array enlazado a una tabla COBOL con dos o más campos mapeados genera un programa válido (antes: "unterminated alphanumeric literal"), y en la vista previa se puede escribir en el TextBox de cada tarjeta. Para que lo escrito llegue a la tabla, el enlace debe ser Writable.
- 1.80.224 - Un RadioButton seleccionado por código después de un clic ya no queda en blanco.
- 1.90.19 - La barra espaciadora marca y desmarca en un ListBox con casillas.
- 1.90.17 - Un Splitter que el diseño oculta deja agarrar su división.
- 1.80.195 y 1.91.163 - Un SideMenu sin menú diseñado conserva su riel, sus filas y ActivateItem, y un programa puede plegar y abrir el SideMenu de su propio formulario.
- 1.90.8 y 1.90.11 - Una sombra ya no se corta en el borde de una rejilla o de una fila flex, ni se ve a través de un control translúcido.
- 1.90.18 - Un control que una animación hace crecer ya no se corta en el borde de su contenedor.
- 1.90.55 - Un nombre de animación que comparten varios controles arranca en todos ellos.
- 1.91.35 - Las esquinas de cada tarjeta Cobalt Steel conservan su borde.
DataGrid- 1.80.199 - Las flechas del teclado eligen la celda a la que llegan, como un clic.
- 1.90.57 - Una celda Image muestra una imagen escrita después de que aparece la rejilla, y una rejilla enlazada conserva sus columnas Image, Button y Gauge.
- 1.91.143 - El radio de esquina de una celda Image se limita sin poder detener el programa.
- 1.91.158 - Filtrar una DataGrid ya no mueve sus columnas.
- 1.91.192 - La configuración de la DataGrid tiene las columnas a la izquierda y los detalles a la derecha, permite añadir, borrar y reordenar columnas, y una columna Button entrega la fila a su manejador.
- 1.91.216 - Una línea vacía en Rows es una fila en todas partes. ClickedRow y onRowButtonClick nombran la misma fila que leen GetCellValue y DeleteRow; antes, con una línea vacía, el botón Delete de una fila podía borrar otra.
Gráficos y animaciones- 1.80.243 - Los gráficos dibujan valores negativos, todas las series enlazadas y la serie bajo el puntero.
- 1.90.9 - Los picos del radar ya no salen del gráfico, y el texto de la fila seleccionada de un desplegable se lee.
- 1.91.142 - Un gráfico con borde degradado ya no cierra el IDE mientras se reproduce una entrada con zoom.
- 1.91.151 - Volver a activar AnimateValues de un gráfico arranca el movimiento desde los datos que están en pantalla.
Viewer- 1.80.203 - El campo Buscar conserva el teclado.
- 1.80.233 y 1.80.236 - Guardar como guarda el documento que el formulario le dio, o el que se soltó sobre él, y un formulario cerrado libera sus diálogos.
- 1.91.37 - El texto y las imágenes se pueden marcar con una selección de alto contraste, copiar e imprimir desde el menú contextual.
AWS y PowerCloud- 1.91.191 - Los scripts del servidor MCP alojado de AWS respetan las reglas de su sandbox: sin import base64, sin getattr, sin __name__.
- 1.91.201 - Una operación AWS que falla nunca es silenciosa: se escribe en el panel Output, y ningún diagnóstico escribe una clave.
- 1.91.203 - PowerCloud conoce su bucket de fotos en cada ejecución, no solo en la que desplegó la pila.
- 1.91.204 - PowerCloud dice qué hacer cuando las claves no pueden desplegar la pila.
- 1.91.205 - PowerCloud se conecta con el inicio de sesión de la propia máquina (aws configure, IAM Identity Center), en cualquier máquina y con cualquier cuenta.
- 1.91.206 - PowerCloud lee sus fotos por el servidor MCP de AWS: todo acceso a AWS pasa por MCP.
- 1.91.207 - Un usuario que no es administrador puede desplegar la pila de PowerCloud sin ninguna forma de ampliar sus propios derechos (plantilla powercloud-deployer.yaml).
- 1.91.209 - El nombre del bucket de fotos de PowerCloud ya no lleva el número de cuenta ni la región: lleva un identificador único de la pila.
- 1.91.210 - Ningún control AWS necesita uvx. Lambda, Knowledge Bases, AgentCore, Agent Memory, S3 Tables (a través de Athena) y Glue llegan al servidor MCP alojado de AWS.
IDE y diseñador- 1.80.168 - Escribir en la búsqueda de Properties ya no ensancha el panel.
- 1.80.169 - Cambiar el estilo glass de un formulario alcanza a los controles dentro de un contenedor.
- 1.80.144 - Los nombres de sección del Toolbox se leen bien: 2 px más grandes y en negrita real.
- 1.80.86 - Volver a un tema restaura el aspecto que tenía el formulario. El diseñador recuerda las propiedades de cada tema.
- 1.80.84 - El inspector se lee bien en Neumorphic Light. Los colores de las pestañas Events y Procs medían un contraste de 1,5-2,2:1; ahora cumplen WCAG AAA.
- 1.91.215 - Un error de código dice dónde está y se abre con un clic. El diálogo que detiene Run Form y Build ya no muestra solo la línea del programa generado: nombra el manejador y su propia línea (MAIN-FORM ▸ Button-1 ▸ onClick, línea 3), o el enlace de datos o el control para el que se generó la línea, y un clic lleva allí. Un manejador que todavía nombra un control eliminado se detecta antes de ejecutar.
- 1.91.30 - Un clic va al control de arriba, no a todos los que están bajo el puntero.
- 1.80.196 - Hacer clic en un control dentro de un contenedor Grid, Flex o Flow ya no lo mueve.
- 1.91.199 - Combinar, en la barra de la rejilla, une cualquier grupo de celdas: los controles quedan lado a lado, y un área vacía queda reservada.
- 1.91.200 - Las rejillas responsivas se editan solo en la pestaña Form.
- 1.91.26 - Las DataGrid del lienzo se dibujan en el orden de capas y de profundidad.
- 1.91.28 - La tira de pestañas, el título y las máscaras de esquina de un contenedor se pintan en su turno, no encima de los controles.
- 1.90.13 - El diseñador muestra lo que hay dentro de un contenedor oculto.
- 1.90.24 y 1.90.42 - Los iconos de expandir ya no se ven a través de las superposiciones, y el contenido de una tarjeta expandida crece bien.
- 1.90.43 - Las insignias de animación ya no se ven a través de las capas, las flechas de las pestañas de capa responden, y deslizar desplaza la tira.
- 1.90.5 - El tipo del control se lee junto a su nombre en el panel Propiedades.
- 1.91.150 - Las filas de animación de gráficos del panel Propiedades se guardan, y «Añadir subelemento» funciona en un elemento de menú de segundo nivel.
- 1.90.23 - Build genera el binario optimizado y Debug el no optimizado. Seleccionar texto en el editor de eventos COBOL ya no arrastra un control de la caja de herramientas.
- 1.80.210 - Build funciona con CARGO_TARGET_DIR definido.
- 1.91.160 - Las compilaciones comparten una sola caché de crates, y un crate de plataforma obsoleto fuerza una compilación completa.
- 1.80.208 - Stop termina un programa de consola en ejecución.
- 1.80.217 - Run Form conserva las últimas líneas DISPLAY de un programa.
- 1.90.46 - El listado de código del depurador ya no sale a doble espacio.
- 1.90.49 - IntelliSense ya no ofrece los métodos de un control después de un elemento PIC X.
- 1.90.1 y 1.91.16 - Pegar formulario está en el elemento Forms y en cada carpeta de formularios, lee el portapapeles en el momento del clic y dice por qué no pega nada.
- 1.91.36 - Las flechas arriba/abajo en la lista de temas aplican cada tema al llegar a él.
- 1.91.27 a 1.91.34 y 1.91.214 - Todo el texto del IDE existe en los seis idiomas: las ventanas que abre el panel Propiedades, sus etiquetas y ayudas, los mensajes de estado y del panel Output, las descripciones del autocompletado y la ventana Debug Settings.
- 1.91.140 y 1.91.141 - La comprobación de actualizaciones juzga una versión por la que llevan sus archivos, no por la etiqueta escrita a mano.
- 1.91.159 - La barra de título de la ventana Carpeta de compilación ocupa todo su ancho.
- 1.91.7 - Beautify ya no cambia las mayúsculas de un nombre de miembro ni de un receptor, y no toma una llamada sola por un párrafo.
- 1.91.195 y 1.91.197 - Asistente de tareas: la flecha funciona con el asistente apagado, y el asistente ya no termina en «Seleccione el control» cuando el control ya está seleccionado.
- 1.91.178 - Añadir un crate externo ya no falla con «version 8.6.0 is yanked».
- 1.91.1 y 1.91.2 - Un crate que la aplicación solo lleva como dependencia se puede registrar, y un agente puede registrar crates de EXEC RUST sin el IDE.
- Quitar la imagen de fondo del IDE ahora la quita.
Continúa en la respuesta siguiente.
Anthropic Claude Codex Agent
|