Valores de error de E/S

La tabla siguiente describe los valores de error EGL para las operaciones de entrada/salida (E/S) que afectan a bases de datos, archivos y colas de mensajes MQSeries. Los valores asociados con errores graves están a disposición del código sólo si la variable de sistema VGVar.handleHardIOErrors se ha establecido en 1, según se describe en el apartado Manejo de excepciones.

Valor de error Tipo de error Tipo de registro Significado del valor de error
deadLock Grave SQL Dos instancias de programa están intentado cambiar un registro, pero ninguna de ellas puede hacerlo sin la intervención del sistema. Si está accediendo a una tabla SQL en DB2, el punto muerto indica que el valor de sqlcode es -911.
duplicate Leve Indexado o relativo El código ha intentado acceder a un registro con una clave que ya existe, y el intento ha sido satisfactorio. Para obtener detalles, consulte duplicate.
endOfFile Leve Indexado, relativo, serie Para obtener detalles, consulte endOfFile.
ioError Grave o leve Cualquiera EGL ha recibido un código de retorno no cero de la operación de E/S.
format Grave Cualquiera El archivo al que se ha accedido es incompatible con la definición de registro. Para obtener detalles, consulte format.
fileNotAvailable Grave Cualquiera El valor fileNotAvailable es posible para cualquier operación de E/S y puede indicar, por ejemplo, que otro programa está utilizando el archivo o que los recursos necesarios para acceder al archivo son insuficientes.
fileNotFound Grave Indexado, cola de mensajes, relativo, serie No se ha encontrado un archivo.
full Grave Indexado, relativo, serie El valor full se establece en estos casos:
  • Un archivo indexado o serie está lleno
  • Un registro indexado o relativo se implementa como cola de almacenamiento temporal CICS, y una operación de adición intenta insertar una clave mayor que 32767 bytes
hardIOError Grave Cualquiera Se ha producido un error grave, que puede ser cualquiera excepto endOfFile, noRecordFound o duplicate.
noRecordFound Leve Cualquiera Para obtener detalles, consulte noRecordFound.
unique Grave Indexado, relativo o SQL UNQ indica exclusivo: el código ha intentado añadir o sustituir un registro con una clave que ya existe, y el intento ha fallado. Para obtener detalles, consulte unique.

duplicate

Para un registro indexado o relativo, duplicate se establece en estos casos:
  • Una sentencia add intenta insertar un registro cuya clave o ID de registro ya existe en el archivo o en un índice alternativo, y la inserción es satisfactoria.
  • Una sentencia replace sobreescribe un registro satisfactoriamente, y los valores de sustitución incluyen una clave que es la misma que la clave de índice alternativo de otro registro.
  • Una sentencia get, get next o get previous lee un registro satisfactoriamente (o una sentencia set del formato set record position se ejecuta satisfactoriamente) y un segundo registro tiene la misma clave.

El valor duplicate sólo se devuelve si el método de acceso devuelve la información, al igual que en algunos sistemas operativos, pero no en todos. La opción no está disponible durante durante el acceso a bases de datos SQL.

Si va a acceder a un archivo VSAM emulado desde un programa COBOL generado por EGL en iSeries, consulte Elementos de asociación para obtener una descripción de la propiedad duplicates en el componente de asociaciones de recursos que se utiliza en el momento de la generación.

endOfFile

endOfFile se establece en estas condiciones:
  • El código emite una sentencia get next para un registro serie o relativo cuando el puntero del archivo relacionado está al final del archivo. El puntero está al final cuando una sentencia get o get next anterior ha accedido al último registro del archivo.
  • El código emite una sentencia get next para un registro indexado cuando el puntero del archivo relacionado está al final del archivo, como ocurre en estas situaciones:
    • Una sentencia get o get next anterior ha accedido al último registro del archivo; o
    • Una sentencia set de tipo set record position anterior ha accedido al último registro del archivo mientras se producía una de las siguientes situaciones:
      • El valor de clave coincidía con la clave del último registro del archivo; o
      • Todos los bytes del valor de clave estaban establecidos en FF hexadecimal. (Si una sentencia set de tipo set record position se ejecuta con un valor de clave establecido en FF hexadecimal, la sentencia establece la posición del puntero al final del archivo).
  • El código emite una sentencia get previous para un registro indexado cuando el puntero del archivo relacionado está al principio del archivo, como ocurre en estas situaciones:
    • Una sentencia get o get previous anterior ha accedido al primer registro del archivo;
    • El código no ha accedido anteriormente al mismo archivo; o
    • Una sentencia set de tipo set record position se ha ejecutado con una clave cuando en el archivo no había claves anteriores a esa clave.
  • Una sentencia get next intenta recuperar datos de un archivo vacío o no inicializado en un registro indexado.

    (Un archivo vacío es aquél del que se han suprimido todos los registros. Un archivo no inicializado es aquél al que nunca se han añadido registros).

  • Una sentencia get previous intenta recuperar datos de un archivo vacío o no inicializado en un registro indexado.
  • En relación a la generación COBOL, una sentencia get previous intenta recuperar datos de un archivo no inicializado en un registro indexado.

format

format puede resultar de cualquier tipo de operación de E/S y puede establecerse por las siguientes razones, entre otras:
  • Formato de registro

    El formato de archivo (longitud fija o variable) es diferente del formato de registro EGL.

  • Longitud de registro

    En relación a los registros de longitud fija, la longitud de un registro del archivo es diferente de la longitud del registro EGL. En relación a los registros de longitud variable, la longitud de un registro del archivo es mayor que la longitud del registro EGL.

  • Tipo de archivo

    El tipo de archivo especificado para el registro no coincide con el tipo de archivo durante la ejecución.

  • Longitud de clave

    La longitud de clave del archivo es diferente de la longitud de clave del registro indexado EGL.

  • Desplazamiento de clave

    La posición de la clave en el archivo es diferente de la posición de la clave en el registro indexado EGL.

noRecordFound

noRecordFound se establece en estas condiciones:
  • Para un registro indexado, no se encuentra ningún registro que coincida con la clave especificada en una sentencia get. Como alternativa, en CICS, una sentencia get next o get previous intenta recuperar datos de un archivo VSAM vacío en un registro indexado.
  • Para Java generado por EGL, el código emite una sentencia get next o get previous para un registro indexado cuando el archivo VSAM está vacío o no se ha iniciado.
  • Para un registro relativo, no se encuentra ningún registro que coincida con el ID de registro especificado en una sentencia get. Como alternativa, una sentencia get next intenta acceder a un registro que está más allá del final del archivo.
  • Para un registro SQL, no se encuentra ninguna fila que coincida con la sentencia SELECT especificada, o se produce una sentencia get next cuando no quedan filas seleccionadas para revisar.

unique

Para un registro indexado o relativo, unique se establece en estos casos:
  • Una sentencia add intenta insertar un registro cuya clave o ID de registro ya existe en el archivo o en un índice alternativo, y la inserción falla debido a la duplicación.
  • Una sentencia replace no puede sobreescribir un registro debido a que los valores de sustitución incluyen una clave que es la misma que la clave de índice alternativo de otro registro.

El valor unique sólo se devuelve si el método de acceso devuelve la información, al igual que en algunos sistemas operativos, pero no en todos.

Durante el acceso a bases de datos SQL, unique se establece cuando un fila SQL que se añade o sustituye tiene una clave que ya existe en un índice exclusivo. El sqlcode correspondiente es -803.

Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.