Formato del archivo de eventos

El archivo de eventos contiene información que permite al editor localizar en el archivo fuente los símbolos o líneas que han provocado la emisión de un mensaje, y relacionar los mensajes que hacen referencia a código fuente ampliado con la posición correspondiente en un archivo fuente determinado. El archivo de eventos está destinado a suministrar información legible por máquina que resulta de utilidad para determinados tipos de herramientas. El archivo de listado del procesador, en cambio, está destinado a suministrar información legible por los usuarios. Dado que el archivo de eventos tiene un formato común en todos los procesadores, las herramientas no tendrán que escribir código específico del procesador para obtener la información necesaria.

El archivo de eventos se produce secuencialmente. Cada procesador le añade simplemente registros nuevos. Cuando se produce un evento importante, se escribe un registro en el archivo de eventos.

Actualmente, están definidos los siguientes tipos de registros:
  • Registro de indicación de la hora
  • Registro de procesador
  • Registro de ID de archivo
  • Registro de fin de archivo
  • Registro de información de error
  • Registro de programa
  • Registro de definición de correlación
  • Registro de inicio de correlación
  • Registro de fin de correlación
  • Registro de código de información de retorno

Puesto que este archivo incluirá diversos tipos de registros, la primera palabra de cada registro identificará el tipo de registro. En los diagramas de sintaxis, cada símbolo debe estar separado por una línea en blanco exactamente.

Registro de indicación de la hora

Este registro indica cuándo se ha creado el archivo de eventos y permite a una aplicación determinar si el archivo de eventos está actualizado (si la indicación de la hora es más antigua que un archivo indicado en un registro de ID de archivo, el archivo de eventos puede ser incorrecto para dicho archivo). Este es siempre el primer registro del archivo de eventos.

Nota: Este registro no lo escribe un procesador; lo escribe el llamante del primer procesador. Esto permite que cada procesador efectúe adiciones al archivo de eventos sin necesidad de determinar si el archivo existe.

El registro se define del siguiente modo:

**–––
TIMESTAMP ––– versión ––– indicación de la hora ––––*|

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
indicación de la hora
La fecha y hora de creación del archivo de eventos en el formato aaaammddhhmmss.

Registro de procesador

Este registro indica que se ha invocado un procesador nuevo. Siempre habrá un registro de este tipo a continuación del registro de indicación de la hora en el archivo de eventos (aunque puede haber más de uno).

El registro de procesador se define del siguiente modo:

**–––
PROCESSOR ––– versión ––– ID-salida ––– clase-línea –––*|

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
ID-salida
El ID de archivo de un archivo de salida producido por este procesador. Si la salida de este procesador debe utilizarse como entrada de otro procesador, este ID de archivo representa dicho archivo, y este registro irá seguido del registro de ID del archivo. Si este es el último procesador que se invocará para el que se espera que el editor visualice mensajes, el ID de archivo será 0.
clase-línea
Método utilizado para numerar las líneas. Especifique cero si se utiliza un archivo temporal o externo que contiene una representación de código fuente ampliado; el número de línea representa el número de línea en el código fuente ampliado. Especifique uno si el número de línea representa el número de línea física en el archivo fuente indicado en el campo ID de archivo fuente.
Nota: Si la salida de un procesador está destinada a utilizarse como entrada de otro procesador, el registro FILEID de la salida debe contener un nombre, aunque la salida no se coloque en un archivo real. Este mismo nombre debe utilizarse como entrada del registro FILEID del procesador que utiliza la salida.

Registro de ID de archivo

Este registro contiene el nombre completo del archivo fuente procesador y asocia un entero al nombre de archivo. Debe haber un registro de este tipo de cada archivo fuente procesado (el archivo fuente principal, así como las unidades fuente incluidas (miembros copylib) y macros).

Nota: Si un archivo se incluye varias veces durante el proceso, debe escribirse un ID de archivo para cada inclusión.

El registro de ID de archivo se define del siguiente modo:

**–––
FILEID ––– versión ––– ID-fuente ––– línea ––– longitud ––––*
 *––– nombre-archivo ––– indicación de la hora de archivo fuente –––
indicador temp ––*|

Si el registro de ID de archivo sobrepasa la longitud permitida por la longitud de registro del archivo de eventos (lo que puede ocurrir al compilar archivos IFS), el registro de ID de archivo irá seguido de uno o varios registros continuados de ID de archivo con el formato siguiente:

