PDA

Ver la Versión Completa : [Compilador] Window-create window-remove


valpo
13 de enero de 2024, 21:30
Hola amigos, en rmcobol85 trabajaba con ventanas con los comandos WINDOW-CREATE y WINDOW-REMOTE , aca en Gnucobol no me funciona. acepta los comandos sin dar error, pero no resulta el efecto de ventanas, osea que al remover la ventana quede lo que estaba antes sin necesidad de desplegarlo nuevamente. A alguien le ha resultado? podrian enviar ejemplo?
Saludos.

Kuk
13 de enero de 2024, 23:12
@valpo, lo primero, siempre es mejor enseñarnos el código para que te podamos ayudar mejor.

Luego en cuanto a GnuCOBOL, que yo sepa no integra ningún tipo de GUI, es decir que soporta consola unicamente. Para poder generar GUI, necesitas una librería GUI de tipo LibAgar, Qt etc. o si estás en Windows puedes utilizar la WinAPI.

Con lo cual, no me queda muy claro lo de WINDOW-CREATE etc. Imagino que lo que haces es una llamada dinámica, es decir que pones lo de WINDOW-CREATE en una variable y le haces CALL a esa variable. Esto te lo va a compilar, es normal, cualquier compilador lo haría, pero en ejecución te va a saltar un ABEND ya que no va a saber qué es y "con qué se come" el WINDOW-CREATE.

No sé si me explico.

Ya nos cuentas ;)

valpo
28 de enero de 2024, 00:43
Gracias Kuk por contestar, envío ejemplo de uso de window-create , window-remove. esto funciona a nivel de consola en windows y unix con rmcobol85, pero con gnucobol en windows no lo he logrado. no resulta el efecto que debería hacer. alguien ha usado esto en algún cobol ?


IDENTIFICATION DIVISION.
PROGRAM-ID. MENU.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DATA DIVISION.
WORKING-STORAGE SECTION.


*WCB: Aquí se guardará toda la información
*para luego dibujar la ventana, podeis ponerle el
*nombre que querais, tanto a ésta como al resto.
*WINLIN: Número de lineas que va a tener la ventana.
*WINCOL: Número de columnas que va a tener la ventana.
*WINBORST: (Y)ES (N)O, si va a tener o no, borde.
*WINBORTI: Tipo de borde, hay cuatro tipos distintos.
*WINTITSI: (T)OP (B)UTTON, posición del título, arriba o abajo.
*WINTITPO: (C)ENTER (L)EFT (R)IGHT, justificación del título.
*WINTITLO: Longitud en caracteres del título.
*WINTIT: Título de la ventana.


01 WCB.
03 WINCAB PIC 999 BINARY VALUE 0.
03 WINLIN PIC 999 BINARY.
03 WINCOL PIC 999 BINARY.
03 WINLOC PIC X VALUE "W".
* (S-W)
03 WINBORST PIC X VALUE "Y".
* (Y-N)
03 WINBORTI PIC 9 VALUE 2.
03 WINBORCH PIC X VALUE "Y".
03 WINLLE PIC X.
* (Y-N)
03 WINLLECH PIC X.
03 WINTITSI PIC X VALUE "T".
* (T-B)
03 WINTITPO PIC X VALUE "C".
* (C-L-R)
03 WINTITLO PIC 999 BINARY.
03 WINTIT PIC X(64).


01 VENTANAS.
02 WIN PIC X(80) OCCURS 10 TIMES.

77 ALGO PIC X.
PROCEDURE DIVISION.
INICIO.
DISPLAY SPACES BLANK SCREEN
DISPLAY "+-----------------------------+" LINE 3 POSITION 1
DISPLAY "| |" LINE 4 POSITION 1
DISPLAY "| |" LINE 5 POSITION 1
DISPLAY "| PANTALLA INICIO |" LINE 6 POSITION 1
DISPLAY "| |" LINE 7 POSITION 1
DISPLAY "| presione Enter para abir |" LINE 8 POSITION 1
DISPLAY "| VENTANA |" LINE 9 POSITION 1
DISPLAY "| |" LINE 10 POSITION 1
DISPLAY "| |" LINE 11 POSITION 1
DISPLAY "+-----------------------------+" LINE 12 POSITION 1
ACCEPT ALGO LINE 11 POSITION 31
PERFORM ABRIR-VENTANA
DISPLAY "+------------------------------+" LINE 3 POSITION 1
DISPLAY "| |" LINE 4 POSITION 1
DISPLAY "| |" LINE 5 POSITION 1
DISPLAY "| VENTANA |" LINE 6 POSITION 1
DISPLAY "| |" LINE 7 POSITION 1
DISPLAY "|presione Enter para cerrar est|" LINE 8 POSITION 1
DISPLAY "|a ventana y deberia mostrar|" LINE 9 POSITION 1
DISPLAY "|PANTALLA INICIO sin necesidad |" LINE 10 POSITION 1
DISPLAY "|de desplegarla denuevo |" LINE 11 POSITION 1
DISPLAY "+------------------------------+" LINE 12 POSITION 1
ACCEPT ALGO LINE 11 POSITION 31
PERFORM CERRAR-VENTANA
ACCEPT ALGO LINE 11 POSITION 31.
STOP RUN.
ABRIR-VENTANA.
MOVE 10 TO WINLIN
MOVE 34 TO WINCOL
MOVE " Opciones " TO WINTIT MOVE 10 TO WINTITLO
MOVE 2 TO WINBORTI
MOVE WCB TO WIN(1)
DISPLAY WIN(1) LINE 3 POSITION 5
CONTROL "WINDOW-CREATE".



CERRAR-VENTANA.

DISPLAY WIN(1)
CONTROL "WINDOW-REMOVE".



Usa los botones de resalto de sintaxis. Para Cobol es este: https://www.cobolforo.es/images/editor/cobol_c2.png

Kuk
28 de enero de 2024, 13:22
@valpo, yo nunca he usado RM, así que lo mejor va a ser que nos digas que efecto esperas o quieres obtener. Así seguramente te podamos ayudar más ;)

No sé si esperas que se te crea una ventana GUI, si es el caso, te puedo decir ya que no va a ser posible.
Si esperas una ventana de tipo Consola, ahí seguramente podamos hacer lo que necesitas.