home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / database / softc210 / headers / dbf.h next >
Encoding:
C/C++ Source or Header  |  1991-05-23  |  8.4 KB  |  279 lines

  1. /*************************************************
  2.  **                                             **
  3.  **   dbf.h                                         **
  4.  **                                             **
  5.  **    Copyright (C) 1988, 1989, 1990, 1991 by  **
  6.  **               SoftC, Ltd.                   **
  7.  **               16820 3rd St NE               **
  8.  **               Ham Lake, MN 55304            **
  9.  **               (612) 434-6968                **
  10.  **                                             **
  11.  **             All rights reserved.            **
  12.  *************************************************/
  13.  
  14.  
  15.  
  16. #ifndef __SOFTC_H__
  17. #include "softc.h"
  18. #endif
  19.  
  20.  
  21.  
  22. /**********
  23.  *
  24.  *  Type Definitions
  25.  *
  26.  **********/
  27.  
  28.  
  29.  
  30.  
  31. typedef struct {  /* database field description */
  32.   CHAR name[11];    /* field name */
  33.   CHAR type;        /* field type
  34.                      * 'c' or 'C' - character
  35.                      * 'd' or 'D' - date
  36.                      * 'f' or 'F' - floating poINT (binary)
  37.                      * 'l' or 'L' - logical
  38.                      *              't' or 'T' - true
  39.                      *              'f' or 'F' - false
  40.                      *              'y' or 'Y' - yes
  41.                      *              'n' or 'N' - no
  42.                      *              '?'        - uninitialized
  43.                      * 'n' or 'N' - floating poINT (bcd) */
  44.   INT len;          /* field width */
  45.   INT decpl;        /* decimal count */
  46. } SC_FIELD;
  47.  
  48.  
  49. /* SoftC extended data file field types */
  50. #define SC_SHORT_FLD 1              /* signed SHORT integer (16 bits) */
  51. #define SC_USHORT_FLD 2             /* USHORT integer */
  52. #define SC_LONG_FLD 3               /* signed LONG integer (32 bits) */
  53. #define SC_ULONG_FLD 4              /* ULONG integer */
  54. #define SC_FLOAT_FLD 11             /* IEEE single real (32 bits) */
  55. #define SC_MSFLT_FLD 12             /* Microsoft floating poINT (old) */
  56. #define SC_DOUBLE_FLD 13            /* IEEE DOUBLE real (64 bits) */
  57. #define SC_MSDBL_FLD 14             /* Microsoft DOUBLE (old) */
  58.  
  59.  
  60.  
  61. typedef struct {  /* dBASE data file information packet */
  62.   CHAR fname[80];       /* file name */
  63.     UCHAR style;          /* file type (dBase3 or dBase4) */
  64.   CHAR memo;            /* memo file required */
  65.   CHAR mdx;             /* dBase4 .MDX file required (true or false) */
  66.   CHAR trans;           /* dBase4 transaction in process (true or false) */
  67.   CHAR encrypt;         /* dBase4 data file encrypted (true or false) */
  68.   CHAR lockt;           /* record/file/no lock */
  69.     ULONG ladrs;                  /* beginning address of locked area */
  70.     ULONG lsize;                  /* length of locked region */
  71.   SC_FLAGS flags;       /* miscellaneous flags */
  72. } SC_DBFINFO;
  73.  
  74. /* SC_DBFINFO memo flag */
  75. #define SC_USEMEMO 1                /* memo file used */
  76. #define SC_NOMEMO 0                 /* no memo file required */
  77.  
  78. /* SC_DBFINFO lockt flag */
  79. #define SC_DRECLCK 0x01             /* record lock active */
  80. #define SC_DFILLCK 0x02             /* file lock active */
  81.  
  82.  
  83. typedef struct {  /* dBASE data file record information packet */
  84.   INT reclen;     /* record length in bytes */
  85.   INT numflds;    /* number of fields in record */
  86.     CHAR F_PTR bfr; /* address of the record buffer */
  87. } SC_DBFRINFO;
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95. #ifdef __cplusplus
  96. extern "C" {
  97. #endif
  98.  
  99.  
  100. /**********
  101.  *
  102.  *  dBASE Database File Manipulator Prototypes
  103.  *
  104.  **********/
  105.  
  106.  
  107.  
  108.  
  109. INT scddbfrsz(  INT,              /* data file handle */
  110.                 INT *,            /* I/O buffer length in records */
  111.                 INT );            /* set or get buffer length */
  112.  
  113. INT scddbof(    INT );            /* file handle */
  114.  
  115. INT scddclose(  INT );            /* file handle */
  116.  
  117. INT scddcreate( CHAR *,           /* filename */
  118.                 INT,              /* number of data fields */
  119.                 SC_FIELD *,       /* field description array */
  120.                 INT );            /* dBase version (3 or 4) */
  121.  
  122. INT scddeof(    INT );            /* file handle */
  123.  
  124. INT scddflush(  INT );            /* file handle */
  125.  
  126. INT scddhget(   INT );            /* file handle */
  127.  
  128. INT scddinfo(   INT,              /* file handle */
  129.                 SC_DBFINFO * );   /* file information & status */
  130.  
  131. INT scddlock(   INT );            /* file handle */
  132.  
  133. INT scddlud(    INT,              /* file handle */
  134.                 CHAR *,           /* last update date string */
  135.                 INT );            /* date string format */
  136.  
  137. INT scddopenx(  INT *,            /* file handle */
  138.                 CHAR *,           /* filename */
  139.                 INT );            /* open mode & characteristics */
  140.  
  141. INT scddpack(   INT *);           /* data file handle */
  142.  
  143. INT scddsize(   INT,              /* file handle */
  144.                 LONG * );         /* number of data records */
  145.  
  146. INT scddunlock( INT );            /* file handle */
  147.  
  148.  
  149.  
  150.  
  151. /**********
  152.  *
  153.  *  dBASE Database Field Manipulator Prototypes
  154.  *
  155.  **********/
  156.  
  157.  
  158.  
  159.  
  160. INT scddfgets(  INT,              /* file handle */
  161.                 INT,              /* field number */
  162.                 CHAR * );         /* buffer for field data */
  163.  
  164. INT scddfget(   INT,              /* file handle */
  165.                 INT,              /* field number */
  166.                 VOID * );         /* buffer for field data */
  167.  
  168. INT scddfinfo(  INT,              /* file handle */
  169.                 INT *,            /* length of longest field */
  170.                 SC_FIELD * );     /* field description array */
  171.  
  172. INT scddfnam2no(INT,              /* file handle */
  173.                 INT *,            /* field number */
  174.                 CHAR *);          /* field name */
  175.  
  176. INT scddfputs(  INT,              /* file handle */
  177.                 INT,              /* field number */
  178.                 CHAR * );         /* buffer for field data */
  179.  
  180. INT scddfput(   INT,              /* file handle */
  181.                 INT,              /* field number */
  182.                 VOID * );         /* buffer for field data */
  183.  
  184.  
  185.  
  186.  
  187. /**********
  188.  *
  189.  *  dBASE Database Record Manipulator Prototypes
  190.  *
  191.  **********/
  192.  
  193.  
  194.  
  195.  
  196. INT scddrclear( INT );            /* file handle */
  197.  
  198. INT scddrdel(   INT,              /* file handle */
  199.                 LONG );           /* record number to delete */
  200.  
  201. INT scddrget(   INT,              /* file handle */
  202.                 LONG );           /* record number to read */
  203.  
  204. INT scddrgetx(  INT,              /* file handle */
  205.                 CHAR *,           /* input buffer address */
  206.                 LONG );           /* record number to read */
  207.  
  208. INT scddrinfo(  INT,              /* file handle */
  209.                 SC_DBFRINFO * );  /* record info structure */
  210.  
  211. INT scddrlock(  INT,              /* file handle */
  212.                 LONG );           /* record number to lock */
  213.  
  214. INT scddrnum(   INT,              /* file handle */
  215.                 LONG * );         /* current data record number */
  216.  
  217. INT scddrput (  INT,              /* file handle */
  218.                 LONG *,           /* record number */
  219.                 INT );            /* append or update record */
  220.  
  221. INT scddrputx(  INT,              /* file handle */
  222.                 CHAR *,           /* output buffer address */
  223.                 LONG *,           /* record number */
  224.                 INT );            /* append or update record */
  225.  
  226. INT scddrstat(  INT );            /* file handle */
  227.  
  228. INT scddrundel( INT,              /* fiel handle */
  229.                 LONG );           /* record number */
  230.  
  231.  
  232. #ifdef __cplusplus
  233. }
  234. #endif
  235.  
  236.  
  237.  
  238. /**********
  239.  *
  240.  *  External Variables
  241.  *
  242.  **********/
  243.  
  244.  
  245. extern INT sc_date_style;   /* date string format for scddfget/scddfput */
  246.  
  247.  
  248.  
  249.  
  250.  
  251. /**********
  252.  *
  253.  *  Compatibility Definitions
  254.  *
  255.  **********/
  256.  
  257.  
  258.  
  259. #define scdfget(a,b,c)      scddfget(a,b,c)
  260. #define scdfgetx(a,b,c,d)   scddfget(a,b,c)
  261. #define scdfgets(a,b,c)     scddfgets(a,b,c)
  262. #define scdfgetsx(a,b,c,d)  scddfgets(a,b,c)
  263.  
  264. #define scdfput(a,b,c)      scddfput(a,b,c)
  265. #define scdfputx(a,b,c,d)   scddfput(a,b,c)
  266. #define scdfputs(a,b,c)     scddfputs(a,b,c)
  267. #define scdfputsx(a,b,c,d)  scddfputs(a,b,c)
  268.  
  269. #define scdfinfo(a,b,c)     scddfinfo(a,b,c)
  270. #define scdfnam2no(a,b,c)   scddfnam2no(a,b,c)
  271.  
  272. #define scdrclear(a,b)      scddrclear(a)
  273. #define scdrdel(a,b)        scddrdel(a,b)
  274. #define scdrget(a,b)        scddrgetx(a,NULL,b)
  275. #define scdrinfo(a,b,c,d,e) scddrinfo(a,b,c,d)
  276. #define scdrput(a,b,c)      scddrputx(a,NULL,b,c)
  277. #define scdrundel(a,b)      scddrundel(a,b)
  278.  
  279.