6








         APENDICE G. ESTRUCTURA DEL ARCHIVO MAESTRO Y FORMATO DE REGISTROS
          _________________________________________________________________

          A. Formato del registro del archivo maestro

            Los registros del archivo maestro son registros de longitud va-
          riable,  cada  uno de ellos  est  formado por  tres secciones: la
          primera  es  la etiqueta del registro,  de longitud  fija; la se-
          gunda, es un directorio o ¡ndice del contenido del registro; y la
          tercera contiene los campos de informaci¢n de longitud variable.

           1. Formato de la etiqueta del registro

             La Etiqueta  del registro  est  formada por  los 7 enteros si-
          guientes  (los  campos marcados con *  son enteros  de 31-bit con
          signo):

            MFN*   N£mero del registro en el Archivo Maestro
            MFRL   Longitud de registro (siempre un n£mero par)
            MFBWB* Apuntador hacia atr s - N£mero del bloque
            MFBWP  Apuntador hacia atr s - Desplazamiento
           BASE   Desplazamiento hasta los campos variables (esta es la
                   longitud combinada de la etiqueta del registro y del
                   directorio en bytes)
            NVF   N£mero de campos en el registro (o sea, n£mero de
                   entradas en el directorio)
            STATUS Indicador de cancelaci¢n l¢gica (0 = registro activo; 1
                   = registro marcado para ser borrado)

            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).

           2. Formato del directorio

             El directorio es una tabla que indica el  contenido del regis-
          tro. 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:

            TAG Etiqueta del campo
            POS Desplazamiento hasta la posici¢n del primer caracter del
               campo en la secci¢n de datos variables (el primer campo
                tiene POS = 0)
            LEN Longitud del campo en bytes




                                         278








             Por lo tanto la longitud total del directorio en  bytes es 6 *
          NVF.  El campo BASE en la etiqueta del registro  siempre tiene el
          valor 18 + 6 * NVF

           3. Campos variables

            Esta secci¢n contiene los campos de datos (en el orden indicado
          en el directorio).  Los campos de datos son colocados uno despus
          de otro, sin caracteres de separaci¢n.

          B. Registro de control

           El primer registro del archivo Maestro es un registro de control
          que es mantenido autom ticamente por el sistema. Nunca es accesi-
          ble al usuario de ISIS.  Su contenido es el siguiente (los campos
          marcados con * son enteros de 31-bits con signo):

           CTLMFN* Siempre 0 (cero)
           NXTMFN* MFN a ser asignado al siguiente registro creado en la
                   base de datos
           NXTMFB* N£mero del £ltimo bloque asignado al archivo maestro (el
                   primer bloque es 1)
           NXTMFP  Desplazamiento hasta la siguiente posici¢n disponible en
                   el £ltimo bloque
           MFTYPE  Siempre  0 para el archivo de la base de datos del
                   usuario (1 para archivo de mensajes del sistema)
           RECCNT*
           MFCXX1*
           MFCXX2*
           MFCXX3*

             (los  £ltimos  cuatro  campos  se  usan   para  el  c lculo de
          estad¡sticas  durante las operaciones de  respaldo y restauraci¢n
          de archivos)

          C. Formato de bloqueo del archivo maestro

            Los registros del archivo  maestro son almacenados consecutiva-
          mente,  uno tras otro,  cada uno ocupando exactamente MFRL bytes.
          El archivo es almacenado en bloques f¡sicos de 512  bytes. Un re-
          gistro  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 man-
          tiene un ¡ndice que indica la  posici¢n de cada  registro. El ¡n-
          dice es almacenado en el archivo de Referencias Cruzadas (.XRF).

          D. 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:



                                         279








           XRFMFB  (21 bits) N£mero del bloque del Archivo Maestro que con-
          tiene al registro

            XRFMBP   (11 bits) Desplazamiento dentro del bloque, del primer
          caracter del registro en el archivo maestro  (la primera posici¢n
          en el bloque es 0)

           Estos campos est n almacenados como un entero de 31-bit con sig-
          no (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:

            XRFMFB  <  0   XRFMFP > 0 Registro borrado l¢gicamente (en este
                                caso  ABS  (XRFMFB)  es  el  apuntador  del
                                bloque    correcto    y   XRFMFP    es   el
                                desplazamiento del registro  el  cual puede
                                entonces todav¡a ser recuperado).

            XRFMFB = -1 XRFMFP = 0 registro borrado f¡sicamente

             XRFMFB  =  0   XRFMFP  =  0  registro  inexistente  (todos los
                                registros m s all  del  m ximo MFN asignado
                                en la base de datos)

          E. Tcnica de actualizaci¢n del archivo maestro

           1. Creaci¢n 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.

             Despus de agregar el registro, el NXTMFN es incrementado en 1
          y NXTMFB/NXTMFP son actualizados para apuntar a  la siguiente po-
          sici¢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 (despus de  la inversi¢n  del registro, se
          resta 1024 de XRFMFP).








                                         280








           2. Actualizaci¢n de registros existentes

             Siempre que se actualiza un registro (es decir, se presenta en
          la pantalla de captura, 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 regis-
          tro en el momento en que fue leido inicialmente:

             i.  NO HAY ACTUALIZACION 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. Adicional-
          mente,  se suma 512  a XRFMFP para indicar que est  pendiente una
          actualizaci¢n del archivo invertido.  Cuando se actualiza  el ar-
          chivo invertido,  la versi¢n  antigua del registro  es usada para
          determinar  las ocurrencias de  trminos que deben  borrarse y la
          nueva  versi¢n es  usada para  agregar las  nuevas  ocurrencias y
          trminos.  Despus de  actualizar el archivo Invertido,  se resta
          512 de XRFMFP, y se asigna el valor de 0 a MFBWB/MFBWP.

            ii. ESTABA PENDIENTE LA  ACTUALIZACION 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 de-
          cir, si la longitud del registro no se ha incrementado, el regis-
          tro es grabado nuevamente en  su posici¢n original;  en caso con-
          trario,  es  grabado  al  final  del  archivo.  En  ambos  casos,
          MFBWB/MFBWP no se modifican.

           3. 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

          F. Reorganizaci¢n del archivo maestro





                                         281








            Como se indic¢ anteriormente, conforme se actualizan los regis-
          tros del archivo Maestro,  ste aumenta de tama¤o y se pierde es-
          pacio que no puede ser utilizado. Las funciones de reorganizaci¢n
          permiten recuperar este  espacio mediante  la  recompactaci¢n del
          archivo.

            Durante la fase de respaldo se crea una copia del archivo Maes-
          tro (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 respaldo de los registros marca-
          dos para ser borrados. Dado que s¢lo se realiza el respaldo de la
          £ltima copia de cada registro,  el sistema no permite realizar la
          funci¢n de respaldo cuando  se encuentra  pendiente la actualiza-
          ci¢n del archivo invertido para uno o m s registros.

           Durante la fase de restauraci¢n, el archivo de respaldo es leido
          secuencialmente y el programa regenera los archivos .MST  y .XRF.
          En este punto,  todos los registros que estaban marcados para ser
          borrados l¢gicamente (antes del respaldo),  son marcados como f¡-
          sicamente borrados (asignando los valores XRFMFB =  -1 y XRFMFP =
          0).  Los registros borrados se detectan verificando los vac¡os en
          la secuencia de numeraci¢n de MFN.

          *control de ste. Sin embargo, con objeto de evitar posibles con-
          flictos entre nombres, es conveniente  
































                                         282




: