|
 |
 |
7.- Consulta con Scroll
página(s) : 1/2 (1634 palabras totales en este texto) (21450 Lecturas) 
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.
|
| | (2/2) |
|
|