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.
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.