Mostrar mensagens com a etiqueta fluxo. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta fluxo. Mostrar todas as mensagens

sábado, 6 de abril de 2024

O que é um Diagrama de Fluxo de Dados.

Um olho no passado, dois olhos no futuro: Diagrama de Fluxo de Dados. Salve jovem padawan, mais uma vez faremos uma viagem no tempo, para os primórdios da informática, onde as grandes ideias surgiram, sementes foram semeadas e gradualmente o sistema foi sendo criado. Leia na Integra

sábado, 24 de setembro de 2011

🔥 Program Control Operation – XCTL no CICS

 


🔥 Program Control Operation – XCTL no CICS



☕ Midnight Lunch, fluxo quebrado e um XCTL mal compreendido

São 13h02.
A transação entra, processa metade da lógica… e nunca mais volta.
O analista jura:

“Mas eu só fiz um XCTL…”

Pois é. XCTL não volta mesmo.
Hoje vamos falar dessa operação poderosa, perigosa e frequentemente mal usada: o EXEC CICS XCTL.


🏛️ História: controle total desde os primórdios

Desde os primeiros releases do CICS, havia a necessidade de:

  • Trocar completamente o fluxo de execução

  • Manter a mesma transação

  • Evitar empilhamento excessivo de programas

Assim nasceu o XCTL (Transfer Control).

📌 XCTL é o “goto elegante” do CICS — se usado com juízo.


🧠 Conceito essencial (grave isso)

XCTL = transfere o controle para outro programa e NÃO retorna

✔ Mesma task
✔ Mesma transação
✔ Mesma UOW
❌ Sem retorno ao programa chamador

Quando você usa XCTL, o programa atual morre com dignidade.


🔀 O que é o XCTL no CICS?

O EXEC CICS XCTL:

  • Encerra o programa corrente

  • Passa o controle para outro programa

  • Opcionalmente passa uma COMMAREA ou CHANNEL

  • Continua a execução no novo programa


🧾 Sintaxe básica

EXEC CICS XCTL PROGRAM('PGM002') COMMAREA(WS-COMMAREA) LENGTH(LEN) END-EXEC.

📌 Parece LINK, mas o comportamento é radicalmente diferente.


🥊 XCTL vs LINK (clássico eterno)

CritérioXCTLLINK
RetornoNãoSim
StackNão empilhaEmpilha
UsoTroca de fluxoSub-rotina
RiscoFluxo perdidoStack overflow

📌 Se precisa voltar, nunca use XCTL.


🧠 Quando usar XCTL (casos corretos)

✔ Navegação de telas (pseudo-conversacional)
✔ Separação clara de etapas
✔ Fluxo linear (estado → próximo estado)
✔ Evitar profundidade excessiva de LINK

📌 XCTL é ótimo para “passar o bastão”.


⚠️ Quando NÃO usar XCTL (easter eggs)

🐣 Para chamar regra de negócio
🐣 Quando precisa retornar status
🐣 Em loops lógicos
🐣 Em fluxo condicional mal definido

📌 XCTL errado vira bug invisível.


🛠️ Passo a passo mental antes do XCTL

1️⃣ Preciso voltar para este programa?
→ Se sim, não é XCTL

2️⃣ O estado está completo na COMMAREA ou CHANNEL?

3️⃣ O próximo programa sabe exatamente o que fazer?

4️⃣ Existe risco de fluxo perdido?

5️⃣ Estou tentando “simplificar” algo que é LINK?

Se tiver dúvida, pare.


📦 XCTL com COMMAREA vs CHANNEL

COMMAREA

  • Simples

  • Limitada a ~32 KB

  • Forte acoplamento

CHANNEL

  • Flexível

  • Ideal para navegação moderna

  • Menos impacto em mudanças

📌 XCTL + CHANNEL é o padrão moderno.


🧪 Exemplo mental de fluxo

Fluxo pseudo-conversacional clássico

1️⃣ Programa A recebe tela
2️⃣ Valida dados
3️⃣ XCTL para Programa B

Programa A não existe mais.
Programa B continua como se fosse o primeiro.

🔥 Simples. Elegante. Perigoso se mal desenhado.


📚 Guia de estudo para dominar XCTL

Estude profundamente:

  • Program Control no CICS

  • Pseudo-conversational design

  • COMMAREA vs CHANNEL

  • Transaction scope

  • Recovery e rollback

📖 Manual essencial: CICS Application Programming Guide


🤓 Curiosidades de boteco mainframe

🍺 XCTL evita stack overflow que LINK pode causar
🍺 Muitos sistemas antigos abusam de XCTL como “goto”
🍺 Navegação de telas em CICS nasceu com XCTL
🍺 Um XCTL mal colocado pode “sumir” com lógica inteira


💬 Comentário El Jefe Midnight Lunch

“LINK é conversa.
XCTL é despedida.
Se você confunde os dois, o CICS te ensina.”


🚀 Aplicações reais hoje

  • Navegação pseudo-conversacional

  • Sistemas de atendimento

  • Fluxos de validação

  • Aplicações transacionais críticas


🎯 Conclusão Bellacosa

O EXEC CICS XCTL é simples, direto e definitivo.

Quem domina:

  • Desenha fluxos limpos

  • Evita empilhamento desnecessário

  • Cria sistemas previsíveis

🔥 XCTL não é erro. Erro é esperar que ele volte.

Se quiser, no próximo Midnight Lunch: