PSEUDOCÓDIGO PARA LA GESTIÓN DE ARCHIVOS INDEXADOS.
El archivo secuencial indexado es uno de los varios metodos de acceso existentes, mediante este metodo el usuario obtiene acceso secvuenciales a los registros clasifiacdos por llaves y tambien acceso indexado a los mismos registros.
La manera de extraer registros ingresados en secuencia de entrada y no clasificados por llave es mediante un indice es un recurso para encontrar informacion
Los archivos secuenciales indexados consta de tres partes:
*area de datos
*area de indice
*area de desbordamiento
Ejemplo: creación del archivo indexado
Se desea indexar el archivo directo de almacén. Para ello se debe leer secuencialmente el archivo de organización directa e incluir el código de producto y la posición de todas las ranuras ocupadas en un array de índices. Al acabar el proceso se debe ordenar el array y almacenarlo de forma temporal en un archivo secuencial para las siguientes ocasiones en que se desee gestionar el índice.
//Creación del archivo indexado a partir del archivo de productos
algoritmo CreaciónIndexado
const
MaxReg = 120
//El índice sólo tiene 100 posiciones ya que sólo hay 100 productos distintos
numElemIndice = 100
tipos
registro = rProducto
entero : código
cadena: desc
entero : stock
entero : estado
fin_registro
archivo_d de rProducto = aProducto
registro = RIndice
entero : clave
entero : NRR
fin_registro
array[0..numElemIndice] de RIndice = vIndice
var
aProducto : A
rProducto : R
vIndice : Ind
entero : n, NRR
inicio
abrir(A,lectura/escritura,'PRODUCTOS.DAT')
n ← 0
NRR ← 0
leer(A,R)
mientras no fda(A) hacer
NRR ← NRR + 1
si R.estado = 1 entonces
n ← n + 1
ind[n].clave ←R.código
ind[n].NRR ← NRR
fin_si
leer(A,R)
fin_mientras
cerrar(A)
Ordenar(Ind,n)
GuardarIndice(Ind,n)
fin
//Para no perder el array de índices, el procedimiento GuardarIndice
//lo vuelca en un archivo secuencial
procedimiento GuardarIndice(valor vIndice : v; valor entero : n)
var
archivo_s de RIndice : A
entero : i
inicio
abrir(A,escritura,'CODIGO.IDX')
desde i ← 1 hasta n hacer
escribir(A,v[i])
fin_si
cerrar(A)
fin_procedimiento
Ejemplo: Gestión del archivo indexado de productos
Programa principal
Para los algoritmos que aparecen a continuación, se suponen las siguientes declaraciones en el cuerpo del
programa. En el programa principal, la variable entera n guarda el total de elementos ocupados del índice.
El procedimiento CargarIndice, coge el archivo secuencial creado en el ejemplo anterior y lo vuelca sobre un array.
algoritmo GestiónArchivoIndexado
MaxReg = 120
//El índice sólo tiene 100 posiciones ya que sólo hay 100 productos distintos
numElemIndice = 100
tipos
registro = rProducto
…
fin_registro
archivo_d de rProducto = aProducto
registro = RIndice
…
fin_registro
array[0.. numElemIndice] de RIndice = vIndice
var
aProducto : A
rProducto : R
vIndice : Ind
entero : n
inicio
abrir(A,lectura/escritura,'PRODUCTOS.DAT')
CargarIndice(Ind,n)
…
GuardarIndice(Ind,n)
cerrar(A)
fin
//Carga el archivo secuencial con el índice en un array
//Devuelve el número de elementos ocupados del índice (n)
procedimiento CargarIndice(ref vIndice : v; ref entero : n)
var
archivo_s de RIndice : A
RIndice : R
inicio
abrir(A,escritura,'CODIGO.IDX')
n ← 0
leer(A,R)
mientras no fda(A) hacer
n ← n + 1
v[n] ← R
leer(A,R)
fin_mientras
cerrar(A)
fin_procedimiento
No hay comentarios:
Publicar un comentario