# a hash table mapping lines to program text global lines procedure main() write("NMSU EXTENDED COLOR BASIC-370") lines := table() repeat { write("OK") s := trim(read(),,0) if not (s ? lines[integer(tab(many(&digits)))] := tab(0)) then case map(s) of { ("exit"|"quit"|"stop"): break "list": list() "run": run() default: interpret(s) } } end procedure interpret(s) write("don't know how to ", s) end procedure list() L := sort(lines, 3) every i := 1 to *L by 2 do write(L[i], "\t", L[i+1]) end procedure run() fout := open("temp.bas", "w") | return write("can't write to temp.bas") L := sort(lines, 3) every i := 1 to *L by 2 do write(fout, L[i], "\t", L[i+1]) close(fout) system("compile temp.bas") system("./temp") end