DELAY

Retrasa el procesamiento de una tarea.

Sintaxis

DELAY

Leer el diagrama sintácticoSaltar diagrama de sintaxis visualDELAYINTERVAL( 0)INTERVAL( hhmmss)TIME( hhmmss)FORHOURS( Valor-datos)MINUTES( Valor-datos)SECONDS( Valor-datos)MILLISECS( Valor-datos)UNTILHOURS( Valor-datos)MINUTES( Valor-datos)SECONDS( Valor-datos)REQID( nombre)

Condiciones: EXPIRADO, INVREQ, NORMAL

Este comando es threadsafe sólo cuando el intervalo es 0.

NOHANDLE, RESP, y RESP2 son opciones comunes que se pueden añadir a todos los comandos EXEC CICS para procesar condiciones de error. No se incluyen explícitamente en el diagrama de sintaxis del comando ni en las descripciones de las opciones. Para obtener información sobre estas opciones comunes y la sintaxis del comando EXEC CICS, consulte EXEC CICS formato de comando y consideraciones de programación.

Nota para el enrutamiento dinámico de transacciones: El uso de DELAY con REQID si después se CANCELA podría crear afinidades entre transacciones que afecten negativamente al uso del enrutamiento dinámico de transacciones. Consulte Afinidad para obtener más información sobre las afinidades de transacción.

Descripción

DELAY suspende el procesamiento de la tarea emisora durante un intervalo de tiempo especificado o hasta una hora del día especificada. Sustituye a cualquier comando POST iniciado previamente para la tarea.

Es posible especificar intervalos en milisegundos (ms); sin embargo, CICS® comprueba el vencimiento del retardo cada 250 ms. Por lo tanto, el intervalo real podría variar dependiendo de en qué parte del ciclo de exploración se realice su solicitud.

El valor por defecto es INTERVALO(0); pero para C®, el valor por defecto es POR HORAS(0) MINUTOS(0) SEGUNDOS(0).

Opciones

FOR
Especifica la duración del retraso.
HORAS(valor-datos)
Especifica un valor binario de palabra completa en el rango 0-99.
INTERVALO(hhmmss)
Especifica, en formato decimal empaquetado, el intervalo de tiempo que debe transcurrir desde el momento en que se emite el comando RETRASO. El mm y el ss están en el rango 0-59. La hora especificada se añade a la hora actual del reloj por CICS cuando se ejecuta el comando para calcular la hora de caducidad.

Cuando se utiliza el lenguaje C, se recomienda utilizar las opciones FOR/UNTIL HORAS, MINUTOS y SEGUNDOS, ya que C no proporciona un tipo de datos decimal empaquetado. Puede utilizar INTERVAL, pero si el valor especificado es no una constante entera, la aplicación es responsable de asegurar que el valor pasado a CICS está en formato decimal empaquetado.

MILLISECS(valor-datos)
Especifica un valor binario de palabra completa en el rango 0-999, cuando también se especifican HORAS, MINUTOS o SEGUNDOS, o 0-359999999 cuando MILLISECS es la única opción especificada.
Nota: CICS trata los periodos de retardo inferiores a 50 milisegundos como si el tiempo hubiera expirado inmediatamente.
MINUTOS(valor-datos)
Especifica un valor binario de palabra completa en el rango 0-59, cuando también se especifican HORAS, SEGUNDOS o MILLISEGUNDOS, o 0-5999 cuando MINUTOS es la única opción especificada.
REQID(nombre)
Especifica un nombre (1-8 caracteres), que debe ser único, para identificar la petición DELAY.

Para permitir que otra transacción cancele la solicitud de RETRASO, utilice esta opción para especificar un nombre definido por la aplicación.

Para permitir que otras tareas cancelen solicitudes DELAY no caducadas, debe hacer que el identificador de la solicitud esté disponible dinámicamente. Por ejemplo, almacenarla en una cola TS, cuyo nombre es conocido por otras aplicaciones que pueden querer cancelar la petición DELAY, es una forma de pasar un identificador de petición a otras transacciones.

