\chapter{Informational and Error Messages} \label{chap:errmsg}

\caps{\PROGRAM} operates in three stages:

\begin{enumerate}

\item scan the input database for general information,

\item input commands and equations from the user,

\item re-read the input database and copies the mesh description to
  the output database, and

\item evaluate the equations for each time step.

\end{enumerate}

\caps{\PROGRAM} expects a valid database. If a format error is
discovered before the time steps, the program prints an error of the
following format:
\errfmt{
\cmd{DATABASE ERROR - Reading \param{database item}}
}
and aborts. This problem may occur either while scanning the input
database or while copying the mesh description to the output database.

If a format error is found while reading the time steps, the following
error message is printed:
\errfmt{
\cmd{WARNING - End-of-file during time steps} \\
or \\
\cmd{DATABASE ERROR - Reading \param{database item}}.
}
If this error is encountered while scanning the input database, the time
step with the error and all following time steps are ignored, but the
program continues and the previous time steps are available for
processing. Some database errors may not be detected until the equations
are being evaluated. The program aborts when the error is encountered,
but the output database is correct for all previous time steps.

An equation is checked for syntax errors as soon as the user enters the
line. If an error is found, a message is printed and the equation is
ignored (with a message to that effect). If only a warning is printed,
the equation is accepted. If the message is not sufficiently
informative, the description of the equation syntax
(Chapter~\ref{chap:equation}) may be helpful. 

A command is performed as soon as it is entered. A command error usually
causes the command to be ignored. The command is usually performed if
only a warning is printed. The display after the command shows the
effect of the command. If the message is not sufficiently informative,
the appropriate command description (Chapter~\ref{chap:command}) may be
helpful. 

The evaluation loop processes each time step by reading the needed input
database variables, evaluating the equations, and writing the results to
the output database. Any error during this stage causes the program to
abort (with a fatal error message). The output database is readable, but
it contains only the data from the time steps processed before the
error.

A numerical error while evaluating the equations (such as divide by
zero) causes a fatal error. A message is printed describing the error
and the equation that caused the error is displayed after the error
message.

The program allocates memory dynamically as it is needed. If the system
runs out of memory, the following message is printed:
\errfmt{
\cmd{FATAL ERROR - Too much dynamic memory requested}
}
and the program aborts. The user should first try to obtain more memory
on the system. Another solution is to run the program in a less
memory-intensive fashion. For example, entering fewer equations may
require less memory.

\caps{\PROGRAM} has certain programmer-defined limitations (for example,
the number of curves that may be defined. The limits are not specified
in this manual since they may change. In most cases the limits are
chosen to be more than adequate. If the user exceeds a limit, a message
is printed. If the user feels the limit is too restrictive, the code
sponsor should be notified so the limit may be raised in future releases
of \caps{\PROGRAM}.
