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

  #11
Antiguo 15 de agosto de 2026, 03:05
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 02.10.2026 23:09
Posts Posts: 369
Likes enviados Enviados: 30
Likes recibidos Recibidos: 162

PowerRustCOBOL 1.61.45-47 — la ListBox recoge, y la FileDropZone filtra

Una ListBox con dos selecciones y un conjunto marcado

Una lista lleva ahora tres cosas distintas, y el programa lee la que necesite:
  • Value / SelectedIndex — la fila ACTIVA, aquella sobre la que está el cursor, con el resaltado completo.
  • SelectedItems — la selección que el usuario construye con Ctrl (Cmd en Mac), dibujada con el mismo color atenuado. Requiere «MultiSelect».
  • CheckedItems — las filas marcadas, cuando «ShowCheckBoxes» está activo.

Con las casillas activadas no hace falta ningún modificador: las casillas son la selección múltiple, así que un clic sencillo en cualquier punto de la fila la marca, y otro la desmarca. Marcar dispara el nuevo evento onItemChecked con el conjunto completo. «CheckedItems» conserva el orden en que el usuario marcó, con los huecos que haya: no es un rango contiguo.

Además, pulsar y arrastrar recoge todas las filas que el puntero cruza, cada una una sola vez: selecciona o marca según cómo esté configurada la lista.

Código:
      *>   todas las filas marcadas, una por línea:
           MOVE LIST-1::CheckedItems TO WS-MARCADAS
      *>   …y la fila sobre la que está el cursor:
           MOVE LIST-1::Value        TO WS-ACTIVA
Una FileDropZone que sabe lo que acepta

Tres propiedades deciden qué entra y dónde queda, y las respetan las dos vías — arrastrar y el selector nativo — de modo que examinar el disco no salta el filtro:
  • AllowedExtensions — «csv, xlsx». Sin distinguir mayúsculas, con el punto o sin él. En blanco acepta cualquier archivo.
  • MaximumFileSizeKB — el archivo más grande que admite, en KB. «0» es sin límite.
  • DestinationFolder — los archivos aceptados se COPIAN allí, creando la carpeta si falta. Nunca se sobrescribe un nombre existente: un segundo report.csv queda como «report (2).csv». En blanco, los archivos se quedan donde están.

Los aceptados aparecen en «DroppedFiles» con su ruta nueva y disparan «onFilesDropped». Los rechazados no se pierden en silencio: aparecen en RejectedFiles, una línea por archivo con la ruta, un TAB y el motivo («extension» o «too-big»), y disparan el nuevo onFilesRejected. Si en una misma entrega se aceptan unos y se rechazan otros, se disparan ambos eventos.

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

Anthropic Claude Codex Agent
Eslopes is offline   Responder Con Cita
  #12
Antiguo 16 de agosto de 2026, 03:11
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 02.10.2026 23:09
Posts Posts: 369
Likes enviados Enviados: 30
Likes recibidos Recibidos: 162
Predeterminado El anfitrión multiformulario (1.61.53)
0 Inactivo Inactivo

PowerRustCOBOL 1.61.53 — el anfitrión multiformulario

Una aplicación mantiene ahora muchos formularios vivos, cada uno ejecutándose como su propio programa y con su propia WORKING-STORAGE. Hay tres puertas:
  • Open form desde un elemento de la barra lateral carga el formulario destino en el ContentPane, con onDeactivate/onActivate/onDestroy, con el aparcado "Preserve previous form" que revive la misma instancia, y con una miga de pan que permite volver.
  • OpenFormSync / OpenFormAsync abren ventanas hijas reales, dependientes de quien las llama.
  • Las acciones Open Stand Alone Form (Sync)/(Async) de la barra lateral — y los métodos OpenStandAloneFormSync / OpenStandAloneFormAsync del control SideMenu — abren ventanas hijas dependientes del shell.

Sync es implícitamente modal en los tres casos. El binario compilado incorpora un programa por cada formulario abrible; la lista de destinos del editor de menús se filtra a los formularios que cada acción puede cargar legalmente, con las comprobaciones equivalentes en tiempo de compilación; los formularios aparcados mantienen sus temporizadores en marcha; y una apertura fallida produce un error visible en ejecución y un manejador nulo.

Los bloques EXEC RUST comparten ahora un único puente de objetos por proceso, de modo que un valor puenteado debe ser Send: Rust.Rc y Rust.Weak cuentan de forma atómica por debajo, con el mismo comportamiento de siempre desde COBOL.

Guía del desarrollador:
PowerRustCOBOL/docs/developers-guide-en.md at main · CloudLandBeta/PowerRustCOBOL · GitHub

Anthropic Claude Codex Agent



Post añadido a las 22:11. Post anterior a las 20:22


PowerRustCOBOL 1.61.56 — la acción Home

Un formulario shell tiene contenido propio en el ContentPane: lo que usted dibujó en el formulario que lleva el SideMenu. Pero en cuanto un elemento del menú cargaba otro formulario en ese panel, no había vuelta atrás hacia él. El segmento raíz de la barra de migas lleva allí, pero destruye todo lo que desanda, así que volver costaba los formularios que tuviera abiertos. Mostrar una pantalla principal obligaba a construir un formulario para ella.

La nueva acción Home (main content pane) de la barra lateral restaura el panel propio del formulario shell. No lleva destino, porque no abre nada.

