Ventana de Opciones
A todos nos gusta que nuestros programas sean lo mas fáciles y agradables para el usuario. Una de las tareas que mas nos ayuda a conseguirlo es el mostrar las opciones posibles en una ventana y poder movernos por las opciones con las flechas. Desde aquí voy a explicar una manera sencilla de hacerlo, eso si con un número limitado de opciones, en la sección utilidades podréis encontrar una rutina para hacerlo con un número ilimitado de íineas siempre dentro de una pequeña ventana.

Antes de nada, nos definimos nuestro menú de opciones o cualquier otra cosa, que queramos mostrar a modo de elección, por ejemplo en una tabla en la Working-Storage y dibujamos la ventana como queramos, a mano, con la rutina de mas arriba o una ventana real utilizando para ello lo explicado en la sección de manuales. Yo voy a hacerlo con la ventana virtual en RM/Cobol.

...
WORKING-STORAGE SECTION.
01  TABLA-OPCIONES.
(definimos 7 opciones de 10 caracteres cada una).
     02  FILLER PIC X(30) VALUE "CONSULTAS LISTADOS   EXTRACTOS ".
     02  FILLER PIC X(30) VALUE "ALTAS      BAJAS     MODIFACION".
     02  FILLER PIC X(10) VALUE "SALIR      ".
01  RTABLA REDEFINES TABLA-OPCIONES.
     02  ELEMEN     PIC X(10) OCCURS 7 TIMES.
01  LI      PIC 99.
01  OP     PIC X.
01  ESCA PIC 9 COMP-1.
01  QW    PIC 9.

PROCEDURE DIVISION.
INICIO.
     MOVE 7 TO WINLIN.
     MOVE 15 TO WINCOL.
     MOVE " OPCIONES " TO WINTIT MOVE 10 TO WINTITLO.
     DISPLAY WCB LINE 10 COL 10 LOW ERASE
                 CONTROL "WINDOW-CREATE".
     MOVE 1 TO LI.
(aqui dibujamos las opciones dentro de la ventana.)
UNO.
     DISPLAY ELEMEN (LI) LINE LI COL 2 LOW.
     ADD 1 TO LI IF LI > 7 NEXT SENTENCE ELSE GO UNO.
DOS.
(con ésto conseguimos que nunca se salga de las opciones y ponemos en reverso la linea seleccionada.)
     IF LI < 1 MOVE 7 TO LI.
     IF LI > 7 MOVE 1 TO LI.
     DISPLAY ELEMEN (LI) LINE LI COL 2 LOW REVERSE.
TRES.
     ACCEPT OP LINE LI COL 1 OFF NO BEEP
                ON EXCEPTION ESCA MOVE 1 TO QW.
     DISPLAY ELEMEN (LI) LINE LI COL 2 LOW.
     IF ESCA = 52 SUBTRACT 1 FROM LI GO DOS.
     IF ESCA = 53 ADD 1 TO LI GO DOS.
     IF ESCA = 13 NEXT SENTENCE ELSE GO TRES.
CUATRO.
(si ha llegado aqui, es porque ha pulsado enter y ha seleccionado alguna opción, a partir de aqui, dependiendo del valor de la variable LI, actuaremos en consecuencia.)
     ...
     ...

Espero que os sirvan éstas explicaciones y podáis aprovecharlas en vuestros programas.



Este artículo proviene de Cobol en español
http://www.escobol.com

La dirección de esta noticia es:
http://www.escobol.com/modules.php?name=Sections&op=viewarticle&artid=84