1 |
# ============================================================================== |
2 |
# obj_srvr.tables |
3 |
# |
4 |
# This file contains the layout and associated subroutine referencess for the |
5 |
# virtual tables served by Obj_Srvr.pm. |
6 |
# |
7 |
# Driver routines must return reference to an array of hash refs (records). |
8 |
# All supporting routines must return only 1 record per driver routine |
9 |
# record. To use supporting routines that return an array of records (like |
10 |
# schedule() ), create a wrapper driver routine that adds in the supporting |
11 |
# records and returns an expanded array (see stu_schedule for an example). |
12 |
# |
13 |
# These will be included in Obj_Srvr.pm at the package level. |
14 |
# ============================================================================== |
15 |
|
16 |
# ========================== |
17 |
# Table Driver Subroutines |
18 |
# ========================== |
19 |
# note: could be multiple subs for a table name |
20 |
# |
21 |
# table name driver sub name driver sub ref |
22 |
%table_objs = ( "term_students" => { "subname" => "term_students", |
23 |
"subref" => \&term_students }, |
24 |
|
25 |
"stu_schedule" => { "subname" => "stu_schedule", |
26 |
"subref" => \&stu_schedule }, |
27 |
|
28 |
"term_graduates" => { "subname" => "term_graduates", |
29 |
"subref" => \&term_graduates }, |
30 |
|
31 |
"term_appls" => { "subname" => "term_appls", |
32 |
"subref" => \&appls_for_term }, |
33 |
|
34 |
"term_admits" => { "subname" => "term_admits", |
35 |
"subref" => \&term_admits }, |
36 |
|
37 |
"new_fr" => { "subname" => "new_fr", |
38 |
"subref" => \&new_fr }, |
39 |
|
40 |
"new_tr" => { "subname" => "new_tr", |
41 |
"subref" => \&new_tr }, |
42 |
|
43 |
"new_fr_tr" => { "subname" => "new_fr_tr", |
44 |
"subref" => \&new_fr_tr }, |
45 |
|
46 |
"new_fr_sched" => { "subname" => "new_fr_sched", |
47 |
"subref" => \&new_fr_sched }, |
48 |
|
49 |
"new_tr_sched" => { "subname" => "new_tr_sched", |
50 |
"subref" => \&new_tr_sched }, |
51 |
|
52 |
"new_fr_tr_sched" => { "subname" => "new_fr_tr_sched", |
53 |
"subref" => \&new_fr_tr_sched }, |
54 |
|
55 |
"term_balances" => { "subname" => "term_balances", |
56 |
"subref" => \&term_balances }, |
57 |
|
58 |
"term_faculty" => { "subname" => "term_fac_sched", |
59 |
"subref" => \&term_fac_sched }, |
60 |
|
61 |
"term_schedule" => { "subname" => "term_schedule", |
62 |
"subref" => \&term_schedule }, |
63 |
|
64 |
"term_recruits" => { "subname" => "term_recruits", |
65 |
"subref" => \&term_recruits } |
66 |
); |
67 |
|
68 |
|
69 |
# =================== |
70 |
# Table Definitions |
71 |
# =================== |
72 |
%obj_accessor = ( "term_students" => { |
73 |
"term" => { "subname" => "SELF", |
74 |
"size" => 6 }, |
75 |
"level" => { "subname" => "SELF", |
76 |
"size" => 2 }, |
77 |
"confidential" => { "subname" => "SELF", |
78 |
"size" => 1 }, |
79 |
"dead" => { "subname" => "SELF", |
80 |
"size" => 1 }, |
81 |
"majr_code" => { "subname" => "SELF", |
82 |
"size" => 4 }, |
83 |
"minr_code" => { "subname" => "SELF", |
84 |
"size" => 4 }, |
85 |
"con1_code" => { "subname" => "SELF", |
86 |
"size" => 4 }, |
87 |
"con2_code" => { "subname" => "SELF", |
88 |
"size" => 4 }, |
89 |
"con3_code" => { "subname" => "SELF", |
90 |
"size" => 4 }, |
91 |
"major" => { "subname" => "SELF", |
92 |
"size" => 30 }, |
93 |
"minor" => { "subname" => "SELF", |
94 |
"size" => 30 }, |
95 |
"conc1" => { "subname" => "SELF", |
96 |
"size" => 30 }, |
97 |
"conc2" => { "subname" => "SELF", |
98 |
"size" => 30 }, |
99 |
"conc3" => { "subname" => "SELF", |
100 |
"size" => 30 }, |
101 |
"resident" => { "subname" => "SELF", |
102 |
"size" => 1 }, |
103 |
"deg_plan" => { "subname" => "SELF", |
104 |
"size" => 3 }, |
105 |
"admt_code" => { "subname" => "SELF", |
106 |
"size" => 2 }, |
107 |
"admit_term" => { "subname" => "SELF", |
108 |
"size" => 6 }, |
109 |
"styp_code" => { "subname" => "SELF", |
110 |
"size" => 1 }, |
111 |
"orsn_code" => { "subname" => "SELF", |
112 |
"size" => 1 }, |
113 |
"rate_code" => { "subname" => "SELF", |
114 |
"size" => 5 }, |
115 |
"coll_code" => { "subname" => "SELF", |
116 |
"size" => 2 }, |
117 |
|
118 |
"academic_level" => { "subname" => "academic_level", |
119 |
"subref" => \&academic_level, |
120 |
"field" => "academic_level", |
121 |
"size" => 30 }, |
122 |
|
123 |
|
124 |
"advisor_lname" => { "subname" => "advisor", |
125 |
"subref" => \&advisor, |
126 |
"field" => "adv_lname", |
127 |
"size" => 60 }, |
128 |
|
129 |
"advisor_fname" => { "subname" => "advisor", |
130 |
"subref" => \&advisor, |
131 |
"field" => "adv_fname", |
132 |
"size" => 15 }, |
133 |
|
134 |
"advisor_mi" => { "subname" => "advisor", |
135 |
"subref" => \&advisor, |
136 |
"field" => "adv_mi", |
137 |
"size" => 15 }, |
138 |
|
139 |
"advisor_vnum" => { "subname" => "advisor", |
140 |
"subref" => \&advisor, |
141 |
"field" => "adv_vnum", |
142 |
"size" => 9 }, |
143 |
|
144 |
"cum_gpa" => { "subname" => "all_gpa_o", |
145 |
"subref" => \&all_gpa, |
146 |
"field" => "gpa", |
147 |
"size" => 4, |
148 |
"datatype" => "numeric" }, |
149 |
|
150 |
"total_hrs" => { "subname" => "all_gpa_o", |
151 |
"subref" => \&all_gpa, |
152 |
"field" => "total_hrs", |
153 |
"size" => 7, |
154 |
"datatype" => "numeric" }, |
155 |
|
156 |
"term_hrs" => { "subname" => "term_hrs", |
157 |
"subref" => \&term_hrs, |
158 |
"field" => "term_hrs", |
159 |
"size" => 5, |
160 |
"datatype" => "numeric" }, |
161 |
|
162 |
"class" => { "subname" => "class", |
163 |
"subref" => \&class_by_pidm, |
164 |
"field" => "class", |
165 |
"size" => 2 }, |
166 |
|
167 |
"sat" => { "subname" => "SAT", |
168 |
"subref" => \&SAT, |
169 |
"field" => "SAT", |
170 |
"size" => 5, |
171 |
"datatype" => "numeric" }, |
172 |
|
173 |
"satm" => { "subname" => "SAT", |
174 |
"subref" => \&SAT, |
175 |
"field" => "SATM", |
176 |
"size" => 5, |
177 |
"datatype" => "numeric" }, |
178 |
|
179 |
"satv" => { "subname" => "SAT", |
180 |
"subref" => \&SAT, |
181 |
"field" => "SATV", |
182 |
"size" => 5, |
183 |
"datatype" => "numeric" }, |
184 |
|
185 |
"act" => { "subname" => "ACT", |
186 |
"subref" => \&ACT, |
187 |
"field" => "ACT", |
188 |
"size" => 5, |
189 |
"datatype" => "numeric" }, |
190 |
|
191 |
"acte" => { "subname" => "ACT", |
192 |
"subref" => \&ACT, |
193 |
"field" => "ACTE", |
194 |
"size" => 5, |
195 |
"datatype" => "numeric" }, |
196 |
|
197 |
"actm" => { "subname" => "ACT", |
198 |
"subref" => \&ACT, |
199 |
"field" => "ACTM", |
200 |
"size" => 5, |
201 |
"datatype" => "numeric" }, |
202 |
|
203 |
"actn" => { "subname" => "ACT", |
204 |
"subref" => \&ACT, |
205 |
"field" => "ACTN", |
206 |
"size" => 5, |
207 |
"datatype" => "numeric" }, |
208 |
|
209 |
"acts" => { "subname" => "ACT", |
210 |
"subref" => \&ACT, |
211 |
"field" => "ACTS", |
212 |
"size" => 5, |
213 |
"datatype" => "numeric" }, |
214 |
|
215 |
"last_tr_coll" => { "subname" => "last_tr_coll", |
216 |
"subref" => \&last_tr_coll, |
217 |
"field" => "coll_desc", |
218 |
"size" => 30 }, |
219 |
|
220 |
"last_tr_coll_code" => { "subname" => "last_tr_coll", |
221 |
"subref" => \&last_tr_coll, |
222 |
"field" => "prior_coll", |
223 |
"size" => 6 }, |
224 |
|
225 |
"fr_cohort" => { "subname" => "fr_cohort", |
226 |
"subref" => \&fr_cohort, |
227 |
"field" => "fr_cohort", |
228 |
"size" => 10 }, |
229 |
|
230 |
"hs_code" => { "subname" => "hs_gpa", |
231 |
"subref" => \&hs_gpa, |
232 |
"field" => "hs_code", |
233 |
"size" => 6 }, |
234 |
|
235 |
"high_school" => { "subname" => "hs_gpa", |
236 |
"subref" => \&hs_gpa, |
237 |
"field" => "hs_desc", |
238 |
"size" => 30 } |
239 |
}, |
240 |
|
241 |
"term_faculty" => { |
242 |
"term" => { "subname" => "SELF", |
243 |
"size" => 6 }, |
244 |
"gender" => { "subname" => "SELF", |
245 |
"size" => 1 }, |
246 |
"ethnicity" => { "subname" => "SELF", |
247 |
"size" => 30 }, |
248 |
"dept" => { "subname" => "SELF", |
249 |
"size" => 30 }, |
250 |
"divs" => { "subname" => "SELF", |
251 |
"size" => 30 }, |
252 |
"crn" => { "subname" => "SELF", |
253 |
"size" => 5 }, |
254 |
"subject" => { "subname" => "SELF", |
255 |
"size" => 4 }, |
256 |
"course" => { "subname" => "SELF", |
257 |
"size" => 5 }, |
258 |
"title" => { "subname" => "SELF", |
259 |
"size" => 30 }, |
260 |
"sched_code" => { "subname" => "SELF", |
261 |
"size" => 3 }, |
262 |
"enrolled" => { "subname" => "SELF", |
263 |
"size" => 4, |
264 |
"datatype" => "numeric" }, |
265 |
"credit_hrs" => { "subname" => "SELF", |
266 |
"size" => 5, |
267 |
"datatype" => "numeric" }, |
268 |
|
269 |
# Note: we can provide ID fields from SIS using %id_addr |
270 |
# further below without overwriting ethnicity above |
271 |
# which came from HR, because add2hash won't replace |
272 |
# a hash key that already exists. |
273 |
|
274 |
}, |
275 |
|
276 |
"term_balances" => { |
277 |
"term" => { "subname" => "SELF", |
278 |
"size" => 6 }, |
279 |
|
280 |
"category" => { "subname" => "SELF", |
281 |
"size" => 3 }, |
282 |
|
283 |
"balance" => { "subname" => "SELF", |
284 |
"size" => 14, |
285 |
"datatype" => "numeric" }, |
286 |
|
287 |
"ssn" => { "subname" => "SELF", |
288 |
"size" => 9 }, |
289 |
|
290 |
"academic_level" => { "subname" => "academic_level", |
291 |
"subref" => \&academic_level, |
292 |
"field" => "academic_level", |
293 |
"size" => 30 }, |
294 |
|
295 |
"advisor_lname" => { "subname" => "advisor", |
296 |
"subref" => \&advisor, |
297 |
"field" => "adv_lname", |
298 |
"size" => 60 }, |
299 |
|
300 |
"advisor_fname" => { "subname" => "advisor", |
301 |
"subref" => \&advisor, |
302 |
"field" => "adv_fname", |
303 |
"size" => 15 }, |
304 |
|
305 |
"advisor_mi" => { "subname" => "advisor", |
306 |
"subref" => \&advisor, |
307 |
"field" => "adv_mi", |
308 |
"size" => 15 }, |
309 |
|
310 |
"advisor_vnum" => { "subname" => "advisor", |
311 |
"subref" => \&advisor, |
312 |
"field" => "adv_vnum", |
313 |
"size" => 9 }, |
314 |
|
315 |
"term_hrs" => { "subname" => "term_hrs", |
316 |
"subref" => \&term_hrs, |
317 |
"field" => "term_hrs", |
318 |
"size" => 5, |
319 |
"datatype" => "numeric" } }, |
320 |
|
321 |
"term_recruits" => { |
322 |
"term" => { "subname" => "SELF", |
323 |
"size" => 6 }, |
324 |
"level" => { "subname" => "SELF", |
325 |
"size" => 2 }, |
326 |
"major" => { "subname" => "SELF", |
327 |
"size" => 30 }, |
328 |
"confidential" => { "subname" => "SELF", |
329 |
"size" => 1 }, |
330 |
"hs_code" => { "subname" => "SELF", |
331 |
"size" => 6 }, |
332 |
"high_school" => { "subname" => "SELF", |
333 |
"size" => 30 }, |
334 |
"ethnicity" => { "subname" => "SELF", |
335 |
"size" => 30 }, |
336 |
"hs_gpa" => { "subname" => "SELF", |
337 |
"size" => 4, |
338 |
"datatype" => "numeric" }, |
339 |
"recruit_type" => { "subname" => "SELF", |
340 |
"size" => 30 }, |
341 |
"level_of_interest" => { "subname" => "SELF", |
342 |
"size" => 30 }, |
343 |
"recr_status" => { "subname" => "recr_status", |
344 |
"subref" => \&recr_status, |
345 |
"field" => "recr_status", |
346 |
"size" => 30 }, |
347 |
"last_tr_coll" => { "subname" => "coll_info", |
348 |
"subref" => \&coll_info, |
349 |
"field" => "coll_desc", |
350 |
"size" => 30 }, |
351 |
"last_tr_coll_code" => { "subname" => "coll_info", |
352 |
"subref" => \&coll_info, |
353 |
"field" => "prior_coll", |
354 |
"size" => 6 }, |
355 |
"college_state" => { "subname" => "coll_info", |
356 |
"subref" => \&coll_info, |
357 |
"field" => "sbgi_state", |
358 |
"size" => 3 }, |
359 |
"college_county" => { "subname" => "coll_info", |
360 |
"subref" => \&coll_info, |
361 |
"field" => "sbgi_county", |
362 |
"size" => 30 }, |
363 |
"college_city" => { "subname" => "coll_info", |
364 |
"subref" => \&coll_info, |
365 |
"field" => "sbgi_city", |
366 |
"size" => 20 }, |
367 |
"hs_state" => { "subname" => "hs_info", |
368 |
"subref" => \&sbgi_info, |
369 |
"field" => "sbgi_state", |
370 |
"size" => 3 }, |
371 |
"hs_county" => { "subname" => "hs_info", |
372 |
"subref" => \&sbgi_info, |
373 |
"field" => "sbgi_county", |
374 |
"size" => 30 }, |
375 |
"hs_city" => { "subname" => "hs_info", |
376 |
"subref" => \&sbgi_info, |
377 |
"field" => "sbgi_city", |
378 |
"size" => 20 } }, |
379 |
|
380 |
"term_appls" => { |
381 |
"term" => { "subname" => "SELF", |
382 |
"size" => 6 }, |
383 |
|
384 |
"level" => { "subname" => "SELF", |
385 |
"size" => 2 }, |
386 |
|
387 |
"residence" => { "subname" => "SELF", |
388 |
"size" => 1 }, |
389 |
|
390 |
"appl_date" => { "subname" => "SELF", |
391 |
"size" => 10, |
392 |
"datatype" => "date" }, |
393 |
|
394 |
"admt_code" => { "subname" => "SELF", |
395 |
"size" => 2 }, |
396 |
|
397 |
"major" => { "subname" => "SELF", |
398 |
"size" => 30 }, |
399 |
|
400 |
"college_code" => { "subname" => "SELF", |
401 |
"size" => 6 }, |
402 |
|
403 |
"college" => { "subname" => "SELF", |
404 |
"size" => 30 }, |
405 |
|
406 |
"college_state" => { "subname" => "SELF", |
407 |
"size" => 3 }, |
408 |
|
409 |
"decision" => { "subname" => "app_decsn", |
410 |
"subref" => \&app_decsn, |
411 |
"field" => "decision", |
412 |
"size" => 2 }, |
413 |
|
414 |
"accepted" => { "subname" => "app_decsn", |
415 |
"subref" => \&app_decsn, |
416 |
"field" => "accepted", |
417 |
"size" => 1 } }, |
418 |
|
419 |
"term_admits" => { |
420 |
"term" => { "subname" => "SELF", |
421 |
"size" => 6 }, |
422 |
|
423 |
"level" => { "subname" => "SELF", |
424 |
"size" => 2 }, |
425 |
"decision" => { "subname" => "SELF", |
426 |
"size" => 2 }, |
427 |
|
428 |
"decision_date" => { "subname" => "SELF", |
429 |
"size" => 10, |
430 |
"datatype" => "date" }, |
431 |
|
432 |
"appl_date" => { "subname" => "SELF", |
433 |
"size" => 10, |
434 |
"datatype" => "date" }, |
435 |
|
436 |
"admt_code" => { "subname" => "SELF", |
437 |
"size" => 2 }, |
438 |
|
439 |
"accepted_flg" => { "subname" => "SELF", |
440 |
"size" => 1 }, |
441 |
|
442 |
"resident" => { "subname" => "SELF", |
443 |
"size" => 1 }, |
444 |
|
445 |
"enrolled" => { "subname" => "enrolled_yn", |
446 |
"subref" => \&enrolled_yn, |
447 |
"field" => "enrolled", |
448 |
"size" => 1 }, |
449 |
|
450 |
"major" => { "subname" => "student", |
451 |
"subref" => \&student2, |
452 |
"field" => "major", |
453 |
"size" => 30 }, |
454 |
|
455 |
"hs_code" => { "subname" => "hs_gpa", |
456 |
"subref" => \&hs_gpa, |
457 |
"field" => "hs_code", |
458 |
"size" => 6 }, |
459 |
|
460 |
"high_school" => { "subname" => "hs_gpa", |
461 |
"subref" => \&hs_gpa, |
462 |
"field" => "hs_desc", |
463 |
"size" => 30 }, |
464 |
|
465 |
"hs_gpa" => { "subname" => "hs_gpa", |
466 |
"subref" => \&hs_gpa, |
467 |
"field" => "gpa", |
468 |
"size" => 4, |
469 |
"datatype" => "numeric" }, |
470 |
|
471 |
"hs_rank" => { "subname" => "hs_gpa", |
472 |
"subref" => \&hs_gpa, |
473 |
"field" => "rank", |
474 |
"size" => 4, |
475 |
"datatype" => "numeric" }, |
476 |
|
477 |
"hs_percentile" => { "subname" => "hs_gpa", |
478 |
"subref" => \&hs_gpa, |
479 |
"field" => "percentile", |
480 |
"size" => 5, |
481 |
"datatype" => "numeric" }, |
482 |
|
483 |
"hs_grad_date" => { "subname" => "hs_gpa", |
484 |
"subref" => \&hs_gpa, |
485 |
"field" => "grad_date", |
486 |
"size" => 10, |
487 |
"datatype" => "date" }, |
488 |
|
489 |
"level_of_interest" => { "subname" => "recruit", |
490 |
"subref" => \&recruit, |
491 |
"field" => "level_of_interest", |
492 |
"size" => 30 }, |
493 |
|
494 |
"contact" => { "subname" => "contact", |
495 |
"subref" => \&contact, |
496 |
"field" => "contact", |
497 |
"size" => 30 } }, |
498 |
|
499 |
"term_schedule" => { |
500 |
"term" => { "subname" => "SELF", |
501 |
"size" => 6 }, |
502 |
"crn" => { "subname" => "SELF", |
503 |
"size" => 5 }, |
504 |
"subj" => { "subname" => "SELF", |
505 |
"size" => 4 }, |
506 |
"crse" => { "subname" => "SELF", |
507 |
"size" => 5 }, |
508 |
"crse_title" => { "subname" => "SELF", |
509 |
"size" => 30 }, |
510 |
"schd_code" => { "subname" => "SELF", |
511 |
"size" => 3 }, |
512 |
"enrl" => { "subname" => "SELF", |
513 |
"size" => 4, |
514 |
"datatype" => "numeric" }, |
515 |
"max_enrl" => { "subname" => "SELF", |
516 |
"size" => 4, |
517 |
"datatype" => "numeric" }, |
518 |
"seats_avail" => { "subname" => "SELF", |
519 |
"size" => 4, |
520 |
"datatype" => "numeric" }, |
521 |
"credit_hrs" => { "subname" => "SELF", |
522 |
"size" => 5, |
523 |
"datatype" => "numeric" }, |
524 |
"bldg" => { "subname" => "SELF", |
525 |
"size" => 6 }, |
526 |
"room" => { "subname" => "SELF", |
527 |
"size" => 10 }, |
528 |
"time" => { "subname" => "SELF", |
529 |
"size" => 9 }, |
530 |
"days" => { "subname" => "SELF", |
531 |
"size" => 7 }, |
532 |
"capacity" => { "subname" => "SELF", |
533 |
"size" => 4, |
534 |
"datatype" => "numeric" }, |
535 |
|
536 |
"instructor_lname" => { "subname" => "primary_instructor", |
537 |
"subref" => \&primary_instructor, |
538 |
"field" => "lname", |
539 |
"size" => 60 }, |
540 |
|
541 |
"instructor_fname" => { "subname" => "primary_instructor", |
542 |
"subref" => \&primary_instructor, |
543 |
"field" => "fname", |
544 |
"size" => 15 }, |
545 |
|
546 |
"instructor_mname" => { "subname" => "primary_instructor", |
547 |
"subref" => \&primary_instructor, |
548 |
"field" => "full_mname", |
549 |
"size" => 15 }, |
550 |
|
551 |
"instructor_vnum" => { "subname" => "primary_instructor", |
552 |
"subref" => \&primary_instructor, |
553 |
"field" => "vnum", |
554 |
"size" => 9 } } |
555 |
|
556 |
); |
557 |
|
558 |
my %id_addr = ( |
559 |
"lname" => { "subname" => "id", |
560 |
"subref" => \&id, |
561 |
"field" => "lname", |
562 |
"size" => 60 }, |
563 |
|
564 |
"fname" => { "subname" => "id", |
565 |
"subref" => \&id, |
566 |
"field" => "fname", |
567 |
"size" => 15 }, |
568 |
|
569 |
"mname" => { "subname" => "id", |
570 |
"subref" => \&id, |
571 |
"field" => "full_mname", |
572 |
"size" => 15 }, |
573 |
|
574 |
"vnum" => { "subname" => "id", |
575 |
"subref" => \&id, |
576 |
"field" => "vnum", |
577 |
"size" => 9 }, |
578 |
|
579 |
"confidential" => { "subname" => "id", |
580 |
"subref" => \&id, |
581 |
"field" => "confidential", |
582 |
"size" => 1 }, |
583 |
|
584 |
"deceased" => { "subname" => "id", |
585 |
"subref" => \&id, |
586 |
"field" => "dead", |
587 |
"size" => 1 }, |
588 |
|
589 |
"citizen" => { "subname" => "id", |
590 |
"subref" => \&id, |
591 |
"field" => "citz", |
592 |
"size" => 2 }, |
593 |
|
594 |
"gender" => { "subname" => "id", |
595 |
"subref" => \&id, |
596 |
"field" => "gender", |
597 |
"size" => 1 }, |
598 |
|
599 |
"ethn_code" => { "subname" => "id", |
600 |
"subref" => \&id, |
601 |
"field" => "ethn_code", |
602 |
"size" => 2 }, |
603 |
|
604 |
"ethnicity" => { "subname" => "id", |
605 |
"subref" => \&id, |
606 |
"field" => "ethnicity", |
607 |
"size" => 30 }, |
608 |
|
609 |
"birthdate" => { "subname" => "id", |
610 |
"subref" => \&id, |
611 |
"field" => "birth_date", |
612 |
"size" => 10, |
613 |
"datatype" => "date" }, |
614 |
|
615 |
"age" => { "subname" => "id", |
616 |
"subref" => \&id, |
617 |
"field" => "age", |
618 |
"size" => 3, |
619 |
"datatype" => "numeric" }, |
620 |
|
621 |
"email" => { "subname" => "stu_email", |
622 |
"subref" => \&stu_email, |
623 |
"field" => "email_address", |
624 |
"size" => 90 }, |
625 |
|
626 |
"street1" => { "subname" => "get_addr_pr", |
627 |
"subref" => \&get_addr, |
628 |
"field" => "street", |
629 |
"size" => 30 }, |
630 |
|
631 |
"street2" => { "subname" => "get_addr_pr", |
632 |
"subref" => \&get_addr, |
633 |
"field" => "street2", |
634 |
"size" => 30 }, |
635 |
|
636 |
"street3" => { "subname" => "get_addr_pr", |
637 |
"subref" => \&get_addr, |
638 |
"field" => "street2", |
639 |
"size" => 30 }, |
640 |
|
641 |
"city" => { "subname" => "get_addr_pr", |
642 |
"subref" => \&get_addr, |
643 |
"field" => "city", |
644 |
"size" => 30 }, |
645 |
|
646 |
"state" => { "subname" => "get_addr_pr", |
647 |
"subref" => \&get_addr, |
648 |
"field" => "state", |
649 |
"size" => 3 }, |
650 |
|
651 |
"zip" => { "subname" => "get_addr_pr", |
652 |
"subref" => \&get_addr, |
653 |
"field" => "zip", |
654 |
"size" => 10 }, |
655 |
|
656 |
"nation" => { "subname" => "get_addr_pr", |
657 |
"subref" => \&get_addr, |
658 |
"field" => "nation", |
659 |
"size" => 30 }, |
660 |
|
661 |
"natn" => { "subname" => "get_addr_pr", |
662 |
"subref" => \&get_addr, |
663 |
"field" => "natn_code", |
664 |
"size" => 5 }, |
665 |
|
666 |
"county" => { "subname" => "get_addr_pr", |
667 |
"subref" => \&get_addr, |
668 |
"field" => "county", |
669 |
"size" => 30 }, |
670 |
|
671 |
"atyp" => { "subname" => "get_addr_pr", |
672 |
"subref" => \&get_addr, |
673 |
"field" => "atyp", |
674 |
"size" => 2 }, |
675 |
|
676 |
"phone" => { "subname" => "get_addr_pr", |
677 |
"subref" => \&get_addr, |
678 |
"field" => "phone", |
679 |
"size" => 13 }, |
680 |
|
681 |
"street1_lo" => { "subname" => "get_addr_lo", |
682 |
"subref" => \&get_addr, |
683 |
"field" => "street", |
684 |
"size" => 30 }, |
685 |
|
686 |
"street2_lo" => { "subname" => "get_addr_lo", |
687 |
"subref" => \&get_addr, |
688 |
"field" => "street2", |
689 |
"size" => 30 }, |
690 |
|
691 |
"street3_lo" => { "subname" => "get_addr_lo", |
692 |
"subref" => \&get_addr, |
693 |
"field" => "street2", |
694 |
"size" => 30 }, |
695 |
|
696 |
"city_lo" => { "subname" => "get_addr_lo", |
697 |
"subref" => \&get_addr, |
698 |
"field" => "city", |
699 |
"size" => 30 }, |
700 |
|
701 |
"state_lo" => { "subname" => "get_addr_lo", |
702 |
"subref" => \&get_addr, |
703 |
"field" => "state", |
704 |
"size" => 3 }, |
705 |
|
706 |
"zip_lo" => { "subname" => "get_addr_lo", |
707 |
"subref" => \&get_addr, |
708 |
"field" => "zip", |
709 |
"size" => 10 }, |
710 |
|
711 |
"nation_lo" => { "subname" => "get_addr_lo", |
712 |
"subref" => \&get_addr, |
713 |
"field" => "nation", |
714 |
"size" => 30 }, |
715 |
|
716 |
"natn_lo" => { "subname" => "get_addr_lo", |
717 |
"subref" => \&get_addr, |
718 |
"field" => "natn_code", |
719 |
"size" => 5 }, |
720 |
|
721 |
"county_lo" => { "subname" => "get_addr_lo", |
722 |
"subref" => \&get_addr, |
723 |
"field" => "county", |
724 |
"size" => 30 }, |
725 |
|
726 |
"atyp_lo" => { "subname" => "get_addr_lo", |
727 |
"subref" => \&get_addr, |
728 |
"field" => "atyp", |
729 |
"size" => 2 }, |
730 |
|
731 |
"phone_lo" => { "subname" => "get_addr_lo", |
732 |
"subref" => \&get_addr, |
733 |
"field" => "phone", |
734 |
"size" => 13 } ); |
735 |
|
736 |
add2hash( $obj_accessor{term_students}, \%id_addr ); |
737 |
add2hash( $obj_accessor{term_faculty}, \%id_addr ); |
738 |
add2hash( $obj_accessor{term_balances}, \%id_addr ); |
739 |
add2hash( $obj_accessor{term_recruits}, \%id_addr ); |
740 |
add2hash( $obj_accessor{term_appls}, $obj_accessor{term_students} ); |
741 |
add2hash( $obj_accessor{term_admits}, $obj_accessor{term_students} ); |
742 |
|
743 |
# ==================================================================== |
744 |
# Dependent Table Definitions (dependent on table definitions above) |
745 |
# ==================================================================== |
746 |
# term_students_id |
747 |
# ---------------- |
748 |
# Note: not used as a table for "queries", but needed as a table definition |
749 |
# for building other tables |
750 |
$obj_accessor{"term_students_id"} = { }; |
751 |
add2hash( $obj_accessor{term_students_id}, $obj_accessor{term_students} ); |
752 |
|
753 |
# for performance in one-to-many joins, the term_students_id sub returns the id() |
754 |
# fields, unlike the term_students sub |
755 |
|
756 |
$obj_accessor{term_students_id}->{"lname"} = { "subname" => "SELF", |
757 |
"size" => 60 }; |
758 |
|
759 |
$obj_accessor{term_students_id}->{"fname"} = { "subname" => "SELF", |
760 |
"size" => 15 }; |
761 |
|
762 |
$obj_accessor{term_students_id}->{"mname"} = { "subname" => "SELF", |
763 |
"size" => 15 }; |
764 |
|
765 |
$obj_accessor{term_students_id}->{"vnum"} = { "subname" => "SELF", |
766 |
"size" => 9 }; |
767 |
|
768 |
$obj_accessor{term_students_id}->{"confidential"} = { "subname" => "SELF", |
769 |
"size" => 1 }; |
770 |
|
771 |
$obj_accessor{term_students_id}->{"deceased"} = { "subname" => "SELF", |
772 |
"size" => 1 }; |
773 |
|
774 |
$obj_accessor{term_students_id}->{"citizen"} = { "subname" => "SELF", |
775 |
"size" => 2 }; |
776 |
|
777 |
$obj_accessor{term_students_id}->{"gender"} = { "subname" => "SELF", |
778 |
"size" => 1 }; |
779 |
|
780 |
$obj_accessor{term_students_id}->{"ethn_code"} = { "subname" => "SELF", |
781 |
"size" => 2 }; |
782 |
|
783 |
$obj_accessor{term_students_id}->{"ethnicity"} = { "subname" => "SELF", |
784 |
"size" => 30 }; |
785 |
|
786 |
$obj_accessor{term_students_id}->{"birthdate"} = { "subname" => "SELF", |
787 |
"size" => 10, |
788 |
"datatype" => "date" }; |
789 |
|
790 |
$obj_accessor{term_students_id}->{"age"} = { "subname" => "SELF", |
791 |
"size" => 3 }; |
792 |
|
793 |
# stu_schedule |
794 |
# ------------ |
795 |
$obj_accessor{"stu_schedule"} = { }; |
796 |
add2hash( $obj_accessor{stu_schedule}, $obj_accessor{term_students_id} ); |
797 |
# different population with same fields as term_students_id plus |
798 |
# additional fields (SELF refers to &stu_schedule at run time) |
799 |
|
800 |
# stu_schedule fields not in term_students_id |
801 |
add2hash( $obj_accessor{stu_schedule}, |
802 |
{ "crn" => { "subname" => "SELF", |
803 |
"size" => 5 }, |
804 |
"crse_level" => { "subname" => "SELF", |
805 |
"size" => 2 }, |
806 |
"subject" => { "subname" => "SELF", |
807 |
"size" => 4 }, |
808 |
"course" => { "subname" => "SELF", |
809 |
"size" => 5 }, |
810 |
"credit_hrs" => { "subname" => "SELF", |
811 |
"size" => 5, |
812 |
"datatype" => "numeric" }, |
813 |
"add_date" => { "subname" => "SELF", |
814 |
"size" => 10, |
815 |
"datatype" => "date" }, |
816 |
"grade" => { "subname" => "grade", |
817 |
"subref" => \&grade, |
818 |
"field" => "grade", |
819 |
"size" => 6 }, |
820 |
"instructor_lname" => { "subname" => "primary_instructor", |
821 |
"subref" => \&primary_instructor, |
822 |
"field" => "lname", |
823 |
"size" => 60 }, |
824 |
|
825 |
"instructor_fname" => { "subname" => "primary_instructor", |
826 |
"subref" => \&primary_instructor, |
827 |
"field" => "fname", |
828 |
"size" => 15 }, |
829 |
|
830 |
"instructor_mname" => { "subname" => "primary_instructor", |
831 |
"subref" => \&primary_instructor, |
832 |
"field" => "full_mname", |
833 |
"size" => 15 }, |
834 |
|
835 |
"instructor_vnum" => { "subname" => "primary_instructor", |
836 |
"subref" => \&primary_instructor, |
837 |
"field" => "vnum", |
838 |
"size" => 9 } } ); |
839 |
|
840 |
# term_graduates |
841 |
# -------------- |
842 |
$obj_accessor{"term_graduates"} = { }; |
843 |
add2hash( $obj_accessor{term_graduates}, $obj_accessor{term_students} ); |
844 |
|
845 |
delete $obj_accessor{term_graduates}->{resident}; # will replace below |
846 |
|
847 |
add2hash( $obj_accessor{term_graduates}, |
848 |
{ "grad_year" => { "subname" => "SELF", |
849 |
"size" => 30 }, |
850 |
"grad_date" => { "subname" => "SELF", |
851 |
"size" => 10, |
852 |
"datatype" => "date" }, |
853 |
"degr_code" => { "subname" => "SELF", |
854 |
"size" => 6 }, |
855 |
"degree" => { "subname" => "SELF", |
856 |
"size" => 30 }, |
857 |
"college" => { "subname" => "SELF", |
858 |
"size" => 30 }, |
859 |
"dept" => { "subname" => "SELF", |
860 |
"size" => 30 }, |
861 |
"honors" => { "subname" => "SELF", |
862 |
"size" => 30 }, |
863 |
"major2" => { "subname" => "SELF", |
864 |
"size" => 30 }, |
865 |
"conc1_1" => { "subname" => "SELF", |
866 |
"size" => 30 }, |
867 |
"conc1_2" => { "subname" => "SELF", |
868 |
"size" => 30 }, |
869 |
"conc1_3" => { "subname" => "SELF", |
870 |
"size" => 30 }, |
871 |
"conc2_1" => { "subname" => "SELF", |
872 |
"size" => 30 }, |
873 |
"conc2_2" => { "subname" => "SELF", |
874 |
"size" => 30 }, |
875 |
"conc2_3" => { "subname" => "SELF", |
876 |
"size" => 30 }, |
877 |
"minor2" => { "subname" => "SELF", |
878 |
"size" => 30 }, |
879 |
"resident" => { "subname" => "first_student", |
880 |
"subref" => \&first_student, |
881 |
"field" => "resident", |
882 |
"size" => 1 } } ); |
883 |
|
884 |
# new_fr |
885 |
# ------ |
886 |
$obj_accessor{"new_fr"} = { }; |
887 |
add2hash( $obj_accessor{new_fr}, $obj_accessor{term_students} ); |
888 |
|
889 |
# new_tr |
890 |
# ------ |
891 |
$obj_accessor{"new_tr"} = { }; |
892 |
add2hash( $obj_accessor{new_tr}, $obj_accessor{term_students} ); |
893 |
|
894 |
# new_fr_tr |
895 |
# --------- |
896 |
$obj_accessor{"new_fr_tr"} = { }; |
897 |
add2hash( $obj_accessor{new_fr_tr}, $obj_accessor{term_students} ); |
898 |
|
899 |
# new_fr_sched |
900 |
# ------ |
901 |
$obj_accessor{"new_fr_sched"} = { }; |
902 |
add2hash( $obj_accessor{new_fr_sched}, $obj_accessor{stu_schedule} ); |
903 |
|
904 |
# new_tr_sched |
905 |
# ------ |
906 |
$obj_accessor{"new_tr_sched"} = { }; |
907 |
add2hash( $obj_accessor{new_tr_sched}, $obj_accessor{stu_schedule} ); |
908 |
|
909 |
# new_fr_tr_sched |
910 |
# --------- |
911 |
$obj_accessor{"new_fr_tr_sched"} = { }; |
912 |
add2hash( $obj_accessor{new_fr_tr_sched}, $obj_accessor{stu_schedule} ); |
913 |
|
914 |
|
915 |
# =================== |
916 |
# Subroutine Params |
917 |
# =================== |
918 |
# driver subs |
919 |
%methods = ( "term_students" => { "parms" => [ "dbh", |
920 |
"term", |
921 |
"level" ] }, |
922 |
|
923 |
"stu_schedule" => { "parms" => [ "dbh", |
924 |
"term", |
925 |
"level" ] }, |
926 |
|
927 |
"term_appls" => { "parms" => [ "dbh", |
928 |
"term", |
929 |
"level" ] }, |
930 |
|
931 |
"term_admits" => { "parms" => [ "dbh", |
932 |
"term", |
933 |
"level" ] }, |
934 |
|
935 |
"term_graduates" => { "parms" => [ "dbh", |
936 |
"term", |
937 |
"level" ] }, |
938 |
|
939 |
"term_balances" => { "parms" => [ "dbh", |
940 |
"term", |
941 |
"dcat_code" ] }, |
942 |
|
943 |
"term_recruits" => { "parms" => [ "dbh", |
944 |
"term", |
945 |
"level" ] }, |
946 |
|
947 |
"term_fac_sched" => { "parms" => [ "dbh", |
948 |
"term" ] }, |
949 |
|
950 |
"term_schedule" => { "parms" => [ "dbh", |
951 |
"term" ] }, |
952 |
|
953 |
"new_fr" => { "parms" => [ "dbh", |
954 |
"term" ] }, |
955 |
|
956 |
"new_tr" => { "parms" => [ "dbh", |
957 |
"term" ] }, |
958 |
|
959 |
"new_fr_tr" => { "parms" => [ "dbh", |
960 |
"term" ] }, |
961 |
|
962 |
"new_fr_sched" => { "parms" => [ "dbh", |
963 |
"term" ] }, |
964 |
|
965 |
"new_tr_sched" => { "parms" => [ "dbh", |
966 |
"term" ] }, |
967 |
|
968 |
"new_fr_tr_sched" => { "parms" => [ "dbh", |
969 |
"term" ] }, |
970 |
|
971 |
# supporting subs |
972 |
"id" => { "parms" => [ "dbh", |
973 |
"\$pidm" ] }, |
974 |
|
975 |
"get_addr_lo" => { "parms" => [ "dbh", |
976 |
"\$pidm", |
977 |
"DO", |
978 |
"LO", |
979 |
"CU" ] }, |
980 |
|
981 |
"get_addr_pr" => { "parms" => [ "dbh", |
982 |
"\$pidm", |
983 |
"PR", |
984 |
"CU", |
985 |
"LO" ] }, |
986 |
|
987 |
"academic_level" => { "parms" => [ "dbh", |
988 |
"\$pidm", |
989 |
"\$level" ] }, |
990 |
|
991 |
"stu_email" => { "parms" => [ "dbh", |
992 |
"\$pidm" ] }, |
993 |
|
994 |
"advisor" => { "parms" => [ "dbh", |
995 |
"\$pidm", |
996 |
"\$term" ] }, |
997 |
|
998 |
"all_gpa_o" => { "parms" => [ "dbh", |
999 |
"\$pidm", |
1000 |
"\$level" ] }, |
1001 |
|
1002 |
"term_hrs" => { "parms" => [ "dbh", |
1003 |
"\$pidm", |
1004 |
"\$term" ] }, |
1005 |
|
1006 |
"grade" => { "parms" => [ "dbh", |
1007 |
"\$pidm", |
1008 |
"\$term", |
1009 |
"\$crn" ] }, |
1010 |
|
1011 |
"class" => { "parms" => [ "dbh", |
1012 |
"\$pidm", |
1013 |
"\$level" ] }, |
1014 |
|
1015 |
"enrolled_yn" => { "parms" => [ "dbh", |
1016 |
"\$pidm", |
1017 |
"\$term" ] }, |
1018 |
|
1019 |
"student" => { "parms" => [ "dbh", |
1020 |
"\$pidm", |
1021 |
"\$term" ] }, |
1022 |
|
1023 |
"first_student" => { "parms" => [ "dbh", |
1024 |
"\$pidm" ] }, |
1025 |
|
1026 |
"hs_gpa" => { "parms" => [ "dbh", |
1027 |
"\$pidm" ] }, |
1028 |
|
1029 |
"SAT" => { "parms" => [ "dbh", |
1030 |
"\$pidm" ] }, |
1031 |
|
1032 |
"ACT" => { "parms" => [ "dbh", |
1033 |
"\$pidm" ] }, |
1034 |
|
1035 |
"fac_sched" => { "parms" => [ "dbh", |
1036 |
"\$pidm", |
1037 |
"\$term" ] }, |
1038 |
|
1039 |
"last_tr_coll" => { "parms" => [ "dbh", |
1040 |
"\$pidm" ] }, |
1041 |
|
1042 |
"fr_cohort" => { "parms" => [ "dbh", |
1043 |
"\$pidm" ] }, |
1044 |
|
1045 |
"primary_instructor" => { "parms" => [ "dbh", |
1046 |
"\$term", |
1047 |
"\$crn" ] }, |
1048 |
|
1049 |
"section_meet" => { "parms" => [ "dbh", |
1050 |
"\$term", |
1051 |
"\$crn" ] }, |
1052 |
|
1053 |
"recr_status" => { "parms" => [ "dbh", |
1054 |
"\$term", |
1055 |
"\$crn" ] }, |
1056 |
|
1057 |
"coll_info" => { "parms" => [ "dbh", |
1058 |
"\$pidm" ] }, |
1059 |
|
1060 |
"hs_info" => { "parms" => [ "dbh", |
1061 |
"\$hs_code" ] }, |
1062 |
|
1063 |
"recruit" => { "parms" => [ "dbh", |
1064 |
"\$pidm", |
1065 |
"\$term", |
1066 |
"\$level" ] }, |
1067 |
|
1068 |
"contact" => { "parms" => [ "dbh", |
1069 |
"\$pidm" ] }, |
1070 |
|
1071 |
"app_decsn" => { "parms" => [ "dbh", |
1072 |
"\$pidm", |
1073 |
"\$term", |
1074 |
"\$appl_no", |
1075 |
"12/31/2199" ] } |
1076 |
); |
1077 |
|