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 >
C/C++ Source or Header  |  1994-11-11  |  7KB  |  208 lines

  1. /*
  2.  * DB9 libaray (c) 1992 by Scott Griepentrog
  3.  *
  4.  * 89/??/?? StG original concept and specs for DB9 format
  5.  * 90/09/?? StG coding began
  6.  * 91/05/27 StG updated for new naming conventions, fixed bugs
  7.  * 91/07/11 StG added updated versions of key and edt
  8.  * 92/11/25 StG totally revamped for use in v4
  9.  *
  10. */
  11.  
  12.  
  13. #include "types.h"
  14. #include "memmacro.h"
  15.  
  16. #define OFFSET(s,m) ((char*)&((s)->m))-((char*)s)
  17.  
  18. struct sHdr_Block            /* header block (type #0) */
  19. {
  20.     B bBlk_File;            /* highest used file (dataset) number */
  21.     B bBlk_Type;            /* block type code */
  22.  
  23.     W wHdr_BlockSize;        /* block size for db9 file */
  24.  
  25.     C acDB9_Label[3];        /* s/b "DB9" */
  26.     B bHdr_Version;            /* format version number */
  27.  
  28.     O oHdr_FileSize;        /* db9 file size */
  29.     O oHdr_FreeList;        /* free block list */
  30.  
  31.     O oFil_FileList;        /* file (dataset) list */
  32.     O oFil_FreeList;        /* file (dataset) free list */
  33.  
  34.     O oBlk_Next;            /* fld/scn/key link list */
  35.     O oBlk_Prev;
  36.  
  37.     C acBlk_FileName[16];    /* file (dataset) name "." */
  38.  
  39.     C hdr_fil2[16];
  40.  
  41.     C acHdr_CopyRight[64];    /* copyright message */
  42.  
  43.     C hdr_fil3[128];
  44. };
  45.  
  46. struct sFil_Block            /* file (dataset) block */
  47. {
  48.     B bBlk_File;            /* file (dataset) number */
  49.     B bBlk_Type;            /* block type code */
  50.  
  51.     W fil_fil1;
  52.  
  53.     O fil_fil2;
  54.     O fil_fil3;
  55.     O oFld_FieldList;        /* field list */
  56.  
  57.     O oFil_FileList;        /* file (dataset) list */
  58.     O oKey_KeyList;            /* key list */
  59.  
  60.     O oBlk_Next;            /* next/prev data block (ll dataset type) */
  61.     O oBlk_Prev;
  62.  
  63.     C acBlk_FileName[16];    /* file (dataset) name */
  64.  
  65.     C fil_fil7[16];
  66.  
  67.     C fil_fil8[64];
  68.  
  69.     C fil_fil9[128];
  70. };
  71.  
  72. struct sFld_Block            /* field descriptor block */
  73. {
  74.     B bBlk_File;            /* file (dataset) number */
  75.     B bBlk_Type;            /* block type code */
  76.  
  77.     W wFld_Index;            /* field number */
  78.     O oFld_Pos;                /* position of field in record */
  79.  
  80.     O oFld_Len;                /* length of field (0=just display mask) */
  81.     B bFld_Screen;            /* screen number */
  82.     B bFld_OvrGrp;            /* overlay group */
  83.     B bFld_OvrNum;            /* overlay number */
  84.     B bFld_Field;            /* flag to indicate real field */
  85.  
  86.     C cFld_Type;            /* field type */
  87.     B bFld_X;                /* x screen location */
  88.     B bFld_Y;                /* y screen location */
  89.     B bFld_DispMax;            /* maximum display length */
  90.     B bFld_Follow;            /* follow previous field after n lines */
  91.     B bFld_Change;            /* field has changed (set by _edt()) */
  92.     B fld_fil1;
  93.     B fld_fil2;
  94.  
  95.     struct sFld_Block *psFld_Next;
  96.     struct sFld_Block *psFld_Prev;
  97.  
  98.     C acBlk_FileName[16];    /* file name */
  99.     C acFld_FieldName[16];    /* field name */
  100.  
  101.     B *pbFld_OvrSelect;        /* overlay select (1st scn blk only) */
  102.     struct sFld_Block *psFld_Sel;
  103.  
  104.     B fld_fil3[8];
  105.  
  106.     B fld_fil4[16];
  107.  
  108.     B fld_fil5[32];
  109.  
  110.     C acFld_Opts[32];        /* display options */
  111.     C acFld_Mask[96];        /* display mask */
  112. };
  113.  
  114. /* function returns */
  115. struct sFld_Block *_ScnAddFld();
  116.  
  117. /* Block Types */
  118. #define BT_FREE  0x00        /* unused block */
  119. #define BT_HEAD  0x01        /* file header (block #0) */
  120. #define BT_FILE  0x10        /* dataset descriptor */
  121. #define BT_FIELD 0x20        /* field descriptor */
  122. #define BT_KEY   0x30        /* key descriptor */
  123.  
  124. #define BT_DFS   0x40        /* data first, single */
  125.  
  126. /* DB functions */
  127. #define DB_ADD    'A'        /* add record (after current) */
  128. #define DB_BEFORE 'B'        /* add record (before current) */
  129. #define DB_DEL    'D'        /* delete record */
  130. #define DB_ERASE  'E'        /* erase dataset */
  131. #define DB_ERKEY  'F'        /* erase key */
  132. #define DB_MATCH  'G'        /* set seek match map */
  133. #define DB_INDEX  'I'        /* set index/record map */
  134. #define DB_MAKEY  'J'        /* make new key */
  135. #define DB_KEY    'K'        /* select key */
  136. #define DB_LIMIT  'L'        /* set limits */
  137. #define DB_MAKE   'M'        /* make new dataset */
  138. #define DB_NEXT   'N'        /* next record */
  139. #define DB_OPEN   'O'        /* open dataset */
  140. #define DB_PREV   'P'        /* prev record */
  141. #define DB_READ   'R'        /* read record */
  142. #define DB_SEEK   'S'        /* seek record */
  143. #define DB_WRITE  'W'        /* write record */
  144. #define DB_ULOCK  'U'        /* unlock record */
  145.  
  146. /* field types */
  147. #define FT_ASCII  'A'        /* asciiZ (default option *) */
  148. #define FT_SINT   'I'        /* signed int 1-? bytes (def opt rn-) */
  149. #define FT_UINT   'U'        /* unsigned int 1,2,4 bytes (rn) */
  150. #define FT_HEX    'X'        /* hex, any length (rxu) */
  151. #define FT_DATE   'D'        /* byte-wise decimal 00-99/* each byte (rn'*) */
  152. #define FT_INET   'N'        /* byte-wise decimal 000-255 each byte (n) */
  153. #define FT_TITLE  'T'        /* asciiZ title, centered */
  154.  
  155. /* field options */
  156. #define FO_ALL    '*'        /* accept all chars ' ' - '~' */
  157. #define FO_NULL   '0'        /* don't accept null field ("" or 0) */
  158. #define FO_ALPHA  'a'        /* accept alpha a-z, A-Z */
  159. #define FO_SPACE  'b'        /* accept spaces */
  160. #define FO_HEX    'x'        /* accept hex 0-9, A-F */
  161. #define FO_CAP1   'c'        /* capitalize first char of words */
  162. #define FO_UPPER  'u'        /* force upper case */
  163. #define FO_NUM    'n'        /* accept number 0-9 */
  164. #define FO_DOT    '.'        /* accept period (decimal) */
  165. #define FO_DASH   '-'        /* accept dash */
  166. #define FO_PUNCT  'p'        /* accept punctuation */
  167. #define FO_RIGHT  'r'        /* right justify display */
  168. #define FO_EXCLM  'e'        /* accept '!' */
  169. #define FO_ACCPT  '\''        /* accept following chars */
  170. #define FO_EXCPT  '!'        /* don't accept following chars */
  171.  
  172. /* error codes */
  173. #define _DE(x) (0xDB00+x)
  174.  
  175. /* TRM errors */
  176. #define DE_NOTERM _DE( 64)    /* no TERM environment variable */
  177. #define DE_TERMNF _DE( 65)    /* terminal not found in TERMCAP */
  178. #define DE_TERMIC _DE( 66)    /* terminal entry is incomplete */
  179.  
  180. /* EDT errors 128+ */
  181. #define DE_EDTLEN _DE(128)    /* field length too large */
  182.  
  183. /* SCN errors 144+ */
  184. #define DE_BADSCN _DE(144)    /* bad screen coordinates */
  185.  
  186. /* MNU errors 160+ */
  187.  
  188. /* DB9 errors 192+ */
  189. #define DE_BIGDAT _DE(192)    /* length value is not large enough for data */
  190. #define DE_BIGLEN _DE(193)    /* length value is larger than allowed */
  191. #define DE_NO_REC _DE(194)    /* no record found matching seek */
  192.  
  193. #define DE_BADPTH _DE(201)    /* bad path number */
  194. #define DE_BADPRM _DE(225)    /* bad parameter */
  195.  
  196. #define DE_DSETNF _DE(216)    /* dataset not found */
  197. #define DE_DSETAE _DE(218)    /* dataset already exists */
  198.  
  199. #define DE_BADHDR _DE(240)    /* bad header record (CORRUPT) */ 
  200. #define DE_BADFIL _DE(241)    /* bad file number encountered (CORRUPT) */
  201. #define DE_BADTYP _DE(242)    /* bad block type code encountered (CORRUPT) */
  202. #define DE_BADBLK _DE(243)    /* bad sector number encountered (CORRUPT) */
  203.  
  204. #define DE_BADSIZ _DE(247)    /* bad block size read/write (DISK ERROR) */
  205.  
  206. #define DE_NEWFMT _DE(248)    /* DB format is newer than code */
  207. #define DE_OLDFMT _DE(249)    /* DB format is too old */
  208.