Format der Ereignisdatei

Die Ereignisdatei enthält Informationen, die es dem Editor ermöglichen, in der Quellendatei beliebige Token oder Zeilen zu lokalisieren, die zur Ausgabe einer Nachricht geführt haben. Außerdem können Nachrichten, die auf die erweiterte Quelle verweisen, der entsprechenden Position in einer bestimmten Quellendatei zugeordnet werden. Die Ereignisdatei ist gedacht, um maschinenlesbare Informationen bereitzustellen, die für bestimmte Klassen von Tools nützlich sind. Die Listendatei des Prozessors dagegen soll von Personen gelesen werden können. Da die Ereignisdatei über alle Prozessoren hinweg ein gebräuchliches Format aufweist, müssen Tools keinen prozessorspezifischen Code schreiben, um die erforderlichen Informationen abzurufen.

Die Ereignisdatei wird sequenziell erstellt. Jeder Prozessor hängt einfach neue Sätze an die bestehenden an. Tritt ein wichtiges Ereignis auf, wird ein Satz in die Ereignisdatei geschrieben.

Derzeit sind die folgenden Satztypen definiert:
  • Satz für Zeitmarke
  • Satz für Prozessor
  • Satz für Datei-ID
  • Satz für Dateiende
  • Satz für Fehlerinformationen
  • Satz für Programm
  • Satz für die Zuordnungsdefinition
  • Satz für den Zuordnungsstart
  • Satz für Zuordnungsende
  • Satz für Rückkopplungscode

Da in dieser einzelnen Datei verschiedene Typen von Sätzen vorkommen, gibt das erste Wort in jedem Satz den Satztyp an. In den Syntaxdiagrammen müssen die Token durch exakt ein einziges Leerzeichen voneinander getrennt sein.

Satz für Zeitmarke

Dieser Satz gibt an, wann die Ereignisdatei erstellt wurde. Anhand der Zeitmarke kann die Anwendung erkennen, ob es sich um die aktuelle Ereignisdatei handelt (ist die Zeitmarke älter als eine der im Satz für die Datei-ID angegebenen Dateien, ist die Ereignisdatei für die betreffende Datei unter Umständen ungültig). Dieser Satz erscheint stets als erster Satz in der Ereignisdatei.

Anmerkung: Dieser Satz wird nicht von einem Prozessor geschrieben, sondern vom aufrufenden Programm des ersten Prozessors. Dadurch kann jeder Prozessor Sätze an die Ereignisdatei anhängen, ohne vorher bestimmen zu müssen, ob die Datei vorhanden ist.

Der Satz ist wie folgt definiert:

**––– TIMESTAMP ––– Version ––– Zeitmarke ––––*|

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Zeitmarke
Datum und Uhrzeit der Erstellung der Ereignisdatei im Format jjjjmmtthhmmss.

Satz für Prozessor

Dieser Satz gibt an, dass ein neuer Prozessor aufgerufen wurde. Nach dem Satz mit der Zeitmarke folgt immer mindestens ein Satz für den Prozessor (es können auch mehrere Sätze vorhanden sein).

Der Satz für den Prozessor ist wie folgt definiert:

**––– PROCESSOR ––– Version ––– Ausgabe-ID ––– Zeilenklasse –––*|

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Ausgabe-ID
Die Datei-ID einer von diesem Prozessor erstellten Ausgabedatei. Soll die Ausgabe dieses Prozessors als Eingabe für einen anderen Prozessor verwendet werden, gibt diese Datei-ID die betreffende Datei an, und der Satz mit der Datei-ID folgt dann auf diesen Satz. Handelt es sich hier um den Prozessor, der zuletzt aufgerufen wird und wird erwartet, dass der Editor Nachrichten für diesen Prozessor anzeigt, lautet die Datei-ID 0.
Zeilenklasse
Methode, mit der Zeilen nummeriert werden. Geben Sie 0 an, wenn eine temporäre Datei oder interne Datei, die eine erweiterte Quellendarstellung enthält, verwendet wird; die Zeilennummer repräsentiert die Zeilennummer in der erweiterten Quelle. Geben Sie 1 an, wenn die Zeilennummer die physische Zeilennummer in der im Feld Quellendatei-ID angegebenen Quellendatei wiedergibt.
Anmerkung: Soll die Ausgabe eines einzelnen Prozessors als Eingabe für einen anderen Prozessor dienen, sollte der Satz FILEID für die Ausgabe einen Namen enthalten, selbst wenn die Ausgabe in keine tatsächlich vorhandene Datei gestellt wird. Derselbe Name sollte im Eingabesatz FILEID des Prozessors stehen, der die Ausgabe verwendet.

