Dibujar Cuadros o Líneas
Si bien los actuales compiladores traen sus propias ordenes para dibujar los, tan utilizados cuadros en pantalla, vamos a explicar una pequeña rutina para dibujarlos de una manera sencilla. Existen aún muchos programadores que se sirven de programas externos para dibujar previamente las pantallas e incluirlas luego en la Working-Storage Section.

Para conseguirlo nos vamos a basar en una variable de 8 dígitos que contendrá la línea y la columna de inicio y la línea y la columna final. Además necesitaremos alguna variable mas de apoyo y una línea completa de 80 columnas, lo explico:

...
WORKING-STORAGE SECTION.
01  RAYA  PIC X(80) VALUE ALL "-". (carácter 196, raya continua, no guión).
01  CUADRO.
     02  CUA1 PIC 99.
     02  CUA2 PIC 99.
     02  CUA3 PIC 99.
     02  CUA4 PIC 99.
01  CUA5      PIC 99.
01  CUA0      PIC 99.
...
PROCEDURE DIVISION.
INICIO.
     ACCEPT CUADRO LINE 1 COL 1 ERASE. (coordenadas del cuadro).
DIBUJAR.
     COMPUTE CUA5 = CUA4 - CUA2. (obtenemos el ancho del cuadro o la linea).
     DISPLAY RAYA LINE CUA1 COL CUA2 SIZE CUA5. (línea superior).
     IF CUA1 = CUA3 GO SEGUIR. (si era una linea, listo).
     DISPLAY RAYA LINE CUA3 COL CUA2 SIZE CUA5. (línea inferior).
     (ahora dibujaremos las lineas izquierda y derecha del cuadro).

     MOVE CUA1 TO CUA0.
DIBUJA1.
     ADD 1 TO CUA0 IF CUA0 > CUA3 GO DIBUJA2.
     IF CUA0 NOT = CUA3 DISPLAY SPACES LINE CUA0 COL CUA2 SIZE      CUA5.(borramos la linea por si tenía algún carácter previo).
     DISPLAY "¦" LINE CUA0 COL CUA2. (carácter 179, línea vertical).
     DISPLAY "¦" LINE CUA0 COL CUA4.
     GO DIBUJA1.
DIBUJA2.
     (ahora dibujamos las cuatro esquinas).
     DISPLAY "+" LINE CUA1 COL CUA2. (esquina superior izquierda).
     DISPLAY "+" LINE CUA1 COL CUA4. (esquina superior derecha).
     DISPLAY "+" LINE CUA3 COL CUA2. (esquina inferior izquierda).
     DISPLAY "+" LINE CUA3 COL CUA4. (esquina inferior derecha).
SEGUIR.
...


No he podido reflejar aquí los caracteres gráficos, pero son los de siempre en ASCII. Se podría mejorar, verificando que nunca la línea inferior sea mayor que la superior o que la columna derecha siempre sea menor que la izquierda, etc...

En el caso de usar el compilador de Acucobol-GT, todo esto se reduce radicalmente ya que dispone de comandos específicos para crearlos, por ejemplo:

DISPLAY BOX LINE línea COL Columna SIZE Número de columnas
LINES Número de líneas.

DISPLAY LINE LINE línea 10 COL columna SIZE longitud.




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=82