Condições: EXPIRED, INVREQ
Este comando é thread-safe apenas quando o intervalo é 0.
Nota para roteamento de transação dinâmica : Usar DELAY com REQID se CANCELADO posteriormente pode criar afinidades entre transações que afetam adversamente o uso de roteamento de transação dinâmica. Consulte Afinidade para obter mais informações sobre afinidades de transação.
Descrição:
DELAY suspende o processamento da tarefa de emissão por um intervalo de tempo especificado ou até uma hora do dia especificada. Ele substitui qualquer comando POST iniciado anteriormente para a tarefa.
É possível especificar intervalos em milissegundos (ms), no entanto, o CICS verifica a expiração do atraso a cada 250 ms, portanto, o intervalo real pode variar dependendo de onde no ciclo de varredura sua solicitação é feita.
O padrão é INTERVAL (0), mas para C o padrão é POR HORAS (0) MINUTOS (0) SEGUNDOS (0).
Opções:
FOR
especifica a duração do atraso.
HOURS ( valor de dados )
um valor binário de palavra inteira no intervalo de 0–99.
INTERVAL ( hhmmss )
especifica, em formato decimal compactado, o intervalo de tempo que deve decorrer a partir do momento em que o comando DELAY é emitido. O mm e ss estão no intervalo de 0–59. A hora especificada é adicionada à hora do relógio atual pelo CICS quando o comando é executado para calcular a hora de expiração.
Ao usar a linguagem C, é recomendável usar as opções FOR / UNTIL HOURS, MINUTES e SECONDS, pois C não fornece um tipo de dados decimal compactado. Você pode usar INTERVAL, mas se o valor especificado não for uma constante de número inteiro, o aplicativo será responsável por garantir que o valor transmitido ao CICS esteja no formato decimal compactado.
MILLISECS ( valor de dados )
especifica um valor binário de palavra inteira no intervalo 0-999, quando HOURS, MINUTES ou SECONDS também são especificados, ou 0-359999999 quando MILLISECS é a única opção especificada.
Nota: O CICS trata os períodos de atraso de menos de 50 milissegundos como o tempo que expirou imediatamente.
MINUTES ( dados-valor )
especifica um valor binário de palavra inteira no intervalo de 0 a 59, quando HOURS, SECONDS ou MILLISECS também são especificados, ou 0 a 5999 quando MINUTES é a única opção especificada.
REQID ( nome )
especifica um nome (1–8 caracteres), que deve ser exclusivo, para identificar a solicitação DELAY. Usar esta opção para especificar um nome definido pelo aplicativo permite que outra transação cancele a solicitação DELAY.
Para permitir que outras tarefas cancelem solicitações DELAY não expiradas, você deve tornar o identificador de solicitação disponível dinamicamente. Por exemplo, armazená-lo em uma fila TS, cujo nome é conhecido por outros aplicativos que podem querer cancelar a solicitação DELAY, é uma maneira de passar um identificador de solicitação para outras transações.
SECONDS ( dados-valor )
especifica um valor binário de palavra inteira no intervalo 0–59, quando HOURS, MINUTES ou MILLISECS também são especificados, ou 0–359 999 quando SECONDS é a única opção especificada.
HORA ( hhmmss )
especifica, em formato decimal compactado, a hora em que a tarefa deve retomar o processamento.
Ao usar a linguagem C, é recomendável usar as opções FOR / UNTIL HOURS, MINUTES e SECONDS, pois C não fornece um tipo de dados decimal compactado. Você pode usar TIME, mas se o valor especificado não for uma constante de número inteiro, o aplicativo será responsável por garantir que o valor transmitido ao CICS esteja no formato decimal compactado. Consulte a seção sobre tempos de expiração em Controle de intervalo .
UNTIL
especifica a hora no final do atraso e quando a tarefa deve retomar o processamento.
Exemplos:
O exemplo a seguir mostra como suspender o processamento de uma tarefa por cinco minutos:
EXEC CICS DELAY
INTERVAL(500)
REQID('GXLBZQMR')
EXEC CICS DELAY FOR MINUTES(5)
O exemplo a seguir mostra como, às 09:00, suspender o processamento de uma tarefa até 12:45:
EXEC CICS DELAY
TIME(124500)
REQID('UNIQCODE')
Existem duas maneiras de inserir a hora em UNTIL.
Uma combinação de pelo menos duas de HORAS (0–99), MINUTOS (0–59) e SEGUNDOS (0–59). HORAS (1) SEGUNDOS (3) significariam uma hora e três segundos (o padrão dos minutos é zero).
Qualquer um de HOURS (0–99), MINUTES (0–5999) ou SECONDS (0–359 999). HORAS (1) significa uma hora. MINUTOS (62) significa uma hora e dois minutos. SEGUNDOS (3723) significa uma hora, dois minutos e três segundos.
Em FOR, você pode inserir o tempo de ambas as maneiras que se aplicam a UNTIL e, adicionalmente, pode especificar um atraso para incluir milissegundos ou especificar o atraso completamente em milissegundos. Para especificar frações de segundo em um atraso, codifique o parâmetro MILLISECS no intervalo 0-999 além de outras unidades de tempo. Para especificar o atraso puramente em milissegundos, codifique o parâmetro MILLISECS no intervalo 0-359999999. O exemplo a seguir mostra como suspender o processamento de uma tarefa por 15.000 milissegundos:
EXEC CICS DELAY
FOR MILLISECS(15000)
REQID('UNIQCODE')