Format du fichier d'événements

Le fichier d'événements contient les informations qui permettent à l'éditeur de localiser dans le fichier source, les marqueurs ou les lignes qui ont provoqué l'affichage d'un message et de lier les messages qui font référence à la source développée à la position correspondante dans un fichier source donné. Le fichier d'événements sert à fournir des informations lisibles par machine et utiles à certaines classes d'outils. En revanche, le fichier de listage du processeur est conçu pour être lu par les utilisateurs. Comme le fichier d'événements a le même format sur tous les processeurs, les outils n'auront pas à écrire du code spécifique pour chaque processeur pour obtenir les informations dont ils ont besoin.

Le fichier d'événements est créé de façon séquentielle. Chaque processeur lui ajoute simplement de nouveaux enregistrements. Lorsqu'un événement important se produit, un enregistrement est écrit dans le fichier d'événements.

Actuellement, les types d'enregistrement définis sont les suivants :
  • Enregistrement de l'horodatage
  • Enregistrement d'un processeur
  • Enregistrement d'un ID fichier
  • Enregistrement de la fin d'un fichier
  • Enregistrement des informations d'une erreur
  • Enregistrement d'un programme
  • Enregistrement de la définition d'une mappe
  • Enregistrement du début d'une mappe
  • Enregistrement de la fin d'une mappe
  • Enregistrement d'un code retour

Comme différents types d'enregistrement seront ajoutés dans ce fichier unique, le premier mot de chaque enregistrement identifiera le type d'enregistrement. Dans les diagrammes de syntaxe, chaque marqueur doit être séparé par exactement un blanc.

Enregistrement de l'horodatage

Cet enregistrement indique la date de création du fichier d'événements et permet à une application de déterminer si le fichier d'événements est celui en cours (si l'horodatage est plus ancien qu'un fichier indiqué dans un enregistrement d'ID fichier, le fichier d'événements peut être incorrect pour ce fichier). Cet enregistrement est toujours le premier enregistrement dans le fichier d'événements.

Remarque : Cet enregistrement n'est pas écrit par un processeur ; il est écrit par l'appelant du premier processeur. Ainsi, chaque processeur peut effectuer des ajouts au fichier d'événements sans devoir déterminer si le fichier existe.

L'enregistrement est défini comme suit :

**––– TIMESTAMP ––– version ––– horodatage ––––*|

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
horodatage
Date et heure de création du fichier d'événements au format aaaammjjhhmmss.

Enregistrement d'un processeur

