🧠 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,INTERVALouTIMEpara controlar o momento da execução. -
Dados passados com
FROMdevem ser lidos comRETRIEVEpela nova tarefa. -
Se
FROMfor usado semREQID, o CICS usa uma fila temporária com prefixoDF. -
REQIDdeve ser único; comandos START com REQID duplicado resultam em erroIOERR. -
PROTECTexige que a tarefa inicial finalize com commit antes do START ser válido. -
A transação indicada em
TRANSIDdeve estar definida e ativa no CICS.
💡 Dicas
-
Use
NOCHECKpara melhorar desempenho em START remoto — sem validação de retorno. -
Evite usar
TERMIDquando for iniciar tarefas sem terminal associado. -
Prefira
AFTERao invés deTIMEem sistemas distribuídos para evitar problema com fuso horário. -
Utilize
RTRANSID,RTERMIDeQUEUEpara passar informações complementares entre tarefas. -
Cuidado com a “regra das 6 horas”: se o horário do
STARTestiver 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.