FORMATO DEL REGISTRO DEL ARCHIVO MAESTRO
Los registros del archivo maestro son registros de longitud variable, cada uno de ellos está formado por tres secciones: la primera es el rótulo del registro, de longitud fija; la segunda, es un directorio o índice del contenido del registro; y la tercera contiene los campos de información de longitud variable.
FORMATO DEL ROTULO DEL REGISTRO
El rótulo del registro está formado por los 7 enteros siguientes (los campos marcados con * son enteros de 31-bit con signo):
Inicialmente a MFBWB y MFBWP se les asigna un valor de 0 (cero) cuando se crea el registro. Posteriormente son actualizados cada vez que el registro mismo es actualizado (ver más adelante).
FORMATO DEL DIRECTORIO
El directorio es una tabla que indica el contenido del registro. Hay una entrada o bloque de datos en el directorio para cada campo presente en el registro (es decir, el directorio tiene exactamente NVF entradas). Cada entrada de directorio consiste de tres enteros:
Por lo tanto la longitud total del directorio en bytes es 6 * NVF. El campo BASE en la rótulo del registro siempre tiene el valor 18 + 6 * NVF
CAMPOS VARIABLES
Esta sección contiene los campos de datos (en el orden indicado en el directorio). Los campos de datos son colocados uno después de otro, sin caracteres de separación.
REGISTRO DE CONTROL
El primer registro del archivo Maestro es un registro de control que es mantenido automáticamente por el sistema. Nunca es accesible al usuario de ISIS. Su contenido es el siguiente (los campos marcados con * son enteros de 31-bits con signo):
(los últimos cuatro campos se usan para el cálculo de estadísticas durante las operaciones de backup y restauración de archivos)
FORMATO DE BLOQUEO DEL ARCHIVO MAESTRO
Los registros del archivo maestro son almacenados consecutivamente, uno tras otro, cada uno ocupando exactamente MFRL bytes. El archivo es almacenado en bloques físicos de 512 bytes. Un registro puede empezar en cualquier límite de palabra entre 0 - 498 (ningún registro empieza entre 500 y 510) y puede extenderse a dos o más bloques.
Al crearse o al actualizar el archivo Maestro, el sistema mantiene un índice que indica la posición de cada registro. El índice es almacenado en el archivo de Referencias Cruzadas (.XRF).
ARCHIVO DE REFERENCIAS CRUZADAS
El archivo .XRF está organizado como una tabla de apuntadores al Archivo Maestro. El primer apuntador corresponde al MFN 1, el segundo al MFN 2, etc.
Cada apuntador está formado por dos campos:
Estos campos están almacenados como un entero de 31-bit con signo (4 bytes) de la siguiente forma:
apuntador = XRFMFB * 2048 + XRFMFP
(esto da por lo tanto un tamaño máximo del archivo maestro de 500 Megabytes).
Cada bloque del archivo .XRF es de 512 bytes y contiene 127 apuntadores. El primer campo en cada bloque (XRFPOS) es un entero de 31 bits con signo, cuyo valor absoluto es el número del bloque del XRF. Un valor de XRFPOS negativo indica el último bloque.
Los registros borrados se indican de la siguiente forma:
TECNICA DE ACTUALIZACION DEL ARCHIVO MAESTRO
CREACION DE NUEVOS REGISTROS
Los registros nuevos siempre son agregados al final del archivo Maestro, en la posición indicada por los campos NXTMFB/NXTMFP en el registro de control del Archivo Maestro. El MFN a ser asignado se obtiene del campo NXTMFN del registro de control.
Después de agregar el registro, el NXTMFN es incrementado en 1 y NXTMFB/NXTMFP son actualizados para apuntar a la siguiente posición disponible. Adicionalmente se crea un nuevo apuntador en el archivo .XRF y el campo XRFMFP correspondiente al registro es incrementado en 1024 para indicar que este es un nuevo registro que debe invertirse (después de la inversión del registro, se resta 1024 de XRFMFP).
ACTUALIZACION DE REGISTROS EXISTENTES
Siempre que se actualiza un registro (es decir, se presenta en la pantalla de ingreso, y se sale del editor con la opción X), el sistema vuelve a grabar el registro en el Archivo Maestro. El lugar donde se graba, depende de la situación (status) del registro en el momento en que fue leído inicialmente:
No había actualización pendiente del archivo invertido para ese registro.
Esta condición se identifica por lo siguiente:
En el XRF XRFMFP < 512 y
En el MST MFBWB = 0 y MFBWP = 0
En este caso, el registro siempre es re-escrito al final del archivo Maestro (como si fuese un nuevo registro) de acuerdo con lo indicado por NXTMFB/NXTMFP en el registro de control. En la nueva versión del registro, MFBWB/MFBWP son modificados para que apunten hacia la antigua versión del registro, mientras que en el archivo XRF el apuntador señala a la nueva versión. Adicionalmente, se suma 512 a XRFMFP para indicar que está pendiente una actualización del archivo invertido. Cuando se actualiza el archivo invertido, la versión antigua del registro es usada para determinar las ocurrencias de términos que deben borrarse y la nueva versión es usada para agregar las nuevas ocurrencias y términos. Después de actualizar el archivo Invertido, se resta 512 de XRFMFP, y se asigna el valor de 0 a MFBWB/MFBWP.
Estaba pendiente la actualización del archivo invertido
Esta condición se identifica por:
En el XRF XRFMFP > 512 y
En el MST MFBWB > 0
En este caso MFBWB/MFBWP apuntan a la versión del registro que corresponde al archivo Invertido vigente. Si es posible, es decir, si la longitud del registro no se ha incrementado, el registro es grabado nuevamente en su posición original; en caso contrario, es grabado al final del archivo. En ambos casos, MFBWB/MFBWP no se modifican.
BORRADO DE REGISTROS
Al borrado de registros se le da el mismo tratamiento que a la actualización, con la adición de las siguientes marcas:
En el XRF XRFMFB es negativo
En el MST STATUS se le asigna el valor 1
REORGANIZACION DEL ARCHIVO MAESTRO
Como se indicó anteriormente, conforme se actualizan los registros del archivo Maestro, éste aumenta de tamaño y se pierde espacio que no puede ser utilizado. Las funciones de reorganización permiten recuperar este espacio mediante la recompactación del archivo.
Durante la fase de backup se crea una copia del archivo Maestro (archivo .BKP). La estructura y formato de este archivo son las mismas del archivo Maestro (.MST) excepto que no se necesita el archivo de referencias cruzadas ya que todos los registros son adyacentes. No se realiza el backup de los registros marcados para ser borrados. Dado que solo se realiza el backup de la última copia de cada registro, el sistema no permite realizar la función de backup cuando se encuentra pendiente la actualización del archivo invertido para uno o más registros.