home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
TELECOM
/
stg_v4.lzh
/
db9.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-11-11
|
7KB
|
208 lines
/*
* DB9 libaray (c) 1992 by Scott Griepentrog
*
* 89/??/?? StG original concept and specs for DB9 format
* 90/09/?? StG coding began
* 91/05/27 StG updated for new naming conventions, fixed bugs
* 91/07/11 StG added updated versions of key and edt
* 92/11/25 StG totally revamped for use in v4
*
*/
#include "types.h"
#include "memmacro.h"
#define OFFSET(s,m) ((char*)&((s)->m))-((char*)s)
struct sHdr_Block /* header block (type #0) */
{
B bBlk_File; /* highest used file (dataset) number */
B bBlk_Type; /* block type code */
W wHdr_BlockSize; /* block size for db9 file */
C acDB9_Label[3]; /* s/b "DB9" */
B bHdr_Version; /* format version number */
O oHdr_FileSize; /* db9 file size */
O oHdr_FreeList; /* free block list */
O oFil_FileList; /* file (dataset) list */
O oFil_FreeList; /* file (dataset) free list */
O oBlk_Next; /* fld/scn/key link list */
O oBlk_Prev;
C acBlk_FileName[16]; /* file (dataset) name "." */
C hdr_fil2[16];
C acHdr_CopyRight[64]; /* copyright message */
C hdr_fil3[128];
};
struct sFil_Block /* file (dataset) block */
{
B bBlk_File; /* file (dataset) number */
B bBlk_Type; /* block type code */
W fil_fil1;
O fil_fil2;
O fil_fil3;
O oFld_FieldList; /* field list */
O oFil_FileList; /* file (dataset) list */
O oKey_KeyList; /* key list */
O oBlk_Next; /* next/prev data block (ll dataset type) */
O oBlk_Prev;
C acBlk_FileName[16]; /* file (dataset) name */
C fil_fil7[16];
C fil_fil8[64];
C fil_fil9[128];
};
struct sFld_Block /* field descriptor block */
{
B bBlk_File; /* file (dataset) number */
B bBlk_Type; /* block type code */
W wFld_Index; /* field number */
O oFld_Pos; /* position of field in record */
O oFld_Len; /* length of field (0=just display mask) */
B bFld_Screen; /* screen number */
B bFld_OvrGrp; /* overlay group */
B bFld_OvrNum; /* overlay number */
B bFld_Field; /* flag to indicate real field */
C cFld_Type; /* field type */
B bFld_X; /* x screen location */
B bFld_Y; /* y screen location */
B bFld_DispMax; /* maximum display length */
B bFld_Follow; /* follow previous field after n lines */
B bFld_Change; /* field has changed (set by _edt()) */
B fld_fil1;
B fld_fil2;
struct sFld_Block *psFld_Next;
struct sFld_Block *psFld_Prev;
C acBlk_FileName[16]; /* file name */
C acFld_FieldName[16]; /* field name */
B *pbFld_OvrSelect; /* overlay select (1st scn blk only) */
struct sFld_Block *psFld_Sel;
B fld_fil3[8];
B fld_fil4[16];
B fld_fil5[32];
C acFld_Opts[32]; /* display options */
C acFld_Mask[96]; /* display mask */
};
/* function returns */
struct sFld_Block *_ScnAddFld();
/* Block Types */
#define BT_FREE 0x00 /* unused block */
#define BT_HEAD 0x01 /* file header (block #0) */
#define BT_FILE 0x10 /* dataset descriptor */
#define BT_FIELD 0x20 /* field descriptor */
#define BT_KEY 0x30 /* key descriptor */
#define BT_DFS 0x40 /* data first, single */
/* DB functions */
#define DB_ADD 'A' /* add record (after current) */
#define DB_BEFORE 'B' /* add record (before current) */
#define DB_DEL 'D' /* delete record */
#define DB_ERASE 'E' /* erase dataset */
#define DB_ERKEY 'F' /* erase key */
#define DB_MATCH 'G' /* set seek match map */
#define DB_INDEX 'I' /* set index/record map */
#define DB_MAKEY 'J' /* make new key */
#define DB_KEY 'K' /* select key */
#define DB_LIMIT 'L' /* set limits */
#define DB_MAKE 'M' /* make new dataset */
#define DB_NEXT 'N' /* next record */
#define DB_OPEN 'O' /* open dataset */
#define DB_PREV 'P' /* prev record */
#define DB_READ 'R' /* read record */
#define DB_SEEK 'S' /* seek record */
#define DB_WRITE 'W' /* write record */
#define DB_ULOCK 'U' /* unlock record */
/* field types */
#define FT_ASCII 'A' /* asciiZ (default option *) */
#define FT_SINT 'I' /* signed int 1-? bytes (def opt rn-) */
#define FT_UINT 'U' /* unsigned int 1,2,4 bytes (rn) */
#define FT_HEX 'X' /* hex, any length (rxu) */
#define FT_DATE 'D' /* byte-wise decimal 00-99/* each byte (rn'*) */
#define FT_INET 'N' /* byte-wise decimal 000-255 each byte (n) */
#define FT_TITLE 'T' /* asciiZ title, centered */
/* field options */
#define FO_ALL '*' /* accept all chars ' ' - '~' */
#define FO_NULL '0' /* don't accept null field ("" or 0) */
#define FO_ALPHA 'a' /* accept alpha a-z, A-Z */
#define FO_SPACE 'b' /* accept spaces */
#define FO_HEX 'x' /* accept hex 0-9, A-F */
#define FO_CAP1 'c' /* capitalize first char of words */
#define FO_UPPER 'u' /* force upper case */
#define FO_NUM 'n' /* accept number 0-9 */
#define FO_DOT '.' /* accept period (decimal) */
#define FO_DASH '-' /* accept dash */
#define FO_PUNCT 'p' /* accept punctuation */
#define FO_RIGHT 'r' /* right justify display */
#define FO_EXCLM 'e' /* accept '!' */
#define FO_ACCPT '\'' /* accept following chars */
#define FO_EXCPT '!' /* don't accept following chars */
/* error codes */
#define _DE(x) (0xDB00+x)
/* TRM errors */
#define DE_NOTERM _DE( 64) /* no TERM environment variable */
#define DE_TERMNF _DE( 65) /* terminal not found in TERMCAP */
#define DE_TERMIC _DE( 66) /* terminal entry is incomplete */
/* EDT errors 128+ */
#define DE_EDTLEN _DE(128) /* field length too large */
/* SCN errors 144+ */
#define DE_BADSCN _DE(144) /* bad screen coordinates */
/* MNU errors 160+ */
/* DB9 errors 192+ */
#define DE_BIGDAT _DE(192) /* length value is not large enough for data */
#define DE_BIGLEN _DE(193) /* length value is larger than allowed */
#define DE_NO_REC _DE(194) /* no record found matching seek */
#define DE_BADPTH _DE(201) /* bad path number */
#define DE_BADPRM _DE(225) /* bad parameter */
#define DE_DSETNF _DE(216) /* dataset not found */
#define DE_DSETAE _DE(218) /* dataset already exists */
#define DE_BADHDR _DE(240) /* bad header record (CORRUPT) */
#define DE_BADFIL _DE(241) /* bad file number encountered (CORRUPT) */
#define DE_BADTYP _DE(242) /* bad block type code encountered (CORRUPT) */
#define DE_BADBLK _DE(243) /* bad sector number encountered (CORRUPT) */
#define DE_BADSIZ _DE(247) /* bad block size read/write (DISK ERROR) */
#define DE_NEWFMT _DE(248) /* DB format is newer than code */
#define DE_OLDFMT _DE(249) /* DB format is too old */