# get_all # extracts useful fields into a single file to be read by reg.cgi BEGIN { FS = " *\t" OFS = "\t" # collect processed registrar data into arrays get_sched("foo_sched") get_prof("foo_prof") get_descr("foo_descr") get_xlist("foo_xlist") # put everything into a single file put_all() } function get_descr(fn) { id = 1; dept = 2; crsnumber = 3; term = 4; area = 5; crstitle = 6; crsdesc = 7 nct = 0 while (getline < fn > 0) { ct[nct] = $0 ct_dept[nct] = $dept ct_crsnumber[nct] = $crsnumber ct_area[nct] = $area ct_crsdesc[nct] = escape($crsdesc) ct_crstitle[nct] = escape($crstitle) #if (nct < 5) printf("ct: [%s] [%s] [%s] [%s]\n", # NF, ct_dept[nct], ct_crsnumber[nct], ct_crstitle[nct]) nct++ } } function get_prof(fn) { FS = "\t" id = 1; dept = 2; crsnumber = 3; term = 4; professor = 5; prereq = 6 # prereq unused while (getline < fn > 0) { prof[$dept,$crs] = escape($professor) } } function get_sched(fn) { #9932 AAS 345 S06-07 S01 01:30 PM 04:20 PM T FIRES B06L id = 1; dept = 2; crs = 3; term = 4; format = 5; beg = 6; end = 7; days = 8; loc = 9; course_number = 10 FS = "\t" nst = 0 while (getline < fn > 0) { if ($format !~ /[LSCU]/) # ignore precepts & other odd formats continue $crs = trim($crs) time[$dept,$crs] = $beg "-" $end gsub(/ [AP]M/, "", time[$dept,$crs]) day[$dept,$crs] = $days place[$dept,$crs] = $loc course_num[$dept,$crs] = $course_number #if (nst < 5) printf("st: [%s] [%s] [%s]\n", NF, $dept, $crs, time[$dept,$crs]) nst++ } } function get_xlist(fn) { FS = "\t" id = 1; dept = 2; crsnumber = 3; term = 4; area = 5; crstitle = 6; xlists = 7 while (getline < fn > 0) { ### no actions yet } } function put_all() { for (i = 0; i < nct; i++) { d = day[ct_dept[i],ct_crsnumber[i]] t = time[ct_dept[i],ct_crsnumber[i]] p = place[ct_dept[i],ct_crsnumber[i]] pf = prof[ct_dept[i],ct_crsnumber[i]] regnum = course_num[ct_dept[i],ct_crsnumber[i]] tip = ct_crsdesc[i] "  " pf " " regnum printf("%3s %4.4s %3.3s %6.6s %s %-10.10s %s\n", tip, ct_dept[i], ct_crsnumber[i], ct_area[i], d, t, p, ct_crstitle[i]) } } function trim(s) { gsub(/ /, "", s) return s } function escape(s) { # these are reinterpreted as real quotes!!! # so this does no good at all. #gsub(/'"'"'/, "\\'", s) #gsub(/"/, "\\"", s) gsub(/'/, "", s) gsub(/"/, "", s) return s }