Cobol en español
  Página de Inicio Recomiéndala Contáctame Usuarios en Linea
13
     Crea Una cuenta  
Video 1
Video 2
Video 3

Si te ha servido la web
o te han gustado los videos, colabora haciendo click en el botón.

MANUALES
TEMATICOS
BASES DE DATOS
COBOL / WINDOWS
COBOL / UNIX
HISTORIA /DOCS
 
BUSCADOR
PROGRAMANDO-Dos
TRUCOS
AÑO 2.000
TEORIA POWCOB-3
PROG. POWCOB-3
TEORIA POWCOB-5
PROG. POWCOB-5
OCX-ESCOBOL
RUTINAS/MANUALES
OCX / JUEGOS
HERRAMIENTAS
COMPILADORES
ENCUESTAS
ENLACES
FOROS
TOP 10

CHAT   Usuarios: 0
Programando en Ms-Dos (texto)
TEMARIOPaso a paso
1.- Introducción
2.- Empezando
3.- Las variables
4.- Iniciando el proceso
5.- Pantalla inicial y Menú
6.- Mantenimiento Fichero
7.- Consulta con Scroll
8.- Opción de Listado
uN JueGo eN CoBoL

7.- Consulta con Scroll

página(s) : 1/2
(1634 palabras totales en este texto)
(17131 Lecturas)   Versión Imprimible



Vamos a preparar una consulta por pantalla, de nuestros contactos, en forma de scroll, con posibilidad de seleccionar uno directamente y además utilizando: flecha arriba, flecha abajo, avanza página, retrocede página, inicio y fin. Para ello previamente introduciremos todos los códigos de nuestra agenda en una tabla.

Esta rutina podréis aplicarla sobre cualquier archivo que tengáis por grande que sea. Veréis como es muy sencilla y además los resultados son muy buenos.

Las frases en éste color son comentarios.

Antes de seguir os indico que tendremos que aumentar la Working, con mas variables, que aquí os detallo su explicación. Así como un par de líneas necesarias para que el programa pueda venir a esta parte.

»» NUEVAS VARIABLES Nuevas variables para incluir en la Working-Storage Section.
Tabla que contendrá los códigos de nuestra agenda, le he puesto un tope de 5000 pero si vais a tener mas solo tenéis que ampliar el OCCURS.
      01  TABLACON.
           02  TCON PIC 9(4) OCCURS 5000 TIMES.


Variables para controlar la tabla y el scroll.      
      01  CCCPIC 9999.
      01  TOPE PIC 9999.
      01  TOPT PIC 9999.
      01  CABE PIC 9999.
      01  LIUPIC 99.
      01  LU  PIC 99.
      01  LO PIC 99.
      01  LIOPIC 99.


Variable que nos indica si la consulta es por código o por nombre.
      01  ALFA PIC 9.

Línea de consulta.
      01  LINPA.
           02  LSOC    PIC ZZZZB.
           02  LNOM   PIC X(30)B.
           02  LPOS    PIC 99999B.
           02  LMAI    PIC X(30)
»» INCLUIR EN EL PARRAFO Solo incluir las que están en AZUL y en ese lugar. Con ella indicaremos que pulsando sobre F10, nos iremos a la consulta.
SOCI-CERO.
      DISPLAY SPACES LINE 2 COL 16 SIZE 40.
aqui indicamos que con F10 se puede ir a consulta.

      DISPLAY " CONSULTA" LINE 2 COL 22 LOW REVERSE.
      ACCEPT C4 LINE 2 COL 16 PROMPT LOW NO BEEP
          ON EXCEPTION ESCA NEXT SENTENCE.
      DISPLAY SPACES LINE 2 COL 16 SIZE 30.
aquí si ha pulsado F10 nos vamos a la consulta.

      IF ESCA = 10 MOVE 0 TO ALFA GO CARGASOC.
      IF ESCA = 27 GO SOCIFIN.
»» CARGA DEL ARCHIVO EN LA TABLA Vamos a cargar la tabla con los códigos. La presentación en pantalla la vamos a hacer en 10 líneas, con lo cual el último párrafo es para saber donde será el último sitio donde nos podamos situar.
Ponemos a 0 el contador, inicializamos la tabla, y dependiendo si la consulta es alfabética o no, hacemos un start del archivo por la clave correspondiente.
CARGASOC.
      CLOSE AGENDA OPEN INPUT AGENDA.
      MOVE 0 TO CCC TOPE TOPT INITIALIZE TABLACON.
      IF ALFA = 0 GO CARGACOD.
      IF ALFA = 1 GO CARGANOM.


Para consultas por código.
CARGACOD.
      MOVE 0 TO AGECOD.
      START AGENDA KEY NOT LESS KEYAGE INVALID KEY
          GO CARGASOCFIN.
      GO CARGASOC1.


Para consultas por nombre.
CARGANOM.
      MOVE 0 TO AGECOD1 MOVE SPACES TO AGENOM1.
      START AGENDA KEY NOT LESS KEYAGE1 INVALID KEY
         GO CARGASOCFIN.


Leemos el archivo por la clave correspondiente y rellenamos la tabla.
CARGASOC1.
      READ AGENDA NEXT RECORD AT END GO CARGASOC2.
      COMPUTE CCC = CCC + 1 MOVE AGECOD TO TCON (CCC).
      GO CARGASOC1.


Concluida la carga, calculamos los límites de elementos y de las pantallas.
CARGASOC2.
      MOVE CCC TO TOPT.
      IF CCC > 9 SUBTRACT 9 FROM CCC GIVING CABE ELSE
          MOVE 1 TO CABE.
      IF TOPT > 10 COMPUTE TOPE = TOPT - 9 ELSE MOVE 1 TO TOPE.
          MOVE 1 TO CCC.


