Cobol.Tablas.

Ismael Royano Gómez
Enredando con Programación
3 min readMay 10, 2016

Una tabla es un conjunto campos contiguos, cuya longitud y tamaño deben ser iguales, unidos todos bajo un mismo nombre, de manera que accedemos a ellos de forma individual a través de uno o varios índices. Vamos a hacer un ejemplo para verlo mas claro:

Vamos a imaginar un cine, en las que pueden entrar un máximo de 1000 personas por día. Lo que queremos es que no cuente el número de personas que han ido al cine cada día de la semana.

Con lo que sabemos hasta ahora debemos crear 7 variables, una para cada día de la semana:


77 lunes pic 9(04).
77 martes pic 9(04).
77 miercoles pic 9(04).
77 jueves pic 9(04).
77 viernes pic 9(04).
77 sabado pic 9(04).
77 domingo pic 9(04).

Ahora bastaría con ir almacenando las visitas en cada día de la semana. Ahora bien, con las tablas nos ahorraríamos estas 7 definiciones y lo almacenaríamos en una sola variable, de forma que quedaría así:


01 cine.
02 visitas pic 9(04) occurs 7 times.

Ahora sólo nos ha hecho falta declarar una sola variable. Si quisiéramos cargar o mover datos a la tabla deberíamos indicar un índice:


move 121 to visitas(1)
move 82 to visitas(2)
move 42 to visitas(3)
move 61 to visitas(4)
move 425 to visitas(5)
move 247 to visitas(6)
move 879 to visitas(7)

Si nos fijamos bien, todas las variables, son de la misma longitud y del mismo tipo de datos, no puede ser de otra forma si queremos usar una tabla. Es un pequeño requisito a tener en cuenta.

Redefines. Este cláusula se utiliza para rellenar la tabla antes de empezar el programa, es decir, desde la Working. Vamos a ver un ejemplo:

01 semanas-textos.
02 texto pic x(21) value "lunmarmiejueviesabdom".
01 semanas redefines semanas-textos.
02 dias pic x(03) occurs 7 times.

De esta forma lo que hacemos con la cláusula Redefines, es cargar la tabla “semanas” con los valores de la variable “semanas-textos” desde el principio del programa.

En la memoria del ordenador este tipo de tablas quedaría representada de la siguiente manera.

Cine:

Visitas(1) Visitas(2) Visitas(3) Visitas(4) Visitas(5) Visitas(6) Visitas(7)

Esto son tablas unidimensionales, pero también lo podemos hacer de varias dimensiones llamadas matrices:

En el ejemplo del cine, vamos almacenar el género, así contaremos también si es hombre o mujer:

01 cine.
02 genero occurs 2 times.
03 visitas pic 9(04) occurs 7 times.

Ahora para cargar o mover datos se necesitan dos índices, uno para la fila y otro para la columna, de manera que quedaría así:

move 125 to visitas(1,1) move 125 to visitas(2,1)
move 125 to visitas(1,2) move 125 to visitas(2,2)
move 125 to visitas(1,3) move 125 to visitas(2,3)
move 125 to visitas(1,4) move 125 to visitas(2,4)
move 125 to visitas(1,5) move 125 to visitas(2,5)
move 125 to visitas(1,6) move 125 to visitas(2,6)
move 125 to visitas(1,7) move 125 to visitas(2,7)

Veamos como se representa en la memoria:

Cine:

Visitas(1,1) Visitas(1,2) Visitas(1,3) Visitas(1,4) Visitas(1,5) Visitas(1,6) Visitas(1,7) Visitas(2,1) Visitas(2,2) Visitas(2,3) Visitas(2,4) Visitas(2,5) Visitas(2,6) Visitas(2,7)

Las tablas se pueden complicar como se quiera, incluso meter una tabla dentro de otra, ponerlas en ficheros y demás. Buscando en Internet vi un ejemplo que me pareció bastante bueno para ver como son las que tienen varias dimensiones:

01 tabla.
02 trabajadores occurs 100 times.
03 nombre pic x(30).
03 nif pic x(10).
03 salario occurs 12 times.
05 bruto pic s9(08).
05 neto pic s9(08).
05 gastos occurs 10 times.
07 gasto pic s9(08).

Vamos a explicar todo este embrollo:

  • Tenemos una tabla de trabajadores de 100 elementos, compuestos cada uno de ellos por el nombre y el nif.
  • Al mismo tiempo tenemos 12 salarios, uno por cada mes, que se compone de un sueldo bruto y un sueldo neto, es decir, tenemos 12 sueldos netos y 12 brutos por trabajador.
  • Y para finalizar cada trabajador tiene 10 tipos de gastos diferentes.

Vamos a ver como nos podemos referir a cada elemento:

  • Para saber el nombre del trabajador número 50: display nombre (50).
  • Para saber el Nif del trabajador 50: display nif(50).
  • Para saber el bruto de Mayo del trabajador 50: display bruto(50, 5).
  • Para saber el neto del trabajador 50 del mes de Noviembre: display neto(50,11).
  • Para saber el gasto número 3 del mes de Febrero del trabajador 50: display gasto(50,2,3).

Ahora las tablas podemos empezar a usarlas con lo que sabemos hasta ahora, como por ejemplo, los bucles para buscar elementos, condiciones para compararlos…etc…etc…etc.

--

--

Ismael Royano Gómez
Enredando con Programación

Técnico Informático curioso, lector activo de las nuevas tecnologías, amante de las series de televisión y usuario del respetable mundo del enredo.