4 # define firstERC mMGRS
6 # define numERCS (lastERC - firstERC + 1)
10 mMGRS, fMGRS, mNON, fNON
15 bool initDone = FALSE;
17 void db_initMod (void)
32 for (i = firstERC; i <= lastERC; i++)
34 db[i] = erc_create ();
40 eref _db_ercKeyGet (erc c, int key)
44 if (eref_get(er).ssNum == key) return (er);
50 eref _db_keyGet (int key)
55 for (i = firstERC; i <= lastERC; i++)
57 er = _db_ercKeyGet (db[i], key);
58 if (!eref_equal (er, erefNIL))
67 int _db_addEmpls (erc c, int l, int h, empset s)
76 if ((e.salary >= l) && (e.salary <= h))
86 db_status hire (employee e)
88 if (e.gen == gender_ANY)
97 if (!eref_equal (_db_keyGet (e.ssNum), erefNIL))
104 void uncheckedHire (employee e)
113 erc_insert (db[mMGRS], er);
115 erc_insert (db[mNON], er);
118 erc_insert (db[fMGRS], er);
120 erc_insert (db[fNON], er);
123 bool fire (int ssNum)
127 for (i = firstERC; i <= lastERC; i++)
129 erc_elements(db[i], er)
131 if (eref_get(er).ssNum == ssNum)
133 erc_delete(db[i], er);
142 bool promote (int ssNum)
149 er = _db_ercKeyGet (db[mNON], ssNum);
151 if (eref_equal (er, erefNIL))
153 er = _db_ercKeyGet (db[fNON], ssNum);
154 if (eref_equal (er, erefNIL))
165 erc_delete (db[mNON], er);
166 erc_insert (db[mMGRS], er);
170 erc_delete (db[fNON], er);
171 erc_insert (db[fMGRS], er);
177 db_status setSalary (int ssNum, int sal)
187 er = _db_keyGet (ssNum);
189 if (eref_equal (er, erefNIL))
201 int query (db_q q, empset s)
217 for (i = firstERC; i <= lastERC; i++)
218 numAdded += _db_addEmpls (db[i], l, h, s);
221 numAdded = _db_addEmpls (db[mMGRS], l, h, s);
222 numAdded += _db_addEmpls (db[fMGRS], l, h, s);
225 numAdded = _db_addEmpls (db[mNON], l, h, s);
226 numAdded += _db_addEmpls (db[fNON], l, h, s);
233 numAdded = _db_addEmpls (db[mMGRS], l, h, s);
234 numAdded += _db_addEmpls (db[mNON], l, h, s);
237 return _db_addEmpls (db[mMGRS], l, h, s);
239 return _db_addEmpls (db[mNON], l, h, s);
245 numAdded = _db_addEmpls (db[fMGRS], l, h, s);
246 numAdded += _db_addEmpls (db[fNON], l, h, s);
249 return _db_addEmpls (db[fMGRS], l, h, s);
251 return _db_addEmpls (db[fNON], l, h, s);
261 printf ("Employees:\n");
263 for (i = firstERC; i <= lastERC; i++)
265 printVal = erc_sprint (db[i]);
266 printf ("%s", printVal);