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:
[email protected]
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.