
\section{Der Fehlerlister (\/{\tt m2error})}

Der Fehlerlister bietet die M"oglichkeit, lesbare Fehlerlisten
zu generieren. Dies ist n"otig, wenn man statt {\tt m2emacs} einen
anderen Editor verwenden will, der die Fehler nicht im Quelltext
anzeigen kann. Ausserdem kann ein vollst"andiges Fehlerlisting
einen besseren "Uberblick "uber die gefundenen Fehler vermitteln,
als dies beim sequentiellen Abarbeiten innerhalb des Editors
m"oglich ist.

Der Fehlerlister zeigt f"ur jeden Fehler die unmittelbare Umgebung
der fehlerhaften Textstelle an. Dazu werden etwa die letzten
100 Zeichen vor der Fehlerstelle sowie die fehlerhafte Zeile
selbst auf den Bildschirm geschrieben.
Ist davon bereits ein Teil auf dem Bildschirm vorhanden, so wird
nur der neue Text dargestellt. In der nachfolgenden Zeile einer
fehlerhaften Zeile des Programmtexts zeigt ein "`\verb'^'"'-Zeichen
die Fehlerstelle. Auf den folgenden Zeilen erscheinen dann die
Fehlermeldungen im Klartext. Die Fehlerumgebung sollte ausreichen,
die Fehlerstelle zu finden.
Um das Auf"|finden der Fehlerstelle noch zu vereinfachen, wird auch
die Zeilennummer jeder Zeile angegeben.

Das Programm {\tt m2error} ben"otigt die Datei {\tt Fehler-Meldungen}
im Verzeichnis {\tt M2:}. Ist diese Datei nicht vorhanden, bricht das
Programm ab.

\subsection{Aufruf und Bedienung}

\begin{quote}\tt
m2error \{+-x -l[{\cmsltt ErrorNumber\/}] ? {\cmsltt ModulName\/}\}
\end{quote}

Der Fehlerlister zeigt f"ur die angebenen Quelldateien die
Fehlerliste an. Dazu versucht er, zu jeder angegebenen 
Quelldatei die entsprechende Fehlerdatei zu lesen. Der Name der
Fehlerdatei ergibt sich aus dem Namen der Quelldatei, erg"anzt
durch den Buchstaben "`{\tt E}"'.
Wird beim Aufstarten kein Dateiname angegeben, oder kann eine
der angegebenen nicht gefunden werden, geht der Fehlerlister
in den interaktiven Modus. Hierin kann die Option {\tt x}
oder der Dateinamen direkt eingeben werden; um das Programm
zu verlassen gen"ugt dann die Eingabe einer Leerzeile.

\begin{example}
Nachfolgend ein Ausschnitt aus der Ausgabe von {\tt m2error}.
In diesem Beispiel wurde versucht, einen nicht exportierten
Bezeichner zu importieren.

\pagebreak[3]
\begin{alltt}
Amiga Modula-2 Fehlerlister, 4.0d, 23.02.91

    1   MODULE err;
    2
    3   FROM InOut IMPORT
    4    WriteChar,WriteInt,WriteLn;
        |^
        |     55: Bezeichner nicht sichtbar
    \ldots
\end{alltt}

Je nach gew"ahlter Option wird nun an dieser Stelle weitergefahren oder
aber erst die n"achste fehlerhafte Stelle angezeigt; diese schliesst
sich unmittelbar an, wenn sie weniger als
100 Zeichen entfernt ist.

\end{example}

\subsection{Optionen}

Die einzige (echte) Option "`{\tt x}"' kann mit "`{\tt -}"'
gel"oscht und mit "`{\tt +}"' gesetzt werden.

\begin{ttscript}{xxx}
\item[?]
  zeigt die Version und die Syntax des Fehlerlisters-Aufruf an.
\item[x]
  (extract) "`{\tt +x}"' zeigt nur die Umgebung der Fehlerstelle
  wie oben beschrieben. Mit "`{\tt -x}"' wird nicht nur der Programmtext
  an einer Fehlerstelle, sondern das gesamte Abbild des
  Ursprungtextes erstellt. 
\item[l{\cmsltt n}]
  (listing) Wird die Option "`{\tt -l}"' oder "`{\tt +l}"' ohne
  Argument  angegeben,
  wird keine Eingabedatei erwartet, sondern die gesamte
  Fehlerliste aller m"oglichen Fehlernummern und der dazugeh"origen
  Texte ausgegeben. Diese recht lange Liste kann mit \keyctrl[C] 
  unterbrochen werden. Ist unmittelbar daran eine Nummer
  angegeben, wird nur der entsprechende Fehlercode ausgegeben.
\end{ttscript}

\subsection{Fehlermeldungen}

\subsubsection{\cmsltt Modulname\/\tt: Datei nicht gefunden}

Die Eingabedatei wurde nicht gefunden; entweder existiert sie
nicht oder der Name wurde falsch geschrieben.

\subsubsection{\cmsltt Modulname\/\tt: Keine Fehlerdatei gefunden}

Zur angegebenen Fehlerdatei existiert keine Fehlerdatei. Auch mit
der Option "`{\tt -x}"' wird dann {\em keine\/} Ausgabe erzeugt.

\subsubsection{\tt M2:Fehler-Meldungen nicht gefunden oder zuwenig Speicher}

Die Datei "`{\tt M2:Fehler-Meldungen}"' konnte nicht geladen werden;
entweder sie wurde nicht gefunden oder der ben"otigte Speicherplatz
konnte nicht alloziert werden.

\subsection{R\protect"uckgabewerte}

\begin{ttscript}{rcImportantNotFound}
\item[rcIllOpt]
  Eine ung"ultige Option wurde "ubergeben.
\item[rcActionErr]
   Die Fehlerdatei ({\cmsltt Quelle\/\tt E}) konnte nicht gefunden werden.
 \item[rcImportantNotFound]
   Die Datei "`{\tt M2:Fehler-Meldungen}"' kann nicht ge"-"off\-net werden.
 \item[rcMainNotFound]
   Der Quelltext wurde nicht gefunden.
 \end{ttscript}

Zur Verwendung der R"uckgabewerte schlagen Sie unter 
\ref{RetVal} nach.