Home nunca destruye. El formulario que estaba en el panel queda aparcado: recibe onDeactivate, nunca onDestroy, conserva su WORKING-STORAGE, y volver a cargarlo revive esa misma instancia en lugar de arrancar una nueva — el mismo retorno instantáneo que "Preserve previous form" ya daba entre hermanos. No se retira nada, de modo que cualquier otro formulario vivo sigue su curso, ventanas hijas incluidas.

La barra de migas se reduce al formulario shell y la sección contextual del menú se vacía, porque eso es lo que muestra el panel. Home estando ya en Home no hace absolutamente nada: ni onDeactivate ni onActivate, así que un segundo clic no puede desactivar y reactivar el formulario principal.

Se ofrece únicamente en un SideMenu: un formulario con MenuBar no tiene ContentPane que restaurar, y por eso la acción no aparece allí ni arrastra un selector de destino.

Cómo se usa

En el editor de menús del SideMenu, añada un elemento y elija Home (main content pane) en el desplegable de acción. No hay destino que rellenar.

Guía del desarrollador:
PowerRustCOBOL/docs/developers-guide-en.md at main · CloudLandBeta/PowerRustCOBOL · GitHub

Anthropic Claude Codex Agent
Eslopes is offline   Responder Con Cita
  #13
Antiguo 16 de agosto de 2026, 12:41
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 02.10.2026 23:09
Posts Posts: 369
Likes enviados Enviados: 30
Likes recibidos Recibidos: 162

Tamaño de bloque en la barra de progreso

Una barra de progreso con Style = Blocks dibuja su relleno como una fila de segmentos, y hasta ahora el largo de cada bloque no era negociable. La propiedad Block size lo fija, en píxeles, sobre el eje por el que avanza la barra.

La fila aparece en el panel de propiedades en cuanto se elige el estilo Blocks, y sólo entonces: Continuous no tiene bloques que medir.

El valor por defecto es 0, que significa automático: cada bloque se dimensiona a partir del grosor de la propia barra. Un formulario que nunca toque la propiedad se ve exactamente igual que antes, y una barra alta sigue recibiendo bloques largos donde una estrecha recibe bloques cortos.

Como cualquier otra propiedad, se escribe también desde COBOL:

Código:
           MOVE 12 TO ProgressBar-1::BlockSize.
El último bloque se recorta donde llegó el valor, de manera que una barra poco avanzada muestra una porción y no un hueco vacío.

La guía del desarrollador trae la sección Styling a ProgressBar, donde Block size se explica junto a Orientation, Style, BarColor y ShowValue: PowerRustCOBOL Developer's Guide

Anthropic Claude Codex Agent
Eslopes is offline   Responder Con Cita
  #14
Antiguo 18 de agosto de 2026, 09:07
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 02.10.2026 23:09
Posts Posts: 369
Likes enviados Enviados: 30
Likes recibidos Recibidos: 162

PowerRustCOBOL 1.61.83 — el SideMenu dimensiona sus iconos por estado del raíl

Un SideMenu tenía un único tamaño de icono para sus dos estados, de modo que el tamaño elegido para acompañar discretamente a una etiqueta era el mismo que quedaba solo en un raíl de 72 puntos. Ahora hay uno para cada estado, en el inspector como Icon size (Open) e Icon size (Collapsed):
  • IconSize — los iconos de los elementos mientras la barra está abierta, junto a su etiqueta.
  • IconSizeCollapsed — los iconos en el raíl contraído, donde el icono ES la fila.

Ambas propiedades valen 22 puntos por defecto y admiten de 8 a 64. Las lee el mismo sitio en el que cada superficie construye el estado de la barra —el lienzo del Diseñador, la vista previa, Run Form y el shell en ejecución—, así que ninguna puede discrepar de las demás, y los dos valores viajan en ese estado: una superficie que contraiga el raíl después de construirlo sigue dibujando con el tamaño que corresponde.

Un formulario diseñado antes de que existiera el tamaño contraído usa el tamaño abierto en los dos estados: una propiedad nueva no puede reestilizar una barra que nadie ha tocado. Un valor demasiado pequeño para dibujarse se rechaza del mismo modo, recurriendo al otro en lugar de pintar una mota.

Cómo se usa

Seleccione el SideMenu en el Diseñador y ajuste las dos filas del inspector. Como cualquier otra propiedad, también se escriben desde COBOL:

Código:
           MOVE 20 TO SideMenu-1::IconSize
           MOVE 34 TO SideMenu-1::IconSizeCollapsed
Guía del desarrollador: PowerRustCOBOL Developer's Guide

Atentamente,
Anthropic Claude Codex Agent
Eslopes is offline   Responder Con Cita
  #15
Antiguo 27 de agosto de 2026, 09:05
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 02.10.2026 23:09
Posts Posts: 369
Likes enviados Enviados: 30
Likes recibidos Recibidos: 162

Literales de bloque en formato libre

PowerRustCOBOL incorpora una extension del lenguaje: un literal de bloque
delimitado por vallas, con la misma notacion que un bloque de codigo de
Markdown.

COBOL-85 no tiene literales de varias lineas. La continuacion es un mecanismo
de formato fijo (un guion en la columna 7), de modo que el codigo en formato
libre no tenia ninguna forma de escribir un literal que ocupara varias lineas,
ni de escribir uno lleno de comillas sin duplicarlas todas.

Como se escribe

El texto son las lineas que quedan entre las vallas, tal cual:

Código:
       MOVE
```
Hello, World!
```
       TO WS-GREETING.
WS-GREETING recibe Hello, World!

Las reglas
  • El texto empieza en la linea siguiente a la valla de apertura. Lo
    que se escriba detras de las comillas invertidas en esa linea es una
    etiqueta, igual que el "json" de Markdown, y no forma parte del texto.
  • La linea de la valla de cierre no es texto, y tampoco lo es el salto de
    linea que la precede. Por eso un bloque de una sola linea se comporta
    exactamente igual que un literal entrecomillado, sin salto final.
  • Los saltos de linea interiores si se conservan. Ese es justamente
    el proposito.
  • No hay escapes. El texto se toma literalmente, asi que las comillas y los
    apostrofos no necesitan duplicarse.

Para que sirve

Esa ultima regla es la que hace comodo el JSON, el SQL y el HTML incrustados:

Código:
       MOVE
```json
{"name": "O'Brien", "tags": ["a", "b"], "ok": true}
```
       TO WS-PAYLOAD.
       CALL "COBOL-HTTP-POST" USING WS-URL WS-PAYLOAD WS-RESPONSE.
Escrito como literal normal, cada comilla de ese JSON habria que duplicarla.

Solo en formato libre

El formato fijo tiene zona de indicador y zona de secuencia, de modo que una
linea de comillas invertidas alli significa otra cosa. En formato fijo se
rechaza con un mensaje que lo explica, en lugar de producir en silencio un
literal que nadie pidio.

Documentacion:
PowerRustCOBOL/docs/developers-guide-en.md at main · CloudLandBeta/PowerRustCOBOL · GitHub

Anthropic Claude Codex Agent
Eslopes is offline   Responder Con Cita
  #16
Antiguo 21 de septiembre de 2026, 13:34
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 02.10.2026 23:09
Posts Posts: 369
Likes enviados Enviados: 30
Likes recibidos Recibidos: 162

El control Viewer: mostrar documentos, y ahora imprimir informes COBOL en él

El Viewer es el control que muestra documentos dentro del formulario. Un programa COBOL que produce o recibe un documento ya no tiene que entregarlo a un programa externo para que alguien pueda verlo.

1. Qué lee
  • Texto plano — de cualquier tamaño, paginado. El control indexa el fichero y mantiene en memoria sólo una ventana de páginas, de modo que un registro de dos gigabytes se abre y se recorre sin detener el formulario.
  • Markdown — títulos, párrafos, tablas, listas de tareas, notas al pie, tachado y bloques de código.
  • Imágenes — PNG, JPEG, GIF, WebP, BMP, TIFF y SVG, incluida la animación.
  • PDF — su texto, su geometría de página y su búsqueda. No es un calco fiel de una página compleja, y no incluye formularios ni anotaciones.
  • HTML — un subconjunto: bloques, tipografía, colores, bordes, tablas e imágenes. No es un navegador: no ejecuta JavaScript ni CSS grid o flex.
  • Mermaid — diagramas de flujo y de secuencia.

Source acepta una ruta o una dirección web. Una URL se descarga una sola vez a un fichero local y se abre como cualquier otra ruta, fuera del hilo de dibujo. El formato se resuelve primero por el CONTENIDO y después por la extensión.

2. Qué hace con lo que lee
  • Layout — Raw (la fuente literal), Web (con formato, sin márgenes), Print (márgenes, borde y sombra de papel), Page (maquetación de impresión sobre un cuerpo negro sobre blanco) y Streamed (un solo panel sin cromo, para alojar una conversación).
  • Vista dividida — dos documentos a la vez, cada uno con su propia página, zoom, desplazamiento, búsqueda y tira de miniaturas.
  • Buscar, zoom, tamaño de letra independiente del zoom, rejilla de tarjetas con las páginas en miniatura y pantalla completa.
  • Selección de texto con el ratón, y menú contextual para copiarlo.
  • Save As escribe los BYTES ORIGINALES del documento, nunca una recodificación. Print entrega el documento al sistema de impresión del sistema operativo.

Todo lo que el operador puede hacer con el ratón lo puede hacer también el programa: cada propiedad se lee y se escribe desde COBOL.

3. Imprimir un informe COBOL directamente en el Viewer

Un informe COBOL tenía dos destinos: la impresora y un fichero. Ahora tiene un tercero, el propio control:

Código:
       SELECT REPORT-FILE ASSIGN TO VIEWER "VWR-1"
           ORGANIZATION IS MARKDOWN.
"VWR-1" es el id del control Viewer tal y como aparece en el diseñador. De FD a CLOSE el programa es el COBOL de siempre: la misma descripción de registro, el mismo OPEN OUTPUT, el mismo WRITE. Sólo cambia el destino.

Lo que decide ORGANIZATION es cómo se LEEN las líneas:
  • SEQUENTIAL — texto plano, con el control de página tradicional de un fichero de impresión.
  • MARKDOWN — Markdown, representado: títulos, tablas, énfasis.
  • HTML — HTML, representado en el subconjunto descrito arriba.

Un informe completo, de principio a fin:

Código:
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT REPORT-FILE ASSIGN TO VIEWER "VWR-1"
               ORGANIZATION IS MARKDOWN
               FILE STATUS IS WS-STATUS.

       DATA DIVISION.
       FILE SECTION.
       FD  REPORT-FILE.
       01  REPORT-LINE            PIC X(80).

       WORKING-STORAGE SECTION.
       01  WS-STATUS              PIC XX.
       01  WS-I                   PIC 9(4).

       PROCEDURE DIVISION.
       PRINT-REPORT.
           OPEN OUTPUT REPORT-FILE
           MOVE "# Ventas por region" TO REPORT-LINE
           WRITE REPORT-LINE
           MOVE "| Region | Unidades |" TO REPORT-LINE
           WRITE REPORT-LINE AFTER ADVANCING 2 LINES
           MOVE "|---|---:|" TO REPORT-LINE
           WRITE REPORT-LINE
           PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 500
               MOVE "| Norte  | 1,204 |" TO REPORT-LINE
               WRITE REPORT-LINE
           END-PERFORM
           MOVE "**Total: 602.000 unidades**" TO REPORT-LINE
           WRITE REPORT-LINE AFTER ADVANCING 2 LINES
           CLOSE REPORT-FILE.
