Unidad 39. Archivos secuenciales, formatos (II)





39.8. Utilización.

Un archivo secuencial, es un archivo que tiene muchas utilizaciones.

Cualquier archivo de imagen, sonido, o similares, son archivos que poseen una estructura, una cabecera, y una serie de datos que se leen posteriormente o bien en bloque o de forma secuencial.

Basta solo ver las definiciones de las estructuras de los archivos mencionados, para poder entender lo dicho anteriormente.

Estos archivos son muy compactos.

Un archivo secuencial, al igual que los random y las bases de datos, necesita de ser actualizado.

Los que contienen sonido, video e imágenes no necesitan de estos procesos, pero los que almacenan datos sí.

 

A pesar de ser archivos que no son habituales en un proceso de gestión, sin embargo surge la necesidad de su utilización en algunas ocasiones, o en muchas.

 

Dado que no es un archivo direccionable, el proceso de actualización se basa siempre en un proceso de emparejamiento de registros de dos archivos secuenciales, de entrada que da uno nuevo de salida.

 

El que contiene los datos actuales.

El que contiene los nuevos datos.

 

El resultado es un archivo nuevo, en el que han desaparecido los registros que había que borrar, se han incorporado los nuevos y se han actualizado los que tenían algún cambio.

 

En la imagen podemos ver una representación gráfica de dicho proceso.

 

 

 

Además de la acción de leer y grabar, hay un apartado importante en su tratamiento, y es el de la necesidad de la utilización de una estructura repetitiva para su proceso, listado, consulta etc.

 

Esta estructura será siempre del tipo Mientras

 

Mientras no Fin de archivo

  Leer registro

  Proceso

Fin  Mientras

 

Es importante tener presente que este es el mejor sistema para su proceso.

 

Un bucle del tipo Repite, no es adecuado.

39.9. Actualización.

El segundo proceso clásico es el de la actualización, o el de emparejamiento, son iguales en esencia.

Su proceso se basa en el uso de lo que se conoce como high value.

Se trata de crear un bucle del tipo mientras, en el que la condición es que se proceda a leer registros mientras no se alcance el máximo valor en los archivos de proceso.

La filosofía es la de emparejar registros como ya se explicó en el tema anterior.

Importante que el valor utilizado como High value, no sea alcanzable por los datos del archivo.

El proceso se basa en que solo puede haber proceso de actualización si los códigos coinciden, en ese caso puede darse el caso de borrado o actualización, pero nunca un alta, eso sería un error.

Si el código del archivo principal se adelanta al de los cambios, significa que los registros hasta igualarse deben ser del tipo alta, en caso contrario sería un error en la grabación del archivo de cambios.

Si el código del archivo principal se queda por detrás significa que ese código no dispone de incidencias, por lo que debe ser copiado tal como está en el archivo que se crea nuevo en el proceso, para no perder los datos que no van a sufrir cambios.

Siempre debemos disponer de una pareja de registros, por lo que al tratar un registro del archivo principal, inmediatamente hay que leer otro.

Igual con el de los cambios.

 

Por este motivo antes de entrar en el bucle de proceso, se debe cargar una pareja de registros fuera del bucle.

Al realizar la lectura en un archivo si se da la circunstancia de final de archivo, es cuando al código de ese archivo se le asigna el high value.

No sirve utilizar variables de tipo booleano, ni cualquier otra combinación, cuyo único resultado al final es maquiavélico, comparado con la sencillez de éste proceso.

 

If No final(Incidencias) Entonces

    Leer(Canal, Codigo, .....)

  Sino

    Codigo = Hv

Fin

If No final(Datos) Entonces

    Leer(CanalDatos, CodDatos)

  Sino

    CodDatos = Hv

Fin

 

Wientras Codigo <> Hv Or CodDatos <> Hv

  Según Codigo

    Si Codigo = CodDatos

      Proceso

      If No final(Incidencias) Entonces

          Leer(Canal, Codigo, ......)

        Sino

          Codigo = Hv

      Fin

      If No final(Datos) Entonces

          Leer(CanalDatos, CodDatos, .....)

        Sino

          CodDatos = Hv

      Fin

   Si Codigo > CodDatos

     Proceso

     If No final(Datos) Entonces

         Leer(CanalDatos, CodDatos, .....)

       Sino

         CodDatos = Hv

     Fin

   Si Codigo < CodDatos

     Proceso

     If No final(Incidencias) Entonces

        Leer(Canal, Codigo, ......)

      Sino

       Codigo = Hv

     Fin

  Fin segun

Fin Mientras

 

La variable o constante HV debe recibir un valor que sea inalcanzable por los datos del archivo, en caso contrario el proceso no funcionará adecuadamente.

Los archivos a procesar deben estar ordenados, pues el proceso realiza una comparación de los códigos

El archivo de incidencias será igual en diseño que el archivo de datos actuales, y además incorporará un dato que indicará si es una modificación, alta o borrado.

El proceso se realiza en función de los valores del campo código.

 

Octubre-2010
Pág. 39.2

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies