quinta-feira, 2 de junho de 2011

🔥 Different Types of RETURN Statements no CICS

 


🔥 Different Types of RETURN Statements no CICS

 


☕ Midnight Lunch, ENTER pressionado e… RETURN errado

13h07.
Usuário pressiona ENTER.
A tela some.
Nada acontece.

No fundo da sala alguém pergunta, com medo:

“Esse RETURN tá certo… né?”

Hoje vamos falar de um comando pequeno na sintaxe, mas gigante no impacto:
o EXEC CICS RETURN e suas variações.

Porque no CICS, retornar errado é desaparecer da aplicação.


🏛️ História: o retorno como base do online

Desde o início do CICS, o RETURN é o ponto onde:

  • A task termina

  • O controle volta para o CICS

  • A transação decide se continua ou morre

Muito antes de frameworks web, o CICS já dominava o request/response.

📌 RETURN é o “commit emocional” da transação.


🧠 Conceito essencial (grave isso)

RETURN não é só sair do programa.
É decidir o destino da transação.

Cada tipo de RETURN muda o comportamento do sistema.


🔁 Tipos de RETURN no CICS

Vamos aos principais, sem enrolação.


1️⃣ RETURN simples – fim da linha

O que faz?

  • Encerra o programa

  • Finaliza a task

  • Nenhuma continuação

EXEC CICS RETURN END-EXEC.

📌 Usado quando:

  • Processamento acabou

  • Nenhuma tela a exibir

  • Nenhuma navegação

⚠️ Usado errado → usuário perdido.


2️⃣ RETURN com TRANSID – chama outra transação

O que faz?

  • Finaliza a task atual

  • Inicia nova transação

  • Novo task number

EXEC CICS RETURN TRANSID('TRN2') END-EXEC.

📌 Ideal para:

  • Navegação controlada

  • Separação de fluxos

  • Segurança transacional


3️⃣ RETURN com COMMAREA – estado preservado

O que faz?

  • Finaliza a task

  • Preserva dados para a próxima

EXEC CICS RETURN TRANSID('TRN2') COMMAREA(WS-COMMAREA) LENGTH(LEN) END-EXEC.

📌 Base do pseudo-conversacional.


4️⃣ RETURN com CHANNEL – o jeito moderno

O que faz?

  • Mesmo conceito da COMMAREA

  • Muito mais flexível

EXEC CICS RETURN TRANSID('TRN2') CHANNEL('CHN01') END-EXEC.

📌 Padrão moderno. Escalável. Elegante.


5️⃣ RETURN IMMEDIATE – sem passar pelo fluxo normal

O que faz?

  • Termina a task agora

  • Ignora pseudo-conversacional

EXEC CICS RETURN IMMEDIATE END-EXEC.

📌 Use com cuidado:

  • Emergência

  • Erro crítico

  • Saída forçada


🥊 RETURN vs XCTL vs LINK (mini comparativo)

ComandoRetorna?Nova task?Uso típico
RETURNNãoDependeEncerrar
XCTLNãoNãoTroca de fluxo
LINKSimNãoSub-rotina

📌 Confundir isso gera bug fantasma.


🛠️ Passo a passo Bellacosa (antes do RETURN)

1️⃣ O usuário precisa ver outra tela?
2️⃣ Preciso preservar estado?
3️⃣ Nova transação ou mesma?
4️⃣ COMMAREA ou CHANNEL?
5️⃣ Estou encerrando cedo demais?

📌 RETURN é decisão arquitetural.


⚠️ Erros clássicos (easter eggs)

🐣 RETURN sem TRANSID em fluxo pseudo-conversacional
🐣 COMMAREA com tamanho errado
🐣 RETURN antes de liberar lock
🐣 Misturar XCTL e RETURN sem lógica
🐣 Esquecer canal ativo

📌 Todo sumiço de tela começa aqui.


📚 Guia de estudo para mainframers

Para dominar RETURN:

  • Pseudo-conversational design

  • Program Control

  • COMMAREA vs CHANNEL

  • Transaction lifecycle

  • Error handling

📖 Manual essencial: CICS Application Programming Guide


🤓 Curiosidades de boteco mainframe

🍺 RETURN existe desde os primeiros CICS
🍺 RETURN IMMEDIATE já salvou produção quebrada
🍺 Muitos “bugs de tela” são RETURN errado
🍺 Web frameworks copiaram o modelo sem saber


💬 Comentário El Jefe Midnight Lunch

“No CICS, voltar é escolha.
Sumir é consequência.”


🚀 Aplicações reais hoje

  • Sistemas de atendimento

  • Core bancário

  • Sistemas governamentais

  • Aplicações híbridas CICS + API


🎯 Conclusão Bellacosa

O EXEC CICS RETURN parece simples.
Mas ele define:

  • Fluxo

  • Estado

  • Experiência do usuário

🔥 RETURN não é sair. É decidir o futuro.


Sem comentários:

Enviar um comentário