Cada WRITE aporta una línea, sin los espacios finales del registro. Los espacios iniciales e intermedios se conservan, que es de lo que están hechas las columnas de un informe.

Cuándo aparece. En el CLOSE, en la vista 1. No antes: un informe a medio escribir no es un documento. STOP RUN cierra los ficheros abiertos, de modo que un programa que termina sin CLOSE también muestra su informe. El Layout, el Zoom, el SplitMode y el FontSize que usted fijó siguen siendo suyos.

Es un fichero de verdad. El informe se escribe en el directorio temporal del sistema operativo, con el nombre del formulario. Por eso el resto del control funciona sobre él sin esfuerzo: Save As escribe exactamente esos bytes, Print lo entrega a la plataforma, y la búsqueda, el zoom y la rejilla de tarjetas se comportan como con cualquier documento abierto por usted. Si ese directorio no se puede escribir, el informe se conserva en memoria y se muestra igualmente.

Un informe paginado. Con ORGANIZATION IS SEQUENTIAL se conserva el control de página tradicional, y los saltos que usted escribe son las páginas que el lector pasa en el Layout Page:

Código:
       PRINT-HEADINGS.
           MOVE "SALES BY REGION" TO REPORT-LINE
           WRITE REPORT-LINE AFTER ADVANCING PAGE.

       PRINT-DETAIL.
           MOVE DETAIL-LINE TO REPORT-LINE
           WRITE REPORT-LINE AFTER ADVANCING 2 LINES.
AFTER ADVANCING 2 LINES deja una línea en blanco, como en el papel. En un informe MARKDOWN esa línea en blanco no es decoración: es lo que separa un párrafo, o una tabla, del siguiente, así que ADVANCING n LINES se acepta en las tres organizaciones. ADVANCING PAGE, la cláusula LINAGE y AT END-OF-PAGE describen una página impresa, y Markdown y HTML fluyen: escribir cualquiera de las tres en un informe representado se avisa al comprobar el programa, en lugar de perder en silencio los saltos que usted pidió.

Lo que un informe no hace. No se puede leer: OPEN INPUT u OPEN I-O sobre un fichero VIEWER se rechaza con FILE STATUS 37. Necesita un formulario: un programa de consola no tiene ningún Viewer donde imprimir, y su OPEN se rechaza con 93. ASSIGN TO VIEWER sin id de control es 31. Un segundo informe cerrado sobre el mismo Viewer sustituye al primero.

4. Documentación

La guía del desarrollador, con la sección completa del Viewer y la de los informes, está en el repositorio del proyecto, en docs/developers-guide-en.md

Anthropic Claude Codex Agent
Eslopes is offline   Responder Con Cita
  #17
Antiguo 21 de septiembre de 2026, 18:39
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 02.10.2026 10:24
Posts Posts: 404
Likes enviados Enviados: 130
Likes recibidos Recibidos: 180

Última versão / em Windows

Dificuldades ao tentar fazer debug.
Exemplo:
Form: "CALL-FORM-DEMO" --> Botão "Open Called Form"
chama janela: "CALLED-FORM-DEMO" ...mas quando clico nos botões "Ok" ou "Cancel" o programa "perde-se", fica bloqueado e não retorna para "CALL-FORM-DEMO".
Usando a tecla F11 (Stemp into).
Atenção começo a fazer debug no formulário: "CALL-FORM-DEMO".






Citación del post de Eslopes Ver Mensaje
❞
El control Viewer: mostrar documentos, y ahora imprimir informes COBOL en él

El Viewer es el control que muestra documentos dentro del formulario. Un programa COBOL que produce o recibe un documento ya no tiene que entregarlo a un programa externo para que alguien pueda verlo.

1. Qué lee
  • Texto plano — de cualquier tamaño, paginado. El control indexa el fichero y mantiene en memoria sólo una ventana de páginas, de modo que un registro de dos gigabytes se abre y se recorre sin detener el formulario.
  • Markdown — títulos, párrafos, tablas, listas de tareas, notas al pie, tachado y bloques de código.
  • Imágenes — PNG, JPEG, GIF, WebP, BMP, TIFF y SVG, incluida la animación.
  • PDF — su texto, su geometría de página y su búsqueda. No es un calco fiel de una página compleja, y no incluye formularios ni anotaciones.
  • HTML — un subconjunto: bloques, tipografía, colores, bordes, tablas e imágenes. No es un navegador: no ejecuta JavaScript ni CSS grid o flex.
  • Mermaid — diagramas de flujo y de secuencia.

Source acepta una ruta o una dirección web. Una URL se descarga una sola vez a un fichero local y se abre como cualquier otra ruta, fuera del hilo de dibujo. El formato se resuelve primero por el CONTENIDO y después por la extensión.

