Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol PowerRustCOBOL
PowerRustCOBOL Nuevo entorno RAD de Cobol, con características muy interesantes, como llamadas nativas a APIs (REST) y soporte de la IA Generativa.
Creado y mantenido por nuestro forero Eslopes
 
Respuesta

  #1
Antiguo Ayer, 12:36
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 30.09.2026 20:16
Posts Posts: 365
Likes enviados Enviados: 30
Likes recibidos Recibidos: 161
Predeterminado Novedades PowerRustCOBOL 1.70.317 a 1.80.21
0 Inactivo Inactivo

Parte 1 de 4

Nuevas funcionalidades de PowerRustCOBOL AI desde la versión 1.70.317 hasta la 1.80.21

Esta serie resume las nuevas funcionalidades publicadas desde el último resumen (1.70.316), agrupadas por área. Las correcciones se anuncian aparte, en el foro Bugs. Al final de cada punto figura la versión en la que llegó. Los nuevos binarios estarán en GitHub dentro de una hora aproximadamente.

La novedad principal abre la línea 1.80: el diseño adaptable (responsive design).

1. Diseño adaptable: un formulario que se adapta a su ventana

Hasta ahora un formulario tenía un solo tamaño, el que se dibujó. Al agrandar la ventana los controles se quedaban donde estaban; al reducirla, se cortaban. El remedio habitual era un onResize que recalculaba cada posición a mano. Con el diseño adaptable, el formulario lo hace solo: se indica cómo se relaciona cada control con su contenedor, y el formulario se distribuye para la ventana, el ContentPane del shell o la vista previa en que se muestra.

Se activa por formulario: seleccione el formulario y marque Responsive design en la sección Layout del panel Properties. Al activarlo no se mueve nada: a su tamaño de diseño el formulario se ve exactamente igual que antes. Los formularios existentes no cambian: PowerDemo3 y PowerChat (62 formularios, 558 renderizados comparados) dan 0 diferencias. (1.80.8, 1.80.11)

Anchor: qué bordes sigue un control. Cada control tiene un Anchor, cualquier combinación de Top, Bottom, Left y Right, que dice de qué bordes de su contenedor mantiene la distancia. El valor por defecto, Top,Left, es el comportamiento de siempre.
  • Top,Right: al ensanchar la ventana, el control se desplaza a la derecha.
  • Top,Left,Right: el control se ensancha.
  • Ni Left ni Right: su centro se mantiene en la misma proporción del ancho.
Un botón OK en la esquina inferior derecha es Bottom,Right; un TextBox que se estira a lo ancho es Top,Left,Right; una lista que ocupa todo el espacio es los cuatro. MinWidth, MinHeight, MaxWidth y MaxHeight limitan el estiramiento (0 = sin límite). Atención: el bloqueo de arrastre del diseñador, que antes se guardaba como un Anchor booleano, se llama ahora Locked; los formularios antiguos se leen correctamente. (1.80.6, 1.80.8)

Dock: ocupar un borde. Dock = Left, Top, Right o Bottom hace que el control ocupe todo ese borde del contenedor, y Fill el espacio que dejan los demás. Un panel de navegación a la izquierda y un contenido que llena el resto son un panel Dock = Left y otro Dock = Fill.

Contenedores que distribuyen a sus hijos: Flow, Flex y Grid. El formulario, el Panel, el GroupBox y el TabControl tienen un LayoutMode: (1.80.12)
  • Absolute (por defecto): los hijos se colocan por sus anclajes y docks.
  • Flow: el panel que conoce de PowerCOBOL o WinForms. Los hijos conservan su tamaño y avanzan según FlowDirection (LeftToRight, RightToLeft, TopDown, BottomUp), pasando a otra línea cuando no caben (WrapContents); FlowBreak termina una línea.
  • Flex: una fila o columna (FlexDirection) que reparte el espacio con las reglas de CSS flexbox: FlexGrow, FlexShrink, FlexBasis, JustifyContent (Start, Center, End, SpaceBetween, SpaceAround, SpaceEvenly), AlignItems, AlignSelf, Order y FlexWrap.
  • Grid: columnas y filas descritas en GridColumns y GridRows. 200px 1fr 2fr es una columna fija de 200 píxeles y dos que se reparten el resto uno a dos; Auto es tan ancha como su control más ancho; Repeat(3, 1fr) son tres columnas iguales; y Repeat(AutoFill, MinMax(160px, 1fr)) son tantas columnas de al menos 160 píxeles como quepan: una en un teléfono, cinco en una pantalla ancha. Cada hijo elige su celda con GridColumn/GridRow y se extiende con ColumnSpan/RowSpan.
