nanpa.awk revision 1.2 1 1.2 jhawk # $NetBSD: nanpa.awk,v 1.2 2003/03/13 02:55:01 jhawk Exp $
2 1.2 jhawk #
3 1.2 jhawk # todo:
4 1.2 jhawk # parse "http://docs.nanpa.com/cgi-bin/npa_reports/nanpa?
5 1.2 jhawk # function=list_npa_introduced" to produce parenthetical
6 1.2 jhawk # notes about what area codes are overlayed by others
7 1.2 jhawk # (or split from).
8 1.2 jhawk #
9 1.1 jhawk function parse(file, ispipe, isplanning, i, planinit, t)
10 1.1 jhawk {
11 1.1 jhawk planinit = 0;
12 1.1 jhawk while((ispipe?(file | getline):(getline < file)) > 0) {
13 1.1 jhawk sub(/#.*/, "");
14 1.1 jhawk if (length($0)==0) continue;
15 1.1 jhawk if (isplanning) {
16 1.1 jhawk split($0, f);
17 1.1 jhawk if (!planinit && f[2]=="NEW NPA") {
18 1.1 jhawk planinit=1;
19 1.1 jhawk for (i=1; i<=NF; i++)
20 1.1 jhawk fnames[$i]=i-1;
21 1.1 jhawk } else if (planinit && length(f[fnames["NEW NPA"]])>1) {
22 1.1 jhawk t = f[fnames["LOCATION"]] FS;
23 1.1 jhawk if (f[fnames["OVERLAY?"]]=="Yes")
24 1.1 jhawk t = t "Overlay of " f[fnames["OLD NPA"]];
25 1.1 jhawk else if (f[fnames["OLD NPA"]])
26 1.1 jhawk t = t "Split of " f[fnames["OLD NPA"]];
27 1.1 jhawk if (f[fnames["STATUS"]])
28 1.1 jhawk t = t " (" f[fnames["STATUS"]] ")";
29 1.1 jhawk if (length(f[fnames["IN SERVICE DATE"]]) > 1)
30 1.1 jhawk t = t " effective " \
31 1.1 jhawk f[fnames["IN SERVICE DATE"]];
32 1.1 jhawk data[f[fnames["NEW NPA"]] "*"] = t;
33 1.1 jhawk }
34 1.1 jhawk } else {
35 1.1 jhawk # digits only
36 1.1 jhawk match($0, /^[0-9]/);
37 1.1 jhawk if (RSTART==0) continue;
38 1.1 jhawk i=index($0, FS);
39 1.1 jhawk data[substr($0, 1, i-1)]=substr($0,i+1);
40 1.1 jhawk }
41 1.1 jhawk }
42 1.1 jhawk close(file);
43 1.1 jhawk }
44 1.1 jhawk
45 1.1 jhawk BEGIN{
46 1.1 jhawk FS=":"
47 1.1 jhawk print "# $""NetBSD: $";
48 1.1 jhawk print "# Generated from http://www.nanpa.com/area_codes/index.html";
49 1.1 jhawk print "# (with local exceptions)";
50 1.1 jhawk print "# ";
51 1.1 jhawk print "# format:";
52 1.1 jhawk print "# Area Code : Description : Detail : State/Province Abbrev.";
53 1.1 jhawk print "# (3rd and 4th fields optional)";
54 1.1 jhawk print "# A * in the Area Code field indicates a future area code."
55 1.1 jhawk print "# ";
56 1.1 jhawk parse("ftp -o - " \
57 1.1 jhawk "http://docs.nanpa.com/cgi-bin/npa_reports/nanpa\\?" \
58 1.1 jhawk "function=list_npa_geo_number | sed -f nanpa.sed", 1, 0);
59 1.1 jhawk parse("ftp -o - " \
60 1.1 jhawk "http://docs.nanpa.com/cgi-bin/npa_reports/nanpa\\?" \
61 1.1 jhawk "function=list_npa_non_geo | sed -f nanpa.sed", 1, 0);
62 1.1 jhawk parse("ftp -o - " \
63 1.1 jhawk "http://docs.nanpa.com/cgi-bin/npa_reports/nanpa\\?" \
64 1.1 jhawk "function=list_npa_not_in_service | sed -f nanpa.sed", 1, 1);
65 1.1 jhawk parse("na.phone.add", 0, 0);
66 1.1 jhawk sort="sort -n";
67 1.1 jhawk for (i in data)
68 1.1 jhawk print i FS data[i] | sort
69 1.1 jhawk close(sort);
70 1.1 jhawk }
71