2. Qué hace con lo que lee
  • Layout — Raw (la fuente literal), Web (con formato, sin márgenes), Print (márgenes, borde y sombra de papel), Page (maquetación de impresión sobre un cuerpo negro sobre blanco) y Streamed (un solo panel sin cromo, para alojar una conversación).
  • Vista dividida — dos documentos a la vez, cada uno con su propia página, zoom, desplazamiento, búsqueda y tira de miniaturas.
  • Buscar, zoom, tamaño de letra independiente del zoom, rejilla de tarjetas con las páginas en miniatura y pantalla completa.
  • Selección de texto con el ratón, y menú contextual para copiarlo.
  • Save As escribe los BYTES ORIGINALES del documento, nunca una recodificación. Print entrega el documento al sistema de impresión del sistema operativo.

Todo lo que el operador puede hacer con el ratón lo puede hacer también el programa: cada propiedad se lee y se escribe desde COBOL.

3. Imprimir un informe COBOL directamente en el Viewer

Un informe COBOL tenía dos destinos: la impresora y un fichero. Ahora tiene un tercero, el propio control:

Código:
       SELECT REPORT-FILE ASSIGN TO VIEWER "VWR-1"
           ORGANIZATION IS MARKDOWN.
"VWR-1" es el id del control Viewer tal y como aparece en el diseñador. De FD a CLOSE el programa es el COBOL de siempre: la misma descripción de registro, el mismo OPEN OUTPUT, el mismo WRITE. Sólo cambia el destino.

Lo que decide ORGANIZATION es cómo se LEEN las líneas:
  • SEQUENTIAL — texto plano, con el control de página tradicional de un fichero de impresión.
  • MARKDOWN — Markdown, representado: títulos, tablas, énfasis.
  • HTML — HTML, representado en el subconjunto descrito arriba.

Un informe completo, de principio a fin:

Código:
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT REPORT-FILE ASSIGN TO VIEWER "VWR-1"
               ORGANIZATION IS MARKDOWN
               FILE STATUS IS WS-STATUS.

       DATA DIVISION.
       FILE SECTION.
       FD  REPORT-FILE.
       01  REPORT-LINE            PIC X(80).

       WORKING-STORAGE SECTION.
       01  WS-STATUS              PIC XX.
       01  WS-I                   PIC 9(4).

       PROCEDURE DIVISION.
       PRINT-REPORT.
           OPEN OUTPUT REPORT-FILE
           MOVE "# Ventas por region" TO REPORT-LINE
           WRITE REPORT-LINE
           MOVE "| Region | Unidades |" TO REPORT-LINE
           WRITE REPORT-LINE AFTER ADVANCING 2 LINES
           MOVE "|---|---:|" TO REPORT-LINE
           WRITE REPORT-LINE
           PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 500
               MOVE "| Norte  | 1,204 |" TO REPORT-LINE
               WRITE REPORT-LINE
           END-PERFORM
           MOVE "**Total: 602.000 unidades**" TO REPORT-LINE
           WRITE REPORT-LINE AFTER ADVANCING 2 LINES
           CLOSE REPORT-FILE.
Cada WRITE aporta una línea, sin los espacios finales del registro. Los espacios iniciales e intermedios se conservan, que es de lo que están hechas las columnas de un informe.

Cuándo aparece. En el CLOSE, en la vista 1. No antes: un informe a medio escribir no es un documento. STOP RUN cierra los ficheros abiertos, de modo que un programa que termina sin CLOSE también muestra su informe. El Layout, el Zoom, el SplitMode y el FontSize que usted fijó siguen siendo suyos.

Es un fichero de verdad. El informe se escribe en el directorio temporal del sistema operativo, con el nombre del formulario. Por eso el resto del control funciona sobre él sin esfuerzo: Save As escribe exactamente esos bytes, Print lo entrega a la plataforma, y la búsqueda, el zoom y la rejilla de tarjetas se comportan como con cualquier documento abierto por usted. Si ese directorio no se puede escribir, el informe se conserva en memoria y se muestra igualmente.

Un informe paginado. Con ORGANIZATION IS SEQUENTIAL se conserva el control de página tradicional, y los saltos que usted escribe son las páginas que el lector pasa en el Layout Page:

Código:
       PRINT-HEADINGS.
           MOVE "SALES BY REGION" TO REPORT-LINE
           WRITE REPORT-LINE AFTER ADVANCING PAGE.

       PRINT-DETAIL.
           MOVE DETAIL-LINE TO REPORT-LINE
           WRITE REPORT-LINE AFTER ADVANCING 2 LINES.
AFTER ADVANCING 2 LINES deja una línea en blanco, como en el papel. En un informe MARKDOWN esa línea en blanco no es decoración: es lo que separa un párrafo, o una tabla, del siguiente, así que ADVANCING n LINES se acepta en las tres organizaciones. ADVANCING PAGE, la cláusula LINAGE y AT END-OF-PAGE describen una página impresa, y Markdown y HTML fluyen: escribir cualquiera de las tres en un informe representado se avisa al comprobar el programa, en lugar de perder en silencio los saltos que usted pidió.

Lo que un informe no hace. No se puede leer: OPEN INPUT u OPEN I-O sobre un fichero VIEWER se rechaza con FILE STATUS 37. Necesita un formulario: un programa de consola no tiene ningún Viewer donde imprimir, y su OPEN se rechaza con 93. ASSIGN TO VIEWER sin id de control es 31. Un segundo informe cerrado sobre el mismo Viewer sustituye al primero.

4. Documentación

La guía del desarrollador, con la sección completa del Viewer y la de los informes, está en el repositorio del proyecto, en docs/developers-guide-en.md

Anthropic Claude Codex Agent


Post añadido a las 17:39. Post anterior a las 17:23


Mensagem no arranque:
"2026-09-21T16:36:35.386866Z WARN Transparent window was requested, but the active wgpu surface does not support a `CompositeAlphaMode` with transparency."

Tenho "Transparency effects" ativo. Não sei se é alguma propriedade não suportada pela placa gráfica.



Citación del post de Joseg Ver Mensaje
❞
Última versão / em Windows

Dificuldades ao tentar fazer debug.
Exemplo:
Form: "CALL-FORM-DEMO" --> Botão "Open Called Form"
chama janela: "CALLED-FORM-DEMO" ...mas quando clico nos botões "Ok" ou "Cancel" o programa "perde-se", fica bloqueado e não retorna para "CALL-FORM-DEMO".
Usando a tecla F11 (Stemp into).
Atenção começo a fazer debug no formulário: "CALL-FORM-DEMO".
Joseg is offline   Responder Con Cita
  #18
Antiguo 22 de septiembre de 2026, 01:01
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 02.10.2026 23:09
Posts Posts: 369
Likes enviados Enviados: 30
Likes recibidos Recibidos: 162

Citación del post de Joseg Ver Mensaje
❞
Mensagem no arranque:
"2026-09-21T16:36:35.386866Z WARN Transparent window was requested, but the active wgpu surface does not support a `CompositeAlphaMode` with transparency."
Tenho "Transparency effects" ativo. Não sei se é alguma propriedade não suportada pela placa gráfica.

O wgpu no Windows não suporta transparência contra o desktop. MS sendo MS.



Post añadido a las 20:01. Post anterior a las 20:01


Citación del post de Joseg Ver Mensaje
❞
Dificuldades ao tentar fazer debug.

Ciente, nova versão em breve.
Eslopes is offline   Responder Con Cita
  #19
Antiguo Ayer, 03:37
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 02.10.2026 23:09
Posts Posts: 369
Likes enviados Enviados: 30
Likes recibidos Recibidos: 162
Predeterminado PowerDemo3: doce formularios de diseño responsivo
0 Inactivo Inactivo

PowerDemo3: doce formularios que muestran el diseño responsivo

PowerDemo3 incluye ahora doce formularios de ejemplo que recorren todo lo que el diseño responsivo de PowerRustCOBOL sabe hacer: anclajes, acoplamiento, contenedores Flex, Grid y Flow, puntos de ruptura, escalado de fuentes, anidamiento, control desde COBOL, límites de la ventana y el modo de escalado heredado de PowerCOBOL. Cada uno es un formulario completo y funcional, con su código COBOL, y sirve a la vez de demostración y de referencia para copiar.

Dónde están. Abra el proyecto examples/PowerDemo3, ejecútelo y, en el menú lateral, entre en General: los doce aparecen como Responsive: …. Los archivos están en forms/General/responsive-*.cfrm.

Cómo usarlos. Cambie el tamaño de la ventana: más estrecha, más ancha, más baja, más alta. En la parte inferior de cada formulario una barra de estado muestra en todo momento el tamaño de la ventana, el punto de ruptura activo y el factor de escala de las fuentes, tal como los calcula el motor. Los manejadores onLoad, onResize y onBreakpointChanged la actualizan leyendo me::Width, me::Height, me::Breakpoint y me::FontScale.

[HR][/HR]

1. Responsive: anchors and limits — responsive-anchors-form

Muestra todas las combinaciones de anclaje (Anchor) y los límites de tamaño.
  • El escenario: un panel anclado a los cuatro bordes que contiene nueve bloques, uno por cada combinación horizontal × vertical: Top,Left, Top, Top,Right, Left, ninguno, Right, Bottom,Left, Bottom y Bottom,Right. Un bloque mantiene la distancia a cada borde que nombra su leyenda; sin ningún borde en un eje, conserva su centro en la misma fracción del contenedor.
  • El bloque vivo: cuatro casillas (Top, Bottom, Left, Right) construyen desde COBOL el texto del anclaje y lo asignan al bloque mientras el formulario corre. Con Left y Right marcadas, el bloque se estira; sin ninguna, flota de forma proporcional. Así se prueban las 16 combinaciones posibles.
  • Estiramiento y límites: un campo Top,Left,Right que se estira, otro con MaxWidth 560 que deja de crecer y se queda a la izquierda, otro con MinWidth 240 que la ventana no puede comprimir, un botón Top,Right que sigue al borde y un bloque proporcional.
Código:
           MOVE WS-ANCHOR TO A-LIVE::Anchor
      *> por ejemplo "Top,Right," - una cadena vacía es "ningún borde"
2. Responsive: docking — responsive-dock-form

El acoplamiento (Dock) clásico de una aplicación de escritorio.
  • Una cabecera Dock = Top, una barra de estado Dock = Bottom, la navegación Dock = Left, un inspector Dock = Right y el área principal Dock = Fill, que se queda con lo que sobra. El orden de dibujo decide quién toma cada borde primero.
  • El acoplamiento es recursivo: dentro de la navegación, un título Top y una lista Fill; dentro del inspector, un título Top, un botón Bottom y un texto Fill; dentro del área principal, una barra de herramientas Top (que a su vez es una fila Flex con un buscador que crece), un pie Bottom y una cuadrícula de datos Fill.
  • Un botón no acoplado, anclado Bottom,Right, flota sobre el contenido: los controles anclados se colocan respecto al área completa del formulario, no respecto a lo que dejan los acoplados.
  • Tres botones cambian el acoplamiento desde COBOL: la cabecera pasa abajo, la navegación pasa a la derecha y el inspector se oculta (un panel oculto no ocupa borde y el área principal crece).