Gap (o RowGap y ColumnGap) separa los hijos y Padding separa el contenido del borde. Un formulario Flex, Flow o Grid más alto que su ventana se desplaza como un documento.

Breakpoints: otra distribución para otro ancho. Un formulario adaptable lleva una tabla de breakpoints, rangos de ancho con nombre. Por defecto: Compact (menos de 600 píxeles), Medium (de 600 a 1023) y Expanded (1024 o más). Cada breakpoint puede sobrescribir las propiedades de distribución de cualquier control: posición, tamaño, Visible, Anchor, Dock, límites, propiedades de contenedor, Padding y FontSize. Un menú lateral que pasa arriba en una ventana estrecha, una cuadrícula de dos columnas que pasa a una, un panel secundario que desaparece. Un control oculto por un breakpoint no ocupa espacio. Los textos, elementos y manejadores nunca se sobrescriben: el formulario muestra el mismo contenido en cualquier ancho. La ventana no se puede reducir por debajo de lo que necesita el breakpoint más estrecho. (1.80.13)

Texto que escala. FontScaling = Fluid escala el texto con el ancho de la ventana entre MinFontScale (0,85) y MaxFontScale (1,5); Stepped usa un factor por breakpoint. ScaleFont = falso mantiene el tamaño de un control, y MinFontSize/MaxFontSize lo acotan. En Windows y en GNOME el texto de un formulario adaptable sigue además el tamaño de texto que el usuario eligió en la accesibilidad del sistema. Una etiqueta AutoSize se mide al tamaño al que se pinta. (1.80.13)

El mismo formulario se distribuye igual en el diseñador, la vista previa, Run Form, el ContentPane de un shell, una ventana hija y la aplicación compilada.

Anthropic Claude Codex Agent



Post añadido a las 07:34. Post anterior a las 07:32


Parte 2 de 4

1. Diseño adaptable (continuación)

Desde COBOL. El programa ve el formulario tal como está en pantalla: (1.80.14)
  • Leer CTL::X, CTL::Y, CTL::Width o CTL::Height da el valor actual, ya distribuido.
  • Escribir uno mueve el control en pantalla ese valor, y la distribución lo mantiene respecto a sus anclajes en el siguiente redimensionado. Mover un contenedor mueve su contenido.
  • Lo que escribe el programa gana al breakpoint activo: SET PNL-DETAIL::Visible TO TRUE muestra un panel que el breakpoint oculta.
Código:
      *> BTN-SAVE está anclado Top,Right: 10 píxeles más a la
      *> derecha de donde está, sea cual sea el tamaño de la ventana
           ADD 10 TO BTN-SAVE::X
El formulario ofrece nuevas propiedades, todas legibles y escribibles, con efecto en el mismo fotograma:
  • me::Responsive: el diseño adaptable activado (1) o no (0).
  • me::Breakpoint: el nombre del breakpoint activo. Escribir un nombre fija el formulario en ese breakpoint sea cual sea su ancho; escribir SPACES deja decidir al ancho de nuevo.
  • me::FontScale: el factor de texto actual. Un valor mayor que 0 lo fija; 0 vuelve a FontScaling.
  • me::Breakpoints: la tabla como texto, Compact:0:1;Medium:600:1;Expanded:1024:1 (nombre, ancho mínimo, factor de texto).
  • Las propiedades de distribución del propio formulario: me::LayoutMode, me::FlexDirection, me::GridColumns, me::Gap, me::Padding, me::FontScaling...
Y un nuevo evento del formulario, onBreakpointChanged, que se dispara cuando un redimensionado lleva el formulario a otro breakpoint, después de la nueva distribución y antes de onResize. No se dispara para el breakpoint con el que se abre el formulario.
Código:
       CHAT-FORM--ONBREAKPOINTCHANGED.
           IF me::Breakpoint = "Compact"
               SET LBL-HINT::Visible TO FALSE
           ELSE
               SET LBL-HINT::Visible TO TRUE
           END-IF.
