
    Consistency Check for ATCC --  Version 1.6  --  22 JUN 2001


TABLE OF CONTENTS
-----------------

0.  BUSINESS STUFF
    0.1  PURPOSE
    0.2  NOT A DEVELOPER?
    0.3  COPYRIGHTS
    0.4  FEEDBACK
    0.5  URLs

1.  GETTING STARTED
    1.1  QUICK START FOR DOS USE
    1.2  INSTALLATION FOR DOS USE
    1.3  INSTALLATION FOR WINDOWS USE

2.  PROGRAM OPTIONS
    2.1  GENERAL
    2.2  SAMPLE COMMAND LINES

3.  ERROR MESSAGES
    3.1  GENERAL
    3.2  LEVEL 0 MESSAGES
    3.3  LEVEL 1 MESSAGES
    3.4  LEVEL 2 MESSAGES
    3.5  LEVEL 3 MESSAGES
    3.6  UNUSED ITEMS

4.  OBSERVED CHARACTERISTICS OF ATCC
    4.1  UNEXPECTED CHARACTERS
    4.2  OCTAL NUMBERS
    4.3  SEPS TOO CLOSE TOGETHER
    4.4  GHOST TARGETS
    4.5  MAXIMUM NUMBER OF FIXES
    4.6  ALTITUDE ACTIONS OVER 100
    4.7  VARIATION COMPUTATIONS
    4.8  STUPID KEYBOARD TRICKS

5.  ATCCCC LIMITATIONS
    5.1  LINE LENGTH
    5.2  BLANK/SEPARATE LINES
    5.3  ZERO LAT/LONG
    5.4  MAXIMUM RUNWAYS

6.  CHANGES



-------------------------------------------------------------------
|                    CHAPTER 0 - BUSINESS STUFF                   |
-------------------------------------------------------------------

