home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / softc2.zip / SC_BASE.H < prev    next >
Text File  |  1990-07-27  |  25KB  |  735 lines

  1. /*************************************************
  2.  **                                             **
  3.  **   sc_base.h                                 **
  4.  **                                             **
  5.  **       SoftC Database Library common header  **
  6.  **                                             **
  7.  **         Copyright (C) 1988, 1989, 1990 by   **
  8.  **               SoftC, Ltd.                   **
  9.  **               16820 3rd St NE               **
  10.  **               Ham Lake, MN 55304            **
  11.  **               (612) 434-6968                **
  12.  **                                             **
  13.  **             All rights reserved.            **
  14.  *************************************************/
  15.  
  16.  
  17.  
  18. /**********
  19.  *
  20.  *  Program Control Prototypes
  21.  *
  22.  **********/
  23.  
  24.  
  25.  
  26.  
  27. signed int scdinit( signed int,  signed int );
  28. void scdterm( void );
  29. #define sceclr() (sc_code = SC_SUCCESS)
  30.  
  31.  
  32.  
  33.  
  34. /**********
  35.  *
  36.  *  Defines
  37.  *
  38.  **********/
  39.  
  40.  
  41.  
  42.  
  43. /* scdikfind, scdnkfind, scdckfind definitions */
  44. #define SC_FIRST 1                  /* find first key */
  45. #define SC_EXACT 2                  /* find exact key (uses record number) */
  46.  
  47. /* sctrget, sctrput definitions */
  48. #define SC_CRUNCHNG 0               /* leave memo buffer unchanged */
  49. #define SC_CRDELETE 1               /* delete soft carriage returns */
  50.  
  51. /* scdcopen, scddopen, scdiopen, scdnopen, scdtopen */
  52. #define SC_RDWR 0                   /* read/write access (default) */
  53. #define SC_RDONLY 1                 /* read only access */
  54. #define SC_BUFFER 0                 /* buffer disk writes in memory (default) */
  55. #define SC_FLUSH 2                  /* force all writes to disk */
  56. #define SC_EXCLUDE 0                /* open file for exclusive use (default) */
  57. #define SC_SHARED 4                 /* open file for shared use */
  58.  
  59. /* scdcbfrsz, scddbfrsz, scdibfrsz, scdnbfrsz */
  60. #define SC_SETSZ 0                  /* set buffer size */
  61. #define SC_GETSZ 1                  /* get current buffer size */
  62.  
  63. /* scddrget */
  64. #define SC_UPDATE 1                 /* update existing record */
  65. #define SC_ADD 2                    /* append record at end of file */
  66.  
  67. /* scdccreate, scdicreate, scdncreate */
  68. #define SC_UNIQUE 0x80              /* unique index keys */
  69. #define SC_CKEY 'C'                 /* character type key */
  70. #define SC_DKEY 'D'                 /* date type key */
  71. #define SC_LKEY 'L'                 /* logical key type */
  72. #define SC_NKEY 'N'                 /* numeric type key */
  73.  
  74. /* scdinit */
  75. #define SC_USEXHNDL 1               /* allow more than 20 open files */
  76.  
  77.  
  78.  
  79.  
  80. /**********
  81.  *
  82.  *  Type Definitions
  83.  *
  84.  **********/
  85.  
  86.  
  87.  
  88.  
  89. typedef struct {  /* database field description */
  90.   signed char name[11];   /* field name */
  91.   signed char type;       /* field type
  92.                            * 'c' or 'C' - character
  93.                            * 'd' or 'D' - date
  94.                            * 'f' or 'F' - floating point (binary)
  95.                            * 'l' or 'L' - logical
  96.                            *              't' or 'T' - true
  97.                            *              'f' or 'F' - false
  98.                            *              'y' or 'Y' - yes
  99.                            *              'n' or 'N' - no
  100.                            *              '?'        - uninitialized
  101.                            * 'n' or 'N' - floating point (bcd) */
  102.   signed int len;         /* field width */
  103.   signed int decpl;       /* decimal count */
  104. } SC_FIELD;
  105.  
  106.  
  107.  
  108. typedef struct {  /* file open bit fields */
  109.   unsigned int isreadonly:1;    /*    read only     - or -  read/write (default) */
  110.   unsigned int isshareable:1;   /*    shared        - or -  single (default) */
  111.   unsigned int isunbuffered:1;  /*    no buffering  - or -  auto buffer (default) */
  112. } SC_FLAGS;
  113.  
  114.  
  115.  
  116. typedef struct {  /* dBASE data file information packet */
  117.   signed char fname[80];  /* file name */
  118.   signed char style;      /* file type (dBase3 or dBase4) */
  119.   signed char memo;       /* memo file required */
  120.   signed char mdx;        /* dBase4 .MDX file required (true or false) */
  121.   signed char trans;      /* dBase4 transaction in process (true or false) */
  122.   signed char encrypt;    /* dBase4 data file encrypted (true or false) */
  123.   signed char lockt;      /* record/file/no lock */
  124.   unsigned long ladrs;    /* beginning address of locked area */
  125.   unsigned long lsize;    /* length of locked region */
  126.   SC_FLAGS flags;         /* miscellaneous flags */
  127. } SC_DBFINFO;
  128.  
  129. /* SC_DBFINFO style flag */
  130. #define SC_DB3 0                    /* dBase3 type data file */
  131. #define SC_DB4 1                    /* dBase4 type data file */
  132.  
  133. /* SC_DBFINFO memo flag */
  134. #define SC_USEMEMO 2                /* memo file used */
  135. #define SC_NOMEMO 0                 /* no memo file required */
  136.  
  137. /* SC_DBFINFO lockt flag */
  138. #define SC_DRECLCK 0x01             /* record lock active */
  139. #define SC_DFILLCK 0x02             /* file lock active */
  140.  
  141.  
  142. typedef struct {  /* dBASE data file record information packet */
  143.   signed int reclen;                /* record length in bytes */
  144.   signed int numflds;               /* number of fields in record */
  145.   unsigned char *bfr;               /* address of the record buffer */
  146. } SC_DBFRINFO;
  147.  
  148.  
  149.  
  150. typedef struct {  /* dBASE memo file information packet */
  151.   signed char fname[80];  /* file name */
  152.   SC_FLAGS flags;         /* miscellaneous flags */
  153. } SC_DBTINFO;
  154.  
  155.  
  156.  
  157. typedef struct {  /* dBASE index file information packet */
  158.   signed char fname[80];  /* file name */
  159.   signed char keytype;    /* key type ('C' Character, 'N' Date/Numeric) */
  160.   signed char keylen;     /* key length */
  161.   signed int exprlen;     /* key expression length */
  162.   SC_FLAGS flags;         /* miscellaneous flags */
  163. } SC_NDXINFO;
  164.  
  165.  
  166.  
  167. typedef struct {  /* Clipper index file information packet */
  168.   signed char fname[80];  /* file name */
  169.   signed int keylen;      /* key length */
  170.   signed int keydpl;      /* number of decimal places in numeric keys */
  171.   signed int exprlen;     /* key expression length */
  172.   SC_FLAGS flags;         /* miscellaneous flags */
  173. } SC_NTXINFO;
  174.  
  175.  
  176. typedef struct {  /* FoxBASE index file information packet */
  177.   signed char fname[80];  /* file name */
  178.   signed char keytype;    /* key type ('C' Character, 'N' Date/Numeric) */
  179.   signed char keylen;     /* key length */
  180.   signed int exprlen;     /* key expression length */
  181.   SC_FLAGS flags;         /* miscellaneous flags */
  182. } SC_IDXINFO;
  183.  
  184.  
  185.  
  186. /**********
  187.  *
  188.  *  dBASE Database File Manipulator Prototypes
  189.  *
  190.  **********/
  191.  
  192.  
  193.  
  194.  
  195. signed int scddbfrsz( signed int,       /* data file handle */
  196.                       signed int *,     /* I/O buffer length in records */
  197.                       signed int );     /* set or get buffer length */
  198.  
  199. signed int scddbof(   signed int );     /* file handle */
  200.  
  201. signed int scddclose( signed int );     /* file handle */
  202.  
  203. signed int scddcreate(signed char *,    /* filename */
  204.                       signed int,       /* number of data fields */
  205.                       SC_FIELD *,       /* field description array */
  206.                       signed int );     /* dBase version (3 or 4) */
  207.  
  208. signed int scddeof(   signed int );     /* file handle */
  209.  
  210. signed int scddflush( signed int );     /* file handle */
  211.  
  212. signed int scddinfo(  signed int,       /* file handle */
  213.                       SC_DBFINFO * );   /* file information & status */
  214.  
  215. signed int scddlock(  signed int );     /* file handle */
  216.  
  217. signed int scddlud(   signed int,       /* file handle */
  218.                       signed char *,    /* last update date string */
  219.                       signed int );     /* date string format */
  220.  
  221. signed int scddopenx( signed int *,     /* file handle */
  222.                       signed char *,    /* filename */
  223.                       signed int );     /* open mode & characteristics */
  224.  
  225. signed int scddpack(  signed int *);    /* data file handle */
  226.  
  227. signed int scddsize(  signed int,       /* file handle */
  228.                       signed long * );  /* number of data records */
  229.  
  230. signed int scddunlock(signed int );     /* file handle */
  231.  
  232.  
  233.  
  234.  
  235. /**********
  236.  *
  237.  *  dBASE Database Field Manipulator Prototypes
  238.  *
  239.  **********/
  240.  
  241.  
  242.  
  243.  
  244. signed int scddfgets( signed int,       /* file handle */
  245.                       signed int,       /* field number */
  246.                       char * );         /* buffer for field data */
  247.  
  248. signed int scddfget(  signed int,       /* file handle */
  249.                       signed int,       /* field number */
  250.                       void * );         /* buffer for field data */
  251.  
  252. signed int scddfinfo( signed int,       /* file handle */
  253.                       signed int *,     /* length of longest field */
  254.                       SC_FIELD * );     /* field description array */
  255.  
  256. signed int scddfnam2no(signed int,      /* file handle */
  257.                       signed int *,     /* field number */
  258.                       signed char *);   /* field name */
  259.  
  260. signed int scddfputs( signed int,       /* file handle */
  261.                       signed int,       /* field number */
  262.                       char * );         /* buffer for field data */
  263.  
  264. signed int scddfput(  signed int,       /* file handle */
  265.                       signed int,       /* field number */
  266.                       void * );         /* buffer for field data */
  267.  
  268.  
  269.  
  270.  
  271. /**********
  272.  *
  273.  *  dBASE Database Record Manipulator Prototypes
  274.  *
  275.  **********/
  276.  
  277.  
  278.  
  279.  
  280. signed int scddrclear(signed int );     /* file handle */
  281.  
  282. signed int scddrdel(  signed int,       /* file handle */
  283.                       signed long );    /* record number to delete */
  284.  
  285. signed int scddrget(  signed int,       /* file handle */
  286.                       signed long );    /* record number to read */
  287.  
  288. signed int scddrinfo( signed int,       /* file handle */
  289.                       SC_DBFRINFO * );  /* record info structure */
  290.  
  291. signed int scddrlock( signed int,       /* file handle */
  292.                       signed long );    /* record number to lock */
  293.  
  294. signed int scddrnum(  signed int,       /* file handle */
  295.                       signed long * );  /* current data record number */
  296.  
  297. signed int scddrput(  signed int,       /* file handle */
  298.                       signed long *,    /* record number */
  299.                       signed int );     /* append or update record */
  300.  
  301. signed int scddrstat( signed int );     /* file handle */
  302.  
  303. signed int scddrundel(signed int,       /* fiel handle */
  304.                       signed long );    /* record number */
  305.  
  306.  
  307.  
  308. /**********
  309.  *
  310.  *  dBASE Index File Manipulators Prototypes
  311.  *
  312.  **********/
  313.  
  314.  
  315.  
  316.  
  317. signed int scdnbfrsz( signed int,       /* index file handle */
  318.                       signed int *,     /* buffer length in pages */
  319.                       signed int );     /* set or get buffer length */
  320.  
  321. signed int scdnclose( signed int );     /* file handle */
  322.  
  323. signed int scdncreate(signed char *,    /* filename */
  324.                       signed int,       /* index key type */
  325.                       signed char *,    /* key expression */
  326.                       signed int );     /* key length */
  327.  
  328. signed int scdnexpr(  signed int,       /* file handle */
  329.                       signed char * );  /* key expression */
  330.  
  331. signed int scdnflush( signed int );     /* file handle */
  332.  
  333. signed int scdnindex( signed int,       /* data file handle */
  334.                       signed char *,    /* new file name */
  335.                       signed int,       /* index key type */
  336.                       signed char *,    /* key expression */
  337.                       signed int );     /* key length */
  338.  
  339. signed int scdninfo(  signed int,       /* file handle */
  340.                       SC_NDXINFO * );   /* file information and status */
  341.  
  342. signed int scdnopenx( signed int *,     /* file handle */
  343.                       signed char *,    /* filename */
  344.                       signed int );     /* open mode and characteristics */
  345.  
  346.  
  347.  
  348.  
  349. /**********
  350.  *
  351.  *  dBASE Index Key Building Prototypes
  352.  *
  353.  **********/
  354.  
  355.  
  356.  
  357.  
  358. signed int scdnkdate( double *,         /* numeric date */
  359.                       signed char *,    /* date string */
  360.                       signed int );     /* date string format type */
  361.  
  362. signed int scdnkmake( signed int,       /* .DBF file handle */
  363.                       signed int,       /* .NDX file handle */
  364.                       void ** );        /* index key */
  365.  
  366.  
  367.  
  368.  
  369. /**********
  370.  *
  371.  *  dBASE Index Key Manipulator Prototypes
  372.  *
  373.  **********/
  374.  
  375.  
  376.  
  377.  
  378. signed int scdnkadd(  signed int,       /* file handle */
  379.                       void *,           /* key string */
  380.                       signed long );    /* data record number */
  381.  
  382. signed int scdnkbot(  signed int,       /* file handle */
  383.                       void *,           /* key string */
  384.                       signed long *);   /* data record number */
  385.  
  386. signed int scdnkcur(  signed int,       /* file handle */
  387.                       void *,           /* key string */
  388.                       signed long *);   /* data record number */
  389.  
  390. signed int scdnkdel(  signed int,       /* file handle */
  391.                       void *,           /* key string */
  392.                       signed long );    /* data record number */
  393.  
  394. signed int scdnkfind( signed int,       /* file handle */
  395.                       void *,           /* key string */
  396.                       signed long *,    /* data record number */
  397.                       signed int);      /* exact match or first */
  398.  
  399. signed int scdnknext( signed int,       /* file handle */
  400.                       void *,           /* key string */
  401.                       signed long *);   /* data record number */
  402.  
  403. signed int scdnkprev( signed int,       /* file handle */
  404.                       void *,           /* key string */
  405.                       signed long *);   /* data record number */
  406.  
  407. signed int scdnktop(  signed int,       /* file handle */
  408.                       void *,           /* key string */
  409.                       signed long *);   /* data record number */
  410.  
  411.  
  412.  
  413.  
  414.  
  415. /**********
  416.  *
  417.  *  Clipper Index File Manipulators Prototypes
  418.  *
  419.  **********/
  420.  
  421.  
  422.  
  423.  
  424. signed int scdcbfrsz( signed int,       /* index file handle */
  425.                       signed int *,     /* buffer length in pages */
  426.                       signed int );     /* set or get buffer length */
  427.  
  428. signed int scdcclose( signed int );     /* file handle */
  429.  
  430. signed int scdccreate(signed char *,    /* filename */
  431.                       signed int,       /* index key type */
  432.                       signed char *,    /* key expression */
  433.                       signed int,       /* key length */
  434.                       signed int );     /* number of decimal places */
  435.  
  436. signed int scdcexpr(  signed int,       /* file handle */
  437.                       signed char * );  /* key expression */
  438.  
  439. signed int scdcflush( signed int );     /* file handle */
  440.  
  441. signed int scdcindex( signed int,       /* data file handle */
  442.                       signed char *,    /* new file name */
  443.                       signed int,       /* index key type */
  444.                       signed char *,    /* key expression */
  445.                       signed int,       /* key length */
  446.                       signed int );     /* number of decimal places */
  447.  
  448. signed int scdcinfo(  signed int,       /* file handle */
  449.                       SC_NTXINFO * );   /* file information and status */
  450.  
  451. signed int scdcopenx( signed int *,     /* file handle */
  452.                       signed char *,    /* filename */
  453.                       signed int );     /* open mode and characteristics */
  454.  
  455.  
  456.  
  457.  
  458. /**********
  459.  *
  460.  *  Clipper Index Key Building Prototypes
  461.  *
  462.  **********/
  463.  
  464.  
  465.  
  466.  
  467. signed int scdckmake( signed int,       /* .DBF file handle */
  468.                       signed int,       /* .NTX file handle */
  469.                       void ** );        /* index key */
  470.  
  471.  
  472.  
  473.  
  474. /**********
  475.  *
  476.  *  Clipper Index Key Manipulator Prototypes
  477.  *
  478.  **********/
  479.  
  480.  
  481.  
  482.  
  483. signed int scdckadd(  signed int,       /* file handle */
  484.                       void *,           /* key string */
  485.                       signed long );    /* data record number */
  486.  
  487. signed int scdckbot(  signed int,       /* file handle */
  488.                       void *,           /* key string */
  489.                       signed long *);   /* data record number */
  490.  
  491. signed int scdckcur(  signed int,       /* file handle */
  492.                       void *,           /* key string */
  493.                       signed long *);   /* data record number */
  494.  
  495. signed int scdckdel(  signed int,       /* file handle */
  496.                       void *,           /* key string */
  497.                       signed long );    /* data record number */
  498.  
  499. signed int scdckfind( signed int,       /* file handle */
  500.                       void *,           /* key string */
  501.                       signed long *,    /* data record number */
  502.                       signed int);      /* exact match or first */
  503.  
  504. signed int scdcknext( signed int,       /* file handle */
  505.                       void *,           /* key string */
  506.                       signed long *);   /* data record number */
  507.  
  508. signed int scdckprev( signed int,       /* file handle */
  509.                       void *,           /* key string */
  510.                       signed long *);   /* data record number */
  511.  
  512. signed int scdcktop(  signed int,       /* file handle */
  513.                       void *,           /* key string */
  514.                       signed long *);   /* data record number */
  515.  
  516.  
  517.  
  518.  
  519.  
  520. /**********
  521.  *
  522.  *  FoxBASE+ Index File Manipulators Prototypes
  523.  *
  524.  **********/
  525.  
  526.  
  527.  
  528.  
  529. signed int scdibfrsz( signed int,       /* index file handle */
  530.                       signed int *,     /* buffer length in pages */
  531.                       signed int );     /* set or get buffer length */
  532.  
  533. signed int scdiclose( signed int );     /* file handle */
  534.  
  535. signed int scdicreate(signed char *,    /* filename */
  536.                       signed int,       /* index key type */
  537.                       signed char *,    /* key expression */
  538.                       signed int );     /* key length */
  539.  
  540. signed int scdiexpr(  signed int,       /* file handle */
  541.                       signed char * );  /* key expression */
  542.  
  543. signed int scdiflush( signed int );     /* file handle */
  544.  
  545. signed int scdiindex( signed int,       /* data file handle */
  546.                       signed char *,    /* new file name */
  547.                       signed int,       /* index key type */
  548.                       signed char *,    /* key expression */
  549.                       signed int );     /* key length */
  550.  
  551. signed int scdiinfo(  signed int,       /* file handle */
  552.                       SC_IDXINFO * );   /* file information and status */
  553.  
  554. signed int scdiopenx( signed int *,     /* file handle */
  555.                       signed char *,    /* filename */
  556.                       signed int );     /* open mode and characteristics */
  557.  
  558.  
  559.  
  560.  
  561. /**********
  562.  *
  563.  *  FoxBASE+ Index Key Building Prototypes
  564.  *
  565.  **********/
  566.  
  567.  
  568.  
  569.  
  570. signed int scdikdate( unsigned char *,  /* FoxBASE date */
  571.                       signed char *,    /* date string */
  572.                       signed int );     /* date string format type */
  573.  
  574. signed int scdikmake( signed int,       /* .DBF file handle */
  575.                       signed int,       /* .NTX file handle */
  576.                       void ** );        /* index key */
  577.  
  578. signed int scdiknum(  unsigned char *,  /* FoxBASE double */
  579.                       double );         /* C double */
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586. /**********
  587.  *
  588.  *  FoxBASE+ Index Key Manipulator Prototypes
  589.  *
  590.  **********/
  591.  
  592.  
  593.  
  594.  
  595. signed int scdikadd(  signed int,       /* file handle */
  596.                       void *,           /* key string */
  597.                       signed long );    /* data record number */
  598.  
  599. signed int scdikbot(  signed int,       /* file handle */
  600.                       void *,           /* key string */
  601.                       signed long *);   /* data record number */
  602.  
  603. signed int scdikcur(  signed int,       /* file handle */
  604.                       void *,           /* key string */
  605.                       signed long *);   /* data record number */
  606.  
  607. signed int scdikdel(  signed int,       /* file handle */
  608.                       void *,           /* key string */
  609.                       signed long );    /* data record number */
  610.  
  611. signed int scdikfind( signed int,       /* file handle */
  612.                       void *,           /* key string */
  613.                       signed long *,    /* data record number */
  614.                       signed int);      /* exact match or first */
  615.  
  616. signed int scdiknext( signed int,       /* file handle */
  617.                       void *,           /* key string */
  618.                       signed long *);   /* data record number */
  619.  
  620. signed int scdikprev( signed int,       /* file handle */
  621.                       void *,           /* key string */
  622.                       signed long *);   /* data record number */
  623.  
  624. signed int scdiktop(  signed int,       /* file handle */
  625.                       void *,           /* key string */
  626.                       signed long *);   /* data record number */
  627.  
  628.  
  629.  
  630.  
  631.  
  632. /**********
  633.  *
  634.  *  dBase3 Memo File Manipulator Prototypes
  635.  *
  636.  **********/
  637.  
  638.  
  639.  
  640.  
  641. signed int scdtclose( signed int );     /* file handle */
  642.  
  643. signed int scdtcreate(signed char * );  /* filename */
  644.  
  645. signed int scdtinfo(  signed int,       /* file handle */
  646.                       SC_DBTINFO * );   /* file information and status */
  647.  
  648. signed int scdtopenx( signed int *,     /* file handle */
  649.                       signed char *,    /* filename */
  650.                       signed int );     /* open mode & characteristics */
  651.  
  652. signed int scdtpack(  signed int,       /* data file handle */
  653.                       signed int *);    /* memo file handle */
  654.  
  655. signed int scdtrget(  signed int,       /* file handle */
  656.                       signed long,      /* record number */
  657.                       signed char **,   /* buffer for record number */
  658.                       signed int );     /* remove soft carriage returns? */
  659.  
  660. signed int scdtrput(  signed int,       /* file handle */
  661.                       signed long *,    /* record number */
  662.                       signed char *,    /* buffer for record data */
  663.                       signed int );     /* insert soft carriage returns? */
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670. /**********
  671.  *
  672.  *  External Variables
  673.  *
  674.  **********/
  675.  
  676.  
  677. extern signed int sc_date_style;  /* date string format for scddfget/scddfput */
  678.  
  679.  
  680.  
  681.  
  682.  
  683. /**********
  684.  *
  685.  *  Compatibility Definitions
  686.  *
  687.  **********/
  688.  
  689.  
  690.  
  691.  
  692. #define scdfget(a,b,c)      scddfget(a,b,c)
  693. #define scdfgetx(a,b,c,d)   scddfget(a,b,c)
  694. #define scdfgets(a,b,c)     scddfgets(a,b,c)
  695. #define scdfgetsx(a,b,c,d)  scddfgets(a,b,c)
  696.  
  697. #define scdfput(a,b,c)      scddfput(a,b,c)
  698. #define scdfputx(a,b,c,d)   scddfput(a,b,c)
  699. #define scdfputs(a,b,c)     scddfputs(a,b,c)
  700. #define scdfputsx(a,b,c,d)  scddfputs(a,b,c)
  701.  
  702. #define scdfinfo(a,b,c)     scddfinfo(a,b,c)
  703. #define scdfnam2no(a,b,c)   scddfnam2no(a,b,c)
  704.  
  705. #define scdrclear(a,b)      scddrclear(a)
  706. #define scdrdel(a,b)        scddrdel(a,b)
  707. #define scdrget(a,b)        scddrget(a,b)
  708. #define scdrinfo(a,b,c,d,e) scddrinfo(a,b,c,d)
  709. #define scdrput(a,b,c)      scddrput(a,b,c)
  710. #define scdrundel(a,b)      scddrundel(a,b)
  711.  
  712. #define scdfgett(a,b,c)     scdtrget(a,b,c,SC_CRDELETE)
  713. #define scdfgettx(a,b,c,d)  scdtrget(a,b,c,d)
  714. #define scdfputt(a,b,c)     scdtrput(a,b,c,66)
  715. #define scdfputtx(a,b,c,d)  scdtrput(a,b,c,d)
  716.  
  717. #define scdkadd(a,b,c)      scdnkadd(a,b,c);
  718. #define scdkcur(a,b,c)      scdnkcur(a,b,c);
  719. #define scdkdate(a,b)       scdnkdate(a,b,SC_YMD)
  720. #define scdkdatex(a,b,c)    scdnkdate(a,b,c)
  721. #define scdkdel(a,b,c)      scdnkdel(a,b,c)
  722. #define scdkfind(a,b,c,d)   scdnkfind(a,b,c,d)
  723. #define scdkfirst(a,b,c)    scdnktop(a,b,c)
  724. #define scdklast(a,b,c)     scdnkbot(a,b,c)
  725. #define scdkmake(a,b,c)     scdnkmake(a,b,c)
  726. #define scdkmakex(a,b,c,d)  scdnkmake(a,b,c)
  727. #define scdknext(a,b,c)     scdnknext(a,b,c)
  728. #define scdkprev(a,b,c)     scdnkprev(a,b,c)
  729.  
  730. #define scdnopen(a,b)       scdnopenx(a,b,SC_RDWR | SC_FLUSH | SC_EXCLUDE)
  731. #define scdpinfo(a,b)       scdnbfrsz(a,b,SC_GETSZ)
  732. #define scdpnum(a,b)        scdnbfrsz(a,b,SC_SETSZ)
  733.  
  734. #define scdtopen(a,b)       scdtopenx(a,b,SC_RDWR | SC_FLUSH | SC_EXCLUDE)
  735.