☕ Um CafĂ© no Bellacosa Mainframe
Gostou do conteĂșdo? Ajude a manter o cafĂ© quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um cafĂ© ao Bellacosa

Translate

quinta-feira, 21 de março de 2013

☕đŸ”„ ABEND AICA — O “RELÓGIO DA MORTE” DO CICS

 

Bellacosa Mainframe e o abend aica

☕đŸ”„ ABEND AICA — O “RELÓGIO DA MORTE” DO CICS

Quando o CICS Grita:

“SEU PROGRAMA ESTÁ DEMORANDO DEMAIS!”

Se existe um ABEND que transforma CPU em panela de pressĂŁo…

Ă© o temido:

🚹 AICA

E normalmente ele aparece assim:

DFHAC2206 TRANSID PAY1 ABEND AICA

ou:

AICA - TASK TIMEOUT

E naquele momento…

o programador COBOL Junior Padawan pensa:

“O programa travou?”
“Entrou em loop?”
“O CICS odiou meu SELECT?”
“A CPU pegou fogo?”

☕ Respira.

Porque o AICA Ă© um dos ABENDs MAIS IMPORTANTES para entender performance no mundo CICS.


đŸ”„ O QUE É O AICA?

O AICA significa:

🚹 TASK TIMEOUT NO CICS

Traduzindo:

Seu programa ficou tempo demais usando CPU ou nĂŁo devolveu controle ao CICS.

E o CICS decidiu:

☠️ “CHEGA. VOU MATAR ESSA TASK.”


☕ A FILOSOFIA DO AICA

O CICS Ă© um ambiente:

MULTIUSUÁRIO

Milhares de usuĂĄrios podem estar online:

  • ATM

  • PIX

  • cartĂŁo

  • aeroporto

  • seguro

  • banco

  • governo

Se UMA transaction monopolizar CPU…

TODO MUNDO SOFRE.

EntĂŁo o CICS age como um vigilante.


đŸ”„ O CICS NÃO É PACIENTE

No batch, um loop pode rodar horas.

No CICS?

❌ IMPOSSÍVEL.

O ambiente online exige:

  • resposta rĂĄpida

  • baixa latĂȘncia

  • fairness

  • compartilhamento de CPU


☕ O QUE REALMENTE ACONTECE

Seu programa entra em execução:

EXEC CICS LINK

ou:

PERFORM UNTIL...

Mas ele:

  • nunca termina

  • consome CPU demais

  • entra em loop

  • fica preso

  • nĂŁo libera controle

EntĂŁo o CICS monitora o tempo.

Quando excede o limite:

đŸ’„ AICA


đŸ”„ O GRANDE SEGREDO

AICA geralmente NÃO é erro de sintaxe.

É:

erro de lĂłgica

erro de performance

loop infinito

design ruim


☕ O MAIOR VILÃO DO AICA

🚹 LOOP INFINITO

O clĂĄssico dos clĂĄssicos.


đŸ”„ EXEMPLO COBOL JUNIOR

PERFORM UNTIL WS-FIM = 'S'

   DISPLAY 'PROCESSANDO'

END-PERFORM

Mas…

WS-FIM nunca vira 'S'

Resultado:

☠️ CPU sobe

task trava

CICS mata

AICA


☕ O LOOP ASSASSINO SILENCIOSO

Mais perigoso ainda:

PERFORM VARYING IDX FROM 1 BY 1
   UNTIL IDX > 100

   CONTINUE

END-PERFORM

Parece normal.

Mas imagine:

IDX corrompido

ou:

MOVE ZERO TO IDX

dentro do loop.

Agora ele nunca acaba.


đŸ”„ O AICA E O “CICS DISPATCHER”

Aqui nasce o verdadeiro conhecimento Jedi.

O CICS possui um:

DISPATCHER

Ele controla:

  • CPU

  • tasks

  • prioridades

  • escalonamento

Quando uma task “segura a CPU” demais:

🚹 TIMEOUT


☕ O CONCEITO MAIS IMPORTANTE

No CICS:

VOCÊ NÃO “POSSUI” A CPU.

VocĂȘ “empresta” CPU por alguns milissegundos.


đŸ”„ COMO O CICS DETECTA O AICA

O sistema monitora:

  • elapsed time

  • CPU time

  • dispatch time

  • runaway task

Quando excede o parĂąmetro:

ICVTSD

ou limites internos…

đŸ’„ AICA


☕ O NOME REAL DO PROBLEMA

Muitos veteranos chamam AICA de:

🚹 RUNAWAY TASK

Task descontrolada.


đŸ”„ O ERRO CLÁSSICO COM EXEC CICS

Outro caso famoso:

EXEC CICS READQ TS
END-EXEC

Dentro de um loop gigantesco.

Agora o programa:

  • chama CICS milhares de vezes

  • monopoliza recursos

  • explode consumo

Resultado:

☠️ AICA


☕ O AICA E O “WAIT”

Outro erro mortal:

Programa esperando algo que nunca chega.

Exemplo:

  • ENQ

  • recurso preso

  • deadlock lĂłgico

  • polling infinito


