Translate

Mostrar mensagens com a etiqueta transacoes. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta transacoes. 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.


sábado, 9 de agosto de 2025

Dominando o CICS: Dicas Essenciais para um DEV Jr em Mainframe

 

Dominando o CICS: Dicas Essenciais para um DEV Jr em Mainframe

4,424 followers

Salve jovem padawan, continuando nosso caminho explorando a Alta Plataforma, compartilhando algumas histórias, causos e curiosidade. Além claro de dicas técnicas para evoluir na Stack Mainframe. Este artigo pretende apresentar mais detalhes do OLTP.

O CICS é o coração transacional de milhares de sistemas corporativos pelo mundo. Por trás das aplicações bancárias, financeiras, de seguros e do setor público, o CICS garante integridade, disponibilidade e desempenho para aplicações críticas. Trabalhar bem com CICS é mais do que saber programar em COBOL: exige boas práticas, sensibilidade técnica e visão de arquitetura.

Aqui vão 10 dicas práticas e estratégicas para você se desenrascar no uso do CICS no seu dia a dia:


1. Conheça a Estrutura do EIB (Execute Interface Block)

Saber conhecer todas as funcionalidades do CICS, ajuda a criar novas estrategias para solucionar as demandas. Saiba que todo programa CICS, seja em COBOL, PLI ou Natural tem acesso a uma estrutura automática chamada EIB, que guarda informações como:

  • EIBDATE – Data atual
  • EIBTIME – Horário de início da transação
  • EIBTRNID – ID da transação
  • EIBCPOSN – Código de posição do cursor

Dica: Use essas variáveis para rastrear execuções e criar logs úteis para debugging sem poluir seus programas com variáveis auxiliares.

2. Use Comandos CICS com Tratamento de Erros

Além dos bugs traps do COBOL, o CICS oferece soluções para controlar erros. Lembre-se disso uma anomalia deve ser tratada em código, não deixe o Z/OS trata-la para você, acredite em mim, surpresas desagradáveis aparecem. Nunca subestime um EXEC CICS RECEIVE, WRITE, SEND ou READ sem o devido HANDLE CONDITION.

Dica: Sempre implemente tratamento para NOTFND, MAPFAIL, PGMIDERR e SYSIDERR, mesmo em programas simples.

3. Modularize Programas com Comarea e Channels

Separe seu programa por SECTIONs,. cada estrutura em sua seção, assim fica mais facil a manutenção e evoluções. Evite programões monolíticos. Quebre lógicas complexas em subprogramas usando COMMAREA ou, em sistemas modernos, CHANNELS & CONTAINERS.

Dica: Channels são ideais para novos programas, com mais de um container e suporte a dados maiores que 32k.

4. Use o CEDA com Consciência.

Na linha de comando do CICS, existem muitas ferramentas, que devemos conhecer e utilizar para estarmos no "Estado da Arte" na codificação de programas Online. O CEDA é o utilitário de administração de recursos do CICS. Ao registrar mapas BMS, programas ou transações:

Dica: Sempre preencha os campos:

  • Group: para identificar o módulo
  • Language: COBOL, PLI, etc.
  • Dynam: YES para programas que serão carregados sob demanda
  • Use Newcopy: Após compilar, não esqueça de dar CEMT SET PROGRAM(PROGNAME) NEW


5. Use o CEMT para Investigar em Tempo Real

Lembre-se sempre o programa compilado vai para a Loadlib do CICS, o programa na memoria ainda é a versão antiga, por isso devemos fazer o REFRESH manualmente. O comando CEMT permite administrar e consultar o status de quase tudo no CICS e atualizar para a versão mais recente da Loadlib. Alguns exemplos:

  • CEMT I TRANS(TRN1) – Consulta transação
  • CEMT I PROG(PROG1) – Consulta programa
  • CEMT SET PROG(PROG1) NEW – Atualiza módulo compilado, REFRESH.

Dica: Automatize comandos CEMT via scripts em macros de terminal ou CLISTs úteis para refresh em lote.

6. Atente-se à Segurança: TransID e Programas

Todo cuidado é pouco. Devemos codificar prevendo o passo-a-passo do usuario, não deixando caminhos alternativos aberto. Bloqueando possíveis injeção de código e usando e abusando do RACF. Programação defensiva e com segurança em CICS não é só papel do RACF. Certifique-se de:

  • Definir programas com EXECUTION KEY(CICS), quando possível
  • Restringir transações via RACF profiles (FACILITY, SURROGAT, etc.)
  • Evitar deixar transações expostas como CEMT, CICS, CSMT


7. Mapeie o Fluxo com Ferramentas como InterTest ou Abend-AID

Dica: Use ferramentas como InterTest para depuração interativa e Abend-AID para leitura de dumps mais amigável, com call-stack, EIB, COMMAREA decodificada, etc.

8. Mantenha Seus Mapas BMS Atualizados

Sempre que alterar campos em uma tela, recompilar o BMS e não esquecer:

  • Executar a assemblagem (DFHMSD)
  • Atualizar o CEDA
  • Dar NEWCOPY no programa associado

Dica: Gere mapa simbólico .SYM para usar como COPY no COBOL – garante alinhamento com os nomes dos campos.

9. Use Transações Utilitárias a seu favor

  • CECI – Execução interativa de comandos
  • CECS – Exibe o status dos comandos
  • CEBR – Exibe conteúdo de TS/TD Queues

Dica: Faça testes rápidos com CECI EXEC CICS SEND TEXT ou WRITEQ TS para prototipagem.

10. Invista em Performance

  • Prefira acesso a TSQ/TDQ local quando possível
  • Use ENQ/DEQ para controle de concorrência leve
  • Mantenha CICS region tunada com buffers e threads adequados
  • Reuse COMMAREAs com responsabilidade, evitando sobrecarga de dados inúteis


Bônus: Curiosidades do CICS

  • O CICS nasceu em 1969 para o setor bancário.
  • O nome "CICS" é pronunciado como "Kiks".
  • É o transacional mais usado no mundo, rodando bilhões de transações por dia.


Conclusão

Chegamos ao final desta pequena jornada, visite sempre nossa Newsletter Um Café no Bellacosa Mainframe, procuro responder pedidos, solicitações e melhorar sempre. Caso encontre algo, que discorde, entre em contato, esse é um trabalho em curso, de tempos em tempos, reviso, incluindo mais assuntos e corrigindo algumas gralhas, que sismam em aparecer.

Concluindo e pense com carinho, dominar o CICS é essencial para qualquer analista de sistemas z/OS. Ele vai muito além da tela verde e do COBOL: é um ecossistema poderoso, que exige disciplina, segurança, performance e organização. Ao aplicar essas dicas, você entrega sistemas mais robustos e confiáveis, e se destaca como profissional Mainframe.