0.1  PURPOSE
------------

   ATCCCC is designed to assist users in creating sector files
   for Xavius' ATCC program Version 1.  It reads the various
   files and reports the errors it detects.

   ATCCCC (written in C naturally) is a Dos program that generates
   error messages in simple text format, one line per error.  The
   messages will appear by default on the screen, or may be written
   to a file or a printer.

   The program looks for data that does not conform to information
   in the Xavius-supplied file FDOCS.TXT, plus other items that I
   have discovered cause problems for ATCC.  It is NOT the official
   word on the subject, it won't detect every error, and a clean
   report doesn't guarantee that your sector will work the way you
   want it to.

   The ATCC program is very good at what it is supposed to do -
   simulate US ATC enroute sectors using the files created and
   tested by the program's authors.  ATCC does not do a good job
   of dealing with programming errors in user-created files (and
   I'm not sure it should try).  Hopefully this program will
   reduce the frustration you may experience while developing
   your own sectors.

   **********************************************************
   *  If you are comfortable with Dos operations such as    *
   *  copying files, specifying path names, using command   *
   *  line switches, etc., you will be able to get the      *
   *  most out of the program.                              *
   *                                                        *
   *  If you are "Dos-challenged", I've kludged together    *
   *  a procedure that will allow you to click on a         *
   *  shortcut that will run a batch file, that will run    *
   *  ATCCCC, which will send the output to a file, which   *
   *  will appear in a Notepad window.  I hope.             *
   **********************************************************


0.2  NOT A DEVELOPER?
---------------------

   If you are not a sector developer, ATCCCC will not do very much
   for you.  In fact, the error messages that it produces may have
   an unfair negative effect on your opinion of all the work that
   the sector developer did.

   Many sectors work quite well even when ATCCCC is unhappy.  For
   example, potential problems with airport data or low altitude
   route data may have absolutely no effect on a high altitude sector.
   This program tries to catch errors that cause ATCC to crash, as
   well as point out nit-picky details of the 1000 or so data lines
   in a typical sector implementation.

   In order to understand which messages are important, you will have
   to spend a lot of time studying FDOCS.TXT, and even more time
   experimenting with ATCC.  THIS IS NOT NECESSARY IF YOU JUST WANT TO
   USE SOMEONE ELSE'S SECTOR.  You have enough to learn as it is :-)


0.3  COPYRIGHTS
---------------

   ATCCCC is public domain (without warranties of course).

   ATCC, copyright Xavius Software, is NOT public domain, although
   Xavius has made an early version freely available.  Check their
   web site for details.


0.4  FEEDBACK
-------------

   I'm sure the bug-checking program will have bugs too.

   If nothing else, the assumptions I have made about what ATCC
   will accept will either be too narrow, giving error messages
   about things that do not cause problems, or too wide, missing
   things that do cause errors.

   Let me know how the error messages could be changed to be
   more helpful.  Also, if you have fixed a type of bug in your
   own files that is not covered here, send me the details and
   I will incorporate a test into ATCCCC.


0.5  URLs
---------

   As of June, 2000:

      My email address is:
         bobrae@attglobal.net

      Xavius' web site is:
         http://www.xavius.com

      A message board for ATCC users is available at Yahoo:
         http://groups.yahoo.com/group/atcc

      A message board for ATCC developers is available at Yahoo:
         http://groups.yahoo.com/group/atcc1

      Spongey is a volunteer who posts user-created sectors and
      related information at his web site:
         http://www.users.waitrose.com/~sadunn/atcc.htm

      PKUNZIP is available at:
         http://www.pkware.com



-------------------------------------------------------------------
|                    CHAPTER 1 - GETTING STARTED                  |
-------------------------------------------------------------------

   **********************************************************
   *                                                        *
   *  Please run your virus scanner on these files.         *
   *                                                        *
   *  You've backed up your sector files too, right?        *
   *                                                        *
   **********************************************************


1.1  QUICK START FOR DOS USE
----------------------------

   I'll assume you have successfully unzipped ATCCCC.ZIP, since you
   are reading ATCCCC.TXT right now.

   (1)  Get to a Dos prompt.

   (2)  Copy ATCCCC.EXE to your ATCC directory if you unzipped
        it to somewhere else.

   (3)  Change to your ATCC directory.

   (4)  Enter the command:

          atcccc *

   This will check all sectors named in SECTORS.DAT, in the centers
   named in CENTERS.DAT, using the default warnings, and print any
   errors on the screen.

   Many other options are discussed below.


1.2  INSTALLATION FOR DOS USE
-----------------------------

   ATCCCC.ZIP contains the following files:

      ATCCCC.TXT   Documentation.
      ATCCCC.EXE   Program.
      CCOUT.BAT    Batch file to run ATCCCC from a Windows shortcut.
      CCOUT.PIF    Shortcut.
      CCNOTE.BAT   Batch file to run Notepad with out.txt as input.

   You do not need CCOUT.BAT and CCOUT.PIF if you do everything in
   Dos.

   There are many ways to organize the files, depending on the way
   you choose to work.  I'll give a couple of examples - you will
   have to work out the rest.

   The issues about file locations for this program are:
     (1) Can Dos find ATCCCC.EXE.
     (2) Can ATCCCC.EXE find your sector files.
     (3) How much typing is required.

   I'll assume that the original files are in C:\ATCC, that
   ATCCCC.EXE may be in C:\ATCCCC, and you have center zzz
   sector 44 in C:\MYSECTOR.

   If you keep all your sectors in C:\ATCC, put ATCCCC.EXE there
   too, and make that the current directory when you run the program.
   Skip the rest of this section, and all the info about path names.

   If you have sector files in just a few places, you may want to
   put copies of ATCCCC.EXE into all of those directories, and again
   you don't have to worry about path names.

   If you have sector files in lots of places, you may want to
   have the ATCCCC files in just one place (e.g. C:\ATCCCC).  If you
   are working in one of your sector directories, you would then
   solve (1) above with:
        \atcccc\atcccc zzz 44

   The first 'atcccc' refers to the directory, the second refers to
   the program (EXE).

   Or, if your current directory is C:\ATCCCC, you would solve (2)
   with:
       atcccc -p\mysector zzz 44

   See section 2.2 for information on the -p (path name) switch.

   You could also put ATCCCC.EXE into a directory already named in
   your PATH statement in AUTOEXEC.BAT, or add its directory name
   to the PATH statement, and again not worry about path names.


1.3  INSTALLATION FOR WINDOWS USE
---------------------------------

   I normally work with sector files using one Dos window to edit
   sector files, another Dos window to run ATCCCC, and alt-tab
   to ATCC to test things.  I use a neat little text editor for
   Dos that was produced around 1985.  It occurred to me that most
   of the rest of the world does not work that way.

   The information on using Windows shortcuts to Dos programs is,
   shall we say, sparse.  That's understandable given Microsoft's
   apparent desire to get rid of Dos and go 100% graphical ...
   and proprietary ... and expensive.  (Linux doesn't have this
   agenda - nudge, nudge, wink, wink.)

   I've been able to get a somewhat limited point-and-click
   procedure to work with ATCCCC.  Suggestions welcome.

   Setup:

      This procedure assumes you have a default installation of
      Windows, with notepad.exe in the C:\WINDOWS folder.

      Unfortunately, the only way I have been able to get this
      to work is to have copies of the ATCCCC files in each
      folder where you have sector files.

      Unzip ATCCCC.ZIP somewhere, and copy the files to each
      folder where you have sector files to scan.

      You can delete extra copies of ATCCCC.TXT.  If you do not
      run ATCCCC from Dos, you can delete all copies of CCNOTE.BAT.

      I might be able to make things work with a single copy of
      ATCCCC on your disk, but I'll have to experiment a bit more.
      So far I've come close, but it just doesn't work quite right.

   To run ATCCCC:

     (1) Open the folder containing both the sector files you want
         to check, and the ATCCCC files.

     (2) Double-click on the ccout icon.

     (3) In the input window, enter the command line parameters
         from section 2.2 (without the 'atcccc' part).  Only the
         first nine parameters will be passed to ATCCCC.  This
         should not normally be a problem.

     (4) See the output in a Dos window that will auto-magically
         disappear in a few seconds.

     (5) See that output appear in Notepad.

   The output is actually written to a file named OUT.TXT in the
   folder you opened in step (1).  Generally, you will not need to
   save the output anywhere else.  It can be easily regenerated
   if needed.  It will be over-written during the next run.



-------------------------------------------------------------------
|                    CHAPTER 2 - PROGRAM OPTIONS                  |
-------------------------------------------------------------------

2.1  GENERAL
------------

  You may check all centers defined in CENTERS.DAT, or all
  sectors in SECTORS.DAT for the specified center(s), or just
  the specified center(s) and sector(s).  If no arguments are
  given on the command line, you will get help.

  Output goes to the screen, and may be piped into the MORE.EXE
  program distributed with Dos.  It may be also be re-directed
  to a printer or a file if you make a really lot of mistakes.

  If no errors are detected, you will see only a few lines telling
  which center/sector is being processed, and when the path switch
  (-p) is used, a line stating the path.

  The switch character may be either '-' or '/'.

  If the path switch (-p) is not used, it is assumed the sector
  files are in the current Dos directory.

  Arguments are processed one at a time, in the order seen on the
  command line.  A later value of a switch will replace an earlier
  value.  (I don't expect anyone to actually use a command line
  that is that complicated.)


2.2  SAMPLE COMMAND LINES
-------------------------

    If you are using the Windows shortcut CCOUT.PIF, the commands
    shown below are entered into the input box -- but leave off
    the program name (atcccc).  See section 1.3 for Windows use.


    A shortened version of this help section:
          atcccc


    Check all centers, all sectors, default warnings:
          atcccc *


    Check specified center(s), all sectors (upper case OK):
          atcccc zny zau zla

       The two preceding formats use CENTERS.DAT and SECTORS.DAT
       to generate the base file names.


    Check specified sector(s):
          atcccc zny 97 66 zla 4 zau 75 01

       This format does not look at CENTERS.DAT or SECTORS.DAT to
       generate the base file names.  At some point, use one of
       the all centers/all sectors formats to check those files.

       A center designator must precede the first sector number.
       The center will stay in effect until another center is
       specified.  The common files for each center are processed
       once for each center named.  The common files for all centers
       (e.g. AC_CHAR.DAT) are processed when the program starts, and
       when the path is changed with the -p switch (defined below).

       Leading zeros on sector numbers are optional.


    Screen-full at a time:
          atcccc zny | more

       On your keyboard, the vertical bar character may be on the
       same key as the backslash.

       This will not work using the Windows shortcut -- but there
       is no need to pause during the output.


    Results to file named 'out':
          atcccc zla >out

       I suggest you use a simple name for the output file.  If you
       accidentally use the name of a sector file - you just erased
       it.

       This will not work using the Windows shortcut.  However, in
       that case, the data is written to a file named out.txt, so you
       can rename that file to something else if you want to save it.


    Results to printer:
          atcccc zau >lpt1

       If >lpt1 doesn't work, try >prn

       This will not work using the Windows shortcut.  However, in
       that case, the data is written to a file named out.txt, which
       you can print from numerous Windows programs.

    -n  Output to Notepad

       Writes output to file named out.txt (geek-note:  re-directs
       stdout), and then runs Notepad with out.txt as input.
       This saves a bit of typing over re-directing stdout, and
       running a Dos text editor.

       Recommended if you run ATCCCC in a Dos window.  If you run
       it full-screen, your display will switch video modes to
       show Notepad.

       This will not work using the Windows shortcut.  However, the
       Windows shortcut is functionally almost identical to using
       the -n switch.

    -p<path>  Set path to sector files to <path>:
          atcccc -pc:\atcc\ zau

       Sets the path to the sector files so they do not have to be
       in the current directory.  The path must follow '-p' without
       any spaces.

       The directory one level up (parent directory) may be accessed
       with:
          -p..

       The trailing '\' on path names is optional.  A '\' is added
       automatically if the path does not end in '\' or ':'.

       Note - if you are trying to specify the root directory, you
       will probably need the '\' (e.g. 'c:\').  By the way, if you
       keep your sector files in the root directory of a hard drive,
       you need more help than I can give you.

       Amazingly, a network path also works on my Windows 95 system,
       using the form:
          -p\\computername\sharename\directoryname

       Adding a path name to the atcccc command when invoking the
       program does not change the path to the sector files.  They
       are assumed to be in the current directory unless -p is used.


    -t  Trace:
          atcccc -t zny 97 | more

       Shows trace messages I use for debugging.  All start with
       '--- '.  The messages will change as I work on different
       sections of the program, but may be helpful in reporting
       bugs you find in ATCCCC.


    -u  Unused

       Reports unused items.  See section 3.6


    -v  Version

       Prints the program version and creation date.


    -w<n>  Set warning level:
          atcccc -w2 *

       The default warning level is 0.  Since we know the
       distribution files work, the messages produced at
       this level were chosen so that they pass (almost).

       Messages will be shown for the level requested plus
       lower numbered levels.

       Warning level 0 reports the most severe problems that
       have a high probability of causing ATCC to abort.  Higher
       numbered levels report progressively less important
       information.

       I suggest trying -w2 on your sectors -- but plan to ignore
       some of the messages.

       Level 3 includes undefined origin and destination airports.
       You may want to define these airports if you do not exceed
       150 fixes, but ATCC will work without them.


-------------------------------------------------------------------
|                   CHAPTER 3 - ERROR MESSAGES                    |
-------------------------------------------------------------------

3.1  GENERAL
------------

   The general format of an error message is:

      File Name   Line Number   Level    Message

   Level 0 is shown as ERROR, 1 as WARNING, 2 as CAUTION, 3 as INFO.
   These can change if I get feedback on how useful you find the
   categories.

   Normally, only level 0 ERRORs are displayed.  See section 2.2
   for a description of the -w switch used to display other warning
   levels.

   In many places, both ATCC and ATCCCC depend on reading the
   number of items that follow, and then on reading that number of
   items.  If there is an error in the item count, ATCCCC may give
   up on the remainder of the file, or may report the wrong error
   because it can not tell what it is reading.  If you are confused
   by an error message, see if the number of lines/items matches the
   the last 'count' field.

   Something as simple as a missing space between data items can
   cause dozens of error messages because ATCCCC gets lost.  The key
   in that case is to find out what is causing the first error and
   fix that.  The "Screen-full at a time" option discussed in
   section 2.2 may help here.

   Some general messages such as 'Expecting digits' will eventually
   be replaced with more specific messages about the data item in
   error.

   In some (hopefully most) places, I have used the same terminology
   that is in FDOCS.TXT.  For example, in OTHER FILES, the terms
   "typical climb rate" and "max climb rate" are used.  In ATCCCC,
   "typical climb rate ..." refers to the first field on that line,
   and "max climb rate ..." refers to the second field.  You will
   need to be familiar with FDOCS.TXT to make sense of some of the
   messages.

   After correcting reported errors, run ATCCCC again to allow it
   to find other nearby errors.

   Files are processed in this order:

      AC_CHAR GA_AC
      C_INFO FIXES FREQS SEPS AIRLINES AIRWAYS AIRPORTS ROUTES
      SECT_XX MAP_XX

   Some files use data defined in other files, which partially
   determines the processing order.  Certain errors will cause
   ATCCCC to skip processing of some or all of the remaining files.


3.2  LEVEL 0 MESSAGES
---------------------

   I've added explanations to a few level 0 messages - more to follow.

      --- GENERAL ---

   ERROR    File not found: <xxx>
   ERROR    No data in file
   ERROR    Negative number not permitted here
   ERROR    Out of memory for internal storage
   ERROR    Expecting more data/Item count wrong
   ERROR    Ignoring extra data at end of file/Item count wrong
   ERROR    Ignoring extra data at end of line
   ERROR    Data item has too many characters
   ERROR    Expecting 1 to 3 digits
   ERROR    Expecting digits
   ERROR    Expecting letters
   ERROR    Expecting letters and digits
   ERROR    Value may be illegal octal number
   ERROR    Too many fields on line, expecting only <xxx>

      --- AC_CHAR.DAT ---

   ERROR    Missing ac_char type
   ERROR    Equipment type not in range [0-3] or [64-67]
   ERROR    Expecting numeric typical climb rate
   ERROR    Expecting numeric max climb rate
   ERROR    Expecting numeric typical climbout speed
   ERROR    Expecting numeric max climbout speed
   ERROR    Expecting numeric typical cruise speed/mach
   ERROR    Expecting numeric max cruise speed/mach
   ERROR    Expecting service ceiling

      --- GA_AC.DAT ---

   ERROR    Missing AC Type
   ERROR    AC Type not defined in AC_CHAR.DAT
   ERROR    Missing percentage
   ERROR    Prop percentages total <xxx>
   ERROR    TProp percentages total <xxx>
   ERROR    Jet percentages total <xxx>

      --- FIXES ---

   ERROR    Too many fixes (> 150)
   ERROR    Missing fix name
   ERROR    Definition of <xxx> uses undefined fix <yyy>
   ERROR    Missing radial
   ERROR    Bad radial in fix definition
   ERROR    Missing distance
   ERROR    Negative distance in fix definition <xxx>
   ERROR    Expecting L or R after fix name
   ERROR    Ignoring data after fix number <xxx>

   ERROR    Lat Degrees out of range (+/- 90): <xxx>
   ERROR    Lat Minutes out of range (+/- 60): <xxx>
   ERROR    Lng Degrees out of range (+/- 180): <xxx>
   ERROR    Lng Minutes out of range (+/- 60): <xxx>

   ERROR    Expecting 4 fields in lat/lng, found <xxx>

      ATCCCC is looking for 4 fields after the "L", separated by
      spaces.  For negative lat/lngs, ATCC works with the minus
      sign immediately adjacent to the previous value.

      It's too hard to change ATCCCC to accept that format.  If you
      would like to see other errors on that line, just add a space.
      ATCC works with that format as well.

      In other words, change:   XYZ   L 50 1.90-08 -36.0
                          to:   XYZ   L 50 1.90 -08 -36.0


      --- FREQS ---

   ERROR    Missing sector number
   ERROR    Sector number out of range 0 to 99: <xxx>
   ERROR    Missing frequency
   ERROR    Decimal point not allowed in frequency

      --- SEPS ---

   ERROR    Missing sep number
   ERROR    Sep number is negative <xxx>
   ERROR    Sep <xxx> uses undefined fix <yyy>
   ERROR    Low altitude not in range 0 to 99: <xxx>
   ERROR    High altitude not in range 0 to 99: <xxx>
   ERROR    High altitude less than low altitude
   ERROR    Sector not defined in FREQS

      --- AIRWAYS ---

   ERROR    Airway designator not J,K,V,W:
   ERROR    Airway number out of range 1-999:
   ERROR    Fix not found <xxx>
   ERROR    Expecting more fixes/Item count wrong
   ERROR    Too many fixes/Item count wrong

   ERROR    More than 50 airways defined: <xx>

      This one is really strange.  With 51 airways defined, the sector
      will start.  However, clicking on the 'P', 'L', or 'H' buttons
      will cause an immediate exit.  I did not test for other exit
      triggers.

      --- ROUTES ---

   ERROR    Route number is negative
   ERROR    Missing initial altitude
   ERROR    Initial altitude over 60,000 feet: <xxx>
   ERROR    Missing E/W indicator
   ERROR    East/west indicator not 0 or 1: <xxx>
   ERROR    Missing initial heading
   ERROR    Bad initial heading
   ERROR    Missing miles-in-trail value
   ERROR    Percentage out of range <xxx>
   ERROR    Percentages total <xxx>
   ERROR    Number of airlines is negative
   ERROR    Airline not defined
   ERROR    Missing items in airline list
   ERROR    Missing altitude action value
   ERROR    Altitude action not 0-60000 feet: <xxx>
   ERROR    Sep not defined
   ERROR    Missing heading action value
   ERROR    Heading action is negative
   ERROR    Missing handoff distance value
   ERROR    Missing number of aircraft per hour
   ERROR    Expecting at least 3 characters after initial '!'
   ERROR    If specifying runway, use 3 digits after initial '!'
   ERROR    Expecting airport after '!' and runway number
   ERROR    Runway not in AIRPORTS file: <xxx>
   ERROR    Airport after '!' in route not in FIXES
   ERROR    Route starts with airway
   ERROR    No elements allowed after arrival '!'
   ERROR    Route element not defined as fix or airway
   ERROR    Expecting airport prior to arrival '!'
   ERROR    Airway/Fix/Dots mismatch
   ERROR    Fix(es) not on airway/wrong order
   ERROR    Expect dot(s) prior to fix
   ERROR    Airway..Airway not supported
   ERROR    Expecting one dot prior to airway
   ERROR    Unexpected single dot
   ERROR    Unexpected double dot
   ERROR    Fix <xxx> not on airway <yyy>
   ERROR    No fixes on <xxx> after <yyy>
   ERROR    Route ends with dot(s)

   ERROR    Number of origin airports less than one
   ERROR    Expecting only one origin airport with '!' in route
   ERROR    Multiple origin airports with '!' in route
   ERROR    Missing items in origin airport list
   ERROR    Airport after '!' not in origin list <xxx>

   ERROR    Number of destination airports less than one
   ERROR    Multiple destination airports with '!' in route
   ERROR    Airport before '!' not in destination list <xxx>
   ERROR    Missing items in destination airport list

      The description of ROUTES.XXX in FDOCS seems to be missing a few
      lines.  After the "start altitude, direction ..." line, and
      before the "number of seps ..." line, there are 3 other lines.

      Using the first route from the original ZLA:

      line 1    1 !124LAX..RZS..SNS
      line 2    0 0 0 0
      line 3    1 LAX 100
      line 4    2 SFO 85 SJC 15
      line 5    4 UAL 25 DAL 25 USA 25 SWA 25
      line 6    1
                1 0 0 65
                10

      Line 3 contains "origin airports", line 4 contains "destination
      airports", and line 5 lists the airlines that will use the route.

      If the route (line 1) contains a "!", ATCCCC checks for
      agreement between the airport(s) on line 1, and the airports on
      lines 3 and 4.  However, I do not know if ATCC requires this.
      It may get all the coordinates it needs from AIRPORTS.XXX.

      --- AIRLINES ---

   ERROR    Missing airline name
   ERROR    Airline name too long or previous bad item count
   ERROR    Aircraft type count is 0
   ERROR    Too many characters in AC Type
   ERROR    AC Type not in AC_CHAR.DAT
   ERROR    Missing low range value
   ERROR    Missing high range value

      --- CENTERS.DAT ---

   ERROR    Missing center designator
   ERROR    Max number of centers is 10

      --- SECT_XX ---

   ERROR    Active sector <xx> must be defined in FREQS
   ERROR    Sector <xxx> - bad center number <yyy>
   ERROR    Sector <xxx> - sector number out of range 0 to 99
   ERROR    Missing map name
   ERROR    Expecting 2 character map name
   ERROR    Primary button value not 0, 1, 100, 101
   ERROR    Range should be divisible by 5
   ERROR    Items missing prior to route list
   ERROR    Missing number of routes
   ERROR    Route number not defined in ROUTES file

      --- MAP_XX ---

   ERROR    Missing number of fixes
   ERROR    Fix not found <xxx>
   ERROR    Should have number of dotted/solid lines
   ERROR    Must define at least one dotted/solid line
   ERROR    Bad radial in map item
   ERROR    Extra fix(es)/wrong count
   ERROR    Should have number of dashed lines or 0
   ERROR    Expecting '*' or range mark specification
   ERROR    Missing '*' or range mark specification
   ERROR    Bad start direction in range mark
   ERROR    Bad end direction in range mark

      --- C_INFO ---

   ERROR    Expecting center callsign followed by comma
   ERROR    Longitude out of range <xxx>
   ERROR    Latitude out of range <xxx>
   ERROR    Variation out of range -180 to +180: <xxx>
   ERROR    Missing number of radar/ground clutter sites
   ERROR    Missing number of VFR cluster sites
   ERROR    Missing default histories line
   ERROR    Default histories not 0 to 5
   ERROR    Default vector length not 0 to 10
   ERROR    Default video mode not 0 or 1

      --- AIRPORTS ---

   ERROR    Airport designator not 3 characters
   ERROR    Runway preference out of range 0-3 : <xxx>
   ERROR    Maximum number of runways is 6
   ERROR    Parallel runway designator not 1 or 2.
   ERROR    Runway number not in range 01-36.
   ERROR    Runway Heading out of range 0-360: <xxx>

   ERROR    Frequency <xxx> used on lines <yyy> and <zzz>

      If the same frequency is used for two towers, departures
      ('!' in route) will only come from one of the airports.
      Since you don't issue the tower freq to departures, just change
      one of them to something else.  I haven't worked with
      approach-type sectors enough to know what happens with arrivals.

   ERROR    Too many airports for ATCCCC

      Set at 20.  If ATCC works with more than that, let me know.



3.3  LEVEL 1 MESSAGES
---------------------

   WARNING  Distribution files use runway preference 2

      FDOCS says that runway preferences are 0, 1, and 3.  However,
      the distribution files use 0, 1, and 2.

   WARNING  Duplicate fix name      <xxx> defined on lines <yyy>, <zzz>
                      sector number
                      sep number
                      airway
                      route number
                      airline name
                      center name
                      ac_char type
                      runway

      In the given file, an item with the same identifier is
      defined more than once.  If the data within each item is
      different, this is probably not what you intended.  It is
      unknown which item ATCC will find, or if it will find the
      same item each time it looks.

      There are several duplicate fixes in the distribution files,
      but they are only used as destination airports where the exact
      location probably doesn't matter.

   WARNING  Expecting cruise IAS with Equip type >= 64
   WARNING  Expecting cruise mach with Equip type < 64
   WARNING  Expecting max IAS with Equip type >= 64
   WARNING  Expecting max mach with Equip type < 64

      I have not determined what, if anything, this will do to ATCC.

      Refer to the OTHER FILES section near the end of FDOCS.TXT.

      If bit 7 of the equipment type is set, the cruise speeds are
      expected to be indicated airspeeds in knots.  If bit 7 is not
      set, these speeds are expected to be mach numbers (mach number
      times 100 actually).

      The documentation suggests bit 7 refers to General Aviation
      aircraft, but I think that may be misleading.  Airline or
      commuter airline aircraft may use indicated airspeeds, and that
      appears to be the real reason for setting bit 7.  (Chris noted
      this is really bit 6 -- bit 7 would have a value of 128, not 64.)

      Setting up an aircraft to be a (general aviation) Prop,
      Turbo-prop or Jet is done in GA_AC.DAT, not in AC_CHAR.DAT.

      There are only eight combinations of equipment types.  Here's
      the list:

        Equip      IAS or MACH
        Type         SPEEDS       HEAVY    RNAV       Typical Use
        -----      -----------    -----    ----    ------------------

           0          MACH         NO       NO     Classic jets/tprops
           1          MACH         NO       YES    Modern jets/tprops
           2          MACH         YES      NO     Low budget operator
           3          MACH         YES      YES    Most heavy jets

          64          IAS          NO       NO     Classic tprops/props
          65          IAS          NO       YES    Modern tprops/props
          66          IAS          YES      NO     Unlikely
          67          IAS          YES      YES    Unlikely

       To correct the WARNING, you may want to change the equipment
       type on the previous line, rather than changing IAS to mach,
       or mach to IAS.

   WARNING  Lat Degree/Minute signs disagree
   WARNING  Lng Degree/Minute signs disagree

      This used to be an ERROR, but since ATCC doesn't crash with
      this inconsistency, I changed it to a WARNING.

      FDOCS refers to the longitude fields as DEGREES WEST and
      MINUTES WEST.  If you want east longitudes, use "-" on both
      longitude fields.  Same idea with south latitudes.

      In other words, change:   XYZ   L 50 1.90 -08  36.0
                          to:   XYZ   L 50 1.90 -08 -36.0

      The first format is accepted, but puts the fix 36 minutes west
      of 8 deg east, instead of 36 minutes east of 8 deg east.  This
      doesn't make much difference for (overseas fixes defined for)
      U.S. sectors, but does for European sectors.

      ATCC also accepts non-integer values for degrees.  You can
      code 50 degrees 30 minutes as "50 30.0", or as "50.5 0.0".

   WARNING  More than 10 items may cause problems

      Route descriptions have successfully used up to 10 origin
      points, destination points, and airlines.  More than that may,
      or may not, work.

   WARNING  Only one common altitude with previous sep <xx>

      The top altitude of the previous sep in this route equals the
      bottom altitude of the current sep (climb).  Or, the bottom
      altitude of the previous sep equals the top altitude of the
      current sep (descent).  Normally, those altitudes differ by
      1000 feet, or a large part of the altitude ranges overlap.

      One developer had a problem with no communications change
      from the previous sector, which *may* have been caused by this.

      If there is an altitude action on the previous line, the
      communications change works normally (WARNING not given).

   WARNING  Plus sign with altitude not documented

      The examples show a start altitude with a leading '-' to
      mean "at or below".  They also refer to a positive value,
      but do not specifically show a leading "+", or say anything
      about "at or above".

      The altitude action description does not refer to positive
      or negative values.

   WARNING  Tests show average elevation adds '00'

      In C_INFO, the "average ground elevation" is used to generate
      VFR targets (V's and I's).  It appears that this value should
      be in hundreds of feet.

      For example, DEN at 5300+ should be encoded as 53.  Using 5300
      produces a garbage character in the datablock.  Using 53 fixed
      that problem, but at one point generated VFRs up to 22,500 feet.
      Now they seem to all be below FL180 as expected.

   WARNING  Typical climb rate >  Max climb rate
   WARNING  Typical climbout speed >  Max climbout speed
   WARNING  Typical cruise speed/mach >  Max cruise speed/mach

      These messages were changed from INFO level.  I can't think
      of a reason for a "typical" value to be greater than a "max"
      value.  I left the "out of range" messages at INFO level, since
      the "normal" ranges can really be anything.

      An unwanted space within a field was causing problems in ATCC.
      ATCCCC would report the unusual value at INFO level, but the
      message might be hard to pick out with all the other INFO messages.
      ATCCCC now generates an ERROR for an extra field on this data line.

   WARNING  Unusual average elevation: <xxx>

      In C_INFO, the "average ground elevation" is less than 0, or
      not a whole number.

   WARNING  Unusual variation: <xxx>

      In C_INFO, the variation exceeds +/- 35 degrees.  If you
      are doing McMurdo Station, Antarctica -- well ... OK.


3.4  LEVEL 2 MESSAGES
---------------------

   CAUTION  Altitude action <xxx> not in range for sep <yyy>

      In a route, the altitude action at the sep on this line does
      not agree with the altitude range for that sep in the SEPS
      file.  Just thought you might want to know.

      There are many examples in the distribution files.

   CAUTION  Distance out of expected range 1 - 300 in map item

      Must be a really big sector.

   CAUTION  Fix name using numbers may not work everywhere: <xxx>

      It appears that an aircraft can not be cleared direct to a fix
      that contains numbers (e.g. OAL61).  The clearance will be
      accepted, but the route line may end at that point, and the
      aircraft may go into heading mode when it gets there.

      Fix names of this type work fine as seps, and as start points
      for routes.  They will also work as intermediate points in a
      route, as long as you don't issue a clearance to that point.

      A name in this format is used in real flight management systems
      for an otherwise un-named waypoint.  OAL61 is likely to be a
      fix that is 61 miles from OAL.  The real ATC computer might use
      a fix-radial-distance, such as OAL216061, but ATCC will not
      accept that format in a route.  Using OAL61 makes the strip
      look a bit better, but something like OALXX would be a better
      choice if you need to clear aircraft to that point.

      Five digit fix names seem to work.  This message will still be
      generated for those fixes until I study it a bit more.

   CAUTION  Frequency not in range 11800-13597: <xxx>

      Frequency is out of normal range for VHF comm.

   CAUTION  Handoff distance <xxx> beyond next sep <yyy>

      The handoff distance (also called "miles until next sep" in
      FDOCS) on this line is greater than the computed distance from
      the sep on this line to the sep on the next line.

      Some messages will be generated due to round-off error
      (e.g. handoff dist = 35, computed = 34.99).  Others may be
      caused by how the variation is used to compute the location
      of "R"-type fixes.

      If the guidelines in FDOCS for this field are followed
      (halfway for in-sector seps, dist to boundary for
      out-of-sector seps), the computation methods shouldn't be
      an issue.

      There are numerous examples in the distribution files.  Quite
      a few of them are 99, which may have special meaning to the
      program, the programmers, or none of the above.

   CAUTION  Heading may be interpreted as octal number <xxx>

      See section 4.2.

   CAUTION  More than 12 aircraft types for airline <xxx>

      Too many aircraft types seems to confuse the program.  One
      type - possibly the 6th or 7th type in the list - is used
      almost all the time.  If I can determine more details about
      the behavior, I may raise this to a warning.

   CAUTION  Number out of expected range <xxx> to <yyy>: <zzz>

      Value seems unusual, but no range is given in FDOCS.TXT.

   CAUTION  Large handoff distance value <xxx>
   CAUTION  Large miles-in-trail value <xxx>

      Value exceeds 100.  Normal for large sectors.

   CAUTION  Large number per hour value <xxx>

      Value exceeds 30.  May be normal at ORD.

   CAUTION  Low range > high range

      In AIRLINES.ZZZ, the low distance value is greater than
      the high distance value.

   CAUTION  Route ends with airway

      A route ending in an airway seems to work in some cases.

      All of the remaining fixes for that airway are included in
      the flight plan.  If the end of the airway is outside of the
      sector, the airplane will disappear at the last defined fix
      on the airway.  If inside the sector - I don't know.

      If the destination airport is in the "middle" of the airway,
      the route does not appear to stop at the destination airport.
      The route line display will continue on to the last fix on the
      airway.  I don't know if the airplane will stop or continue.

      A route starting with an airway does not seem to work,
      and is reported as an error.

   CAUTION  Runway heading <xxx> differs from lat/lng track: <yyy>

      The heading listed for this runway is more than 10 degrees
      from the direction of the runway computed from the listed
      lat/longs, adjusted for the variation in C_INFO.

      Airplanes appear to actually start at the start coordinates,
      takeoff toward the end coordinates, and then turn toward the
      first fix when airborne.  I'm not sure what the heading in
      the file is used for.

      Things seem to work even when the heading and the track are
      180 degrees apart, but may put airplanes where you do not
      expect them.

   CAUTION  Runway number <xxx> has heading of <yyy>

      Runway number part (last two digits) is more than 10 degrees
      from heading.  As mentioned above, I'm not sure how the
      heading is used.

      Correct charted values may produce this error with a large
      number of parallel runways, or if runway numbers have not
      been updated as the variation changes slowly with time.

   CAUTION  Runways after first two may be ignored

      See FDOCS.

   CAUTION  Runway start is <xxx> NM from ramp
   CAUTION  Runway end is <xxx> NM from ramp
   CAUTION  'Taxi To' point is <xxx> NM from ramp
   CAUTION  'Taxi From' point is <xxx> NM from ramp

      Distance is greater than 5.0 NM.  This may not affect ATCC,
      but you might want to take a look at it.

   CAUTION  'Taxi To' point to Runway is: <xxx> feet
   CAUTION  Unusual runway length: <xxx> feet
   CAUTION  'Taxi From' point to runway is: <xxx> feet

      The lat/longs give Taxi To/From distances of less than 100 feet
      or greater than 2,000 feet, or a runway length of less than
      2,000 feet or greater than 14,000 feet.

      I'm not sure what happens with unusual distances (if anything).
      FDOCS says Taxi To/From points should be "right next" to the
      runway.

   CAUTION  Unusual length fix name may not work everywhere: <xxx>

      It is possible to define fix names of 1, 2, and 4 characters.

      They work as map items, but not as a named point in the
      range-bearing function (F4 key).

      They seem to work as a "direct to" point.  However, the one
      and two character names may remain in the route after a
      clearance "direct to" a different point.

   CAUTION  Zero distance with non-zero radial

      If you want the end point of a map line to be at a fix, it
      seems most natural to use a radial-distance of '000 000'.
      Something else may be a typo.  No message given for '360 000'.



3.5  LEVEL 3 MESSAGES
---------------------

   INFO  Altitude gap with previous sep (<xx> -- <yy>)

      In a route, the altitudes for the sep on this line are
      not adjacent to the altitudes for the sep on the previous line.
      Allowable gap = 1000 feet below FL290, and = 2000 feet above
      FL290.

      This usually does not cause a problem, but may not be what
      you intended.  The aircraft seems to climb to 1000 feet below
      the bottom altitude for the current sep, regardless of the
      top altitude of the previous sep.  With very large gaps, you
      may get a datablock handoff, but no communications change.

   INFO     Destination airport not defined <xxx>
   INFO     Origin airport not defined <xxx>

      Airport <xxx> is used in an origin or destination list
      in a route, but is not in the FIXES file.

      If you do not exceed 150 fixes, you may want to define
      these airports.

      If they are not defined, ATCC uses a distance of 800 miles
      to select aircraft types.

   INFO     Handoff distance is zero

      The minimum handoff distance value in the distribution files
      is 1.  A route that caused an error a few years ago had the
      handoff distances set to 0, but the error may have been caused
      by something else.

      A more recent sector uses handoff distances of 0, and seems to
      work.  I'll keep the message as an INFO item until we are sure.

   INFO     Runway preference 2 not in FDOCS.

      FDOCS says that runway preferences are 0, 1, and 3.  However,
      the distribution files use 0, 1, and 2.  I think I'd put my
      money on 2.

   INFO     Typical climb rate not in range 800-4200
   INFO     Max climb rate not in range 800-5000
   INFO     Typical climbout speed not in range 60-350
   INFO     Max climbout speed not in range 60-350
   INFO     Typical cruise mach not in range 62-88
   INFO     Typical cruise speed not in range 120-300
   INFO     Max cruise mach not in range 62-88
   INFO     Max cruise speed not in range 120-320
   INFO     Service ceiling not in range 10000-47000

      AC_CHAR.DAT can generate the above messages.  Expected ranges
      were selected from existing AC_CHAR files floating around
      the net.

      Military jets and biz-jets may generate an INFO item, but they
      seem to work fine.  The ranges are increased for types CONC,
      C750, C12, and 2F15 to reduce the number of INFO messages.


3.6  UNUSED ITEMS
-----------------

   This does not describe an error, but just something you may want
   to know about, especially if you are bumping up against the 150 fix
   limit.

   Items defined in the following files are flagged if they are
   referenced somewhere else during the processing of the current
   center:

      FIXES  FREQS  SEPS  AIRWAYS  ROUTES

   You may see the list of un-referenced items by using the '-u'
   switch on the command line.  You must specifically request this
   output for two reasons:

      You may plan to use the unused items later.  A message on
      every run would be a big pain in the datablock.

      If you have a multiple-sector center, and only scan one sector,
      some of the items almost certainly will not be referenced.
      Instead of me trying to determine if all sectors for a given
      center have been scanned, I leave it in your capable hands to
      determine if this output is useful on this run.

   If you have the same fix defined twice, and it is used somewhere,
   one instance will be reported as unused.  That's logically
   correct, but it will cause problems if you don't understand what
   is happening, and delete both instances.  If you have done a lot
   of editing of the fix file, you may want to use -w1 with -u, to
   get "duplicate fix name" warnings.

   There is a large potential for bugs related to this section.
   Let me know what you observe.

   IMPORTANT -- Before you delete items reported as unused, be sure
   you have scanned all sectors for that center.  In order for all
   sectors to be scanned, they must all be listed in SECTORS.DAT,
   or listed individually on the command line.

   Another tool that may help in this area is the Dos program
   FIND.EXE, which should be in your \WINDOWS\COMMAND directory.
   FIND looks for a series of characters within the listed files
   Limited help is available with the command: FIND /?

   Unfortunately, at least on my system, wild card expansion of
   file names is not available.  For instance, FIND "LAX" *.ZLA
   does not work.  You must list all of the ZLA files by name.
   That makes it less safe to rely on the output from FIND than
   it should be.

   FIND is the cheaper/faster/better (pick one) version of the Unix
   utility GREP, which stands for 'globally find regular expressions
   and print', or something like that.  Grep allows much more
   complicated search expressions, but also works with simple
   requests.  It also should do wild card expansion.  Dos versions
   are probably available at various software archives on the net.


-------------------------------------------------------------------
|           CHAPTER 4 - OBSERVED CHARACTERISTICS OF ATCC          |
-------------------------------------------------------------------


4.1  UNEXPECTED CHARACTERS
--------------------------

   The following caused ATCC to crash, and take WINDOWS with it:

      ROD O58 010

   The problem is the first character of the second item is a
   letter instead of a number.

   ATCCCC catches this type of error in most places.  Eventually
   it will do this check everywhere.


4.2  OCTAL NUMBERS
------------------

   ATCC seems to have a problem with a route that contains an
   initial heading of 08x, 09x, and perhaps 0x8 or 0x9.  Fix this
   problem by leaving out the leading zero.  Symptoms include an
   error 46, or no aircraft generated.  There may be something else
   going on here, but changing only that one number in the route
   file seems to cause or fix the problem.

   In some programming languages, a series of digits that begins
   with a zero is considered to be an octal (base 8) number.  Just
   as the legal digits in the decimal system run from 0 to 9, the
   legal digits in the octal system run from 0 to 7.  Therefore,
   the sequence 080 could cause an error.

   It is also possible that an initial heading of 070 would be
   interpreted as a heading of 56 degrees (8 * 7).  This would not
   matter much, since it would be hard to detect on the display,
   and the airplane would turn immediately toward the first fix.

   I gave up on trying to create a sector 08, probably due to this
   same problem.  Another developer reported similar symptoms, so '08'
   and '09' in the FREQS file or the SEPS file are now reported as
   errors.  After some brief testing, the fix seems to be:  use '8'
   or '9'.

   Same problem showed up in runway headings in the AIRPORTS file.

   The leading zeros seem to work with radials and distances in a
   map line, and with numbers that include a decimal point.

   ATCCCC will report an ERROR item for an initial heading of 08x,
   09x, 0x8, and 0x9, and a CAUTION item for other headings that
   begin with zero.  An ERROR is also reported when these sequences
   are used as sep numbers, altitudes in seps or routes, or as
   sector numbers.


4.3  SEPS TOO CLOSE TOGETHER
----------------------------

   I had some type of problem with a route that used seps that
   were too close together.

   I can't remember what the specific symptom was, but I think it
   involved aircraft never being handed off from an approach
   control to the low sector.  It may have been that the internal
   handoff from one sep to the next was never made.

   I can't say specifically what "too close" is in miles, but 10 to
   15 might be a reasonable guess.  It may vary with ground speed
   or other factors.

   If somebody can give me more information on this problem, I can
   compute the distance between seps in a route, and give a warning
   if the distance is below a certain value.


4.4  GHOST TARGETS
------------------

   Several sectors (including one of mine) generate what have been
   described as 'ghost targets', or targets that never get handed
   off to any sector.  They show up as a limited data block with
   the slashes going the "wrong" way, climb to 5000 AGL, and fly
   off somewhere.

   A normal aircraft begins life as one of these un-tracked targets.
   ATCC simulates the real computer which matches up the received
   transponder code to a flight plan with the same code, and begins
   tracking the target.  Then the slashes go the "right" way, and a
   full datablock is available.

   For some reason, some aircraft do not get processed to the point
   where they become tracked.  If anyone has found the cause/cure
   for this problem, please let me know.  It may be a bug (or
   intentional feature) in ATCC that is not dependent on information
   in the sector files.

   In the June, 1998 Read Binder, Item 7, Xavius describes listening
   to the computer controllers in other sectors or towers.  If the
   tower frequency is 118.00, when unplugged, use <F6>F11800<enter>.
   I tried it with the voice option OFF.

   There is a sequence of calls that most aircraft follow for enroute
   clearance, taxi, etc.  However, some taxi without an enroute
   clearance, or takeoff without either.  You can even get a datablock
   after takeoff on some of these aircraft with <F7>Callsign<enter>,
   but there are no slashes.  There may be a clue here as to what is
   going on.

   Others have observed this problem, and think that there is simply
   a limit to the number of airplanes that the tower controller can
   handle properly.  In one case, I was able to reduce the number of
   ghost targets by assigning specific runways to departing aircraft
   (!224ABC instead of !ABC).


4.5  MAXIMUM NUMBER OF FIXES
----------------------------

   I can't get a sector to work if there are more than 150 defined
   fixes.  ATCCCC reports an error in this case, and does not store
   any more fixes.  You will get undefined fix error messages when
   fixes after the first 150 are used.

   To stay under the limit, you may want to drop fixes that are
   only used in origin/destination airport lists.  An undefined
   origin/destination airport generates an INFO item at warning
   level 3, since ATCC was designed to handle this.

   It appears that fixes beyond number 150 will "work" as destination
   airports.  They do not work as intermediate fixes in a clearance.
   The airplane will go into "radar vector" mode, and the route line will
   go to the next point in the original flight plan.  The pilot will give
   one of those "We don't show that on our route, uhhhh" messages. They
   do not work in a range-bearing (F4) computation.  I haven't tried
   airways or map items.

   After further thought on this subject, I think the fixes beyond
   150 do NOT work.  They are simply ignored.  If they are only used
   for origin and destination airports, you won't notice anything.  FDOCS
   says that a undefined airport will cause ATCC to assume 800 miles from
   the origin to the destination, and choose an aircraft type appropriate
   for that distance.  If the undefined airports happen to be on routes
   used by airlines with only one or two aircraft types (in AIRLINES.XXX),
   you will get an appropriate aircraft type.  But this has nothing to
   do with anything in FIXES.XXX.

   I would love to have someone prove this to be wrong.  We could all
   use those extra fixes!


4.6  ALTITUDE ACTIONS OVER 100
------------------------------

   There are a number of altitude actions over 100 in the
   distribution files, but this is not documented, and the effect
   on aircraft is unknown.

   ATCCCC accepts these values without generating any messages.


4.7  VARIATION COMPUTATIONS
---------------------------

   ATCC uses the same magnetic variation for the entire sector --
   defined in C_INFO.  This works fine for their sectors --
   mid-latitudes, small ranges.

   As we branch out into other areas of the world, the variation may
   change significantly from the most eastward VOR to the most
   westward.  If you use a charted radial, but ATCC applies the
   variation from a point several hundred miles away, the computed
   position will obviously be wrong.  This would show up in the
   positions of fixes defined with the 'R' format, as well as with
   place-bearing-distance items in MAP_XX files (boundary and airway
   lines).

   You may have to tweak the radials a bit to get things where you
   want them.

   To put some numbers with this, in Gil's ZAN sector the real
   variation changes about 5 degrees between ANC and BET.  A fix
   defined using a charted radial from BET and 60 miles away, but
   with the C_INFO variation at ANC applied, could appear 5 miles
   from its expected position.


4.8  STUPID KEYBOARD TRICKS
---------------------------

   On the ATCC OPTIONS screen, don't press <ESC>.  After clicking
   on BACK, the program will quit.

   When running a sector, if you press F11 or F12, the program
   stops.  Pressing almost any other key will resume.


-------------------------------------------------------------------
|                CHAPTER 5 - ATCCCC LIMITATIONS                   |
-------------------------------------------------------------------

5.1  LINE LENGTH
----------------

   The maximum line length in ATCCCC is set at 250 characters.  I do
   not know what the limit is in ATCC, or if there is a limit -- it
   may read a character at a time instead of a line at a time.

   If you have really long lines, you may be able to break them
   into smaller lines.

   For example, the list of routes in SECT_XX.ZZZ can be split
   across multiple lines.  This format works:

       AL  9  1 1 1  70  -100  -90
       23   1  2  3  4  5  6  7  8  9 10
           11 12 13 14 15 16 17 18 19 20
           21 22 23

   Lists of fixes in MAP_XX.ZZZ can be split in a similar manner.

   This may not work in all cases, or in later versions.

   The AIRPORTS file is scanned a field at a time, instead of a line
   at a time.  The quick definition of a 'field' is a series of
   characters separated by spaces.  A more precise definition is one
   or more non-white space characters, followed by one or more white
   space characters.  A white space character is a blank, a tab, or a
   newline (carriage return/line feed pair in MS-DOS).

   Reading the AIRPORTS file this way means that no particular layout
   is assumed.  Since there are numerous layouts that work, 'field at
   a time' may be the way that ATCC is programmed.  Perhaps most, or
   all, of the files should be scanned this way.


5.2  BLANK/SEPARATE LINES
-------------------------

   It is not known in what cases ATCC requires items to be on
   separate lines, or prohibits items from being on separate
   lines.

   ATCCCC will report errors, and/or get lost, if the conventions
   in the distribution files are not followed.  Reported errors
   may not cause problems for ATCC.

   ATCC has an unknown tolerance for blank lines in data files.
   Some user MAP_XX files have blank lines (as well as a missing
   number of dashed lines item) and seem to work.

   ATCCCC ignores blank lines at the end of files.  It also ignores
   blank lines in C_INFO and MAP_XX files.  It probably will report
   error(s), and/or get lost, if there are blank lines in other files.

   Blank lines originally were lines with no characters.  They now
   are lines with no characters, or only spaces and tabs.  These look
   the same to humans, but different to input routines.  Some text
   editors get rid of trailing white space, but others write it to
   the disk.

   Processing of both of these line types may change if more
   information becomes available.


5.3  ZERO LAT/LONG
------------------

   To compute the distance between seps across multiple lines,
   I initialize several lat/longs to N0000/E00000.  Instead of
   setting/testing a bunch of flags, I use a zero lat/long value
   to determine whether previous seps have been seen for this
   route, and if a valid fix exists for that sep.

   Do you care?  Only if you are doing a sector for Africa.  If
   you have a sep at N0/E0, no distance testing will be done on
   that sep.


5.4  MAXIMUM RUNWAYS
--------------------

   The maximum number of runways that ATCCCC will remember from the
   AIRPORTS file is set at 50.  This should be enough for the
   near future.  If that's not enough (and if ATCC works with more
   than that) let me know.


