|
 |
 |
Tablas
página(s) : 2/3 (17674 palabras totales en este texto) (60577 Lecturas) 
VARIAS DIMENSIONES O NIVELES
Todas las que hemos visto son de una dimensión, pero se pueden definir de mas niveles y convertirlas
en matrices. Por ejemplo ahora vamos a diferenciar en la tabla, además del número de visitas, si han sido hombres o mujeres, para ello
creamos una nueva dimensión quedando la tabla de la siguiente manera:
01
DIASEMANA. 02
GENERO 03
VISITAS
|
OCCURS
2 TIMES. PIC 9(4) OCCURS 7 TIMES.
|
Como veis nuestra tabla contiene dos cláusulas OCCURS, con ello hemos conseguido crear
una matriz de 2 x 7, ahora la variable VISITAS tendrá 14 elementos. Para dirigirnos a ellos utilizaremos dos subíndices. En nuestro caso al
diferenciar el género, identificaremos con el valor 1 a los hombres y con el 2 a las mujeres. Veamos como rellenamos la tabla ahora:
MOVE 110 TO VISITAS (1, 1) MOVE 90 TO VISITAS (2, 1).
MOVE 130 TO VISITAS (1, 2) MOVE 300 TO VISITAS (2, 2).
MOVE 100 TO VISITAS (1, 3) MOVE 36 TO VISITAS (2, 3).
MOVE 250 TO VISITAS (1, 4) MOVE 225 TO VISITAS (2, 4).
MOVE 190 TO VISITAS (1, 5) MOVE 190 TO VISITAS (2, 5).
MOVE 1000 TO VISITAS (1, 6) MOVE 910 TO VISITAS (2, 6).
MOVE 1100 TO VISITAS (1, 7) MOVE 1200 TO VISITAS (2, 7).
Por supuesto al igual que antes los subíndices pueden
ser sustituidos por variables. Por ejemplo, sabiendo
los datos anteriores vamos a sumar todas las mujeres
que entraron en la semana y todos los hombres y
vamos a averiguar cual fue el día de mayor
visitas y el día de menor asistencia.
WORKING-STORAGE
SECTION. 01 DIA PIC
9. 01 LVISITAS PIC Z.ZZ9. 01
MAYOR PIC 9(4)
VALUE 0. 01 MENOR PIC
9(4) VALUE 9999. 01 DIAMAYOR
PIC 9. 01 DIAMENOR PIC 9. 01
TOTAL PIC 9(4). 01
HOMBRES PIC 9(4). 01 MUJERES
PIC 9(4). ... PROCEDURE
DIVISION. ... MOVE
0 TO DIA. MIRAR. ADD
1 TO DIA IF DIA > 7 GO FIN. ADD
VISITAS (1, DIA) TO HOMBRES. ADD
VISITAS (2, DIA) TO MUJERES. COMPUTE
TOTAL = VISITAS (1, DIA) + VISITAS (2,
DIA). IF
TOTAL > MAYOR MOVE TOTAL TO MAYOR
MOVE
DIA TO DIAMAYOR. IF
TOTAL < MENOR MOVE TOTAL TO MENOR MOVE
DIA TO DIAMENOR. GO
MIRAR. FIN. DISPLAY
"TOTAL HOMBRES " LINE 10 COL
10 ERASE. MOVE
HOMBRES TO LVISITAS.
DISPLAY LVISITAS LINE 10 COL 35.
DISPLAY
"TOTAL MUJERES " LINE 11 COL
10. MOVE
MUJERES TO LVISITAS.
DISPLAY LVISITAS LINE 11 COL 35.
DISPLAY
"----------------------------------"
LINE
12 COL 10. DISPLAY
"TOTAL VISITAS " LINE 13 COL
10. COMPUTE
LVISITAS = HOMBRES + MUJERES. DISPLAY
LVISITAS LINE 13 COL 35. DISPLAY
"----------------------------------"
LINE
14 COL 10.
DISPLAY
"DIA MAYOR " LINE 15 COL 10. DISPLAY
TSEM (DIAMAYOR) LINE 15 COL 22. MOVE
MAYOR TO LVISITAS.
DISPLAY LVISITAS LINE 15 COL 35.
DISPLAY
"DIA MENOR" LINE 17 COL 10. DISPLAY
TSEM (DIAMENOR) LINE 17 COL 22. MOVE
MENOR TO LVISITAS.
DISPLAY LVISITAS LINE 17 COL 35. ACCEPT
OP LINE 20. ...
|
LLENANDO TABLAS
Ahora imaginamos que los datos de la tabla de visitas,
en vez de asignarlos con un MOVE
como hemos hecho en los ejemplos anteriores, los
vamos a pedir mediante ACCEPT
en un programa. Vamos a hacer un pequeño
programa para que veais como quedaría:
WORKING-STORAGE
SECTION. 01
DIASEMANA. 02
GENERO OCCURS
2 TIMES. 03
VISITA PIC 9(4) OCCURS
7 TIMES. 01 SUB1 PIC
9. 01 SUB2 PIC
9. 01 OP PIC
X. 01 LGENERO PIC X(7). ... PROCEDURE
DIVISION. INICIO. DISPLAY
"CAPTURA DE DATOS" LINE 2
COL 10 ERASE. MOVE
0 TO SUB1 SUB2. METER. ADD
1 TO SUB2 IF SUB2 > 7 GO FIN. MOVE
0 TO SUB1. METER1. ADD
1 TO SUB1 IF SUB1 > 2 GO METER. IF
SUB1 = 1 MOVE "HOMBRES" TO
LGENERO ELSE MOVE
"MUJERES" TO LGENERO. DISPLAY
"VISITAS DE " LINE 10 COL
10. DISPLAY
LGENERO LINE 10 COL 21. DISPLAY
"EL DIA" LINE 10 COL 29. DISPLAY
TSEM (SUB2) LINE 10 COL 37. ACCEPT
VISITAS (SUB1, SUB2) LINE 10 COL 50. GO
METER1. FIN. DISPLAY
"PROCESO DE CAPTURA FINALIZADO" LINE
20 COL 20. ACCEPT
OP LINE 20 COL 1. ...
|
Ahora podríamos incluir el código anterior
y que nos calcule el día de mayor y menor
visitas y la suma por géneros. | (1/3) | | (3/3) |
|
|