Category : Dbase (Clipper, FoxBase, etc) Languages Source Code
Archive   : PASCALCL.ZIP
Filename : EXTEND.INC
* EXTEND.INC
*
* DEFINEs and EXTERNs for interfacing with Clipper from Pascal.
* Large model C only (double word pointers to code and data).
*
* Modified from EXTEND.H
* Copyright (c) 1987, 1988 Nantucket Corp.
}
#define CLIPPER void pascal
{ _parinfo types }
#define UNDEF 0
#define CHARACTER 1
#define NUMERIC 2
#define LOGICAL 4
#define DATE 8
#define ALIAS 16
#define MPTR 32 {or'ed with type when passed by reference}
#define MEMO 65
#define WORD 128
#define ARRAY 512
#define NEWLINE chr(13)
#define ENDSTR chr(0)
type
datestr = packed array [1..8] of char;
charstr = packed array [1..64] of char;
{ Header structure }
DBF_HEADER = record
signature : byte; {03 = dbf, 83 dbf+dbt}
ymd : array [1..3] of byte; {y+1900 m d}
last_rec : integer4;
data_off : quant;
rec_size : quant;
pad : array [1..20] of byte;
end;
dateptr = ^datestr;
charptr = ^charstr;
dbfhdrptr = ^DBF_HEADER;
byteptr = ^byte;
adsdate = ads of datestr;
adschar = ads of charstr;
adsdbfhdr = ads of DBF_HEADER;
adsbyte = ads of byte;
{ parameter count/type }
function _parinfo : integer [c, varying]; extern;
function _parinfa : integer [c, varying]; extern;
{ parameter values }
function _parc : adschar [c, varying]; extern;
function _parcsiz : integer [c, varying]; extern;
function _parclen : integer [c, varying]; extern;
function _parni : integer [c, varying]; extern;
function _parnl : integer4 [c, varying]; extern;
function _parnd : real8 [c, varying]; extern;
function _parl : integer [c, varying]; extern;
function _pards : adsdate [c, varying]; extern;
{ one and only one of the _ret?? functions must be used }
{ Clipper-function return values }
{ function _retc : adschar [c, varying]; extern; }
function _retclen : adschar [c]; extern;
function _retni : integer [c]; extern;
function _retnl : integer4 [c]; extern;
function _retnd : real8 [c]; extern;
function _retl : integer [c]; extern;
function _retds : adschar [c]; extern;
{ procedure (DO) return }
procedure _ret [c]; extern;
{ allocate memory }
{ parameter: requested size in bytes }
{ returns: far pointer to memory or NULL }
function _exmgrab(vars k :integer) : adsbyte [c]; extern;
{ free allocated memory }
{params: pointer from _exmgrab(), same size passed to _exmgrab()}
procedure _exmback(vars l : adsmem; vars m : byte); extern;
{ misc. }
function strlen(vars m : adschar) : byte; extern;
{ parameter check macros }
#define PCOUNT (_parinfo(0))
#define ISCHAR(n) (_parinfo(n) = CHARACTER)
#define ISNUM(n) (_parinfo(n) = NUMERIC)
#define ISLOG(n) (_parinfo(n) = LOGICAL)
#define ISDATE(n) (_parinfo(n) = DATE)
#define ISMEMO(n) (_parinfo(n) = MEMO)
#define ISBYREF(n) (_parinfo(n) = MPTR)
#define ISARRAY(n) (_parinfo(n) = ARRAY)
#define ALENGTH(n) (_parinfa(n, 0))
function _dbfhead : adsdbfhdr [c, varying]; extern;
function _dbfopen : integer [c, varying]; extern;
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/