CICS - LEER

El comando READ lee datos de un archivo usando la clave principal. A continuación se muestra la sintaxis del comando READ:

Sintaxis

EXEC CICS READ
   FILE('name')
   INTO(data-area)
   RIDFLD(data-area)
   LENGTH(data-value)
   KEYLENGTH(data-value)
END-EXEC.

La siguiente tabla enumera los parámetros utilizados en el comando READ:

No Señor Descripción de parámetros
1

FILE

Nombre de archivo es el nombre del archivo que queremos leer. Este es el nombre de archivo simbólico de CICS que identifica la entrada FCT para el archivo. Los nombres de archivo pueden tener hasta 8 caracteres y deben ir entre comillas si son literales.

2

INTO

El área de datos es la variable en la que se leerá el registro, generalmente una estructura en el almacenamiento de trabajo. El INTO es necesario para los usos del comando READ.

3

RIDFLD

Tiene el nombre del área de datos que contiene la clave del registro que queremos leer.

4

LENGTH

Especifica el número máximo de caracteres que se pueden leer en el área de datos especificada. Debe ser un valor binario de media palabra (PIC S9 (4) COMP). Una vez que se completa el comando READ, CICS reemplaza el valor máximo que especificamos con la longitud real del registro. Por esta razón, debemos especificar LENGTH como el nombre de un área de datos en lugar de un literal y debemos reinicializar esta área de datos si la usamos para LENGTH más de una vez en el programa. Un registro más largo generará una condición de error.

5

KEYLENGTH

Especifica la longitud de la clave.

Ejemplo

El siguiente ejemplo muestra cómo leer un registro del archivo 'FL001' donde Student-id es la clave principal:

IDENTIFICATION DIVISION.                                         
PROGRAM-ID. HELLO.                                               
DATA DIVISION. 
WORKING-STORAGE SECTION.
01 WS-STD-REC-LEN    PIC S9(4) COMP.
01 WS-STD-KEY-LEN    PIC S9(4) COMP.
01 WS-STD-REC-KEY    PIC 9(3).
01 WS-STD-REC        PIC X(70).
PROCEDURE DIVISION.
MOVE +70           TO WS-STD-REC-LEN.
MOVE ‘100’         TO WS-STD-REC-KEY.
MOVE 3             TO WS-STD-KEY-LEN.
EXEC CICS READ
   FILE ('FL001')
   INTO (WS-STD-REC)
   LENGTH (WS-STD-REC-LEN)
   RIDFLD (WS-STD-REC-KEY)
   KEYLENGTH (WS-STD-KEY-LEN)
END-EXEC.

Leer opciones de comando

Las siguientes opciones se pueden usar con el comando READ:

  • GENERIC- Se utiliza cuando no conocemos el valor de la clave completo. Por ejemplo, queremos un registro cuya clave principal comience con '10' y el resto de la clave puede ser cualquier cosa. Aunque la longitud de la clave es de 3 caracteres, solo mencionamos 2. Es importante mencionar la longitud de la clave que da la longitud para la que necesita hacer la coincidencia. Se recogerá el primer registro que cumpla con los criterios.

  • UPDATE- Especifica que pretendemos actualizar el registro en la transacción actual. Especificar ACTUALIZAR le da a su transacción el control exclusivo del registro solicitado. Debe usarse cuando queramos reescribir el registro.

  • EQUAL - Especifica que solo queremos el registro cuya clave coincida exactamente con lo especificado por RIDFLD.

  • GTEQ - Especifica que queremos el primer registro cuya clave sea mayor o igual a la clave especificada.

EXEC CICS READ
   FILE('name')
   INTO(data-area)
   RIDFLD(data-area)
   LENGTH(data-value)
   KEYLENGTH(data-value)
   GENERIC
   UPDATE
   EQUAL
   GTEQ
END-EXEC.

Leer excepciones de comandos

La siguiente tabla muestra la lista de excepciones que surgen durante la instrucción READ:

No Señor Excepción y descripción
1

NOTOPEN

El archivo no está abierto.

2

NOTFND

El registro que se está buscando no existe en el conjunto de datos.

3

FILENOTFOUND

La entrada de archivos no se realiza en FCT.

4

LENGERR

Discrepancia entre la longitud especificada en el comando y la longitud real del registro.

5

NOTAUTH

Si el usuario no tiene suficientes permisos para usar el archivo.

6

DUPKEY

Si más de 1 registro satisfacen la condición de la clave alternativa.