Alters

Remote Tools: Teoría de programación (II) - Ficheros dinámicos en COBOL

Buenas!

Ha sido una temporada sin escribir... igual hasta os he preocupado jajajaja :-P

La verdad es que últimamente no paro... y en fin, dentro de unos meses acabo la teoría de mi certificación en ISPA, y a la vez empiezo el grado en matemáticas; las cosas van avanzando un poco a mi favor :-)

Bueno, dejemos ya el intermedio de mi vida privada, jejeje.

Esta entrada tratará una situación que alguna vez habrá pasado por la cabeza de los "Coboleros".

¿Cómo hago si tengo que acceder a varios archivos a la vez en COBOL?





Visto así no entraña problema, ¿no? Hacemos dos SELECT y "arreando"... pero veamos algunos cambios:
  • ¿Y si bajo ninguna circunstancia tendré los dos archivos abiertos al mismo tiempo?
  • ¿Y si no son dos, sino doscientos?
Ambas modificaciones tienen la misma respuesta, que a su vez es el título de esta entrada: un fichero dinámico.

¿Y qué es?

Eso es decirle a COBOL algo así como "prepara el acceso a un archivo, pero ya te diré cual cuando llegue el momento".

Para hacer esto, tenemos que aplicar dos cosas:

a) Nombre de fichero mediante variable
b) Fichero con cláusula RANDOM.

Antes de pasar a explicar, veamos un ejemplo rápido:

SELECT CLI ASSIGN TO RANDOM VARIA

Donde "VARIA" sería nuestra variable. El resto de la declaración seguiría su curso natural.

Más adelante, tendríamos que hacer un MOVE hacia VARIA, para indicar el fichero a abrir.

Entonces, usando parte de la entrada anterior, podríamos hacer una tabla de nombres de fichero a los cuales acceder, usando solo un único SELECT.

Notad la sutil diferencia con un gestor de bases de datos:

Si yo uso el mismo SELECT para dos ficheros, al leerlos me devolverá la información con el mismo formato. Es decir, al hacer una lectura, volcará los datos en la estructura asociada a dicho SELECT. Por lo tanto, hay que tener especial cuidado con esto.

Ahora os preguntaréis para qué puede servir algo así...

Bien, os pondré un ejemplo:

COBOL tiene un límite de 2GB a la hora de crear un fichero. Si yo quiero volcar más datos, puedo usar un contador, que se añadirá a un nombre, y mediante un SELECT RANDOM puedo generar una serie de archivos "FICHERO-99", que podríamos considerar fragmentos de un único fichero.

Por tanto, si tenemos que hacer un diccionario rainbow con 2^40 entradas (o somos una entidad bancaria, por ejemplo), vamos a necesitar imperiosamente usar este método.

Otro "arreglo" que podemos hacer es elaborar nuestros ficheros con un registro de un tamaño fijo (X(80), por ejemplo), y en el SELECT RANDOM vincular una variable X(80). Después definimos las estructuras adecuadas a cada fichero y hacemos un MOVE ;-)

Y bien, poco más que añadir sobre este método...

Como siempre, ¡Hasta la próxima!