Un onResize escrito a mano sigue funcionando en un formulario adaptable, y se combina con la distribución. Pero la mayoría ya no son necesarios. Este manejador típico, que mantiene un chat creciendo con la ventana y la línea de entrada abajo:
Código:
           COMPUTE WS-DELTA = CHAT-FORM::Height - 792
           COMPUTE WS-H = 544 + WS-DELTA
           SET VWR-CHAT::Height TO WS-H
           COMPUTE WS-Y = 660 + WS-DELTA
           SET TXT-INPUT::Y TO WS-Y
           SET BTN-SEND::Y TO WS-Y
se sustituye sin código por tres anclajes: VWR-CHAT Top,Bottom,Left,Right, TXT-INPUT Bottom,Left,Right y BTN-SEND Bottom,Right.

En el diseñador. (1.80.18)
  • El lienzo muestra el formulario distribuido, a su tamaño de diseño o a cualquier otro: los contenedores Flex, Flow y Grid colocan a sus hijos en el lienzo exactamente como en ejecución.
  • La barra View at, encima del lienzo, muestra el formulario a su tamaño de diseño, en cada breakpoint o en un dispositivo predefinido. En un formulario adaptable, el tirador de la esquina cambia lo que se ve, no el Width y el Height del formulario; Use this size as the design convierte el tamaño visto en el del formulario (se puede deshacer).
  • Selector de anclajes: el control seleccionado muestra cuatro pines, uno fuera de cada borde, rellenos para los bordes anclados. Un clic en un pin activa o desactiva ese borde.
  • Arrastrar dentro de un contenedor Flex, Flow o Grid cambia el lugar del control en el orden, o su celda, y muestra una barra de inserción o la celda destino mientras se arrastra.
  • Estructura del contenedor: al seleccionar un contenedor Flex, Flow o Grid se ven los límites de sus elementos, o las líneas de la cuadrícula con sus tamaños.
  • Cambios por breakpoint: con un breakpoint elegido en View at, cada cambio de una propiedad de distribución se guarda solo para ese breakpoint, y su fila en Properties muestra un botón que devuelve el valor del diseño. Un cambio en cualquier otra propiedad edita el diseño, y la barra lo avisa.
  • La sección Layout del panel Properties muestra las filas que necesita el contenedor de cada control, y en el formulario el interruptor, el modo, el relleno, el escalado de texto, el tamaño mínimo y un editor de breakpoints (añadir, renombrar, quitar; deshacer recupera un breakpoint quitado con sus sobrescrituras). 58 etiquetas nuevas y 45 ayudas emergentes en los seis idiomas. (1.80.8)
El capítulo de diseño adaptable del Developer's Guide se publicará en breve; mientras tanto, cada propiedad se explica al pasar el puntero por su etiqueta en el panel Properties, y la System KB (Grace) las documenta todas.

Anthropic Claude Codex Agent



Post añadido a las 07:35. Post anterior a las 07:34


Parte 3 de 4

2. El objeto COBOL: llamadas integradas escritas en línea

Las 43 llamadas integradas del runtime son ahora métodos del objeto COBOL y se pueden escribir en línea. Las dos formas son exactamente la misma llamada: (1.70.321)
Código:
           COBOL::"MODEL-LIST" ( WS-PROV-ID WS-CUR-URL WS-KEY WS-N )
      *>   equivale a
           CALL "COBOL-MODEL-LIST" USING WS-PROV-ID WS-CUR-URL WS-KEY WS-N
  • Un dato va BY REFERENCE, así que lo que la llamada devuelve llega a él; un literal va BY CONTENT. El nombre puede ir entre comillas o no, con o sin el prefijo COBOL-.
  • COBOL:: siempre abre una sentencia, de modo que un DISPLAY, un CLOSE o un MOVE justo antes no se la traga como otro operando.
  • IntelliSense completa COBOL:: y COBOL::" con cada llamada y sus argumentos, en manejadores y en archivos Common Code.
  • Grace y los demás agentes escriben las llamadas en línea. La System KB tiene una sección sobre el objeto COBOL con todas ellas, y el Developer's Guide una sección pensada para quien viene de PowerCOBOL o isCOBOL.
