Provided by: manpages-es_1.55-8_all bug

NOMBRE

       recno - método de acceso a bases de datos con registros numerados

SINOPSIS

       #include <sys/types.h>
       #include <db.h>

DESCRIPCIÓN

       La  ruinta  dbopen  es  la  interfaz de biblioteca para los ficheros de
       bases de datos. Uno de los formatos de fichero soportados es el de  los
       ficheros   con   registros   numerados   (que  llamaremos  regnum).  La
       descripción general de los métodos  de  acceso  a  bases  de  datos  se
       encuentra  en  la  página de manual de dbopen(3); esta página de manual
       sólo describe información específica de regnum.

       La  estructura  de  datos  de  registros  numerados  está  formada  por
       registros  de  longitud  o fija o variable almacenados en un formato de
       fichero  plano,  accedido  por  el  número  lógico  de  registro.    La
       existencia  del  registro  número  cinco  implica  la existencia de los
       registros del 1 al 5, y la eliminación del registro número 1  hace  que
       el  registro  número 5 sea renumerado al registro número 4, de la misma
       manera que el cursor se  desplazará  un  registro  hacia  abajo  si  se
       encuentra posicionado después del registro número 1.

       La   estructura  de  datos  específica  del  método  de  acceso  regnum
       proporcionada a dbopen se define en el  fichero  cabecera  <db.h>  como
       sigue:

       typedef struct {
              u_long flags;
              u_int cachesize;
              u_int psize;
              int lorder;
              size_t reclen;
              u_char bval;
              char *bfname;
       } RECNOINFO;

       Los elementos de esta estructura se definen de la siguiente manera:

       flags  El valor de las opciones se especifica mediante una operación O-
              lógica de cualquiera de los siguientes valores:

              R_FIXEDLEN
                     Los registros son de longitud fija,  no  delimitados  por
                     bytes.  El elemento reclen de la estructura especifica la
                     longitud del registro y el elemento bval de la estructura
                     se  usa  como  carácter de relleno.  Todos los registros,
                     insertados en la base de  datos,  cuya  longitud  es  más
                     pequeña  que  reclen  bytes, se completan automáticamente
                     con el carácter bval.

              R_NOKEY
                     En la interfaz especificada por dbopen,  la  recuperación
                     secuencial  de  registros  rellena  tanto  la  clave  del
                     invocador  como  las  estructuras  de   datos.    Si   se
                     especifica  la  opción  R_NOKEY,  no  se  necesitarán las
                     rutinas con cursor para  rellenar  la  estructura  de  la
                     clave.    Esto   permite  a  las  aplicaciones  recuperar
                     registros al final de los ficheros  sin  leer  todos  los
                     registros que intervienen.

              R_SNAPSHOT
                     Esta opción exige que se tome una instantanea del fichero
                     cuando se llame  a  dbopen,  en  lugar  de  permitir  que
                     cualquier  registro  sin  modificar sea leído del fichero
                     original.

       cachesize
              Tamaño máximo sugerido, en bytes, de  la  memoria  caché.   Este
              valor  sólo  es  consultivo  y el método de acceso reservará más
              memoria antes que fallar.  Si cachesize es 0 (no  se  especifica
              un tamaño) se usa una caché por defecto.

       psize  El  método  de  acceso  regnum almacena las copias residentes en
              memoria de sus registros en un árbolB (btree).  Este valor es el
              tamaño  (en  bytes)  de las páginas usadas para nodos del árbol.
              Si psize es  0  (no  se  especifica  un  tamaño  de  página)  se
              selecciona  un tamaño de página basado en el tamaño de bloque de
              E/S del sistema de ficheros subyacente.  Véase btree(3) para más
              información.

       lorder El  orden  de  los  bytes  para  los  enteros  de  los metadatos
              almacenados en la base de datos. El número  debería  representar
              el orden como un entero; por ejemplo, el orden ‘el byte de mayor
              peso el último’ (orden ascendente) sería  el  número  4321.   Si
              lorder  es 0 (no se especifica un orden) se utiliza el orden del
              anfitrión actual.

       reclen El tamaño de un registro de tamaño fijo.

       bval   El byte delimitador a usar para marcar el final de  un  registro
              para  los registros de tamaño variable, y el carácter de relleno
              para los registros de tamaño  fijo.   Si  no  se  especifica  un
              valor, se utilizan caracteres ‘nueva línea’ (‘‘\n’’) para marcar
              el final de los registros de longitud variable y  los  registros
              de longitud fija se completan con espacios.

       bfname El  método  de  acceso  regnum almacena las copias residentes en
              memoria de sus registros en un árbolB.  Si bfname  no  es  NULL,
              especifica   el   nombre  de  un  fichero  árbolB,  como  si  se
              especificara el nombre de fichero para una llamadada a dbopen de
              un fichero árbolB.

       La  parte  de  datos  del par clave/datos usado por el método de acceso
       regnum es la misma que la de los otros métodos de acceso.  La clave  es
       diferente.   El  campo  data  de  la clave debería ser un puntero a una
       posición de memoria del tipo recno_t,  tal  y  como  se  define  en  el
       fichero  cabecera <db.h>.  Normalmente, este tipo es el tipo entero sin
       signo más grande disponible para la implementación.  El campo  size  de
       la clave debería ser el tamaño de ese tipo.

       Ya  que  puede  no  haber  ningún  metadato  asociado  con los ficheros
       subyacentes del método de acceso regnum, cualquier cambio  realizado  a
       los valores por defecto (por ejemplo, a la longitud de los registros de
       tamaño fijo o al valor del separador  de  bytes)  se  debe  especificar
       explícitamente cada vez que se abra el fichero.

       En  la interfaz especificada por dbopen, el uso de la interfaz put para
       crear un nuevo registro  provocará  la  creación  de  varios  registros
       vacíos  si el número de registro es mayor, en más de uno, que el número
       del mayor registro actualmente en la base de datos.

ERRORES

       Las rutinas del método de acceso regnum pueden fallar y asignar a errno
       cualquiera  de  los  errores especificados para la rutina de biblioteca
       dbopen(3) o el siguiente:

       [EINVAL]
              Se ha intentado añadir un  registro  a  una  base  de  datos  de
              registros de tamaño fijo que s demasiado grande para caber.

VÉASE TAMBIÉN

       btree(3) dbopen(3), hash(3), mpool(3),

       Document   Processing   in   a   Relational  Database  System,  Michael
       Stonebraker, Heidi Stettner, Joseph  Kalash,  Antonin  Guttman,  Nadene
       Lynn, Memorandum No. UCB/ERL M82/32, May 1982.

FALLOS

       Sólo  se soportan los órdenes de bytes ascedente (el byte de mayor peso
       el último) y descendente (el byte de menor peso el último).