Ahora reabrimos el fichero y si no hemos encontrado elementos (el archivo estaba vacío) regresamos a donde estábamos.
CARGASOCFIN.
      CLOSE AGENDA OPEN INPUT AGENDA.
      IF TOPE = 0 GO SOCI-CERO.
»» PANTALLA DE CONSULTA Y PRIMERA PAGINA Creamos la ventana donde irá la consulta y ponemos la cabecera, además vamos a incluir el número total de contactos que tenemos.
Creamos la ventana y la cabecera y pies de la pantalla donde irán los datos.
CONSULTA.
      MOVE " CONSULTA CONTACTOS " TO WINTIT.
      MOVE 14 TO WINLIN MOVE 74 TO WINCOL MOVE 20 TO WINTITLO.
      DISPLAY WCB LINE 5 COL 3 ERASE
          CONTROL "WINDOW-CREATE, BCOLOR=BLUE".
      DISPLAY " " LINE 1 ERASE.
      IF ALFA = 0 DISPLAY "POR NOMBRE" LINE 14 COL 2
          LOW REVERSE ELSE
          DISPLAY "POR CODIGO" LINE 14 COL 2 LOW REVERSE.
      DISPLAY "SELECCIONA" LINE 14 COL 19 LOW REVERSE.
      DISPLAY "TOTAL CONTACTOS .." LINE 14 COL 50.
      MOVE TOPT TO DC4 DISPLAY DC4 LINE 14 COL 69 LOW.

      DISPLAY "CODI" LINE 1 COL 2 LOW REVERSE.
      DISPLAY "NOMBRE                               " LINE 1 COL 7
          LOW REVERSE.
      DISPLAY "C.POS" LINE 1 COL 38 LOW REVERSE.
      DISPLAY "CORREO ELECTRONICO            " LINE 1 COL 44
          LOW REVERSE.
      DISPLAY "---- ------------------------------" LINE 2 COL 2.
      DISPLAY "----- ------------------------------" LINE 2 COL 38.
      DISPLAY "---- ------------------------------" LINE 13 COL 2
      DISPLAY "----- ------------------------------" LINE 13 COL 38.
      MOVE CCC TO CABE.
      MOVE CABE TO LU MOVE 3 TO LIU.
CONSUL1.
      MOVE CABE TO LO MOVE 3 TO LIO.
CONSUL2.
      MOVE TCON (LO) TO AGECOD LSOC.

Párrafo para extraer del fichero AGENDA, los datos para generar las líneas.
CONSUL3.
      READ AGENDA INVALID KEY MOVE SPACES TO AGENOM AGETEL.
      MOVE AGENOM TO LNOM.
      MOVE AGEPOS TO LPOS.
      MOVE AGEMAI TO LMAI.


Dibujamos las líneas justas que caben en la pantalla.
CONSUL4.
      DISPLAY LINPA LINE LIO COL 2 LOW.
      COMPUTE LO = LO + 1 COMPUTE LIO = LIO + 1.
      IF LO > TOPT GO CONSUL5.
      IF LIO > 12 GO CONSUL5 ELSE GO CONSUL2.
Esta indicará la línea sobre la que estamos, por eso va con LOW REVERSE.
CONSUL5.
      MOVE TCON (LU) TO AGECOD LSOC.
      PERFORM CONSUL3.
      DISPLAY LINPA LINE LIU COL 2 LOW REVERSE.

En este párrafo aceptamos la tecla a pulsar para cada una de las acciones posibles.
CONSUL6.
      ACCEPT OP LINE LIU COL 1 OFF NO BEEP 
          ON EXCEPTION ESCA NEXT SENTENCE.
      IF ESCA = 27 MOVE 0 TO C4  Si hemos pulsado nos vamos.
          DISPLAY WCB CONTROL "WINDOW-REMOVE" GO CONSULFIN.
      IF ESCA = 82 GO ACUFIN. Si hemos pulsado .
      IF ESCA = 54 GO ACUINI. Si hemos pulsado .
      IF ESCA = 52 GO ACUMENOS. Si hemos pulsado .
      IF ESCA = 53 GO ACUMAS. Si hemos pulsado .
      IF ESCA = 68 GO ACUMASS. Si hemos pulsado .
      IF ESCA = 67 GO ACUMENOSS. Si hemos pulsado .
Si pulsamos cambiamos la consulta de código a nombre o viceversa.

      IF ESCA = 9 IF ALFA = 0 MOVE 1 TO ALFA
          DISPLAY WCB CONTROL "WINDOW-REMOVE" GO CARGASOC
          ELSE
          IF ALFA = 1 MOVE 0 TO ALFA
          DISPLAY WCB CONTROL "WINDOW-REMOVE" GO CARGASOC.
Si hemos pulsado seleccionamos la línea y devolvemos el código a la pantalla de mantenimiento de nuestro fichero.
      IF ESCA = 13 OR ESCA = 55 DISPLAY WCB CONTROL "WINDOW-REMOVE"
          MOVE TCON (LU) TO C4 GO CONSULFIN.
      GO CONSUL6.

   Inicio de Página    | Siguiente (2/2)
Sitio desarrollado con PHP-Nuke. Todos los Derechos Reservados.
PHP-Nuke es un Software Libre realizado con licencia GNU/GPL.
Página creada en Junio de 1.998, con el proposito de difundir el lenguaje Cobol en nuestra lengua.
Andres Montes [98/11]