Satz für Datei-ID

Dieser Satz enthält den vollständigen Namen der verarbeiteten Quellendatei und ordnet dem Dateinamen eine ganze Zahl zu. Für jede verarbeitete Quellendatei sollte ein Satz dieses Typs vorhanden sein (für die Hauptquellendatei sowie alle anderen enthaltenen Quelleneinheiten (Copylib-Teildateien) und Makros).

Anmerkung: Wird eine Datei während der Verarbeitung mehrmals aufgeführt, sollte für jedes Vorkommen ein Datei-ID-Satz geschrieben werden.

Der Satz für die Datei-ID ist wie folgt definiert:

**––– FILEID ––– Version ––– Quellen-ID ––– Zeile ––– Länge ––––*
 *––– Dateiname ––– Zeitmarke_der_Quellendatei ––– Markierung_für_temporäre_Datei ––*|

Falls der Satz mit der Datei-ID die erlaubte Satzlänge der Ereignisdatei überschreitet (dies kann beim Kompilieren von IFS-Dateien vorkommen), folgen auf den Satz mit der Datei-ID ein oder mehrere fortgesetzte Sätze mit Datei-IDs, und zwar im folgenden Format:

**––– FILEIDCONT ––– Version ––– Quellen-ID ––– Zeile ––– Länge ––––*
 *––– Dateiname ––– Zeitmarke_der_Quellendatei ––– Markierung_für_temporäre_Datei ––*|

Beispiel:

FILEID     0 001 000000 383 /home/USER/directory/directory2/directory3/directory4asdfjkaskldjfhakjsdf haslkdjf alksjdfh laksjdf/directory5/dir9 askdjfhaksdjfhkalsjdfhlkajsdfhlajdshflkajshdflkajshdflkjahsdflkjhasdlfkjhaslkdfhalksdjfhalksdhfklashdfkashdflkahsdflkjhasdlkfhalskdfjha
FILEIDCONT 0 001 000000 000 lskfhalskdfhalsdhfalksdjfhlaksfhlasasdkjfhaksdjfhlkasjdfhlkajshdflkajshdfkjashdflkjhasdlkfhsadjkfdfhlakdshflkhs/REM1C01501.RPGLE 20030404130518 0

Die Länge sollte immer zum Bestimmen des Dateinamens verwendet werden, da IFS-Dateinamen Leerzeichen enthalten können, wie im obigen Beispiel gezeigt.

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Quellen-ID
Eine als Ganzzahl ausgedrückte Dateikennung, die anstelle des Dateinamens verwendet werden soll, um einen Fehlersatz mit der Quellendatei zu korrelieren, in der er aufgetreten ist, ohne den zeichenorientierten Dateinamen verwenden zu müssen. Verwenden Sie Null, wenn die Eingabedatei nicht bekannt ist, beispielsweise wenn Eingabe aus einem Benutzerexit herrührt.
Zeile
Zeilennummer der Quellendatei, wenn auf eine neue Datei verwiesen wird, oder Null, wenn auf die Datei nicht von einer anderen Datei verwiesen wird.
Länge
Länge des Dateinamens; die maximale Länge beträgt 255. In einem Satz FILEIDCONT beträgt die Länge stets Null, da die Länge nur durch den Satz mit der Datei-ID bestimmt wird.
Dateiname
Bei diesem Namen sollte es sich um den vollständig qualifizierten Namen der physischen Datei handeln. Ist keine vorhanden (beispielsweise weil der Benutzer den Text bereitstellt) oder kann der Name nicht bestimmt werden, sollten Sie hier eine Nullzeichenfolge verwenden.

Der Name darf die Variable Servername enthalten.

Zeitmarke_der_Quellendatei
Die Zeitmarke der Quellendatei.
Markierung_für_temporäre_Datei
Dieses Feld wird auf 1 gesetzt, um anzugeben, dass es sich bei der Quelle um eine temporäre Datei handelt; andernfalls wird es auf 0 gesetzt. Temporäre Quellendateien können nur im Anzeigemodus geöffnet werden. Derzeit wird diese Markierung verwendet, um auf Ausgabe zu verweisen, die vom SQL-Vorprozessor generiert wird.

Satz für Dateiende

Dieser Satz gibt an, dass eine enthaltene Datei beendet ist. Anhand dieses Satzes kann die Verschachtelung von enthaltenen Dateien bestimmt werden, damit ein Programm zur Kette der enthaltenen Dateien zurücknavigieren kann. Dies ist hilfreich, wenn die enthaltene Datei nicht genügend Informationen enthält, anhand derer die Fehlerursache bestimmt werden könnte.

Der Satz für das Dateiende ist wie folgt definiert:

