[comp.dcom.telecom] areacode program

cmoore@BRL.MIL (VLD/VMB) (01/20/89)

/* Received from Brint Cooper
*/
#include	<stdio.h>
#include	<ctype.h>
/*
	areacode.c
	Translated from AREACODE.MAC.
	Ken Yap (ken@rochester.arpa, ..!rochester!ken).

	Compile: cc -O -o areacode areacode.c
	Run: areacode nnn nnn ...

	AREACODE.MAC Ver 1.3 as of November 20, 1984
	Notes by Carl Moore:
	Modified 26-28 May 1988 to account for 305/407 split in
	Florida, 303/719 in Colorado, 617/508 in Massachusetts; also
	added note about suburbs in area 202.

	Ver. 1.3 added LA suburbs area code 818, added periods to
	messages (why not?), deleted double entry for area code 809,
	removed ungrammatical comma from ASCII string at MSG2: and
	added a space before the `$' in MSG2: so the first space in
	messages could be removed, providing an extra space for text
	without changing the SCAN3: routine's 58-character bias.
	This version provided for M80/L80 devotees courtesy of Irv
	Hoff's XLATE5.COM to prevent undue anxiety trying to find a
	copy of ASM.COM.  It has not been tested, so bug fixes from
	Z80-land are more than welcome. - Bruce Morgen

	Ver. 1.2 added 718 area code for New York City, and fixed bug
	   in area code 604-804 Harry Kaemmerer

	Ver. 1.1 update of area codes for new U.S. areas, Mexico, &
	Eastern Canada. Harvey G. Lord, Storrs, CT 06268

	Ver. 1.0 - January 2, 1981 by Kelly Smith

	AREACODE is used to display the region and state, specified
	by the user...very handy, when someone leaves a area code
	number on a CBBS, but no city or state reference. Simple
	enough to use, just type AREACODE nnn<cr> (where 'nnn' is a
	three digit area  code), and in return, you get a
	geographical region by city(s), and state. Sorry if your
	particular city is not represented, and feel free to add it
	as required...

**	Entries must be in sorted order because binary search is used.
*/

