Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   GnuCOBOL (OpenCOBOL) (https://www.cobolforo.es/forumdisplay.php?f=90)
-   -   [Compilador] Window-create window-remove (https://www.cobolforo.es/showthread.php?t=1713)

valpo 13 de enero de 2024 21:30

Window-create window-remove
 
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 ?

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. MENU.
  3.        ENVIRONMENT DIVISION.
  4.        CONFIGURATION SECTION.
  5.        SPECIAL-NAMES.
  6.        DATA DIVISION.
  7.        WORKING-STORAGE SECTION.
  8.  
  9.  
  10.       *WCB: Aquí se guardará toda la información
  11.      *para luego dibujar la ventana, podeis ponerle el
  12.      *nombre que querais, tanto a ésta como al resto.
  13.      *WINLIN: Número de lineas que va a tener la ventana.
  14.      *WINCOL: Número de columnas que va a tener la ventana.
  15.      *WINBORST: (Y)ES (N)O, si va a tener o no, borde.
  16.      *WINBORTI: Tipo de borde, hay cuatro tipos distintos.
  17.      *WINTITSI: (T)OP (B)UTTON, posición del título, arriba o abajo.
  18.      *WINTITPO: (C)ENTER (L)EFT (R)IGHT, justificación del título.
  19.      *WINTITLO: Longitud en caracteres del título.
  20.      *WINTIT: Título de la ventana.
  21.  
  22.  
  23.        01 WCB.
  24.            03 WINCAB PIC 999 BINARY VALUE 0.
  25.            03 WINLIN PIC 999 BINARY.
  26.            03 WINCOL PIC 999 BINARY.
  27.            03 WINLOC PIC X VALUE "W".
  28.      * (S-W)
  29.            03 WINBORST PIC X VALUE "Y".
  30.      * (Y-N)
  31.            03 WINBORTI PIC 9 VALUE 2.
  32.            03 WINBORCH PIC X VALUE "Y".
  33.            03 WINLLE PIC X.
  34.      * (Y-N)
  35.            03 WINLLECH PIC X.
  36.            03 WINTITSI PIC X VALUE "T".
  37.      * (T-B)
  38.            03 WINTITPO PIC X VALUE "C".
  39.      * (C-L-R)
  40.            03 WINTITLO PIC 999 BINARY.
  41.            03 WINTIT PIC X(64).
  42.  
  43.  
  44.        01 VENTANAS.
  45.            02 WIN PIC X(80) OCCURS 10 TIMES.
  46.  
  47.        77  ALGO   PIC X.
  48.        PROCEDURE DIVISION.
  49.        INICIO.
  50.            DISPLAY SPACES BLANK SCREEN
  51.            DISPLAY "+-----------------------------+" LINE 3 POSITION 1
  52.            DISPLAY "|                             |" LINE 4 POSITION 1
  53.            DISPLAY "|                             |" LINE 5 POSITION 1
  54.            DISPLAY "|    PANTALLA INICIO          |" LINE 6 POSITION 1
  55.            DISPLAY "|                             |" LINE 7 POSITION 1
  56.            DISPLAY "| presione Enter para abir    |" LINE 8 POSITION 1
  57.            DISPLAY "| VENTANA                     |" LINE 9 POSITION 1
  58.            DISPLAY "|                             |" LINE 10 POSITION 1
  59.            DISPLAY "|                             |" LINE 11 POSITION 1
  60.            DISPLAY "+-----------------------------+" LINE 12 POSITION 1
  61.            ACCEPT ALGO LINE 11 POSITION 31
  62.            PERFORM ABRIR-VENTANA
  63.            DISPLAY "+------------------------------+" LINE 3 POSITION 1
  64.            DISPLAY "|                              |" LINE 4 POSITION 1
  65.            DISPLAY "|                              |" LINE 5 POSITION 1
  66.            DISPLAY "|   VENTANA                    |" LINE 6 POSITION 1
  67.            DISPLAY "|                              |" LINE 7 POSITION 1
  68.            DISPLAY "|presione Enter para cerrar est|" LINE 8 POSITION 1
  69.            DISPLAY "|a    ventana y deberia mostrar|" LINE 9 POSITION 1
  70.            DISPLAY "|PANTALLA INICIO sin necesidad |" LINE 10 POSITION 1
  71.            DISPLAY "|de desplegarla denuevo        |" LINE 11 POSITION 1
  72.            DISPLAY "+------------------------------+" LINE 12 POSITION 1
  73.            ACCEPT ALGO LINE 11 POSITION 31
  74.            PERFORM CERRAR-VENTANA
  75.            ACCEPT ALGO LINE 11 POSITION 31.
  76.            STOP RUN.
  77.        ABRIR-VENTANA.
  78.            MOVE 10  TO WINLIN
  79.            MOVE 34 TO WINCOL
  80.            MOVE " Opciones " TO WINTIT MOVE 10 TO WINTITLO
  81.            MOVE 2 TO WINBORTI
  82.            MOVE WCB TO WIN(1)
  83.            DISPLAY WIN(1) LINE 3 POSITION 5
  84.           CONTROL  "WINDOW-CREATE".
  85.            
  86.      
  87.            
  88.         CERRAR-VENTANA.    
  89.            
  90.             DISPLAY WIN(1)
  91.             CONTROL "WINDOW-REMOVE".


Comentario de Moderador

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.


La franja horaria es GMT +2. Ahora son las 13:58.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.