**––– FILEEND ––– Version ––– Datei-ID ––– Erweiterung –––*|

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Datei-ID
Die ID dieser Datei.
Erweiterung
Anzahl der erweiterten Quellenzeilen in dieser Datei, einschließlich aller enthaltenen Verschachtelungen und Makroerweiterungen.
Anmerkung: Für jeden Datei-ID-Satz muss ein entsprechender Dateiendesatz vorhanden sein, mit Ausnahme der Datei-ID, die auf den Satz für den Prozessor folgt und die Ausgabedatei angibt.

Satz für Fehlerinformationen

Ein Satz dieses Typs enthält Informationen, die erforderlich sind, um ein Token oder eine Zeile zu lokalisieren, das/die eine Nachricht in der Quellendatei verursacht; außerdem enthält er genügend Informationen, damit die Nachricht selbst angezeigt werden kann. Diese Informationen schließen Positionsinformationen (z. B. in welcher Datei und Zeile der Fehler aufgetreten ist) und fehlerbezogene Informationen (beispielsweise Nummer, Text und Bewertung der Nachricht) ein.

Der Satz für die Fehlerinformationen ist wie folgt definiert:

**––– ERROR ––– Version ––– Datei-ID ––– Annotationsklasse –––*
 *––– Anweisungszeile ––– Zeile_mit_Fehleranfang ––– Token-Start ––– Zeile_mit_Fehlerende ––– Token-Ende –––*
 *––– Nachrichten-ID ––– Zeichen_für_Bewertungscode ––– Zahl_für_Bewertungsstufe ––– Länge ––– Nachricht –––*|

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Datei-ID
Datei-ID-Nummer der Quellendatei, die diesen Fehler enthält.
Annotationsklasse
Gibt an, an welche Stelle in einer Nachrichtenliste diese Nachricht platziert werden soll, wenn die Ereignisdatei im Fenster 'Fehlerliste' geladen wird. Die Positionen sind wie folgt definiert:
0
Listenanfang. Wird in der Regel für sehr wichtige Nachrichten verwendet, die keiner bestimmten Zeile in einer Datei zugeordnet sind. Die Sortierreihenfolge für mehrere Vorkommen von Nachrichten dieses Typs ist nicht definiert. Da diesem Fehlertyp in der Regel kein Text entspricht, kann er im Editierfenster nicht lokalisiert werden.
1
Listenmitte. Wird im Allgemeinen für Nachrichten verwendet, die einer einzelnen Zeile oder einem einzelnen Token zugeordnet sind. Bei mehrfach vorkommenden Nachrichten dieses Typs werden diese nach Zeile und Spaltennummer sortiert.
2
Listenende. Wird in der Regel für weniger wichtige Nachrichten verwendet, die keiner bestimmten Zeile in einer Datei zugeordnet sind. Die Sortierreihenfolge für mehrere Vorkommen von Nachrichten dieses Typs ist nicht definiert. Da diesem Fehlertyp in der Regel kein Text entspricht, kann er im Editierfenster nicht lokalisiert werden.
Anweisungszeile
Zeilennummer (in der Quellendatei, der die oben genannte Quellendatei-ID-Nummer zugeordnet ist) der ersten Zeile der Anweisung, die den Fehler enthält. Diese ist erforderlich für den Fall, dass der Fehler nicht in der ersten Zeile der Anweisung auftritt. Diese Nummer wird mit Hilfe des Felds Zeilenklasse interpretiert.
Zeile_mit_Fehleranfang
Zeilennummer (in der Quellendatei, der die oben genannte Quellendatei-ID-Nummer zugeordnet ist) der Zeile, in der der Fehler anfängt. Diese Nummer wird mit Hilfe des Felds Zeilenklasse interpretiert.
Token-Start
Spalte (oder Zeichen in der Zeile), in der das fehlerhafte Token anfängt. Sind diese Informationen nicht verfügbar, führt ein Nullwert hier dazu, dass die gesamte Zeile als Fehler markiert wird.
Zeile_mit_Fehlerende
Zeilennummer (in der Quellendatei, der die oben genannte Quellendatei-ID-Nummer zugeordnet ist) der Zeile, die das Fehlerende enthält. Diese Nummer wird mit Hilfe des Felds Zeilenklasse interpretiert.
Token-Ende
Spalte (oder Zeichen in der Zeile), in der das fehlerhafte Token endet. Sind diese Informationen nicht verfügbar, führt ein Nullwert hier dazu, dass die gesamte Zeile als Fehler markiert wird.
Nachrichten-ID
Nachrichten-ID (z. B. AMPX999).
Zeichen_für_Bewertungscode
Buchstabe für den Bewertungscode (I, W, E, S oder T).
Zahl_für_Bewertungsstufe
Zahl für die Bewertungsstufe. Bei manchen Systemen handelt es sich hierbei um den Rückkehrcode, der dem Buchstaben für den Bewertungscode zugeordnet ist (z. B. I=0, W=4, E=8, S=12, T=16).
Länge
Die tatsächliche Länge des Nachrichtentexts (nächstes Feld). Die maximale Länge beträgt 1024 Byte.
Nachricht
Der Nachrichtentext der Fehlernachricht. Das Ersetzen von Feldern sollte bereits durchgeführt worden sein.
Anmerkung: Fehler, die sich über mehrere Dateien erstrecken, werden unter Umständen nicht ordnungsgemäß markiert, da der Fehlersatz nur die Angabe einer einzigen Datei-ID zulässt.

