Translate

Mostrar mensagens com a etiqueta abend cics. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta abend cics. Mostrar todas as mensagens

domingo, 10 de agosto de 2025

Principais Erros do CICS e Suas Possíveis Soluções

 

Principais Erros do CICS e Suas Possíveis Soluções

4,424 followers

Salve jovem padawan, na aula de hoje, entre muitos abends da transação de teste no CICS de desenvolvimento, fiquei pensativo em como ajudar minha turma, deste pensamento, após um loop que quase derrubou o CICS, mapset faltante, conteiner inexistente, erro de logica na navegação. Resolvi criar um mini tour, sobre os erros mais comuns e possiveis soluções.

Introdução

O CICS (Customer Information Control System) é um monitor de transações extremamente robusto e confiável, amplamente utilizado em ambientes corporativos com mainframes IBM. No entanto, como qualquer sistema complexo, ele pode gerar mensagens de erro que desafiam até os analistas mais experientes. Muitas vezes bugs simples, que causam grande dor de cabeça ao iniciante.

Neste artigo, vamos explorar os principais erros do CICS, o que significam, e como resolvê-los de forma prática. Se você é um dos alunos da formação, ira se recordar destes erros ocorridos na aula. Nosso trabalho de Analista de Sistemas e isso, sermos os Freuds do Sistema Z, identificando os erros e corrigindo, num trabalho de idas e vindas, com muita reviravolta.


🔧 1. APCT (Program Not Found)

🛑 Erro:

DFHAP0001 CICSTRN Transaction abended with abend code APCT.

📌 Causa:

O programa especificado na transação não foi encontrado ou não foi definido no CICS (via RDO ou CSD).

✅ Soluções:

  • Verifique se o programa foi definido corretamente via RDO (CEDA) ou no DFHCSD.
  • Confira se o programa foi link-editado como reentrant.
  • Assegure que o LOADLIB onde o programa reside esteja no DFHRPL.


🔧 2. AEI0 (Map Not Found)

🛑 Erro:

DFHAC2001 CICSTRN Transaction abended with abend code AEI0.

📌 Causa:

O mapa solicitado com o comando EXEC CICS SEND MAP não foi encontrado.

✅ Soluções:

  • Verifique se o mapa foi montado e link-editado corretamente.
  • Certifique-se de que o mapa está presente na biblioteca mapset associada ao CICS.
  • Use o comando CEDA DISPLAY MAPSET(...) para validar se o mapset está definido no CICS.


🔧 3. AEY9 (DB2 Not Available)

🛑 Erro:

DFHAC2001 CICSTRN Transaction abended with abend code AEY9.

📌 Causa:

Erro relacionado ao DB2, geralmente porque:

  • O DB2 está inativo;
  • A thread não está alocada corretamente;
  • A autorização RACF está faltando.

✅ Soluções:

  • Verifique o status da conexão DB2/CICS com DSNC DISPLAY THREAD.
  • Certifique-se de que o usuário da transação tem permissão RACF para acessar o plano do DB2.
  • Verifique se o recurso está definido com o parâmetro correto no RDO (DB2ENTRY, DB2TRAN).


🔧 4. AEIP (Security Violation)

🛑 Erro:

DFHAC2001 CICSTRN Transaction abended with abend code AEIP.

📌 Causa:

Violação de segurança – usuário sem permissão para a transação, recurso, ou dataset.

✅ Soluções:

  • Analise o log do RACF (SMF 80 ou comandos SEARCH CLASS(...)) para identificar a violação.
  • Verifique as regras no RACF para a transação (TCICSTRN, PROGRAM, DATASET, etc).
  • Utilize RACFIND ou RACROUTE para testes com permissões temporárias.


🔧 5. AEZC (Web Service Error)

🛑 Erro:

DFHAC2001 CICSTRN Transaction abended with abend code AEZC.

📌 Causa:

Erro durante invocação ou resposta de um CICS Web Service.

✅ Soluções:

  • Verifique os arquivos PIPELINE e as definições de WEBSERVICE.
  • Analise os logs do SIT (System Initialization Table) para mensagens associadas ao WS.
  • Revise o SOAPMessage para erros de XML/SOAP malformado.


🔧 6. ASRA (Program Check - ABEND 0Cxx)

🛑 Erro:

DFHAC2206 CICSTRN Transaction abended with abend code ASRA.

📌 Causa:

Erro de execução em linguagem de programação (COBOL/PLI) – divisão por zero, index inválido, etc.

✅ Soluções:

  • Execute um TRACE ou veja o auxiliary trace para identificar o ponto de falha.
  • Compile com TEST ou NOSSRANGE e utilize um debugger como CEEDUMP ou CEDF.
  • Avalie o uso de variáveis não inicializadas ou ponteiros incorretos.


🔧 7. AEIM (Invalid Request)

🛑 Erro:

DFHAC2001 CICSTRN Transaction abended with abend code AEIM.

📌 Causa:

Comando CICS inválido para o contexto (ex: RECEIVE fora de uma transação terminal).

✅ Soluções:

  • Revise a lógica do programa. Alguns comandos devem estar dentro de contexto apropriado.
  • Habilite CEDF para debug em tempo real da transação.


Extras: Outras Mensagens Comuns e Dicas

AEIO
Terminal indisponível
Use CEMT I TERM(...) para verificar o status

AEYD
Erro ao iniciar DB2
Reanalise parâmetros DB2ENTRY

AICA
Loop detectado no programa
Confirme presença de comandos EXEC CICS RETURN

ASRB
Interrupção por usuário (ex: ATTN)
Pode indicar travamento
Article content

Conclusão

Não entre em panico, os erros no CICS fazem parte do dia a dia de qualquer analista mainframe. A chave é entender o contexto do abend, dominar ferramentas como CEDF, CEEDUMP, CEDA, CEMT e manter boas práticas de logging e rastreamento.

Por isso é importante testar, fazer um check-list dos elementos a serem criados no CEDA, verificar a Instalação dos mesmo, usar o CEMT para atualizar as novas versões do executavel.

Ter muita, mas muita paciência, regados a café e no pior cenário, levante-se da cadeira, vá caminhar um pouco, relaxe e a solução surgirá na mente. Quando estiver muito difícil, consulte o manual da IBM, converse com colegas e chame o professor. Juntos iremos mais longe.

💡 Dica de ouro:

Mantenha uma tabela interna de erros recorrentes no seu ambiente, com soluções testadas e links de documentação. Isso acelera o diagnóstico e reduz o retrabalho.


quarta-feira, 13 de fevereiro de 2013

☕🔥 ABEND ASRA — O “COLAPSO DA REALIDADE” NO CICS

 

Bellacosa Mainframe e o abend ASRA

☕🔥 ABEND ASRA — O “COLAPSO DA REALIDADE” NO CICS

Quando o CICS Olha Para Seu Programa e Diz:

“ALGO AQUI EXPLODIU.”

Se existe um erro que traumatiza todo programador COBOL iniciante em ambiente online…

é o lendário:

🚨 ASRA

E normalmente ele aparece assim:

DFHAC2001 TRANSACTION ABCD ABEND ASRA

ou:

AEI0
ASRA
PROGRAM CHECK

E naquele momento…

o Padawan COBOL entra em pânico.


☕ O QUE É O ASRA?

O ASRA é um:

🚨 ABEND DO CICS

Ele significa que:

💥 O PROGRAMA SOFREU UM PROGRAM CHECK

Traduzindo para linguagem humana:

O COBOL tentou fazer algo impossível.


🔥 O ASRA NÃO É O ERRO REAL

Isso é MUITO importante.

ASRA é apenas:

“O mensageiro da tragédia.”

O verdadeiro erro geralmente está por trás dele:

  • S0C7

  • S0C4

  • S0C1

  • S0CB

  • S0C6

  • Protection Exception

  • Data Exception

O CICS encapsula tudo isso em:

🚨 ASRA


☕ A FILOSOFIA DO ASRA

O CICS basicamente diz:

“Seu programa morreu durante execução.”

Mas não necessariamente ONDE.

Nem POR QUÊ.

Você precisa investigar.

E aí começa a jornada do Jedi Mainframe.


🔥 O ASRA MAIS FAMOSO DO UNIVERSO

🚨 ASRA + S0C7

O rei absoluto dos juniors COBOL.


☕ O QUE É O S0C7?

Erro de conversão decimal.

Exemplo clássico:

MOVE 'ABC' TO WS-VALOR-NUMERICO
ADD 1 TO WS-VALOR-NUMERICO

BOOM.

O processador decimal do IBM Z entra em colapso.


🔥 COMO O CICS ENXERGA ISSO

O COBOL gera instruções máquina.

O processador executa.

O hardware detecta:

❌ DADO INVÁLIDO PARA OPERAÇÃO DECIMAL

O z/OS gera:

S0C7

O CICS intercepta.

E transforma em:

ASRA

☕ ANALOGIA BELLACOSA MAINFRAME

Imagine:

O S0C7 é:

🔥 O MOTOR EXPLODINDO

E o ASRA é:

🚓 O POLICIAL FECHANDO A ESTRADA


🔥 OS VERDADEIROS VILÕES ESCONDIDOS ATRÁS DO ASRA


☠️ S0C7 — DATA EXCEPTION

O campeão absoluto.

Problema decimal.


☠️ S0C4 — PROTECTION EXCEPTION

Tentativa de acessar memória inválida.


☠️ S0C1 — OPERATION EXCEPTION

Código executável inválido.


☠️ S0CB — DECIMAL DIVIDE EXCEPTION

Divisão decimal impossível.

Exemplo:

DIVIDE 0 INTO WS-VALOR

☕ O QUE O PADAWAN PRECISA ENTENDER

No CICS:

ASRA ≠ causa raiz

ASRA = consequência.


🔥 O FLUXO DA TRAGÉDIA

COBOL
 ↓
EXECUÇÃO
 ↓
PROGRAM CHECK
 ↓
z/OS detecta exceção
 ↓
CICS intercepta
 ↓
ASRA

☕ O ERRO CLÁSSICO DO COBOL JUNIOR

01 WS-VALOR       PIC 9(05).
01 WS-TEXTO       PIC X(05).

MOVE 'ABCDE' TO WS-VALOR

Até aqui pode passar.

Mas depois:

ADD 1 TO WS-VALOR

Resultado:

💥 ASRA/S0C7


🔥 COMO INVESTIGAR O ASRA PASSO A PASSO

☕ PASSO 1 — IDENTIFIQUE A TRANSACTION

Mensagem típica:

DFHAC2001 TRANSACTION PAY1 ABEND ASRA

Transaction:

PAY1

☕ PASSO 2 — IDENTIFIQUE O PROGRAMA

O dump geralmente mostra:

PROGRAM: COBPAY01

Agora temos o suspeito principal.


☕ PASSO 3 — DESCUBRA O CÓDIGO REAL

O segredo está aqui:

PSW AT TIME OF ERROR
INTERRUPTION CODE

ou:

AP0001 ASRA CAUSED BY S0C7

Aí você encontra:

  • S0C7

  • S0C4

  • etc.


🔥 PASSO 4 — LOCALIZE O OFFSET

Exemplo:

OFFSET X'01A4'

Esse é o endereço onde tudo explodiu.


☕ O QUE É OFFSET?

É a posição da instrução dentro do programa load module.

Exemplo:

PROGRAMA + 01A4

🔥 COMO TRANSFORMAR OFFSET EM LINHA COBOL

Aqui nasce o verdadeiro Jedi.

Você precisa:

  • LISTING do compile

  • SYSADATA

  • Abend-AID

  • Fault Analyzer

  • XREF

No listing COBOL:

0001A4  ADD WS-TAXA TO WS-TOTAL

BOOM.

Achamos a linha assassina.


☕ O MAIOR SEGREDO DO MAINFRAME

O DUMP SEMPRE CONTA A HISTÓRIA.

O problema é:

Junior olha dump como Matrix.

Veterano lê dump como romance policial.


🔥 COMO LER O DUMP DO ASRA


☕ REGISTERS

Veja:

REGISTER 12
REGISTER 15

Eles ajudam localizar:

  • Base register

  • Programa

  • Endereço


☕ PSW — PROGRAM STATUS WORD

O “GPS do desastre”.