**–––
FILEIDCONT ––– versión ––– ID-fuente ––– línea ––– longitud ––––*
 *––– nombre-archivo ––– indicación de la hora de archivo fuente ––– indicador temp
––*|

Por ejemplo:

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

Debe utilizarse siempre la longitud para determinar el nombre de archivo, ya que los nombres de archivo IFS pueden contener espacios, como se muestra en el ejemplo anterior.

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
ID_fuente
Identificador de archivo expresado como un entero que debe utilizarse en lugar del nombre de archivo para correlacionar un registro de error con el archivo fuente en el que se ha producido, sin necesidad de utilizar el nombre de archivo basado en caracteres. Utilice cero si el archivo de entrada no se conoce, como en el caso de una entrada procedente de una salida del usuario.
línea
Número de línea del archivo en la que se hace referencia a un archivo nuevo, o cero si no se ha hecho referencia al archivo desde un archivo.
longitud
Longitud del nombre de archivo; la longitud máxima es de 255. En un registro FILEIDCONT, la longitud es siempre cero, ya que sólo la determina el registro de ID de archivo.
nombre-archivo
Debe ser un nombre de archivo físico totalmente calificado. Si no existe ninguno (por ejemplo, al obtener texto del usuario) o no puede determinarse el nombre, indique una serie nula.

El nombre puede incluir nombre-servidor.

indicación de la hora de archivo fuente
Indicación de la hora del archivo fuente.
indicador temp
Este campo se establece en 1 para indicar que el fuente es un archivo temporal; de lo contrario, se establece en 0Un archivo fuente temporal sólo puede abrirse en modalidad de examen. Actualmente, el indicador temp se utiliza para hacer referencia a la salida generada por un preprocesador SQL.

Registro de fin de archivo

Este registro indica que un archivo incluido está finalizando. Proporciona un método para determinar la anidación de archivos de inclusión a fin de que un programa pueda navegar en sentido ascendente por la cadena de inclusión. Esto resulta de utilidad cuando el archivo incluido no contiene información suficiente para determinar la causa del error.

El registro de fin de archivo se define del siguiente modo:

**––– FILEEND ––– versión
––– ID-archivo ––– expansión –––*|

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
ID-archivo
El ID de archivo de este archivo.
expansión
Número de líneas del fuente ampliado en este archivo, incluidas las inclusiones anidadas y las ampliaciones de macros.
Nota: Cada ID de archivo debe tener un registro de fin de archivo correspondiente, excepto en el caso del ID de archivo que sigue al registro de procesador para definir el archivo de salida.

Registro de información de error

Un registro de este tipo contiene la información necesaria para localizar un símbolo o línea que ha provocado un mensaje en el archivo fuente, así como información suficiente para permitir la visualización del mensaje propiamente dicho. Esta información incluye información de ubicación (como por ejemplo el archivo y la línea en los que se ha producido el error) e información relacionada con el error en sí (como por ejemplo el número, texto y gravedad del mensaje).

El registro de información de error se define del siguiente modo:

**––– ERROR
––– versión ––– ID-archivo ––– clase-anot –––*
 *––– línea-sentencia ––– línea-err-inicial ––– inicio-símbolo –––
línea-err-final ––– fin-símbolo –––*
 *––– ID-msj ––– car-gravedad ––– núm-gravedad ––– longitud ––– msj
