|
 |
 |
Tablas
página(s) : 1/3 (17674 palabras totales en este texto) (60294 Lecturas) 
El uso de tablas en Cobol es algo muy frecuente y por eso he decidido crear un apartado específico para hablar de ellas.
En el capítulo de la DATA DIVISION, dentro de los manuales, podréis encontrar una explicación
de cada comando o cláusula que veamos de aquí en adelante.
En primer lugar daremos una definición de ellas.
Una tabla es un conjunto de elementos con un mismo tipo
y longitud que se denominan con el mismo nombre y se
diferencian por un subíndice. Todo lo que voy
a explicar aquí, se hará desde lo más
básico. Con un ejemplo
lo vamos a ver mas claro:
Imaginamos
que queremos tener la información de cuantas
personas entran a un museo cada día de la
semana. Si como máximo entran al día
mas o menos 1.000 personas deberíamos declarar
siete variables de la siguiente manera:
01
LUNES 01 MARTES 01
MIERCOLES 01 JUEVES 01
VIERNES 01 SABADO 01
DOMINGO
|
PIC 9(4). PIC
9(4). PIC 9(4). PIC 9(4). PIC 9(4). PIC
9(4). PIC 9(4).
|
Para
introducir datos aquí podríamos hacer:
MOVE 200 TO LUNES.
MOVE 430 TO MARTES. MOVE 136 TO MIERCOLES. MOVE 525 TO JUEVES. MOVE 380 TO VIERNES.
MOVE 1910 TO SABADO. MOVE 2300 TO DOMINGO.
Fijaros que todas son del mismo tipo (numéricas)
y del mismo tamaño (4), por lo tanto cumplen el requisito para crear una tabla, así que vamos a sustituir todo lo anterior haciendo uso
de una tabla.
Ahora
tendremos una única variable donde guardar
los datos y se llamará VISITAS. Para introducir
los datos lo haríamos refiriéndonos
con un subíndice a cada uno de sus elementos,
siete en este caso, porque siete son los días
de la semana. Lo más lógico será
respetar el orden de los días, es decir 1
para el Lunes, 2 para el Martes, etc ...
MOVE 200 TO VISITAS (1). MOVE 430 TO VISITAS (2). MOVE 136 TO VISITAS (3). MOVE 525 TO VISITAS (4).
MOVE 380 TO VISITAS (5). MOVE 1910 TO VISITAS (6). MOVE 2300 TO VISITAS (7).
El
resultado es el mismo, pero solo hemos tenido que
declarar una variable. Por supuesto el número
que hace referencia al subíndice puede ser
a su vez una variable, como veremos un poco mas
abajo.
Cobol también posee la capacidad de crear una tabla y rellenarla a su vez utilizando la WORKING-STORAGE SECTION
. Para ello primero declaramos los valores en una variable y gracias a la cláusula REDEFINES, hacemos que
su valor se cargue en la tabla. Eso no quiere decir que su valor no se pueda cambiar, pero al iniciar el programa, la tabla contendrá
esos valores. Para seguir con el ejemplo crearemos una con los días de la semana.
01
TABLADIAS. 02
FILLER 02
FILLER 02
FILLER 02
FILLER 02
FILLER 02
FILLER 02
FILLER 01 TABLADEDIAS 02
ELDIA
|
PIC
X(10) VALUE "LUNES ". PIC
X(10) VALUE "MARTES ". PIC
X(10) VALUE "MIERCOLES ". PIC
X(10) VALUE "JUEVES ". PIC
X(10) VALUE "VIERNES ". PIC
X(10) VALUE "SABADO ". PIC
X(10) VALUE "DOMINGO ". REDEFINES
TABLADIAS. PIC X(10) OCCURS 7 TIMES.
|
Ya
tenemos cargada la tabla con los días de
la semana respetando también el orden que
hemos indicado anteriormente.
Ahora
mostraremos las visitas de cada día utilizando
las tablas y refiriéndonos a los elementos
de la tabla con valores variables. Vamos a pedir
que nos diga el día de la semana para el
cual quiere saber las visitas que hubo:
WORKING-STORAGE
SECTION. 01 DIA PIC
9. 01 LVISITAS PIC Z.ZZ9. ... PROCEDURE
DIVISION. ... PEDIR. DISPLAY
"INTRODUZCA DIA PARA VER SUS VISITAS" LINE
4 COL 20. ACCEPT
DIA LINE 4 COL 50 PROMPT LOW. IF
DIA < 1 OR DIA > 7 GO PEDIR. DISPLAY
"EL " LINE 10 COL 20. DISPLAY
ELDIA (DIA) LINE 10 COL 23. DISPLAY
"HUBO " LINE 10 COL 33. MOVE
VISITAS (DIA) TO LVISITAS. DISPLAY
LVISITAS LINE 10 COL 38. DISPLAY
"VISITAS." LINE 10 COL 44.
|
Al introducir, por ejemplo el valor 3 el resultado hubiera sido:
EL MIERCOLES HUBO 136 VISITAS.
| | (2/3) |
|
|