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

NOMBRE

       recno - metodo de acceso a bases de datos con registros numerados

SINOPSIS

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

DESCRIPCI'ON

       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
       descripcion general de los metodos  de  acceso  a  bases  de  datos  se
       encuentra  en  la  pagina de manual de dbopen(3); esta pagina de manual
       solo describe informacion especifica de regnum.

       La  estructura  de  datos  de  registros  numerados  esta  formada  por
       registros  de  longitud  o fija o variable almacenados en un formato de
       fichero  plano,  accedido  por  el  numero  logico  de  registro.    La
       existencia  del  registro  numero  cinco  implica  la existencia de los
       registros del 1 al 5, y la eliminacion del registro numero 1  hace  que
       el  registro  numero 5 sea renumerado al registro numero 4, de la misma
       manera que el cursor se  desplazara  un  registro  hacia  abajo  si  se
       encuentra posicionado despues del registro numero 1.

       La   estructura  de  datos  especifica  del  metodo  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 operacion O-
              logica 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  caracter de relleno.  Todos los registros,
                     insertados en la base de  datos,  cuya  longitud  es  mas
                     pequena  que  reclen  bytes, se completan automaticamente
                     con el caracter bval.

              R_NOKEY
                     En la interfaz especificada por dbopen,  la  recuperacion
                     secuencial  de  registros  rellena  tanto  la  clave  del
                     invocador  como  las  estructuras  de   datos.    Si   se
                     especifica  la  opcion  R_NOKEY,  no  se  necesitaran 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 opcion exige que se tome una instantanea del fichero
                     cuando se llame  a  dbopen,  en  lugar  de  permitir  que
                     cualquier  registro  sin  modificar sea leido del fichero
                     original.

       cachesize
              Tamano maximo sugerido, en bytes, de  la  memoria  cache.   Este
              valor  s'olo  es  consultivo  y el metodo de acceso reservara mas
              memoria antes que fallar.  Si cachesize es 0 (no  se  especifica
              un tamano) se usa una cache por defecto.

       psize  El  metodo  de  acceso  regnum almacena las copias residentes en
              memoria de sus registros en un arbolB (btree).  Este valor es el
              tamano  (en  bytes)  de las paginas usadas para nodos del arbol.
              Si psize es  0  (no  se  especifica  un  tamano  de  pagina)  se
              selecciona  un tamano de pagina basado en el tamano de bloque de
              E/S del sistema de ficheros subyacente.  Vease btree(3) para mas
              informacion.

       lorder El  orden  de  los  bytes  para  los  enteros  de  los metadatos
              almacenados en la base de datos. El numero  deberia  representar
              el orden como un entero; por ejemplo, el orden `el byte de mayor
              peso el ultimo' (orden ascendente) seria  el  numero  4321.   Si
              lorder  es 0 (no se especifica un orden) se utiliza el orden del
              anfitrion actual.

       reclen El tamano de un registro de tamano fijo.

       bval   El byte delimitador a usar para marcar el final de  un  registro
              para  los registros de tamano variable, y el caracter de relleno
              para los registros de tamano  fijo.   Si  no  se  especifica  un
              valor, se utilizan caracteres `nueva linea' (``\n'') para marcar
              el final de los registros de longitud variable y  los  registros
              de longitud fija se completan con espacios.

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

       La  parte  de  datos  del par clave/datos usado por el metodo de acceso
       regnum es la misma que la de los otros metodos de acceso.  La clave  es
       diferente.   El  campo  data  de  la clave deberia ser un puntero a una
       posicion 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 mas grande disponible para la implementacion.  El campo  size  de
       la clave deberia ser el tamano de ese tipo.

       Ya  que  puede  no  haber  ningun  metadato  asociado  con los ficheros
       subyacentes del metodo de acceso regnum, cualquier cambio  realizado  a
       los valores por defecto (por ejemplo, a la longitud de los registros de
       tamano fijo o al valor del separador  de  bytes)  se  debe  especificar
       explicitamente cada vez que se abra el fichero.

       En  la interfaz especificada por dbopen, el uso de la interfaz put para
       crear un nuevo registro  provocara  la  creacion  de  varios  registros
       vacios  si el numero de registro es mayor, en mas de uno, que el numero
       del mayor registro actualmente en la base de datos.

ERRORES

       Las rutinas del metodo 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 anadir un  registro  a  una  base  de  datos  de
              registros de tamano fijo que s demasiado grande para caber.

V'EASE TAMBI'EN

       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

       Solo  se soportan los ordenes de bytes ascedente (el byte de mayor peso
       el ultimo) y descendente (el byte de menor peso el ultimo).