-------------------------------------------------------------------
|                   CHAPTER 6 - CHANGES                           |
-------------------------------------------------------------------

   This is not a complete list, but hits the high points.

      Ver 1.6

         Check for C_INFO average elevation in hundreds of feet.

      Ver 1.5

         Replaced "lat/long format incorrect" with more informative message.

         Changed "signs disagree" from ERROR to WARNING.

      Ver 1.4

         No 'Error' for five digit fix names.  'Caution' retained for now.

         Allow blank lines in C_INFO.

         Error for duplicate frequencies in AIRPORTS file.

         'Typical > Max' changed to WARNING.  Catch extra fields on line.

      Ver 1.3

         Error for '08' or '09' in sector numbers, and other places.

         Error if route ends with dot or dots.

         Check for extra fields on a line in more places.

         Messages for unusual sep altitudes in a route - 'gap with
         previous' (warning), and 'only one common altitude' (info).

         ATCC works with at least one blank line in the middle of
         C_INFO.  ATCCCC now accepts blank lines anywhere in C_INFO.

         Expanded definition of blank lines (5.2).

         Increased INFO-free performance ranges for some aircraft types.

         More warnings for very small or very large values.

         Changed CAUTION range for map offsets to 400 miles.

         ERROR if more than 50 airways.

         Fixed 'null pointer assignment' warning (from C-language
         run-time) that might occur if there was an error in the
         first element of a file.

   The major portions of this program are complete.  There will be
   bug fixes, clarifications, and additions, as more characteristics
   of ATCC are discovered.  The operation of ATCCCC under Windows
   still needs to be improved.

   The information about ATCC version 2 indicates that version 1
   sector files will work.  However, my guess is that there will be
   a new set of problems with user-created sectors for that version.
   It is also likely that new features in version 2 will use data file
   items that ATCCCC does not understand.