char *areacode[]	= {
"011the International Access Code",
"170Northwest Mexico",
"190Mexico City, Mexico",
"201Hackensack, Morristown, and Newark, New Jersey",
"202Washington, District of Columbia (also suburbs)",
"203all regions, Connecticut",
"204Manitoba, Canada",
"205all regions, Alabama",
"206Seattle, Tacoma, and Vancouver, Washington",
"207all regions, Maine",
"208all regions, Idaho",
"209Fresno and Stockton, California",
"212New York City (Manhattan and Bronx) New York",
"213Los Angeles, California",
"214Dallas, Texas",
"215Allentown, Chester, and Philadelphia, Pennsylvania",
"216Akron, Cleveland, Massillon, and Youngstown, Ohio",
"217Casey and Springfield, Illinois",
"218Duluth, Minnesota",
"219Gary, Hammond, Michigan City, and South Bend, Indiana",
"301all regions, Maryland",
"302all regions, Delaware",
"303Denver, Colorado",
"304all regions, West Virginia",
"305Fort Lauderdale, Key West, and Miami, Florida",
"306Saskatchewan, Canada",
"307all regions, Wyoming",
"308North Platte and Scottsbluff, Nebraska",
"309Peoria, Illinois",
"312Chicago, Illinois",
"313Detroit, Adrian, and Ann Arbor, Michigan",
"314Saint Louis, Missouri",
"315Syracuse and Utica, New York",
"316Dodge City and Wichita, Kansas",
"317Indianapolis and Kokomo, Indiana",
"318Lake Charles and Shreveport, Louisiana",
"319Dubuque, Iowa",
"401all regions, Rhode Island",
"402Lincoln and Omaha, Nebraska",
"403Alberta, Canada",
"404Atlanta and Rome, Georgia",
"405Oklahoma City, Oklahoma",
"406all regions, Montana",
"407Orlando and West Palm Beach, Florida",
"408San Jose and Sunnyvale, California",
"409Galveston, Texas",
"412Pittsburgh, Indiana, and Rochester, Pennsylvania",
"413Springfield, Massachusetts",
"414Green Bay, Milwaukee, and Racine, Wisconsin",
"415Oakland and San Francisco, California",
"416Toronto, Ontario, Canada",
"417Joplin and Springfield, Missouri",
"418Quebec, Quebec, Canada",
"419Toledo, Ohio",
"501all regions, Arkansas",
"502Louisville, Paducah, and Shelbyville, Kentucky",
"503all regions, Oregon",
"504Baton Rouge and New Orleans, Louisiana",
"505all regions, New Mexico",
"506New Brunswick, Canada",
"507Albert Lea and Rochester, Minnesota",
"508Framingham and New Bedford, Massachusetts",
"509Pullman, Spokane, and Walla Walla, Washington",
"512Austin, Corpus Christi, and San Antonio, Texas",
"513Cincinnati and Dayton, Ohio",
"514Montreal, Canada",
"515Des Moines and Mason City, Iowa",
"516Hempstead, New York",
"517Lansing and Saginaw, Michigan",
"518Albany, Greenwich, and Schenectady, New York",
"519London, Ontario, Canada",
"525the Country and City code for Mexico City, Mexico",
"601all regions, Mississippi",
"602all regions, Arizona",
"603all regions, New Hampshire",
"604British Columbia, Canada",
"605all regions, South Dakota",
"606Ashland and Winchester, Kentucky",
"607Elmira, Ithaca, and Stamford, New York",
"608Beloit and Madison, Wisconsin",
"609Atlantic City, Camden, and Trenton, New Jersey",
"612Minneapolis and Saint Paul, Minnesota",
"613Ottawa, Ontario, Canada",
"614Columbus, Marietta, and Newark, Ohio",
"615Chattanooga and Nashville, Tennessee",
"616Battle Creek, Cadillac, and Grand Rapids, Michigan",
"617Boston, Massachusetts",
"618Alton, Mount Vernon, and Centralia, Illinois",
"619San Diego, Palm Springs, and the Imperial Valley, California",
"700Value Added Special Services, per individual carrier",
"701all regions, North Dakota",
"702all regions, Nevada",
"703Fredericksburg, Roanoke, and Winchester, Virginia",
"704Charlotte and Salisbury, North Carolina",
"705North Bay, Ontario, Canada",
"707Eureka, Napa, and Santa Rosa, California",
"708Aurora, Wheaton, Evanston, northeastern Illinois (as of 11-89)",
"709Newfoundland, Canada",
"712Council Bluffs, Iowa",
"713Houston, Texas",
"714Orange and Anaheim, California",
"715Eau Claire and Wausau, Wisconsin",
"716Buffalo, Niagara Falls, and Rochester, New York",
"717Harrisburg, Scranton, and Wilkes-Barre, Pennsylvania",
"718New York City (Queens, Brooklyn and Staten Island) NY",
"719Colorado Springs, Colorado",
"800In-WATS Toll Free Calling",
"801all regions, Utah",
"802all regions, Vermont",
"803all regions, South Carolina",
"804Charlottesville, Norfolk, and Richmond, Virginia",
"805Bakersfield, Ventura, and Simi Valley, California",
"806Amarillo, Texas",
"807Thunder Bay, Ontario, Canada",
"808all regions, Hawaii",
"809Bahamas, Bermuda, Puerto Rico, and the Virgin Islands",
"812Evansville, Indiana",
"813Avon Park, Fort Myers, and Winter Haven, Florida",
"814Altoona, Erie, and Punxsutawney, Pennsylvania",
"815La Salle, Joliet, and Rockford, Illinois",
"816Kansas City and Saint Joseph, Missouri",
"817Fort Worth, Temple, and Waco, Texas",
"818the suburban area north of Los Angeles, California",
"819Malartic and western Quebec, Canada",
"900Mass Calling Value Added Information Services",
"901Memphis, Tennesee",
"902Prince Edward Island and Nova Scotia, Canada",
"904Jacksonville, Florida",
"906Sault Ste. Marie, Michigan",
"907all regions, Alaska",
"912Waycross and Savannah, Georgia",
"913Ottawa and Topeka, Kansas",
"914Monroe, Mount Vernon, and Poughkeepsie, New York",
"915El Paso, Texas",
"916Sacramento and South Tahoe, California",
"918Muskogee and Tulsa, Oklahoma",
"919Greenville, Raleigh, and Williamston, North Carolina"
};

char *where(code)
	char		*code;
{
	register int	i, high, low, mid;
	int		strncmp();

	low = 0; high = sizeof(areacode) / sizeof(areacode[0]);
	while (low <= high)
	{
		mid = (low + high) / 2;
		i = strncmp(code, areacode[mid], 3);
		if (i < 0)
			high = mid - 1;
		else if (i > 0)
			low = mid + 1;
		else
			return (areacode[mid] + 3);
	}
	return ("not a valid area code");
}

area(code)
	char		*code;
{
	char		*where();

	if (!isdigit(code[0]) || !isdigit(code[1]) || !isdigit(code[2])
		|| code[3] != '\0')
		printf("Area code %s is not a valid area code!\n", code);
	else
		printf("Area code %s is %s. \n", code, where(code));
}

main(argc, argv)
	int		argc;
	char		*argv[];
{
	if (argc < 2)
	{
		printf("Usage: areacode nnn nnn ...\n");
		exit(1);
	}

	for (--argc, ++argv; argc > 0; --argc, ++argv)
		area(*argv);
}