Mostra:

  • Onde morreu

  • Estado da CPU

  • Instrução ativa


☕ STORAGE DUMP

Mostra memória.

Veteranos encontram:

  • Campo inválido

  • Packed decimal corrompido

  • Byte hexadecimal estranho


🔥 O PACKED DECIMAL MALDITO

O maior assassino COBOL do planeta.

Exemplo:

PIC S9(7)V99 COMP-3

Packed decimal usa:

hexadecimal compactado

Se UM nibble estiver errado:

💥 S0C7


☕ EXEMPLO REAL DE HORROR

Packed válido:

12345C

Packed inválido:

12345F

ou:

12AB5C

Resultado:

🚨 DATA EXCEPTION


🔥 POR QUE ISSO ACONTECE?

Muitas vezes:

  • Arquivo corrompido

  • Layout errado

  • COPYBOOK desatualizado

  • Campo redefinido

  • REDEFINES perigoso

  • MOVE inválido

  • Overlay de memória


☕ O DEMÔNIO CHAMADO REDEFINES

Junior faz:

01 REGISTRO.
   05 VALOR-NUM PIC 9(05).

01 REGISTRO-R REDEFINES REGISTRO.
   05 VALOR-TXT PIC X(05).

Depois:

MOVE 'ABCDE' TO VALOR-TXT
ADD 1 TO VALOR-NUM

Resultado:

☠️ ASRA/S0C7


🔥 O ASRA S0C4 — O MAIS SOMBRIO

Esse assusta veteranos também.


☕ O QUE É S0C4?

Tentativa de acessar memória inválida.

Como:

  • Ponteiro errado

  • Tabela estourada

  • LINKAGE incorreta

  • DFHCOMMAREA inválida

  • Subscript fora do limite


☕ EXEMPLO

MOVE WS-TABELA(9999) TO WS-CAMPO

Mas a tabela tem:

100 posições

Resultado:

💥 S0C4 → ASRA


🔥 O CICS E A DFHCOMMAREA

Outro clássico.

Programa espera:

01 DFHCOMMAREA.
   05 WS-CODIGO PIC 9(05).

Mas recebe lixo.

Ou tamanho menor.

Resultado:

☠️ ASRA


☕ COMO SOBREVIVER AO ASRA


✅ PASSO 1

Descobrir:

QUAL PROGRAM CHECK?


✅ PASSO 2

Encontrar:

OFFSET


✅ PASSO 3

Mapear:

OFFSET → LINHA COBOL


✅ PASSO 4

Inspecionar:

  • Campos

  • Hexadecimal

  • COMP-3

  • REDEFINES

  • Tabelas

  • COMMAREA


🔥 FERRAMENTAS DOS DEUSES MAINFRAME


☕ Abend-AID

Transforma dump em algo humano.


☕ Fault Analyzer

Sherlock Holmes do z/OS.


☕ CEDF

Debug online do CICS.


☕ IPCS

Modo hardcore absoluto.


🔥 A ORIGEM HISTÓRICA

ASRA existe desde os primórdios do CICS.

Décadas de 70/80.

O nome vem de:

“ABNORMAL TERMINATION”

com classificação específica do CICS.

Ele virou lendário porque:

praticamente TODO programador COBOL CICS já tomou ASRA.


☕ CURIOSIDADE SOMBRIA

Veteranos dizem:

“Não existe programador COBOL experiente sem cicatriz de ASRA.”


🔥 EASTER EGG MAINFRAME

Muitos programadores brincam:

“ASRA significa:

A Surra Real da Aplicação.”

Porque normalmente ele aparece:

  • em produção

  • sexta-feira

  • fechamento mensal

  • ou 5 minutos antes da reunião.


☕ O MAIOR ERRO DO JÚNIOR

Olhar apenas:

ASRA

e parar.

Não.

O segredo está atrás dele.


🔥 A VERDADE FINAL

ASRA não é apenas um erro.

Ele é:

☕ O CICS REVELANDO QUE A REALIDADE BINÁRIA DO SEU PROGRAMA FOI QUEBRADA.

E no mundo mainframe…

TODO BYTE TEM CONSEQUÊNCIAS.