Der COBOL2000-Compiler und das COBOL2000-Laufzeitsystem protokollieren umfassend alle Fehler, die während der Übersetzung und beim Ablauf eines COBOL-Programmes auftreten. Die dabei ausgegebenen Meldungen lassen sich in zwei Gruppen einteilen:
Meldungen, die sich auf Fehler in einer COBOL-Übersetzungseinheit beziehen: Sie werden vom Compiler am Ende der Übersetzung in einer Fehlerliste und/oder Fehlerdatei ausgegeben und haben folgenden Aufbau:
Msg-Index Source Seq. No Severity Code Error Text
Dabei bezeichnet
Msg-Index
eine fünfstellige (sedezimale) Fehlermeldungsnummer (Die beiden ersten Zeichen geben das Modul des Compilers an, das den Fehler erkannt hat.),
Source Seq. No
die Folgenummer der Übersetzungseinheitzeile, in welcher der Fehler auftritt,
Severity Code
die Fehlerklasse, der der Fehler zuzurechnen ist und
Error Text
den Text der Fehlermeldung. Er enthält eine genauere Beschreibung des Fehlers und zeigt eventuell eine Umgehungsmöglichkeit auf.
Meldungstexte können wahlweise auf englisch oder deutsch ausgegeben werden; die Sprache lässt sich über das SDF-Kommando MODIFY-MSG-ATTRIBUTES TASK-LANGUAGE=E/D auswählen
Eine aktuelle Liste aller Fehlermeldungen des COBOL2000-Compilers kann mit COMOPT PRINT-DIAGNOSTIC-MESSAGES=YES bzw. über die SDF-Option COMPILER-ACTION=PRINT-MESSAGE-LIST angefordert werden (siehe Abschnitte „Tabelle der COMOPT-Operanden" bzw. „COMPILER-ACTION-Option").Achtung
Werden Fehler gemeldet, deren Text mit SE-1 oder S.E. beginnt, ist in jedem Fall der Systemverwalter/-berater zu verständigen.
Fehlerklasse
Bedeutung
F
Hinweismeldung
Der Compiler hat in der Übersetzungseinheit Sprachmittel erkannt, die
Spracherweiterungen gegenüber der COBOL-Norm ANS85 darstellen,
von künftigen COBOL-Normen nicht mehr unterstützt werden,
gemäß FIPS (Federal Information Processing Standard) einer bestimmten Sprachmenge zuzuordnen sind.
COBOL2000 gibt Hinweise der Klasse F nur aus, wenn sie explizit mit COMOPT ACTIVATE-WARNING-MECHANISM=YES bzw. ACTIVATE-FLAGGING = ANS85 / FIPS(...) angefordert werden.
I
Hinweismeldung
Der Compiler hat Steueranweisungen oder COBOLSprachelemente erkannt, auf die der Anwender zwar aufmerksam gemacht werden soll, die jedoch nicht die Ausgabe einer Warnungs- oder Fehlermeldung rechtfertigen.
0
Warnungsmeldung
Möglicherweise wurde in der Übersetzungseinheit ein Fehler gemacht; trotz dieses Fehlers ist der Programmablauf möglich.
1
Fehlermeldung
Der Compiler hat einen Fehler entdeckt. Normalerweise macht der Compiler eine Korrekturannahme; ein Ablauf des Programms zu Testzwecken ist möglich.
2
Schwerwiegender Fehler
In der Regel wird vom Compiler keine Korrekturannahme gemacht; die fehlerhafte Anweisung wird nicht generiert.
3
Abbruchfehler
Es ist ein so schwerwiegender Fehler aufgetreten, dass der Compiler nicht in der Lage ist, die Übersetzung fortzusetzen.
Tabelle 37: Fehlerklassen und ihre Bedeutung
Meldungen
die der Compiler über den Ablauf und die Beendigung des Übersetzungslaufes generiert (CBL90nn),
die das COBOL2000-Laufzeitsystem über den Ablauf und die Beendigung des Anwenderprogramms erzeugt (COB91nn).
des POSIX-Treibers für COBOL (CBL92nn)
die bei objektorientiertem Programmieren auftreten(COB93nn).
{ CBL90nn | COB91nn | CBL92nn | COB93nn } Text
Dabei bezeichnet
CBL90nn
COB91nn
CBL92nn
COB93nndie Kennnummer der Meldung
Text
den Text der Meldung. Er enthält
einen Hinweis zum Ablauf des Compilers oder Anwenderprogramms oder
eine genauere Beschreibung des aufgetretenen Fehlers und
in manchen Fällen die Anforderung einer Eingabe durch den Anwender, mit der der Fehler umgangen werden kann.
Meldungstexte können wahlweise auf englisch oder deutsch ausgegeben werden; die Sprache lässt sich über das SDF-Kommando
MODIFY-MSG-ATTRIBUTES TASK- LANGUAGE=E/D auswählen.Der in den Meldungen COB9101 und COB9102 „COMPILATION UNIT ID programmname“ genannte Programmname bezeichnet immer ein getrennt übersetztes Programm. Dabei kann es sich um ein einzelnes Programm oder um das äußerste Pro gramm eines geschachtelten Programms handeln.
Die Angabe COMOPT GENERATE-LINE-NUMBER=YES bzw. ERR-MSG-WITH-LINE-NR=YES in der SDF-Option RUNTIME-OPTIONS bewirkt, dass statt der Meldung COB9101 zu jeder Meldung des Programms die Meldung 9102 ausgegeben wird, die auch die Nummer der Übersetzungseinheitzeile enthält, bei deren Ausführung die Meldung ausgegeben wird.
Die (im Verlauf der Übersetzung ausgegebenen) Meldungen CBL9004, CBL9017, CBL9095, CBL9097 und CBL9099 werden unterdrückt, wenn vor dem Aufruf des Compilers der Auftragsschalter 4 gesetzt wird.
Mit dem Kommando HELP-MSG-INFORMATION können Sie zu einer Meldung den vollständigen Meldungstext anzeigen.
Er umfasst insbesondere folgende Information:
- Typ (der Meldung)
- Bedeutung (der Variablen in der Meldung)
- Verhalten (des Programms)
- ggf. Maßnahme (des Anwenders)