đŸ”„ O CASO DO “DISPLAY LOOP”

Junior faz debug assim:

PERFORM UNTIL WS-FIM = 'S'

   DISPLAY 'DEBUG'

END-PERFORM

Em batch?

Talvez sobreviva.

No CICS?

💀 VocĂȘ acabou de invocar o AICA ancestral.


☕ COMO INVESTIGAR O AICA PASSO A PASSO


✅ PASSO 1 — IDENTIFIQUE A TRANSACTION

Mensagem:

DFHAC2206 TRANSID PAY1 ABEND AICA

Transaction:

PAY1

✅ PASSO 2 — IDENTIFIQUE O PROGRAMA

Dump:

PROGRAM = COBPAY01

✅ PASSO 3 — ANALISE O LOOP

Pergunte:

  • Existe PERFORM infinito?

  • Alguma condição nunca muda?

  • Índice travado?

  • Cursor eterno?

  • EXEC CICS dentro de loop?


✅ PASSO 4 — VERIFIQUE CPU

Ferramentas:

  • CICS Monitoring

  • Omegamon

  • SMF

  • CMF

  • RMF


đŸ”„ COMO LER O DUMP DO AICA

O dump do AICA Ă© MUITO interessante.

Porque frequentemente mostra:

o programa “congelado no tempo”.


☕ O QUE OLHAR


PSW

Mostra onde estava executando.


REGISTERS

Mostram:

  • base register

  • endereço

  • loop atual


TRACE

O ouro do CICS.

Mostra:

  • EXEC CICS repetitivos

  • chamadas infinitas

  • fluxo preso


đŸ”„ O SEGREDO DO OFFSET

Exemplo:

OFFSET X'02FA'

Agora vocĂȘ cruza com o listing COBOL.

E encontra:

PERFORM UNTIL WS-END = 'Y'

Boom.

Achamos o monstro.


☕ O MAIOR ERRO DO PADAWAN

Pensar:

“O CICS travou.”

Na verdade:

O PROGRAMA NÃO PAROU.


đŸ”„ O AICA E O PSEUDO-CONVERSATIONAL

Aqui entra arquitetura mainframe avançada.

CICS NÃO gosta de programas longos.

Ele prefere:

pseudo-conversational processing

Fluxo:

EXEC CICS RETURN TRANSID(...)

O programa devolve controle.

Depois volta mais tarde.

Isso evita:

  • task longa

  • retenção de memĂłria

  • runaway task


☕ PROGRAMADORES BATCH SOFREM COM ISSO

Porque batch pensa:

processa tudo agora

CICS pensa:

responda rĂĄpido e saia

đŸ”„ O AICA EM PRODUÇÃO

O cenĂĄrio clĂĄssico:

Sexta-feira

fechamento mensal

pico bancĂĄrio

CPU alta

E entĂŁo:

AICA

Todo mundo entra em guerra.


☕ EASTER EGG MAINFRAME

Veteranos brincam:

“AICA significa:

Ainda Estou Calculando Aqui.”

Porque o programa parece nunca terminar.


đŸ”„ CURIOSIDADE HISTÓRICA

Nos anos 70/80:

Runaway tasks podiam derrubar regiÔes CICS inteiras.

EntĂŁo IBM endureceu agressivamente o controle de timeout.

O AICA virou mecanismo de sobrevivĂȘncia do ambiente online.


☕ COMO EVITAR AICA


✅ Loops controlados


✅ Sempre alterar condição de saĂ­da


✅ Evitar EXEC CICS em loops gigantes


✅ Usar pseudo-conversational


✅ Limitar processamento online


✅ Monitorar CPU


đŸ”„ O AICA E O “THINK TIME”

CICS odeia programas esperando usuĂĄrio.

Nunca faça:

espera longa dentro da task

Porque task parada também consome recursos.


☕ O QUE O JEDI MAINFRAME APRENDE

AICA nĂŁo Ă© apenas um ABEND.

Ele ensina:

arquitetura online

compartilhamento de CPU

disciplina transacional

eficiĂȘncia

design enterprise


đŸ”„ FRASE FINAL DO MUNDO CICS

O ASRA quebra a realidade.
O S0C7 corrompe os nĂșmeros.
Mas…

☕ O AICA É O CICS ELIMINANDO PROGRAMAS QUE ESQUECERAM QUE O TEMPO É SAGRADO.

☕ Gostou deste cafĂ©?
Siga o Bellacosa Mainframe e acompanhe os prĂłximos artigos.
SEGUIR O BLOG

Sem comentĂĄrios:

Enviar um comentĂĄrio

De FĂŁ para FĂŁ. ConteĂșdo nĂŁo oficial produzido como homenagem, comentĂĄrio, anĂĄlise ou parĂłdia. Personagens, marcas e obras eventualmente mencionados pertencem aos seus respectivos titulares.
Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , Ă© IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiĂȘncias profissionais, conhecimento tĂ©cnico, histĂłria da computação e prĂĄticas do universo mainframe para aproximar novas geraçÔes das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteĂșdo...