🧠 Explicação
O comando EXEC CICS START
é utilizado para iniciar uma nova tarefa (transação) de forma programada, podendo ser imediata ou agendada para o futuro. Essa nova tarefa pode ser iniciada localmente ou em um sistema remoto, com ou sem terminal associado, e pode receber dados da tarefa que a disparou por meio do comando RETRIEVE
.
🔧 Usos mais comuns
-
Agendar a execução de uma transação em um horário ou intervalo específico.
-
Iniciar transações assíncronas em segundo plano.
-
Disparar tarefas com dados armazenados temporariamente (usando
FROM
). -
Acionar tarefas em terminais específicos ou em sistemas remotos.
-
Implementar controle de fluxo entre tarefas e processos no CICS.
🧾 Sintaxe
EXEC CICS START
TRANSID('TRNL')
INTERVAL(10000)
REQID('MINHAID')
END-EXEC.
EXEC CICS START
TRANSID('TRN2')
TIME(173000)
TERMID('STA3')
REQID('DADOS')
FROM(AREA-DADOS)
LENGTH(100)
END-EXEC.
💻 Exemplo prático
EXEC CICS START
TRANSID('CARG')
AFTER HOURS(0)
MINUTES(2)
SECONDS(30)
REQID('CARG01')
FROM(AREA-CARGA)
LENGTH(250)
END-EXEC.
* Tarefa que será iniciada recupera os dados assim:
EXEC CICS RETRIEVE
INTO(AREA-CARGA)
LENGTH(250)
END-EXEC.
📌 Regras
-
Use
AFTER
,AT
,INTERVAL
ouTIME
para controlar o momento da execução. -
Dados passados com
FROM
devem ser lidos comRETRIEVE
pela nova tarefa. -
Se
FROM
for usado semREQID
, o CICS usa uma fila temporária com prefixoDF
. -
REQID
deve ser único; comandos START com REQID duplicado resultam em erroIOERR
. -
PROTECT
exige que a tarefa inicial finalize com commit antes do START ser válido. -
A transação indicada em
TRANSID
deve estar definida e ativa no CICS.
💡 Dicas
-
Use
NOCHECK
para melhorar desempenho em START remoto — sem validação de retorno. -
Evite usar
TERMID
quando for iniciar tarefas sem terminal associado. -
Prefira
AFTER
ao invés deTIME
em sistemas distribuídos para evitar problema com fuso horário. -
Utilize
RTRANSID
,RTERMID
eQUEUE
para passar informações complementares entre tarefas. -
Cuidado com a “regra das 6 horas”: se o horário do
START
estiver dentro de 6h do horário atual, ele é executado imediatamente.
🚨 Condições que podem ocorrer
-
INVREQ
: uso incorreto de parâmetros ou sequência inválida. -
IOERR
: falha em armazenamento temporário ou REQID duplicado. -
TERMIDERR
: terminal informado não existe ou não está disponível. -
TRANSIDERR
: transação informada inválida ou não disponível. -
SYSIDERR
: falha na comunicação com sistema remoto. -
NOTAUTH
: falha de segurança (ex: USERID não autorizado). -
RESUNAVAIL
: recurso temporariamente indisponível. -
LENGERR
: tamanho especificado inválido. -
USERIDERR
: problema com ID de usuário informado.
✅ Conclusão
O EXEC CICS START
é uma ferramenta poderosa para controle assíncrono de tarefas no CICS. Seja para agendar transações, iniciar tarefas sem terminal, passar dados entre processos ou acionar fluxos em sistemas remotos, esse comando é essencial em arquiteturas baseadas em pseudo-conversação. Saber usá-lo corretamente garante flexibilidade e robustez nos seus programas COBOL+CICS.