–––*|

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
ID-archivo
El número de ID de archivo del archivo fuente que contiene este error.
clase-anot
Indica la posición de un listado de mensajes en la que debe colocarse este mensaje cuando se cargue el archivo de eventos en la ventana Lista de errores. Las posiciones se definen del siguiente modo:
0
Principio de la lista. Se utiliza generalmente para mensajes muy importantes que no están realmente asociados con una línea específica de un archivo. El orden de clasificación de varias instancias de mensajes de este tipo no está definido. Dado que generalmente no hay texto asociado a este tipo de error, no puede localizarse en la ventana de edición.
1
Parte media de la lista. Se utiliza generalmente para mensajes asociados a un sola línea o símbolo. Varios mensajes de este tipo se ordenan según el número de línea y columna.
2
Final de la lista. Se utiliza generalmente para mensajes poco importantes que no están realmente asociados con una línea específica de un archivo. El orden de clasificación de varias instancias de mensajes de este tipo no está definido. Dado que generalmente no hay texto asociado a este tipo de error, no puede localizarse en la ventana de edición.
línea-sentencia
Número de línea (del archivo fuente asociado con el número de ID de archivo fuente anterior) de la primera línea de la sentencia que contiene el error. Es necesaria en caso de que el error no se produzca en la primera línea de la sentencia. Este número se interpreta mediante el campo clase-línea.
línea-err-inicial
Número de línea (del archivo fuente asociado con el número de ID de archivo fuente anterior) que contiene el inicio del error. Este número se interpreta mediante el campo clase-línea.
inicio-símbolo
Columna (o carácter de la línea) del principio del símbolo que contiene el error. Si esta información no está disponible, un cero en este campo provocará que toda la línea se marque como errónea.
línea-err-final
Número de línea (del archivo fuente asociado con el número de ID de archivo fuente anterior) que contiene el fin del error. Este número se interpreta mediante el campo clase-línea.
fin-símbolo
Columna (o carácter de la línea) del final del símbolo que contiene el error. Si esta información no está disponible, un cero en este campo provocará que toda la línea se marque como errónea.
ID-msj
ID de mensaje (por ejemplo, AMPX999).
car-gravedad
Letra del código de gravedad (I, W, E, S o T).
núm-gravedad
Número del nivel de gravedad. En algunos sistemas, se trata del código de retorno asociado con la letra del código de gravedad (por ejemplo, I=0, W=4, E=8, S=12, T=16).
longitud
La longitud real del texto del mensaje (el campo siguiente). La longitud máxima es 1024 bytes.
msj
El texto del mensaje de error. Cualquier sustitución de campos debe haberse realizado con anterioridad.
Nota: Los errores que abarcan varios archivos pueden no estar indicados adecuadamente, ya que el registro de error sólo permite especificar un ID de archivo.

Registro de programa

Este registro indica que se está compilando un programa nuevo en el mismo archivo fuente. Se utiliza cuando un archivo contiene varios programas. Se presupone que la línea de fuente ampliado empieza en 1 cuando se escribe este registro. No es necesario indicar el primer programa del archivo.

Nota: Todos los registros ERROR de un programa deben ir después del registro PROGRAM de ese programa y antes de los registros PROGRAM de otros programas.

El registro de programa se define del siguiente modo:

**–––
PROGRAM ––– versión ––– línea –––*|

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
línea
La posición del archivo en la que se inicia este programa.

Registro de definición de correlación

Este registro indica que se está definiendo una macro. Se utiliza para permitir que los errores se reflejen en una definición de macro en lugar de en la ubicación en la que se utiliza la macro.

El registro de definición de correlación se define del siguiente modo:

**––– MAPDEFINE ––– versión ––– ID-macro ––– línea –––
longitud ––– nombre-macro –––*|

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
ID-macro
Entero que representa esta definición de macro. Debe incrementarse secuencialmente dentro de un archivo específico.
línea
Línea física del archivo actual en la que se inicia la definición de macro.
longitud
Longitud del nombre de macro.
nombre-macro
El nombre de la macro que se define.

Registro de inicio de correlación

Este registro indica que se está iniciando la ampliación de código fuente. Se utiliza al realizar sustitución textual.

El registro de inicio de correlación se define del siguiente modo:

**––– MAPSTART ––– versión ––– ID-macro ––– línea
–––*|

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
ID-macro
Identificador de una macro especificada en un registro de definición de correlación.
línea
Línea física del archivo actual en la que se inicia la ampliación (por ejemplo, invocación de macro).

Registro de fin de correlación

Este registro indica que la ampliación de código fuente ha finalizado. Se utiliza al final de una sustitución textual para mostrar cuántas líneas se han creado.

El registro de fin de correlación se define del siguiente modo:

**––– MAPEND –––
versión ––– ID-macro ––– línea ––– expansión –––*|

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
ID-macro
Identificador de una macro especificada en un registro de definición de correlación.
línea
Línea física del archivo actual en la que se inicia la ampliación (por ejemplo, invocación de macro).
expansión
Número de líneas resultantes de esta ampliación de macro, incluidas las ampliaciones anidadas.

Registro de código de información de retorno

Este registro contiene el código de retorno y el código de razón en el punto en el que la compilación se ha detenido.

El registro de código de información de retorno se define del siguiente modo:

**––– FEEDBACK ––– versión ––– código-retorno –––
código-razón –––*|

versión
La revisión de este registro, utilizada para la compatibilidad con versiones posteriores. La versión actual es "1".
código-retorno
Código de retorno devuelto por el procesador.
código-razón
Código de razón devuelto por el procesador.