Cet enregistrement indique qu'un nouveau processeur a été appelé. L'enregistrement de l'horodatage sera toujours suivi par un enregistrement de processeur dans le fichier d'événements (même s'il peut en exister plusieurs).

L'enregistrement d'un processeur est défini comme suit :

**––– PROCESSOR ––– version ––– id-sortie ––– classe-ligne –––*|

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
id-sortie
ID fichier d'un fichier de sortie créé par ce processeur. Si la sortie de ce processeur doit être utilisée comme entrée sur un autre processeur, cet ID fichier représente ce fichier et l'enregistrement de l'ID fichier du fichier suivra cet enregistrement. Si c'est le dernier processeur qui sera appelé pour lequel l'éditeur devrait afficher des messages, l'ID fichier est 0.
classe-ligne
Méthode utilisée pour numéroter les lignes. Si un fichier temporaire ou interne contenant une représentation de source développée est utilisé, indiquez zéro ; le numéro de ligne représente le numéro de ligne présent dans la source développée. Si le numéro de ligne représente le numéro de ligne physique dans le fichier source indiqué dans la zone ID fichier source, indiquez un.
Remarque : Si la sortie d'un processeur doit être utilisée comme entrée sur un autre processeur, l'enregistrement FILEID de la sortie doit contenir un nom, même si la sortie ne se trouve pas dans un fichier réel. Ce même nom doit être utilisé dans l'enregistrement FILEID de l'entrée du processeur utilisant la sortie.

Enregistrement d'un ID fichier

Cet enregistrement contient le nom complet du fichier source traité et associe un entier au nom de fichier. Chaque fichier source traité doit contenir un enregistrement de ce type (le fichier source principal ainsi que toutes les unités sources (membres copylib) et macros incluses).

Remarque : Si un fichier est ajouté plusieurs fois au cours du traitement, un enregistrement de l'ID fichier doit être écrit pour chaque ajout.

L'enregistrement d'un ID fichier est défini comme suit :

**––– FILEID ––– version ––– id-source ––– ligne ––– longueur ––––*
 *––– nom-fichier––– horodatage-fichier-source ––– indicateur-temp ––*|

Si l'enregistrement d'un ID fichier dépasse la longueur autorisée par la longueur d'enregistrement du fichier d'événements (ce qui peut se produire lors de la compilation des fichiers IFS), l'enregistrement de l'ID fichier est suivi par un ou plusieurs enregistrements continus de l'ID fichier au format suivant :

**––– FILEIDCONT ––– version ––– id-source ––– ligne ––– longueur ––––*
 *––– nom-fichier––– horodatage-fichier-source ––– indicateur-temp ––*|

Par exemple :

FILEID     0 001 000000 383 /home/USER/répertoire/répertoire2/répertoire3/répertoire4asdfjkaskldjfhakjsdf haslkdjf alksjdfh laksjdf/répertoire5/dir9 askdjfhaksdjfhkalsjdfhlkajsdfhlajdshflkajshdflkajshdflkjahsdflkjhasdlfkjhaslkdfhalksdjfhalksdhfklashdfkashdflkahsdflkjhasdlkfhalskdfjha
FILEIDCONT 0 001 000000 000 lskfhalskdfhalsdhfalksdjfhlaksfhlasasdkjfhaksdjfhlkasjdfhlkajshdflkajshdfkjashdflkjhasdlkfhsadjkfdfhlakdshflkhs/REM1C01501.RPGLE 20030404130518 0

La longueur doit toujours être utilisée pour déterminer le nom de fichier car les noms de fichier IFS peuvent contenir des espaces (voir exemple ci-dessus).

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
id-source
Identificateur du fichier : entier à utiliser à la place du nom de fichier pour mettre en corrélation l'enregistrement d'une erreur avec le fichier source dans lequel elle s'est produite, sans devoir utiliser le nom (en caractères) du fichier. Si le fichier d'entrée est inconnu (entrée provenant d'un exit utilisateur par exemple), utilisez zéro.
ligne
Numéro de ligne du fichier source dans lequel un nouveau fichier est référencé. Si le fichier n'a pas été référencé à partir d'un fichier, utilisez zéro.
longueur
Longueur du nom de fichier ; la longueur maximale est 255. Dans un enregistrement FILEIDCONT, la longueur est toujours zéro car elle est uniquement déterminée par l'enregistrement de l'ID fichier.
nom-fichier
Nom complet du fichier physique. Si aucun nom n'existe (par exemple, l'obtention de texte d'un utilisateur) ou si le nom ne peut pas être déterminé, utilisez une chaîne vide.

Le nom peut inclure le nom_serveur.

horodatage-fichier-source
Horodatage sur le fichier source.
indicateur-temp
Cette zone est définie sur 1 pour indiquer que la source est un fichier temporaire, sinon elle est définie sur 0. Le fichier source temporaire peut uniquement être ouvert en mode visualisation. Actuellement, l'indicateur temporaire est utilisé pour référencer la sortie générée par les préprocesseurs SQL.

Enregistrement de la fin d'un fichier

Cet enregistrement indique qu'un fichier ajouté se termine. Il fournit une méthode permettant de définir l'emboîtement des fichiers ajoutés afin qu'un programme puisse revenir au fichier précédent jusqu'à la chaîne incluse. Cela est utile lorsque le fichier inclus ne contient pas assez d'informations pour déterminer l'origine de l'erreur.

L'enregistrement de la fin d'un fichier est défini comme suit :

**––– FILEEND ––– version ––– id-fichier ––– extension –––*|

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
id-fichier
ID fichier de ce fichier.
extension
Nombre de lignes sources développées dans ce fichier, notamment toute inclusion emboîtée et extension de macro.
Remarque : Chaque enregistrement d'ID fichier doit disposer d'un enregistrement de fin de fichier correspondant, sauf pour l'ID fichier qui suit l'enregistrement du processeur pour définir le fichier de sortie.

Enregistrement des informations d'une erreur

Un enregistrement de ce type contient les informations nécessaires pour localiser un marqueur ou une ligne à l'origine d'un message dans le fichier source, ainsi qu'assez d'informations pour autoriser l'affichage du message lui-même. Ces informations concernent l'emplacement (fichier et ligne sur lesquels l'erreur s'est produite, par exemple) et l'erreur elle-même (numéro, texte et gravité du message).

L'enregistrement des informations d'une erreur est défini comme suit :

**––– ERROR ––– version ––– id-fichier ––– classe-annot –––*
 *––– ligne-instruct ––– ligne-début-err ––– début-marqueur ––– ligne-fin-err ––– fin-marqueur –––*
 *––– id-message ––– caract-grav ––– num-grav ––– longueur ––– message –––*|

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
id-fichier
Numéro d'ID fichier du fichier source contenant cette erreur.
classe-annot
Indique où ce message doit être placé dans une liste de messages lorsque le fichier d'événements est chargé dans la fenêtre Liste d'erreurs. Les emplacements sont définis comme suit :
0
Haut de la liste. Généralement utilisé pour les messages très importants qui ne sont pas vraiment associés à une ligne spécifique dans un fichier. S'il existe plusieurs instances de ce type de message, elles ne sont pas triées. Comme aucun texte ne correspond généralement à ce type d'erreur, il ne peut pas se trouver dans la fenêtre d'édition.
1
Milieu de la liste. Généralement utilisé pour les messages qui sont associés à une seule ligne ou un seul marqueur. S'il existe plusieurs messages de ce type, ils sont triés par le numéro de ligne et de colonne.
2
Bas de la liste. Généralement utilisé pour les messages moins importants qui ne sont pas vraiment associés à une ligne spécifique dans un fichier. S'il existe plusieurs instances de ce type de message, elles ne sont pas triées. Comme aucun texte ne correspond généralement à ce type d'erreur, il ne peut pas se trouver dans la fenêtre d'édition.
ligne-instruct
Numéro de ligne (dans le fichier source associé au numéro d'ID fichier source ci-dessus) de la première ligne de l'instruction contenant l'erreur. Il est nécessaire si l'erreur ne se produit pas sur la première ligne de l'instruction. Ce numéro est interprété à l'aide de la zone classe ligne.
ligne-début-err
Numéro de ligne (dans le fichier source associé au numéro d'ID fichier source ci-dessus) contenant le début de l'erreur. Ce numéro est interprété à l'aide de la zone classe ligne.
début-marqueur
Colonne (ou caractère dans la ligne) du début du marqueur dans l'erreur. Si ces informations ne sont pas disponibles, un zéro à ce niveau signifie que toute la ligne est une erreur.
ligne-fin-err
Numéro de ligne (dans le fichier source associé au numéro d'ID fichier source ci-dessus) contenant la fin de l'erreur. Ce numéro est interprété à l'aide de la zone classe ligne.
fin-marqueur
Colonne (ou caractère dans la ligne) de la fin du marqueur dans l'erreur. Si ces informations ne sont pas disponibles, un zéro à ce niveau signifie que toute la ligne est une erreur.
id-message
ID message (par exemple, AMPX999).
caract-grav
Lettre du code de gravité (I, W, E, S ou T).
num-grav
Numéro du niveau de gravité. Pour certains systèmes, c'est le code retour associé à la lettre du code de gravité (par exemple, I=0, W=4, E=8, S=12, T=16).
longueur
Longueur réelle du texte du message (zone suivante). La longueur maximale est 1024 octets.
message
Texte du message d'un message d'erreur. Tout remplacement de zone doit déjà avoir été effectué.
Remarque : Les erreurs qui s'étendent sur plusieurs fichiers peuvent ne pas être correctement indiquées car l'enregistrement de l'erreur permet de spécifier un seul ID fichier.

Enregistrement d'un programme

Cet enregistrement indique qu'un nouveau programme dans le même fichier source est en cours de compilation. Il est utilisé lorsqu'un fichier contient plusieurs programmes. Nous supposons que la ligne source développée démarre à 1 lorsque cet enregistrement est écrit. Il est inutile d'indiquer le premier programme dans le fichier.

Remarque : Tous les enregistrements ERROR d'un programme doivent suivre l'enregistrement PROGRAM de ce programme et précéder tous les enregistrements PROGRAM des autres programmes.

L'enregistrement d'un programme est défini comme suit :

**––– PROGRAM ––– version ––– ligne –––*|

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
ligne
Emplacement dans le fichier que ce programme démarre.

Enregistrement de la définition d'une mappe

Cet enregistrement indique qu'une macro est en cours de définition. Il est utilisé pour permettre d'afficher les erreurs dans une définition de macro au lieu de l'emplacement où la macro est utilisée.

L'enregistrement de la définition d'une mappe est défini comme suit :

**––– MAPDEFINE ––– version ––– id-macro ––– ligne ––– longueur ––– nom-macro –––*|

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
id-macro
Entier représentant cette définition de macro. Il doit être incrémenté de façon séquentielle dans un fichier spécifique.
ligne
Ligne physique dans le fichier en cours où la définition de macro démarre.
longueur
Longueur du nom de la macro.
nom-macro
Nom de la macro en cours de définition.

Enregistrement du début d'une mappe

Cet enregistrement indique qu'une extension source est en cours de démarrage. Il est utilisé là où tout remplacement de texte est effectué.

L'enregistrement du début d'une mappe est défini comme suit :

**––– MAPSTART ––– version ––– id-macro ––– ligne –––*|

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
id-macro
Identificateur d'une macro spécifiée dans un enregistrement de la définition d'une mappe.
ligne
Ligne physique dans le fichier en cours où l'extension (par exemple, l'appel de la macro) commence.

Enregistrement de la fin d'une mappe

Cet enregistrement indique que l'extension source est terminée. Il est utilisé à la fin d'un remplacement de texte pour indiquer le nombre de lignes créées.

L'enregistrement de la fin d'une mappe est défini comme suit :

**––– MAPEND ––– version ––– id-macro ––– ligne ––– extension –––*|

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
id-macro
Identificateur d'une macro spécifiée dans un enregistrement de la définition d'une mappe.
ligne
Ligne physique dans le fichier en cours où l'extension (par exemple, l'appel de la macro) commence.
extension
Nombre de lignes résultant de cette extension de macro (extensions emboîtées incluses).

Enregistrement d'un code retour

Cet enregistrement contient le code retour et le code raison au point où la compilation s'est arrêtée.

L'enregistrement du code retour est défini comme suit :

**––– FEEDBACK ––– version ––– code-retour ––– code-raison –––*|

version
Révision de cet enregistrement, utilisée pour la compatibilité ascendante. La version actuelle est "1".
code-retour
Code retour renvoyé par le processeur.
code-raison
Code raison renvoyé par le processeur.