Listing 1

 1:  /*
 2:   *  MDB.H        (Static-Array-Only Version)
 3:   *
 4:   *  Program:     Mini-Database
 5:   *  Written by:  Leor Zolman
 6:   *  Module:      Program Header File
 7:   */
 8:
 9:  #define TRUE    1
10:  #define FALSE   0
11:
12:  /*
13:   * Prototypes:
14:   */
15:
16:  int do_menu(struct menu_item *mnu, char *title);
17:  void write_db(char *filename);
18:  int read_db(char *filename);
19:  void edit_db();
20:  void fix_db();
21:  void backup_db();
22:  void error(char *msg);
23:  struct record *alloc_rec(void);
24:  void free_up();
25:
26:  /*
27:   * Data Definitions:
28:   */
29:
30:  struct record {                  /* Database record definition  */
31:      char     active;             /* TRUE if Active, else FALSE  */
32:      char     last[25], first[15];    /* Name             */
33:      long     id;                     /* ID Number        */
34:      int      age;                    /* Age              */
35:      char     gender;                 /* M or F           */
36:      float    salary;                 /* Annual Salary    */
37:  };
38:
39:  #define MAX_RECS    1000         /* Maximum number of records    */
40:
41:
42:  #ifdef MAIN_MODULE               /* Make sure data is only       */
43:  #define EXTERN                   /* DEFINED in the main module,  */
44:  #else                            /* and declared as EXTERNAL in  */
45:  #define EXTERN extern            /* the other modules.           */
46:  #endif
47:
48:
49:  EXTERN  struct record *recs[MAX_RECS];  /* Array of ptrs to      */
50:  #define RECS   recs            /*       structs of type record   */
51:
52:  EXTERN int n_recs;             /* # of records in current db     */
53:  EXTERN int max_recs;           /* Max # of recs allowed          */
54:
55:  struct menu_item {                /* Menu definition record      */
56:      int action_code;              /* Menu item code              */
57:      char *descrip;                /* Menu item text              */
58:  };
59: