home *** CD-ROM | disk | FTP | other *** search
/ Telecom / 1996-04-telecom-walnutcreek.iso / areacodes / areacode.c < prev    next >
C/C++ Source or Header  |  1996-01-23  |  10KB  |  276 lines

  1. /* Received from Brint Cooper
  2. last update 5 Jan 1996 by Carl Moore
  3. */
  4. #include    <stdio.h>
  5. #include    <ctype.h>
  6. /*
  7.     areacode.c
  8.     Translated from AREACODE.MAC.
  9.     Ken Yap (ken@rochester.arpa, ..!rochester!ken).
  10.  
  11.     Compile: cc -O -o areacode areacode.c
  12.     Run: areacode nnn nnn ...
  13.  
  14.     AREACODE.MAC Ver 1.3 as of November 20, 1984
  15.     Ver. 1.3 added LA suburbs area code 818, added periods to
  16.     messages (why not?), deleted double entry for area code 809,
  17.     removed ungrammatical comma from ASCII string at MSG2: and
  18.     added a space before the `$' in MSG2: so the first space in
  19.     messages could be removed, providing an extra space for text
  20.     without changing the SCAN3: routine's 58-character bias.
  21.     This version provided for M80/L80 devotees courtesy of Irv
  22.     Hoff's XLATE5.COM to prevent undue anxiety trying to find a
  23.     copy of ASM.COM.  It has not been tested, so bug fixes from
  24.     Z80-land are more than welcome. - Bruce Morgen
  25.  
  26.     Ver. 1.2 added 718 area code for New York City, and fixed bug
  27.     in area code 604-804 Harry Kaemmerer
  28.  
  29.     Ver. 1.1 update of area codes for new U.S. areas, Mexico, &
  30.     Eastern Canada. Harvey G. Lord, Storrs, CT 06268
  31.  
  32.     Ver. 1.0 - January 2, 1981 by Kelly Smith
  33.  
  34.     AREACODE is used to display the region and state, specified
  35.     by the user...very handy when someone leaves an area code
  36.     number on a CBBS, but no city or state reference. Simple
  37.     enough to use, just type AREACODE nnn<cr> (where 'nnn' is a
  38.     three digit area code), and in return, you get a geographical
  39.     region by city(s), and state. Sorry if your particular city
  40.     is not represented, and feel free to add it as required...
  41.  
  42. **    Entries must be in sorted order because binary search is used.
  43. */
  44.  
  45. char *areacode[]    = {
  46. "011the International Access Code",
  47. "201Hackensack, Morristown and Newark, New Jersey",
  48. "202Washington, District of Columbia",
  49. "203Bridgeport, New Haven and Stamford, Connecticut",
  50. "204all regions, Manitoba, CANADA",
  51. "205Birmingham and Huntsville, Alabama",
  52. "206Seattle and Tacoma, Washington",
  53. "207all regions, Maine",
  54. "208all regions, Idaho",
  55. "209Fresno and Stockton, California",
  56. "210San Antonio, Texas",
  57. "212New York City (Manhattan only), New York",
  58. "213Los Angeles, California",
  59. "214Dallas, Texas",
  60. "215Philadelphia and Quakertown, Pennsylvania",
  61. "216Cleveland, Ohio",
  62. "217Springfield and central Illinois",
  63. "218Duluth, Minnesota",
  64. "219Gary, Hammond, Michigan City and South Bend, Indiana",
  65. "242,as of 10-1996, Bahamas",
  66. "250,as of 10-1996, outside of Vancouver area, British Columbia, CANADA",   
  67. "281an overlay on 713 area, Texas",
  68. "301Silver Spring and Frederick, Maryland",
  69. "302all regions, Delaware",
  70. "303Denver, Colorado",
  71. "304all regions, West Virginia",
  72. "305Key West and Miami, Florida",
  73. "306all regions, Saskatchewan, CANADA",
  74. "307all regions, Wyoming",
  75. "308North Platte and Scottsbluff, Nebraska",
  76. "309Bloomington, Normal and Peoria, Illinois",
  77. "310Beverly Hills, California",
  78. "312Chicago, Illinois (as of 10-1996, just downtown Chicago)",
  79. "313Detroit and Ann Arbor, Michigan",
  80. "314Saint Louis, Missouri",
  81. "315Syracuse and Utica, New York",
  82. "316Coffeyville, Dodge City and Wichita, Kansas",
  83. "317Indianapolis and Kokomo, Indiana",
  84. "318Lake Charles and Shreveport, Louisiana",
  85. "319Dubuque, Iowa",
  86. "320,as of 3-1996, St. Cloud, Minnesota",
  87. "330,as of 3-1996, Akron, Massillon and Youngstown, Ohio",
  88. "334Mobile and Montgomery, Alabama",
  89. "352Gainesville and Ocala, Florida",
  90. "360Bellingham, Olympia and Vancouver, Washington",
  91. "401all regions, Rhode Island",
  92. "402Lincoln and Omaha, Nebraska",
  93. "403Alberta, Yukon Territory and (Western) Northwest Territories, CANADA",
  94. "404Atlanta, Georgia",
  95. "405Oklahoma City, Oklahoma",
  96. "406all regions, Montana",
  97. "407Orlando, Florida",
  98. "408San Jose and Sunnyvale, California",
  99. "409Galveston, Texas",
  100. "410Baltimore and Annapolis, Maryland",
  101. "411the code used for local Directory Assistance in many areas",
  102. "412Pittsburgh, Indiana and Rochester, Pennsylvania",
  103. "413Springfield, Massachusetts",
  104. "414Green Bay, Milwaukee and Racine, Wisconsin",
  105. "415San Francisco, California",
  106. "416Toronto, Ontario, CANADA",
  107. "417Joplin and Springfield, Missouri",
  108. "418Quebec, Quebec, CANADA",
  109. "419Toledo, Ohio",
  110. "423Chattanooga, Knoxville and Kingsport, Tennessee",
  111. "441Bermuda",
  112. "456used for premium-rate calling (only used outside of +1)",
  113. "500used for Personal Number Service/AT&T, other carriers",
  114. "501all regions, Arkansas",
  115. "502Louisville, Paducah and Shelbyville, Kentucky",
  116. "503Portland, Oregon",
  117. "504Baton Rouge and New Orleans, Louisiana",
  118. "505all regions, New Mexico",
  119. "506all regions, New Brunswick, CANADA",
  120. "507Albert Lea and Rochester, Minnesota",
  121. "508Framingham and New Bedford, Massachusetts",
  122. "509Pullman, Spokane and Walla Walla, Washington",
  123. "510Oakland, California",
  124. "512Austin and Corpus Christi, Texas",
  125. "513Cincinnati and Dayton, Ohio",
  126. "514Montreal, CANADA",
  127. "515Des Moines and Mason City, Iowa",
  128. "516Hempstead, New York",
  129. "517Lansing and Saginaw, Michigan",
  130. "518Albany, Greenwich and Schenectady, New York",
  131. "519London, Ontario, CANADA",
  132. "520Flagstaff and Tucson, Arizona",
  133. "540Fredericksburg, Roanoke and Winchester, Virginia",
  134. "541Eugene, Oregon",
  135. "561to be used at a future time for West Palm Beach, Florida",
  136. "562as of 2-1997, Long Beach, California",
  137. "573Cape Girardeau and Jefferson City, Missouri",
  138. "601all regions, Mississippi",
  139. "602Phoenix, Arizona",
  140. "603all regions, New Hampshire",
  141. "604Vancouver, British Columbia, CANADA",
  142. "605all regions, South Dakota",
  143. "606Ashland and Winchester, Kentucky",
  144. "607Elmira, Ithaca and Stamford, New York",
  145. "608Beloit and Madison, Wisconsin",
  146. "609Atlantic City, Camden and Trenton, New Jersey",
  147. "610Allentown, Reading and Chester, Pennsylvania",
  148. "611the code used for telephone repair service in many areas",
  149. "612Minneapolis and Saint Paul, Minnesota",
  150. "613Ottawa, Ontario, CANADA",
  151. "614Columbus, Marietta and Newark, Ohio",
  152. "615Nashville, Tennessee",
  153. "616Battle Creek, Cadillac and Grand Rapids, Michigan",
  154. "617Boston, Massachusetts",
  155. "618Alton, Mount Vernon and Centralia, Illinois",
  156. "619San Diego, California",
  157. "626as of 1997(?), an overlay or split of 818 in California",
  158. "630as of 8-1996, Aurora, Oak Park (west suburbs of Chicago), Illinois",
  159. "700used for Value Added Special Services, per individual carrier",
  160. "701all regions, North Dakota",
  161. "702all regions, Nevada",
  162. "703Arlington and Manassas, Virginia",
  163. "704Charlotte and Salisbury, North Carolina",
  164. "705North Bay, Ontario, CANADA",
  165. "706Augusta, Columbus and Rome, Georgia",
  166. "707Eureka, Napa and Santa Rosa, California",
  167. "708as of 8-1996, Calumet City, Harvey (south suburbs of Chicago), Illinois",
  168. "709all regions, Newfoundland and Labrador, CANADA",
  169. "710Federal Government Special Services",
  170. "712Council Bluffs, Iowa",
  171. "713Houston, Texas",
  172. "714Orange and Anaheim, California",
  173. "715Eau Claire and Wausau, Wisconsin",
  174. "716Buffalo, Niagara Falls and Rochester, New York",
  175. "717Harrisburg, Scranton and Wilkes-Barre, Pennsylvania",
  176. "718New York City (Bronx, Brooklyn, Queens, Staten Island), New York",
  177. "719Colorado Springs, Colorado",
  178. "760as of 3-1997, Palm Springs and the Imperial Valley, California",
  179. "770Marietta, Georgia",
  180. "773as of 10-1996, Chicago, Illinois (except downtown area is 312)",
  181. "800used for In-WATS Toll Free Calling",
  182. "801all regions, Utah",
  183. "802all regions, Vermont",
  184. "803Charleston, Columbia and Florence, South Carolina",
  185. "804Charlottesville, Norfolk and Richmond, Virginia",
  186. "805Bakersfield, Ventura and Simi Valley, California",
  187. "806Amarillo, Texas",
  188. "807Thunder Bay, Ontario, CANADA",
  189. "808all regions, Hawaii",
  190. "809Puerto Rico, the Virgin Islands, etc.",
  191. "810Flint and Pontiac, Michigan",
  192. "812Evansville, Indiana",
  193. "813Clearwater, St. Petersburg and Tampa, Florida",
  194. "814Altoona, Erie and Punxsutawney, Pennsylvania",
  195. "815La Salle, Joliet and Rockford, Illinois",
  196. "816Kansas City and Saint Joseph, Missouri",
  197. "817Fort Worth, Temple and Waco, Texas",
  198. "818the suburban area north of Los Angeles, California",
  199. "819Hull and Sherbrooke, (Western) Quebec and (Eastern) NW Territories, CANADA",
  200. "847Evanston, Glenview, Skokie, Waukegan, (north suburbs of Chicago), Illinois",
  201. "860Hartford, Connecticut",
  202. "864Greenville and Spartanburg, South Carolina",
  203. "900used for Mass Calling Value Added Information Services",
  204. "901Memphis, Tennessee",
  205. "902all regions, Prince Edward Island and Nova Scotia, CANADA",
  206. "903Tyler and Texarkana, Texas",
  207. "904Jacksonville and Pensacola, Florida",
  208. "905Hamilton and Niagara Falls, Ontario, CANADA",
  209. "906Sault Ste. Marie, Michigan",
  210. "907all regions, Alaska",
  211. "908Elizabeth and New Brunswick, New Jersey",
  212. "909Riverside and San Bernardino, California",
  213. "910Winston-Salem, Greensboro and Fayetteville, North Carolina",
  214. "911the code used for Police/Fire emergencies in most areas",
  215. "912Waycross and Savannah, Georgia",
  216. "913Ottawa and Topeka, Kansas",
  217. "914Monroe, Mount Vernon and Poughkeepsie, New York",
  218. "915El Paso, Texas",
  219. "916Sacramento and South Tahoe, California",
  220. "917New York City (cellular/pager only overlaid on 212/718), New York",
  221. "918Muskogee and Tulsa, Oklahoma",
  222. "919Greenville, Raleigh and Williamston, North Carolina",
  223. "941Avon Park, Fort Myers and Winter Haven, Florida",
  224. "954Fort Lauderdale, Florida",
  225. "970Fort Collins, Grand Junction and Vail, Colorado",
  226. "972an overlay on 214 area, Texas"
  227. };
  228.  
  229. char *where(code)
  230.     char        *code;
  231. {
  232.     register int    i, high, low, mid;
  233.     int        strncmp();
  234.  
  235.     low = 0; high = sizeof(areacode) / sizeof(areacode[0]);
  236.     while (low <= high)
  237.     {
  238.         mid = (low + high) / 2;
  239.         i = strncmp(code, areacode[mid], 3);
  240.         if (i < 0)
  241.             high = mid - 1;
  242.         else if (i > 0)
  243.             low = mid + 1;
  244.         else
  245.             return (areacode[mid] + 3);
  246.     }
  247.     return ("not a valid area code");
  248. }
  249.  
  250. area(code)
  251.     char        *code;
  252. {
  253.     char        *where();
  254.  
  255.     if (!isdigit(code[0]) || !isdigit(code[1]) || !isdigit(code[2])
  256.         || code[3] != '\0')
  257.         printf("Area code %s is not a valid area code!\n", code);
  258.     else
  259.         printf("Area code %s is %s. \n", code, where(code));
  260. }
  261.  
  262. main(argc, argv)
  263.     int        argc;
  264.     char        *argv[];
  265. {
  266.     if (argc < 2)
  267.     {
  268.         printf("Usage: areacode nnn nnn ...\n");
  269.         exit(1);
  270.     }
  271.  
  272.     for (--argc, ++argv; argc > 0; --argc, ++argv)
  273.         area(*argv);
  274. }
  275.  
  276.