Thursday 21 November 2024

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')