Si la tarea se completó normalmente, para saber si la solicitud DELAY expiró normalmente o fue cancelada por un comando EXEC CICS CANCEL REQID, debe probar EIBRESP2 para 23 cuando el control vuelva a la aplicación.

SECONDS(valor-datos)
Especifica un valor binario de palabra completa en el rango 0-59, cuando también se especifican HORAS, MINUTOS o MILLISEGUNDOS, o 0-359 999 cuando SECUNDOS es la única opción especificada.
HORA (hhmmss )
Especifica, en formato decimal empaquetado, la hora a la que la tarea debe reanudar el procesamiento.

Cuando se utiliza el lenguaje C, se recomienda utilizar las opciones FOR/UNTIL HORAS, MINUTOS y SEGUNDOS, ya que C no proporciona un tipo de datos decimal empaquetado. Puede utilizar TIME, pero si el valor especificado es no una constante entera, la aplicación es responsable de garantizar que el valor pasado a CICS está en formato decimal empaquetado. Consulte la sección sobre tiempos de expiración en Control de intervalos.

Hasta
Especifica el tiempo al final del retraso y cuando la tarea debe reanudar el procesamiento.

Condiciones

0 NORMAL
Valores de RESP2:
23
Indica que la solicitud DELAY fue cancelada por otra tarea que emitió un comando CANCEL REQID especificando el identificador único utilizado por esta tarea.
31 EXPIRADO
Se produce si el tiempo especificado ya ha expirado cuando se emite el comando. Si especifica intervalos muy cortos, inferiores a 250 ms, es probable que el tiempo haya transcurrido antes de que se emita la orden. Deberá utilizar un tratamiento de excepciones si se solicitan intervalos de retardo cortos.

Acción por defecto: ignorar la condición.

16 INVREQ
Valores de RESP2:
4
Las horas están fuera de rango.
5
Los minutos están fuera de rango.
6
Los segundos están fuera de alcance.
22
Los milisegundos están fuera de rango.

También se produce (RESP2 no establecido) si el comando DELAY no es válido para ser procesado por CICS.

Acción por defecto: terminar la tarea anormalmente.

Ejemplos

El siguiente ejemplo muestra cómo suspender el procesamiento de una tarea durante cinco minutos:
EXEC CICS DELAY
     INTERVAL(500)
     REQID('GXLBZQMR')
EXEC CICS DELAY FOR MINUTES(5)
El siguiente ejemplo muestra cómo, a las 09:00, suspender el procesamiento de una tarea hasta las 12:45:
EXEC CICS DELAY
     TIME(124500)
     REQID('UNIQCODE')
Hay dos formas de introducir el tiempo en HASTA.
  • Una combinación de al menos dos de HORAS(0-99), MINUTOS(0-59) y SEGUNDOS(0-59). HORAS(1) SEGUNDOS(3) significaría una hora y tres segundos (los minutos se ponen a cero por defecto).
  • Cualquiera de HORAS(0-99), MINUTOS(0-5999) o SEGUNDOS(0-359 999). HORAS(1) significa una hora. MINUTOS(62) significa una hora y dos minutos. SEGUNDOS(3723) significa una hora, dos minutos y tres segundos.

En FOR puede introducir el tiempo de las dos formas que se aplican a UNTIL y además puede especificar un retardo que incluya milisegundos o especificar el retardo completamente en milisegundos. Para especificar fracciones de segundo en un retardo, codifique el parámetro MILLISECS en el rango 0-999 además de otras unidades de tiempo. Para especificar el retardo puramente en milisegundos, codifique el parámetro MILLISECS en el rango 0-359999999. El siguiente ejemplo muestra cómo suspender el procesamiento de una tarea durante 15000 milisegundos:

EXEC CICS DELAY
     FOR MILLISECS(15000)
     REQID('UNIQCODE')