home *** CD-ROM | disk | FTP | other *** search
- /*************************************************
- ** **
- ** sc_base.h **
- ** **
- ** SoftC Database Library common header **
- ** **
- ** Copyright (C) 1988, 1989, 1990 by **
- ** SoftC, Ltd. **
- ** 16820 3rd St NE **
- ** Ham Lake, MN 55304 **
- ** (612) 434-6968 **
- ** **
- ** All rights reserved. **
- *************************************************/
-
-
-
- /**********
- *
- * Program Control Prototypes
- *
- **********/
-
-
-
-
- signed int scdinit( signed int, signed int );
- void scdterm( void );
- #define sceclr() (sc_code = SC_SUCCESS)
-
-
-
-
- /**********
- *
- * Defines
- *
- **********/
-
-
-
-
- /* scdikfind, scdnkfind, scdckfind definitions */
- #define SC_FIRST 1 /* find first key */
- #define SC_EXACT 2 /* find exact key (uses record number) */
-
- /* sctrget, sctrput definitions */
- #define SC_CRUNCHNG 0 /* leave memo buffer unchanged */
- #define SC_CRDELETE 1 /* delete soft carriage returns */
-
- /* scdcopen, scddopen, scdiopen, scdnopen, scdtopen */
- #define SC_RDWR 0 /* read/write access (default) */
- #define SC_RDONLY 1 /* read only access */
- #define SC_BUFFER 0 /* buffer disk writes in memory (default) */
- #define SC_FLUSH 2 /* force all writes to disk */
- #define SC_EXCLUDE 0 /* open file for exclusive use (default) */
- #define SC_SHARED 4 /* open file for shared use */
-
- /* scdcbfrsz, scddbfrsz, scdibfrsz, scdnbfrsz */
- #define SC_SETSZ 0 /* set buffer size */
- #define SC_GETSZ 1 /* get current buffer size */
-
- /* scddrget */
- #define SC_UPDATE 1 /* update existing record */
- #define SC_ADD 2 /* append record at end of file */
-
- /* scdccreate, scdicreate, scdncreate */
- #define SC_UNIQUE 0x80 /* unique index keys */
- #define SC_CKEY 'C' /* character type key */
- #define SC_DKEY 'D' /* date type key */
- #define SC_LKEY 'L' /* logical key type */
- #define SC_NKEY 'N' /* numeric type key */
-
- /* scdinit */
- #define SC_USEXHNDL 1 /* allow more than 20 open files */
-
-
-
-
- /**********
- *
- * Type Definitions
- *
- **********/
-
-
-
-
- typedef struct { /* database field description */
- signed char name[11]; /* field name */
- signed char type; /* field type
- * 'c' or 'C' - character
- * 'd' or 'D' - date
- * 'f' or 'F' - floating point (binary)
- * 'l' or 'L' - logical
- * 't' or 'T' - true
- * 'f' or 'F' - false
- * 'y' or 'Y' - yes
- * 'n' or 'N' - no
- * '?' - uninitialized
- * 'n' or 'N' - floating point (bcd) */
- signed int len; /* field width */
- signed int decpl; /* decimal count */
- } SC_FIELD;
-
-
-
- typedef struct { /* file open bit fields */
- unsigned int isreadonly:1; /* read only - or - read/write (default) */
- unsigned int isshareable:1; /* shared - or - single (default) */
- unsigned int isunbuffered:1; /* no buffering - or - auto buffer (default) */
- } SC_FLAGS;
-
-
-
- typedef struct { /* dBASE data file information packet */
- signed char fname[80]; /* file name */
- signed char style; /* file type (dBase3 or dBase4) */
- signed char memo; /* memo file required */
- signed char mdx; /* dBase4 .MDX file required (true or false) */
- signed char trans; /* dBase4 transaction in process (true or false) */
- signed char encrypt; /* dBase4 data file encrypted (true or false) */
- signed char lockt; /* record/file/no lock */
- unsigned long ladrs; /* beginning address of locked area */
- unsigned long lsize; /* length of locked region */
- SC_FLAGS flags; /* miscellaneous flags */
- } SC_DBFINFO;
-
- /* SC_DBFINFO style flag */
- #define SC_DB3 0 /* dBase3 type data file */
- #define SC_DB4 1 /* dBase4 type data file */
-
- /* SC_DBFINFO memo flag */
- #define SC_USEMEMO 2 /* memo file used */
- #define SC_NOMEMO 0 /* no memo file required */
-
- /* SC_DBFINFO lockt flag */
- #define SC_DRECLCK 0x01 /* record lock active */
- #define SC_DFILLCK 0x02 /* file lock active */
-
-
- typedef struct { /* dBASE data file record information packet */
- signed int reclen; /* record length in bytes */
- signed int numflds; /* number of fields in record */
- unsigned char *bfr; /* address of the record buffer */
- } SC_DBFRINFO;
-
-
-
- typedef struct { /* dBASE memo file information packet */
- signed char fname[80]; /* file name */
- SC_FLAGS flags; /* miscellaneous flags */
- } SC_DBTINFO;
-
-
-
- typedef struct { /* dBASE index file information packet */
- signed char fname[80]; /* file name */
- signed char keytype; /* key type ('C' Character, 'N' Date/Numeric) */
- signed char keylen; /* key length */
- signed int exprlen; /* key expression length */
- SC_FLAGS flags; /* miscellaneous flags */
- } SC_NDXINFO;
-
-
-
- typedef struct { /* Clipper index file information packet */
- signed char fname[80]; /* file name */
- signed int keylen; /* key length */
- signed int keydpl; /* number of decimal places in numeric keys */
- signed int exprlen; /* key expression length */
- SC_FLAGS flags; /* miscellaneous flags */
- } SC_NTXINFO;
-
-
- typedef struct { /* FoxBASE index file information packet */
- signed char fname[80]; /* file name */
- signed char keytype; /* key type ('C' Character, 'N' Date/Numeric) */
- signed char keylen; /* key length */
- signed int exprlen; /* key expression length */
- SC_FLAGS flags; /* miscellaneous flags */
- } SC_IDXINFO;
-
-
-
- /**********
- *
- * dBASE Database File Manipulator Prototypes
- *
- **********/
-
-
-
-
- signed int scddbfrsz( signed int, /* data file handle */
- signed int *, /* I/O buffer length in records */
- signed int ); /* set or get buffer length */
-
- signed int scddbof( signed int ); /* file handle */
-
- signed int scddclose( signed int ); /* file handle */
-
- signed int scddcreate(signed char *, /* filename */
- signed int, /* number of data fields */
- SC_FIELD *, /* field description array */
- signed int ); /* dBase version (3 or 4) */
-
- signed int scddeof( signed int ); /* file handle */
-
- signed int scddflush( signed int ); /* file handle */
-
- signed int scddinfo( signed int, /* file handle */
- SC_DBFINFO * ); /* file information & status */
-
- signed int scddlock( signed int ); /* file handle */
-
- signed int scddlud( signed int, /* file handle */
- signed char *, /* last update date string */
- signed int ); /* date string format */
-
- signed int scddopenx( signed int *, /* file handle */
- signed char *, /* filename */
- signed int ); /* open mode & characteristics */
-
- signed int scddpack( signed int *); /* data file handle */
-
- signed int scddsize( signed int, /* file handle */
- signed long * ); /* number of data records */
-
- signed int scddunlock(signed int ); /* file handle */
-
-
-
-
- /**********
- *
- * dBASE Database Field Manipulator Prototypes
- *
- **********/
-
-
-
-
- signed int scddfgets( signed int, /* file handle */
- signed int, /* field number */
- char * ); /* buffer for field data */
-
- signed int scddfget( signed int, /* file handle */
- signed int, /* field number */
- void * ); /* buffer for field data */
-
- signed int scddfinfo( signed int, /* file handle */
- signed int *, /* length of longest field */
- SC_FIELD * ); /* field description array */
-
- signed int scddfnam2no(signed int, /* file handle */
- signed int *, /* field number */
- signed char *); /* field name */
-
- signed int scddfputs( signed int, /* file handle */
- signed int, /* field number */
- char * ); /* buffer for field data */
-
- signed int scddfput( signed int, /* file handle */
- signed int, /* field number */
- void * ); /* buffer for field data */
-
-
-
-
- /**********
- *
- * dBASE Database Record Manipulator Prototypes
- *
- **********/
-
-
-
-
- signed int scddrclear(signed int ); /* file handle */
-
- signed int scddrdel( signed int, /* file handle */
- signed long ); /* record number to delete */
-
- signed int scddrget( signed int, /* file handle */
- signed long ); /* record number to read */
-
- signed int scddrinfo( signed int, /* file handle */
- SC_DBFRINFO * ); /* record info structure */
-
- signed int scddrlock( signed int, /* file handle */
- signed long ); /* record number to lock */
-
- signed int scddrnum( signed int, /* file handle */
- signed long * ); /* current data record number */
-
- signed int scddrput( signed int, /* file handle */
- signed long *, /* record number */
- signed int ); /* append or update record */
-
- signed int scddrstat( signed int ); /* file handle */
-
- signed int scddrundel(signed int, /* fiel handle */
- signed long ); /* record number */
-
-
-
- /**********
- *
- * dBASE Index File Manipulators Prototypes
- *
- **********/
-
-
-
-
- signed int scdnbfrsz( signed int, /* index file handle */
- signed int *, /* buffer length in pages */
- signed int ); /* set or get buffer length */
-
- signed int scdnclose( signed int ); /* file handle */
-
- signed int scdncreate(signed char *, /* filename */
- signed int, /* index key type */
- signed char *, /* key expression */
- signed int ); /* key length */
-
- signed int scdnexpr( signed int, /* file handle */
- signed char * ); /* key expression */
-
- signed int scdnflush( signed int ); /* file handle */
-
- signed int scdnindex( signed int, /* data file handle */
- signed char *, /* new file name */
- signed int, /* index key type */
- signed char *, /* key expression */
- signed int ); /* key length */
-
- signed int scdninfo( signed int, /* file handle */
- SC_NDXINFO * ); /* file information and status */
-
- signed int scdnopenx( signed int *, /* file handle */
- signed char *, /* filename */
- signed int ); /* open mode and characteristics */
-
-
-
-
- /**********
- *
- * dBASE Index Key Building Prototypes
- *
- **********/
-
-
-
-
- signed int scdnkdate( double *, /* numeric date */
- signed char *, /* date string */
- signed int ); /* date string format type */
-
- signed int scdnkmake( signed int, /* .DBF file handle */
- signed int, /* .NDX file handle */
- void ** ); /* index key */
-
-
-
-
- /**********
- *
- * dBASE Index Key Manipulator Prototypes
- *
- **********/
-
-
-
-
- signed int scdnkadd( signed int, /* file handle */
- void *, /* key string */
- signed long ); /* data record number */
-
- signed int scdnkbot( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdnkcur( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdnkdel( signed int, /* file handle */
- void *, /* key string */
- signed long ); /* data record number */
-
- signed int scdnkfind( signed int, /* file handle */
- void *, /* key string */
- signed long *, /* data record number */
- signed int); /* exact match or first */
-
- signed int scdnknext( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdnkprev( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdnktop( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
-
-
-
-
- /**********
- *
- * Clipper Index File Manipulators Prototypes
- *
- **********/
-
-
-
-
- signed int scdcbfrsz( signed int, /* index file handle */
- signed int *, /* buffer length in pages */
- signed int ); /* set or get buffer length */
-
- signed int scdcclose( signed int ); /* file handle */
-
- signed int scdccreate(signed char *, /* filename */
- signed int, /* index key type */
- signed char *, /* key expression */
- signed int, /* key length */
- signed int ); /* number of decimal places */
-
- signed int scdcexpr( signed int, /* file handle */
- signed char * ); /* key expression */
-
- signed int scdcflush( signed int ); /* file handle */
-
- signed int scdcindex( signed int, /* data file handle */
- signed char *, /* new file name */
- signed int, /* index key type */
- signed char *, /* key expression */
- signed int, /* key length */
- signed int ); /* number of decimal places */
-
- signed int scdcinfo( signed int, /* file handle */
- SC_NTXINFO * ); /* file information and status */
-
- signed int scdcopenx( signed int *, /* file handle */
- signed char *, /* filename */
- signed int ); /* open mode and characteristics */
-
-
-
-
- /**********
- *
- * Clipper Index Key Building Prototypes
- *
- **********/
-
-
-
-
- signed int scdckmake( signed int, /* .DBF file handle */
- signed int, /* .NTX file handle */
- void ** ); /* index key */
-
-
-
-
- /**********
- *
- * Clipper Index Key Manipulator Prototypes
- *
- **********/
-
-
-
-
- signed int scdckadd( signed int, /* file handle */
- void *, /* key string */
- signed long ); /* data record number */
-
- signed int scdckbot( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdckcur( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdckdel( signed int, /* file handle */
- void *, /* key string */
- signed long ); /* data record number */
-
- signed int scdckfind( signed int, /* file handle */
- void *, /* key string */
- signed long *, /* data record number */
- signed int); /* exact match or first */
-
- signed int scdcknext( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdckprev( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdcktop( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
-
-
-
-
- /**********
- *
- * FoxBASE+ Index File Manipulators Prototypes
- *
- **********/
-
-
-
-
- signed int scdibfrsz( signed int, /* index file handle */
- signed int *, /* buffer length in pages */
- signed int ); /* set or get buffer length */
-
- signed int scdiclose( signed int ); /* file handle */
-
- signed int scdicreate(signed char *, /* filename */
- signed int, /* index key type */
- signed char *, /* key expression */
- signed int ); /* key length */
-
- signed int scdiexpr( signed int, /* file handle */
- signed char * ); /* key expression */
-
- signed int scdiflush( signed int ); /* file handle */
-
- signed int scdiindex( signed int, /* data file handle */
- signed char *, /* new file name */
- signed int, /* index key type */
- signed char *, /* key expression */
- signed int ); /* key length */
-
- signed int scdiinfo( signed int, /* file handle */
- SC_IDXINFO * ); /* file information and status */
-
- signed int scdiopenx( signed int *, /* file handle */
- signed char *, /* filename */
- signed int ); /* open mode and characteristics */
-
-
-
-
- /**********
- *
- * FoxBASE+ Index Key Building Prototypes
- *
- **********/
-
-
-
-
- signed int scdikdate( unsigned char *, /* FoxBASE date */
- signed char *, /* date string */
- signed int ); /* date string format type */
-
- signed int scdikmake( signed int, /* .DBF file handle */
- signed int, /* .NTX file handle */
- void ** ); /* index key */
-
- signed int scdiknum( unsigned char *, /* FoxBASE double */
- double ); /* C double */
-
-
-
-
-
-
- /**********
- *
- * FoxBASE+ Index Key Manipulator Prototypes
- *
- **********/
-
-
-
-
- signed int scdikadd( signed int, /* file handle */
- void *, /* key string */
- signed long ); /* data record number */
-
- signed int scdikbot( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdikcur( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdikdel( signed int, /* file handle */
- void *, /* key string */
- signed long ); /* data record number */
-
- signed int scdikfind( signed int, /* file handle */
- void *, /* key string */
- signed long *, /* data record number */
- signed int); /* exact match or first */
-
- signed int scdiknext( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdikprev( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
- signed int scdiktop( signed int, /* file handle */
- void *, /* key string */
- signed long *); /* data record number */
-
-
-
-
-
- /**********
- *
- * dBase3 Memo File Manipulator Prototypes
- *
- **********/
-
-
-
-
- signed int scdtclose( signed int ); /* file handle */
-
- signed int scdtcreate(signed char * ); /* filename */
-
- signed int scdtinfo( signed int, /* file handle */
- SC_DBTINFO * ); /* file information and status */
-
- signed int scdtopenx( signed int *, /* file handle */
- signed char *, /* filename */
- signed int ); /* open mode & characteristics */
-
- signed int scdtpack( signed int, /* data file handle */
- signed int *); /* memo file handle */
-
- signed int scdtrget( signed int, /* file handle */
- signed long, /* record number */
- signed char **, /* buffer for record number */
- signed int ); /* remove soft carriage returns? */
-
- signed int scdtrput( signed int, /* file handle */
- signed long *, /* record number */
- signed char *, /* buffer for record data */
- signed int ); /* insert soft carriage returns? */
-
-
-
-
-
-
- /**********
- *
- * External Variables
- *
- **********/
-
-
- extern signed int sc_date_style; /* date string format for scddfget/scddfput */
-
-
-
-
-
- /**********
- *
- * Compatibility Definitions
- *
- **********/
-
-
-
-
- #define scdfget(a,b,c) scddfget(a,b,c)
- #define scdfgetx(a,b,c,d) scddfget(a,b,c)
- #define scdfgets(a,b,c) scddfgets(a,b,c)
- #define scdfgetsx(a,b,c,d) scddfgets(a,b,c)
-
- #define scdfput(a,b,c) scddfput(a,b,c)
- #define scdfputx(a,b,c,d) scddfput(a,b,c)
- #define scdfputs(a,b,c) scddfputs(a,b,c)
- #define scdfputsx(a,b,c,d) scddfputs(a,b,c)
-
- #define scdfinfo(a,b,c) scddfinfo(a,b,c)
- #define scdfnam2no(a,b,c) scddfnam2no(a,b,c)
-
- #define scdrclear(a,b) scddrclear(a)
- #define scdrdel(a,b) scddrdel(a,b)
- #define scdrget(a,b) scddrget(a,b)
- #define scdrinfo(a,b,c,d,e) scddrinfo(a,b,c,d)
- #define scdrput(a,b,c) scddrput(a,b,c)
- #define scdrundel(a,b) scddrundel(a,b)
-
- #define scdfgett(a,b,c) scdtrget(a,b,c,SC_CRDELETE)
- #define scdfgettx(a,b,c,d) scdtrget(a,b,c,d)
- #define scdfputt(a,b,c) scdtrput(a,b,c,66)
- #define scdfputtx(a,b,c,d) scdtrput(a,b,c,d)
-
- #define scdkadd(a,b,c) scdnkadd(a,b,c);
- #define scdkcur(a,b,c) scdnkcur(a,b,c);
- #define scdkdate(a,b) scdnkdate(a,b,SC_YMD)
- #define scdkdatex(a,b,c) scdnkdate(a,b,c)
- #define scdkdel(a,b,c) scdnkdel(a,b,c)
- #define scdkfind(a,b,c,d) scdnkfind(a,b,c,d)
- #define scdkfirst(a,b,c) scdnktop(a,b,c)
- #define scdklast(a,b,c) scdnkbot(a,b,c)
- #define scdkmake(a,b,c) scdnkmake(a,b,c)
- #define scdkmakex(a,b,c,d) scdnkmake(a,b,c)
- #define scdknext(a,b,c) scdnknext(a,b,c)
- #define scdkprev(a,b,c) scdnkprev(a,b,c)
-
- #define scdnopen(a,b) scdnopenx(a,b,SC_RDWR | SC_FLUSH | SC_EXCLUDE)
- #define scdpinfo(a,b) scdnbfrsz(a,b,SC_GETSZ)
- #define scdpnum(a,b) scdnbfrsz(a,b,SC_SETSZ)
-
- #define scdtopen(a,b) scdtopenx(a,b,SC_RDWR | SC_FLUSH | SC_EXCLUDE)
-