Listing 1

 1: /*
 2:  *    MDB.H  (Generalized Static/Dynamic Array 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(char *db_name);
20: void backup_db(void);
21:
22: void error(char *msg);
23: struct record *alloc_rec(void);
24: void free_up(void);
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 ptr      */
50: #define    RECS    recs        /* to struct 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: };