Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Aufbau der Compilermeldungen

&pagelevel(4)&pagelevel

Der Compiler gibt folgende Arten von Meldungen aus:

  • Informationsmeldungen, die den Benutzer über den allgemeinen Ablauf der Übersetzung informieren (z.B. Start- und Beendigungsmeldung des Compilers, Meldungen wie ’MODULES GENERATED’).

  • Fehlermeldungen des Compiler-Frontends, die sich direkt auf das übersetzte Quellprogramm beziehen (z.B. Syntax- und Semantikfehler).

    Diese bestehen aus

    1. der eigentlichen Fehlermeldungszeile

    2. der fehlerhaften Quellprogrammzeile (optional)

    3. einer Markierung ^ der Fehlerposition (optional)

  • Fehlermeldungen ohne Quellprogrammbezug (z.B. Platte voll, erfolgloses Öffnen von Dateien).

Informations- und Fehlermeldungen werden - steuerbar über die MODIFY-DIAGNOSTIC-PROPERTIES-Anweisung ("MODIFY-DIAGNOSTIC-PROPERTIES") - während der Übersetzung auf eines oder mehrere der folgenden Ausgabeziele ausgegeben:

  • Datensichtstation und/oder

  • wahlweise in Dateien oder Bibliotheken.

Fehlermeldungen mit Quellprogrammbezug werden auch - steuerbar über die MODIFY-LISTING-PROPERTIES-Anweisung ("MODIFY-LISTING-PROPERTIES") - in der Quellprogramm-/Fehlerliste dokumentiert.

Allgemeines Format der Compilermeldungen:

Fehlermeldungszeile:

meldungsschlüssel [ fehlergewicht ]: dateiname / zeilennummer : meldungstext

optional bei Fehlermeldungen mit Quellprogrammbezug:

fehlerhafte Quellprogramzeile

^ Markierung der Fehlerposition

Bei Fehlermeldungen ohne Quellprogrammbezug (Gewicht FATAL oder ERROR) entfallen Dateiname und Zeilennummer. Bei den Informationsmeldungen entfällt außerdem das Fehlergewicht.

meldungsschlüssel

Der 7-stellige Meldungsschlüssel setzt sich zusammen aus einer 3-stelligen Meldungsklasse, die die Compilerkomponente kennzeichnet, und einer 4-stelligen Meldungsnummer.


Meldungsklasse

Komponente

CFE

Frontend des Compilers:
Scanner, Präprozessor, Parser, Listengenerator, Meldungswesen

CDR

Compilertreiber, II-UPDATE

UMP

Zwischensprachenkomponenten: ULS, Optimierer, Inliner

BEM

Backend

SIS

Compiler-Ein-/Ausgabe-Schnittstelle (PROSOS),
Objektformat(Modul)-Generator (OFG),
Diagnoseinformationen-Generator für AID (DIG)

BND

BINDER (beim Binden mit der BIND-Anweisung des Compilers)

CCM

C-Laufzeitsystem


[fehlergewicht]

Angabe, welches Gewicht der aufgetretene Fehler hat:


[NOTE]

Hinweise, leichte Fehler, z.B. „unschöne“ oder überflüssige Konstrukte, die auf das spätere Programmverhalten in der Regel keinen Einfluss haben.
Notes werden nicht automatisch, sondern nur bei Angabe der Option -R minweight,notes bzw. MINIMAL-MSG-WEIGHT=*NOTE ausgegeben.

[WARNING]

Fehler, bei denen der Compiler zwar ein Modul erzeugt, jedoch ggf. Annahmen trifft, die nicht zum erwarteten Programmverhalten führen

[ERROR],
[*ERROR]

Fehler, bei denen kein Modul erzeugt wird. Der Compiler versucht, bis zu der mit der Option -R limit,n bzw. MAX-ERROR-NUMBER=n angegebenen Anzahl Errors mit der Übersetzung fortzufahren. Mit einem Stern sind Errors des Compiler-Frontends gekennzeichnet, die entweder mit der Option -R warning/note bzw. CHANGE-MSG-WEIGHT=*WARNING()/*NOTE() auf das Gewicht WARNING/NOTE herabgestuft werden können oder Warnings, die mit der Option -R error bzw. CHANGE-MSG-WEIGHT=*ERROR() auf das Gewicht ERROR hochgestuft wurden.

[FATAL]

Schwerer Fehler, der zum Abbruch der Übersetzung führt

[INTERNAL]

Compilerfehler, der ebenfalls zum Abbruch der Übersetzung führt


dateiname

Name der Datei oder des Bibliothekselementes mit dem fehlerhaften Quellprogrammcode

zeilennummer

Angabe der Quellprogrammzeile, in der der Fehler auftritt

meldungstext

Text der Fehlermeldung, der in Deutsch oder Englisch ausgegeben werden kann

Fehlerhafte Quellprogrammzeile mit Markierung der Fehlerposition

Bei Angabe der Option -R show_column bzw. SHOW-COLUMN=*YES (Voreinstellung) wird zusätzlich zur Diagnosemeldung die fehlerhafte Original-Quellprogrammzeile ausgegeben, in der die Fehlerstelle markiert ist (mit ^). Die Ausgabe der markierten Quellprogrammzeile kann mit -R no_show_column bzw. SHOW-COLUMN=*NO unterdrückt werden.

Beispiel

//MODIFY-SOURCE-PROP LANG=*C(MODE=1990, STRICT=*YES)
//MODIFY-DIAGNOSTIC-PROP CHANGE-MSG-WEIGHT=*ERROR(CFE1064)
//COMPILE SOURCE=TEST.C
% CFE1064 [*ERROR]: TEST.C / 1: declaration does not declare anything
  struct { int a; };
  ^
% CFE1020 [ERROR]: TEST.C / 3: identifier "abc" is undefined
  abc def;
  ^
% CFE2095 [*ERROR]: USER.H / 3: too few arguments in invocation of macro "M" 
  int i = M(3);
             ^

Die Fehlernummer CFE1064 ist im Original ein WARNING und wurde mit der Option CHANGE-MSG-WEIGHT=*ERROR(CFE1064) auf die Fehlerklasse ERROR hochgestuft. Die Fehlerklasse von Errors, die im Original nicht mit einem Stern ausgegeben werden (hier z.B. CFE1020), kann nicht verändert werden.
Die Fehlernummer CFE2095 ist ein Beispiel für einen im strikten C89-Modus generierten Error, der mit CHANGE-MSG-WEIGHT=*WARNING(CFE2095) herabgestuft werden kann. Die gleiche Fehlernummer hat im erweiterten C89-Modus die Fehlerklasse WARNING.

Zu etlichen Fehlermeldungen kann mit dem HELP-MSG-Kommando eine nähere Erläuterung abgerufen werden:

HELP-MSG MSG-ID= msgid[,LANGUAGE=D / E]

Die Compilermeldungen können in deutsch oder englisch ausgegeben werden. Der Standardwert hängt von der Systemgenerierung ab. Mit folgendem Kommando kann die taskspezifische Voreinstellung geändert werden:

MODIFY-MSG-ATTRIBUTES TASK-LANGUAGE = D / E