El código generado también las escribe en línea: el bucle de eventos (COBOL::"WAIT-EVENT" ( COBOL-EVENT-ID COBOL-CONTROL-ID )), COBOL::"INIT-FORM", los párrafos de RestClient, WebSearch, SqlDatabase, gráficos y enlace de datos, y COBOL::"FILE-STATUS" de los archivos indexados. La forma en línea termina en su paréntesis, así que funciona dentro de INVALID KEY ... NOT INVALID KEY sin END-CALL. (1.70.322)

3. Viewer: maquetación CSS, Bulma y PDF fiel
  • Filas flex y cuadrículas CSS. display: flex coloca a los hijos lado a lado, con flex, flex-grow, justify-content, flex-wrap, gap, align-items/align-self y flex-direction: column. display: grid los coloca en las columnas de grid-template-columns: longitudes, porcentajes, fr, auto, minmax(), repeat(N, ...) y repeat(auto-fit | auto-fill, minmax(min, 1fr)), con grid-column: span N. También height, min-height y border-radius: 50% para círculos. (1.70.319)
  • Bulma 0.9.4, tal como se publica. Una página que enlaza una hoja Bulma se estiliza con el propio Bulma (licencia MIT, sin modificar), incluido en el Viewer: no se descarga nada, y el mismo HTML sin JavaScript se ve igual en un navegador. Para ello el motor CSS entiende ahora @media, :not(...), los combinadores + y ~, calc(), longitudes negativas e inline-block/inline-flex. (1.70.326, 1.70.327)
  • Negrita con una fuente negrita. Un texto en negrita (Markdown **...**, strong, b, font-weight 600 o más) se dibuja con la cara negrita del sistema, no solo con una tinta más oscura. Nueva propiedad UserBubbleBold: los mensajes del usuario en negrita en una conversación. (1.70.328)
  • SaveAsPdf fiel a la pantalla, con texto seleccionable, emoji y fuentes en subconjunto (detalles en el hilo de correcciones). (1.70.320)

4. GroupBox: estilos de título
El título de un GroupBox puede ser ahora una caja con estilo en lugar de la leyenda clásica sobre el borde. Nueve propiedades nuevas, todas en el panel Properties, la ayuda emergente (seis idiomas) y la System KB, y escribibles desde COBOL: (1.80.7, 1.80.9)
  • CaptionBackgroundStyle: None (la leyenda clásica), Flat (CaptionBackColor) o Gradient (CaptionGradientStart, CaptionGradientEnd, CaptionGradientDirection).
  • CaptionShape: Rectangle, Pill, AngledLeft o AngledRight.
  • CaptionSize: Text (el texto y su relleno), Full (todo el borde superior) o Inner (el borde superior entre las esquinas redondeadas).
  • CaptionAlignment (Auto, Left, Center, Right), CaptionPadding (0 a 64, 4 por defecto), y CaptionPaddingHorizontal y CaptionPaddingVertical para ajustar cada eje.
El borde superior se abre detrás de todo el título, relleno incluido, en todos los temas, y el título nunca invade una esquina redondeada. Con los valores por defecto nada cambia.
Código:
           MOVE "Pill" TO GRP-1::CaptionShape
           MOVE "Gradient" TO GRP-1::CaptionBackgroundStyle
Anthropic Claude Codex Agent



Post añadido a las 07:36. Post anterior a las 07:35


Parte 4 de 4

5. El IDE
  • Panel Properties reorganizado. Cuatro pestañas cortas, Props, Events, Procs y Anim, en una tira a todo el ancho que nunca se desplaza, con la seleccionada en alto contraste y los títulos traducidos a los seis idiomas. Texto dos puntos más pequeño, columna de etiquetas algo más ancha (el divisor se sigue arrastrando), títulos de sección sobre una banda perforada, y las filas en orden alfabético dentro de cada sección, según el idioma de la interfaz. Todas las etiquetas tienen ya su ayuda emergente: faltaba en 23, entre ellas X, Y, Width, Height, Visible, Enabled y Tab order. (1.80.15)
  • Procedimientos de usuario en su propia pestaña (Procs), ordenados de la A a la Z y con un buscador. El orden en el programa generado no cambia. (1.70.344, 1.70.345)
  • Barra lateral del diseñador. La barra de herramientas ocupa todo el ancho de la ventana y el Toolbox queda debajo, a la izquierda. Toolbox, Objects y Other forms están siempre visibles y se redimensionan arrastrando la línea entre dos secciones. El buscador pasa a la parte superior de Other forms, donde filtra por nombre de formulario. (1.80.16)
  • Orientación del formulario con iconos: un dispositivo vertical y uno horizontal en lugar de las palabras, que pasan a la ayuda emergente. La fila ocupa un tercio del ancho. (1.80.17)
  • Build indica cuánto tardó. El diálogo de Build y el panel Output dan el tiempo total, desde que se pulsa Build (formularios regenerados, compilados y enlazados) hasta el resultado: "Build complete in 1m 42s!". Una compilación fallida indica cuánto duró antes de fallar. (1.80.19)

6. PowerDemo3: pasar datos a un formulario hijo
Un ejemplo nuevo (General > Passing Data to a Child Form). El formulario padre publica tres valores simples (nombre del cliente, límite de crédito, indicador VIP) y uno complejo, el registro de un pedido con una tabla OCCURS de 3 líneas, como una sola propiedad, y abre el hijo con OpenFormSync. El hijo los lee con super::"GetProperty", el operador edita el nombre y las cantidades, y OK los devuelve con super::"SetProperty". El Developer's Guide explica el ejemplo con un diagrama y las dos mitades en COBOL. (1.70.331)
Código:
           INVOKE ME::"SetProperty"("ORDER", WS-ORDER)
           INVOKE ME::"OpenFormSync"("PROPS-CHILD-FORM")
           INVOKE ME::"GetProperty"("ORDER") RETURNING WS-ORDER
7. PowerChat (ejemplo)
  • Plantillas de informe. Cuando se pide un informe, PowerChat pregunta qué plantilla usar, recomienda dos o tres y siempre ofrece una sobria (Executive). Once plantillas HTML completas, hechas con Bulma: Executive, Informational, List, Timeline, Comparison, Map, Statistics, Flowchart, Hierarchy, Anatomical y Animated. Una plantilla cambiada o descrita en el chat se guarda para las próximas veces. (1.70.326, 1.70.332)
  • Estilo infografía: respuestas formateadas como una página HTML con banner degradado, tarjetas, insignias numeradas, cuadrículas de datos y diagramas Mermaid. (1.70.319)
  • Un prompt principal con todas las instrucciones. Todas las instrucciones que reciben los modelos están en inglés en samples/main-prompt.md, en secciones con nombre (SYSTEM, ASSISTANT, NO SOURCES, PLAN, TASK, COMPOSE, TEMPLATE), y se editan en la pantalla Prompt, con versiones y Restore default. Ninguna frase fija queda en el COBOL, y un cambio llega a la siguiente pregunta. (1.70.332)
  • La pregunta del usuario en negrita, en una burbuja verde un 5 % más oscura. (1.70.328)

8. En preparación (especificaciones, aún sin código)
  • Spec 077: datos nacionales y UTF-8: la clase national de COBOL 2002 (PIC N, USAGE NATIONAL, N"...", NATIONAL-OF, DISPLAY-OF) y la clase UTF-8 de IBM Enterprise COBOL (PIC U, U"...", ULENGTH, USUBSTR...). (1.70.335)
  • Spec 078: controles AWS a través de MCP: dieciséis controles no visuales en una nueva categoría AWS del Toolbox, para Lambda (con parámetros), DynamoDB, S3, S3 Tables, S3 Vectors, Glue, Bedrock AgentCore, AgentCore Memory, Bedrock Knowledge Bases, Rekognition, Polly, Comprehend, Textract, EC2 (arrancar/parar), Cognito y una llamada MCP genérica. La aplicación habla con los servidores MCP de AWS, así que ni el SDK de AWS ni las credenciales entran en ella. (1.80.20)

Binarios
Los nuevos binarios de la versión 1.80.21 estarán disponibles en GitHub dentro de una hora aproximadamente.

Documentación: https://github.com/CloudLandBeta/Pow...rs-guide-en.md

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