🧠 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 ou TIME para controlar o momento da execução.

  • Dados passados com FROM devem ser lidos com RETRIEVE pela nova tarefa.

  • Se FROM for usado sem REQID, o CICS usa uma fila temporária com prefixo DF.

  • REQID deve ser único; comandos START com REQID duplicado resultam em erro IOERR.

  • 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 de TIME em sistemas distribuídos para evitar problema com fuso horário.

  • Utilize RTRANSID, RTERMID e QUEUE 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

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.