Código:
           MOVE "Right" TO PNL-NAV::Dock
           MOVE 0 TO PNL-INSPECT::Visible
3. Responsive: flex — responsive-flex-form

Seis pestañas, una por cada tema de los contenedores Flex (una línea —o varias— de elementos que se reparten el espacio):
  • Direction: FlexDirection Row, RowReverse, Column y ColumnReverse, lado a lado.
  • Justify content: Start, Center, End, SpaceBetween, SpaceAround y SpaceEvenly.
  • Align items: Stretch, Start, Center y End con elementos de alturas distintas; AlignSelf por elemento; una columna centrada.
  • Wrap and align content: NoWrap (los elementos se encogen), Wrap, WrapReverse y cada AlignContent, además de RowGap y ColumnGap distintos.
  • Grow, shrink, basis: FlexGrow 0/1/2/3 repartiendo el espacio libre; FlexBasis en píxeles, porcentaje y Auto; FlexShrink 0/1/3 (estreche la ventana: el 0 conserva sus 300 px); y cómo MinWidth/MaxWidth limitan el reparto.
  • Order - and from COBOL: cinco bloques diseñados A B C D E que Order muestra como D C B E A, y doce botones que cambian en vivo la dirección, la justificación, el espacio, el orden y el crecimiento.
Código:
           MOVE "Column" TO OR-LIVE::FlexDirection
           MOVE "SpaceEvenly" TO OR-LIVE::JustifyContent
           MOVE 1 TO OR-3::FlexGrow
4. Responsive: grid — responsive-grid-form

Cinco pestañas sobre los contenedores Grid (filas y columnas que se reparten el espacio):
  • Track sizes: pistas en px, %, fr y Auto, MinMax(150px, 1fr), Repeat(3, 1fr 60px) y filas 30px 1fr Auto.
  • Auto-fill gallery: Repeat(AutoFill, MinMax(170px, 1fr)) — tantas columnas como quepan; la galería pasa de seis columnas a tres al estrechar la ventana.
  • Placement and spans: celdas explícitas (GridRow, GridColumn), ColumnSpan y RowSpan, elementos colocados automáticamente en las celdas libres, una fila fuera de GridRows que amplía la cuadrícula implícita y un elemento automático de dos columnas que baja a la fila siguiente.
  • Alignment: JustifyItems y AlignItems (Stretch, Start, Center, End) y, por elemento, JustifySelf y AlignSelf.
  • A data-entry form: un formulario de alta real en cuatro columnas (etiqueta, campo, etiqueta, campo) que, por debajo de 1024 px, pasa a dos columnas gracias a un punto de ruptura que sobrescribe GridColumns y los ColumnSpan.

5. Responsive: flow — responsive-flow-form

El panel que distribuye sus elementos como palabras en un párrafo, tal como lo conocen los programadores de PowerCOBOL y WinForms.
  • Cada FlowDirection: LeftToRight, RightToLeft, TopDown y BottomUp.
  • WrapContents = false: una sola línea, recortada.
  • FlowBreak: el elemento marcado termina su línea.
  • Una barra de botones cambia en vivo la dirección, el ajuste, el espacio y el salto del primer grupo.
  • El propio formulario tiene LayoutMode = Flex (una columna): título, texto, barra y cuadrícula son sus elementos.

6. Responsive: breakpoints — responsive-breakpoints-form

Un formulario, cinco disposiciones. La tabla de puntos de ruptura es propia: Phone (0 px), Tablet (600), Laptop (900), Desktop (1200, el diseño) y Wide (1600), con FontScaling = Stepped, de modo que cada uno tiene su propio factor de letra.
  • Phone: desaparece la barra lateral, aparece un botón de menú, una sola columna de tarjetas, dos tarjetas se ocultan (y se tratan como ausentes), el título se reduce y el botón Contact us pasa de la esquina a una barra a todo lo ancho (cambian su anclaje, su posición y su tamaño).
  • Tablet: la barra lateral se convierte en una fila acoplada arriba (Dock y FlexDirection sobrescritos) y el contenido pasa a dos columnas.
  • Laptop: barra lateral más estrecha y dos columnas.
  • Wide: barra lateral más ancha, cuatro columnas, más espacio y un título mayor.
Desde COBOL se puede fijar un punto de ruptura, volver al automático o sustituir la tabla entera:
Código:
           MOVE "Phone" TO me::Breakpoint
           MOVE SPACES TO me::Breakpoint
           MOVE "Narrow:0:1;Broad:800:1.15" TO me::Breakpoints
Las sobrescrituras de nombres que la tabla nueva no tiene se conservan, inactivas, hasta que esos nombres vuelven.

7. Responsive: font scaling — responsive-fonts-form

El texto sigue a la ventana.
  • FontScaling = Fluid: cada letra se multiplica por ancho de la ventana ÷ ancho diseñado, entre MinFontScale (0,8) y MaxFontScale (1,6).
  • Por control: ScaleFont desactivado (siempre 16 pt), MinFontSize (nunca menos de 14), MaxFontSize (nunca más de 18) y una etiqueta AutoSize medida al tamaño con el que se pinta.
  • Botones para cambiar a None, Fluid o Stepped, fijar el factor total y cambiar los límites.
Código:
           MOVE "Stepped" TO me::FontScaling
           MOVE 1.4 TO me::FontScale
           MOVE 0 TO me::FontScale
      *> 0 devuelve el factor al cálculo automático
8. Responsive: nested containers — responsive-nested-form

Cinco niveles de contenedores, cada uno con su propio modo:
  • El formulario es una Grid (cabecera que ocupa dos columnas, contenido y barra de estado).
  • En una celda, un grupo Flow; en la otra, una columna Flex con relleno distinto por lado (PaddingLeft).
  • Dentro de la columna, una TabControl con controles anclados en una página y, en la otra, una Grid de cuatro grupos Flex.
  • Por debajo de 1024 px desaparece el grupo Flow y la columna de la derecha ocupa toda la fila. Tres botones hacen lo mismo desde COBOL (una escritura de COBOL prevalece sobre la del punto de ruptura), quitan el relleno y pasan la cuadrícula interior a una sola columna.

9. Responsive: from COBOL — responsive-runtime-form

Todas las propiedades de diseño se pueden escribir mientras el formulario corre, y el diseño se recalcula en el mismo fotograma. Dieciséis botones actúan sobre un escenario con cinco bloques:
  • Cambiar el modo del contenedor: Absolute, Flex en fila o en columna, Grid de 3 × 2, Flow.
  • Cambiar la justificación, el espacio, el crecimiento y el ancho máximo de un bloque.
  • Mover un bloque 20 px: en un formulario responsivo una escritura de geometría es en pantalla, de modo que lo que COBOL escribe es lo que vuelve a leer.
  • Leer la geometría: X, Y, Width y Height devuelven el rectángulo ya calculado, no el diseñado.
  • Desactivar y activar el diseño responsivo (me::Responsive) y cambiar el tamaño mínimo de la ventana (me::MinFormWidth).
Código:
           MOVE "Grid" TO RT-STAGE::LayoutMode
           MOVE "Repeat(3, 1fr)" TO RT-STAGE::GridColumns
           MOVE RT-1::X TO WS-NUM
           ADD 20 TO WS-NUM
           MOVE WS-NUM TO RT-1::X
           MOVE 0 TO me::Responsive
10. Responsive: collision limits — responsive-collide-form

La ventana se detiene antes de que dos controles separados en el diseño lleguen a tocarse.
  • Al estrechar: un campo anclado a la izquierda y un botón anclado a la derecha; la ventana no baja de unos 725 px, donde se encontrarían.
  • Al ensanchar: un campo que se estira hacia un bloque fijo; la ventana no pasa de unos 1019 px.
  • Al alargar: unas notas ancladas arriba y abajo que crecen hacia una línea fija.
  • Junto a ellos, un mínimo declarado (MinFormWidth 640, MinFormHeight 540): en altura manda el declarado, en anchura manda la colisión.

11. Responsive: obsolete scaling — responsive-obsolete-form

Para quien migra desde PowerCOBOL: un formulario de alta clásico, sin anclajes y sin diseño responsivo, que sigue a la ventana en proporción gracias a ObsoleteScalingStyle.
  • Ocho botones aplican los estilos 0 a 7 en vivo: 1 redimensiona, 2 recoloca, 4 escala la letra, y se suman (7 = todo).
  • La barra de herramientas, acoplada arriba, y la línea de estado, anclada abajo, quedan fuera del escalado: un control con anclaje o acoplamiento propio conserva ese comportamiento.
  • Una etiqueta con ScaleFont desactivado mantiene sus 13 pt con cualquier estilo, y un GroupBox escala con sus hijos.
Código:
           MOVE 7 TO me::ObsoleteScalingStyle
12. Responsive: dashboard — responsive-dashboard-form

Todo junto en una pantalla de aplicación real:
  • Una cabecera acoplada arriba que es una fila Flex: logotipo, título que crece, buscador que se encoge hasta su mínimo y dos botones.
  • Una navegación acoplada a la izquierda (columna Flex con un espaciador que empuja Settings al fondo) y una barra de estado abajo.
  • El área principal es una Grid de cuatro columnas con cuatro tarjetas de indicadores (con barra de progreso), un gráfico de barras, uno de líneas, una lista de clientes, una cuadrícula de pedidos y un gráfico circular; los datos de los gráficos se cargan en onLoad.
  • Letra fluida entre 0,85 y 1,3.
  • Medium (600-1023 px): navegación más estrecha, dos columnas, sin gráfico de líneas, sin gráfico circular ni lista de clientes. Compact (menos de 600 px): sin navegación ni buscador y con un título menor.

[HR][/HR]

Tres comportamientos que conviene conocer (los formularios se construyeron teniéndolos en cuenta, y la Guía los explica):
  • Una pista fr nunca es más estrecha que el elemento más ancho tal como se dibujó. Escriba MinMax(160px, 1fr) para indicar hasta dónde puede estrecharse la columna.
  • Un formulario o contenedor cuyo LayoutMode es una columna Flex toma la altura de su contenido: dibuje a su altura mínima útil el elemento que debe llenar el espacio y dele FlexGrow 1.
  • Un Flow con WrapContents desactivado recorta en una sola línea; sus elementos no limitan el tamaño de la ventana.

Documentación completa, con la tabla de los doce formularios: PowerRustCOBOL Developer's Guide, sección Responsive examples in PowerDemo3.

Anthropic Claude Codex Agent
Eslopes is offline   Responder Con Cita
  #20
Antiguo Ayer, 10:24
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 02.10.2026 10:24
Posts Posts: 404
Likes enviados Enviados: 130
Likes recibidos Recibidos: 180

No caminho da perfeição!

Já fiz testes. Esta muito interessante as potencialdiades que oferece em relação à responsividade, neste caso supera o PowerCobol.
Ainda é necessario mais testes para entender melhor os vários comportamentos, é sempre uma area que não é propriamente simples.
Joseg 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:53.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.