Satz für Programm

Dieser Satz gibt ein neues Programm in derselben Quellendatei, die gerade kompiliert wird, an. Er wird verwendet, wenn in einer einzigen Datei mehrere Programme enthalten sind. Wird dieser Satz geschrieben, wird davon ausgegangen, dass die erweiterte Quellenzeile bei 1 neu beginnt. Es ist nicht erforderlich, das erste Programm in der Datei zu kennzeichnen.

Anmerkung: Alle Fehlersätze (ERROR) für ein Programm müssen nach dem Satz PROGRAM für das betreffende Programm folgen und vor den Sätzen PROGRAM anderer Programme stehen.

Der Satz für das Programm ist wie folgt definiert:

**––– PROGRAM ––– Version ––– Zeile –––*|

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Zeile
Die Position in der Datei, die von diesem Programm gestartet wird.

Satz für die Zuordnungsdefinition

Dieser Satz gibt an, dass ein Makro definiert wird. Anhand dieses Satzes können Fehler zu einer Makrodefinition zurückverfolgt werden, anstatt sie zu der Stelle zurückzuverfolgen, an der das Makro verwendet wird.

Der Satz für die Zuordnungsdefinition ist wie folgt definiert:

**––– MAPDEFINE ––– Version ––– Makro-ID ––– Zeile ––– Länge ––– Makroname –––*|

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Makro-ID
Ganzzahl, mit der diese Makrodefinition angegeben wird. Sie sollte innerhalb einer bestimmten Datei sequenziell erhöht werden.
Zeile
Physische Zeile in der aktuellen Datei, in der die Makrodefinition beginnt.
Länge
Länge des Makronamens.
Makroname
Der Name des Makros, das gerade definiert wird.

Satz für den Zuordnungsstart

Dieser Satz gibt an, dass die Quellenerweiterung gestartet wird. Er wird verwendet, wenn eine Textersetzung durchgeführt wird.

Der Satz für den Zuordnungsstart ist wie folgt definiert:

**––– MAPSTART ––– Version ––– Makro-ID ––– Zeile –––*|

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Makro-ID
Kennung für ein Makro, das in einem Satz für die Zuordnungsdefinition angegeben wird.
Zeile
Physische Zeile in der aktuellen Datei, in der die Erweiterung (beispielsweise der Makroaufruf) beginnt.

Satz für Zuordnungsende

Dieser Satz gibt an, dass die Quellenerweiterung abgeschlossen ist. Er wird am Ende einer Textersetzung verwendet, um anzugeben, wie viele Zeilen erstellt wurden.

Der Satz für das Zuordnungsende ist wie folgt definiert:

**––– MAPEND ––– Version ––– Makro-ID ––– Zeile ––– Erweiterung –––*|

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Makro-ID
Kennung für ein Makro, das in einem Satz für die Zuordnungsdefinition angegeben wird.
Zeile
Physische Zeile in der aktuellen Datei, in der die Erweiterung (beispielsweise der Makroaufruf) beginnt.
Erweiterung
Anzahl Zeilen, die aus dieser Makroerweiterung resultieren, einschließlich aller verschachtelten Erweiterungen.

Satz für Rückkopplungscode

Dieser Satz enthält den Rückkehr- und Ursachencode für den Punkt, an dem die Kompilierung gestoppt wurde.

Der Satz für den Rückkopplungscode ist wie folgt definiert:

**––– FEEDBACK ––– Version ––– Rückkehrcode ––– Ursachencode –––*|

Version
Die Überarbeitung dieses Satzes; sie wird für die Aufwärtskompatibilität verwendet. Die aktuelle Version ist "1".
Rückkehrcode
Der vom Prozessor zurückgegebene Rückkehrcode.
Ursachencode
Der vom Prozessor zurückgegebene Ursachencode.