Si el recurso es recuperable (como en el caso de una base de datos SQL), la opción forUpdate bloquea el registro de forma que otros programas no puedean cambiarlo hasta que se produzca un compromiso. Encontrará los detalles sobre el proceso de compromiso en Unidad lógica de trabajo.
A continuación se ofrece un ejemplo de acceso a archivo:
try open record1 forUpdate; onException myErrorHandler(8); return; end try get next record1; onException myErrorHandler(12); return; end while (record1 not endOfFile) makeChanges(record1); // procesar el registro try replace record1; onException myErrorHandler(16); return; end try get next record1; onException myErrorHandler(12); return; end end // fin de while sysLib.commit();
Los detalles de la sentencia get next dependen del tipo de registro. Para obtener detalles acerca del proceso SQL, consulte el tema Proceso SQL.
1, 2, 2, 2, 3, 4
Cada una de las tablas siguientes ilustra el resultado de la ejecución de una secuencia de sentencias EGL en el mismo registro indexado.
Las dos tablas que siguen hacen referencia al código COBOL generado por EGL.
Sentencia EGL (por orden) | Clave del registro indexado | Clave del registro de archivo recuperada por la sentencia | Valor de error EGL para COBOL |
---|---|---|---|
get | 2 | 2 (la primera de tres) | duplicate |
get next | cualquiera | 3 | -- |
Sentencia EGL (por orden) | Clave del registro indexado | Clave del registro de archivo recuperada por la sentencia | Valor de error EGL para COBOL |
---|---|---|---|
set (en el formato set record position) | 2 | sin recuperación | duplicate |
get next | cualquiera | 2 (la primera de tres) | duplicate |
get next | cualquiera | 2 (la segunda) | duplicate |
get next | cualquiera | 2 (la tercera) | -- |
get next | cualquiera | 3 | -- |
Las dos tablas que siguen hacen referencia al código Java generado por EGL.
Sentencia EGL (por orden) | Clave del registro indexado | Clave del registro de archivo recuperada por la sentencia | Valor de error EGL para Java |
---|---|---|---|
get | 2 | 2 (la primera de tres) | duplicate |
get next | cualquiera | 2 (la segunda) | duplicate |
get next | cualquiera | 2 (la tercera) | -- |
get next | cualquiera | 3 | -- |
Sentencia EGL (por orden) | Clave del registro indexado | Clave del registro de archivo recuperada por la sentencia | Valor de error EGL para Java |
---|---|---|---|
set (en el formato set record position) | 2 | sin recuperación | duplicate |
get next | cualquiera | 2 (la primera de tres) | -- |
get next | cualquiera | 2 (la segunda) | duplicate |
get next | cualquiera | 2 (la tercera) | -- |
get next | cualquiera | 3 | -- |
Cuando una sentencia get next opera en un registro MQ, el primer registro de la cola se lee en el registro MQ. Esta colocación se produce debido a que la sentencia get next invoca una o varias llamadas MQSeries:
En CICS para z/OS, un solo programa no puede incluir una combinación de las sentencias add y get next para el mismo archivo de spool. Esta restricción también se aplica cuando las sentencias get next y add se encuentran en programas diferentes, y un programa llama al otro.
Una sentencia SQL FETCH representa la sentencia EGL get next en el código generado. El formato de la sentencia SQL generada no puede cambiarse, excepto para establecer la cláusula INTO.
Finalmente, al especificar SQL COMMIT o sysLib.commit, el código conserva la posición en el cursor declarado en la sentencia open, pero sólo en caso de que utilice la opción hold en la sentencia open.
Conceptos relacionados
Soporte de bases de datos DL/I
Tipos de registros y propiedades
resultSetID
Soporte de SQL
Tareas relacionadas
Diagrama de sintaxis para sentencias y mandatos EGL
Consulta relacionada
Directiva #dli
add
Consideraciones relacionadas con CICS
close
delete
Manejo de excepciones
execute
get
get next inParent
get previous
Valores de error de E/S
Sentencias EGL
open
prepare
replace
set