next up previous contents index
Next: Some Upper Limits Up: The LOCUS Database System Previous: Reclaiming Space

Entering Data from a Program

 

The following subroutines can be called from a program to create or update a database. Link with LOCUSLIB, $link yrprogram,locuslib/lib. Parameters that are returned from the subroutines are shown in uppercase. To create a database:

   call dbcrea(lbase,filbas, IOS)

   lbase   integer         unit number (>70)

   filbas  character       file name of type .DBC

   ios     integer         error from OPEN
To open a database:
   call dbopen(lbase,filbas,readon, IOS)

   lbase   integer         unit number (>70)

   filbas  character       file name of type .DBC

   readon  logical         .false. to read and write
                           .true. to read only

   ios     integer         error from OPEN
To write labels:
   call dbwlab(lbase,plabel,np)

   lbase   integer         unit number (as above)

   plabel  character*12     an array of parameter names

   np      integer         # of parameter names in plabel
To write values:
   call dbwval(lbase,pvalue,np)

   lbase   integer         unit number (as above)

   pvalue  character*12    parameter values; `NODATA'
                           is the missing data value

   np                      # of parameter values in pvalue
To read labels:
   call dbrlab(lbase, PLABEL,NP,ELABEL,NE,IOS)

   lbase   integer         unit number (as above)

   plabel  character*12     an array of parameter names

   np      integer         # of parameter names in plabel

   elabel  character*12     an array of expression names

   ne      integer         # of expression names in elabel

   ios     integer         if not 0, an error occurred
To read values:
   call dbrval(lbase,lrec,np, PVALUE,IOS)

   lbase   integer         unit number (as above)

   lrec    integer         record number (1...nrecpv)

   np                      # of parameter values in pvalue

   pvalue  character*12    parameter values (expression
                           values are not included)

   ios     integer         if not 0, an error occurred
To read the total number of records:
   call dbnrec(lbase, NRECEX,NRECPV)

   lbase   integer         unit number (as above)

   nrecex  integer         # of expression records

   nrecpv  integer         # of records of values, 
                           includes deleted records
To delete the scratch file:
  call dbdscr(lscr,filbas)

  lscr     integer         unit number to open scratch file

  filbas   character*13    database file name (as above)
Example:
       character*13    filbas
       character*12     plabel(4)
       character*12    pvalue(4)
       real            value(4)

       data filbas/`TEST.dbc'/
       data plabel/`A', `B', `C', `D'/
       data lbase/71/, lsrc/72/

c Delete the scratch file any time a modification is made
c to the database
       call dbdscr(lscr,filbas)

c Try to open the file. If the file does not exist (ios=29)
c then create it and write the labels into it.
       call dbopen(lbase,filbas,.false., ios)
       if (ios.eq.29) then
        call dbcrea(lbase,filbas, ios)
        call dbwlab(lbase,plabel,4)
       end if

       do nrecs=1,10
         (put values of A, B, C and D for
          this record into real array value)
         write(pvalue,`(4(1pg12.5))')(value(i),i=1,4)
         call dbwval(lbase,pvalue,4)
       end do

       call exit
       end



Marilee Thompson
Fri Jul 11 17:05:56 EDT 1997