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

sábado, 7 de março de 2026

🔥 O método de 60 segundos para descobrir por que um Job ABENDOU (sem abrir nenhum dataset)

 

Bellacosa Mainframe ensina como encontrar um abend em menos de 60 segundos

🔥 O método de 60 segundos para descobrir por que um Job ABENDOU (sem abrir nenhum dataset)

No dia a dia de produção em IBM z/OS, quando um job ABEND acontece, muitos profissionais iniciantes começam abrindo datasets, dumps ou navegando em dezenas de telas.

Operadores experientes fazem diferente.

Eles usam um método rápido baseado no SDSF que normalmente revela a causa do problema em menos de 60 segundos — muitas vezes sem abrir nenhum dataset.

Este é um dos truques clássicos que circulam em grandes ambientes de produção.

☕ Bem-vindo a mais um Um Café no Bellacosa Mainframe.


🧠 A lógica por trás do método

Quando um job falha, o sistema sempre deixa rastros em três lugares principais:

1️⃣ Status do job
2️⃣ Mensagens do JES
3️⃣ Mensagens do sistema (SYSLOG)

O segredo é seguir a ordem correta.


⚡ Passo 1 — Abrir o SDSF e localizar o Job

Entre no SDSF:

SDSF

Depois vá ao painel de status:

ST

Agora filtre rapidamente:

PREFIX JOBNAME

Exemplo:

PREFIX PAYROLL*

Isso reduz a lista para apenas os jobs relevantes.


🔍 Passo 2 — Identificar rapidamente o ABEND

Na coluna RC / CC / ABEND você verá algo como:

ABEND=S0C7
ABEND=S322
ABEND=SB37

Cada código já indica uma pista importante.

Exemplos clássicos:

ABENDSignificado
S0C7erro de dados numéricos
S0C4violação de memória
S322timeout (tempo excedido)
SB37falta de espaço em dataset

Mas ainda não sabemos onde aconteceu.


📜 Passo 3 — Usar o “?” do SDSF (o atalho mais poderoso)

Digite ? ao lado do job.

Isso abre imediatamente o Job Output:

  • JESMSGLG

  • JESJCL

  • JESYSMSG

Sem abrir nenhum dataset manualmente.


🎯 Passo 4 — Ir direto ao JESYSMSG

O arquivo JESYSMSG quase sempre contém a causa.

Procure por linhas como:

IEF450I JOBNAME ABENDED S0C7

ou

IEC030I B37-04

ou

CSV031I LIBRARY NOT FOUND

Em muitos casos a causa já aparece claramente aqui.


🔎 Passo 5 — Confirmar no SYSLOG

Agora abra o log do sistema:

LOG

e procure pelo JobID:

FIND JOB12345

Isso mostra mensagens do sistema relacionadas ao job.

Exemplos:

IEC141I DATA SET NOT FOUND

ou

IEF861I STEP TERMINATED DUE TO ERROR

⚡ Resultado: diagnóstico em menos de 60 segundos

Seguindo apenas estes passos:

SDSF
ST
PREFIX jobname
?
JESYSMSG
LOG
FIND jobid

Normalmente você já descobre:

✔ o step que falhou
✔ o tipo de erro
✔ a mensagem exata do sistema

Sem abrir nenhum dataset manualmente.


🧠 Exemplo real de diagnóstico

Imagine um job que termina assim:

ABEND=SB37

Seguindo o método:

No JESYSMSG aparece:

IEC030I B37-04 ON SYSDA

Diagnóstico imediato:

👉 Dataset ficou sem espaço.

Nenhuma investigação adicional necessária.


💡 A regra de ouro dos operadores experientes

Nos grandes datacenters existe uma regra não escrita:

“Se você abriu dataset antes de olhar o JESYSMSG, começou a investigação do jeito errado.”

80% dos problemas podem ser identificados apenas com SDSF.


☕ Conclusão

O segredo não está em ferramentas complexas.

Está em saber onde olhar primeiro.

Dominar o SDSF significa:

  • investigar incidentes mais rápido

  • reduzir tempo de troubleshooting

  • ganhar confiança em ambientes de produção

E isso separa operadores iniciantes de profissionais experientes no mundo mainframe.


https://www.linkedin.com/pulse/o-m%C3%A9todo-de-60-segundos-para-descobrir-por-que-um-job-bellacosa-jxhkf

quinta-feira, 18 de dezembro de 2025

✅ CHECKLISTS DE PRODUÇÃO – REXX MAINFRAME (z/OS)

 


✅ CHECKLISTS DE PRODUÇÃO – REXX MAINFRAME (z/OS)




1️⃣ Checklist Geral – Antes de colocar qualquer REXX em produção

☐ Objetivo do exec claramente definido
☐ Exec documentado no cabeçalho (nome, autor, data, função)
☐ Tratamento de erro implementado (SIGNAL ON ERROR, RC verificado)
☐ Uso de PROCEDURE para isolar variáveis
☐ Variáveis globais padronizadas (gVar, kConst)
☐ Nenhuma dependência “hardcoded” (HLQ, volumes, consoles)
☐ Exec testado com dados inválidos e cenários de erro
☐ Não deixa datasets alocados ao final
☐ Código revisado por outro analista (peer review)


2️⃣ Checklist – REXX Interpretado (TSO)

☐ Exec localizado em PDS autorizado (SYSEXEC ou SYSPROC)
☐ Não depende de perfil pessoal do usuário
☐ Usa ADDRESS TSO explicitamente quando necessário
☐ Usa EXIT RC adequado (0, 4, 8, 12…)
☐ Não usa TRACE ?R ou debug ativo em produção
☐ Não usa SAY excessivo (poluição de spool)
☐ EXECIO fecha corretamente arquivos (FINIS)
☐ Testado em sessão TSO limpa (sem allocations prévias)


3️⃣ Checklist – REXX Compilado (CEXEC / OBJECT)

☐ Código compilado com XREF para revisão
☐ Opções de compilação corretas:

  • SLINE se usa TRACE ou SOURCELINE()

  • ALT se precisa Alternate Library

  • CONDENSE avaliado (trade-off load x execução)
    %COPYRIGHT incluído (requisito IBM / auditoria)
    ☐ Código não depende de comportamento interpretado
    ☐ Dataset CEXEC alocado corretamente no SYSEXEC
    ☐ Teste comparativo interpretado vs compilado validado
    ☐ Performance validada (CPU e tempo)


4️⃣ Checklist – Execução REXX em Batch (IKJEFT01)

☐ Programa correto (IKJEFT01, IKJEFT1A ou IKJEFT1B)
SYSEXEC concatenado corretamente
SYSTSIN definido corretamente
SYSTSPRT definido para saída do REXX
SYSPRINT definido para mensagens do sistema
☐ Não depende de interação (PULL sem input)
☐ RC do jobstep validado no JCL
☐ Exec não depende de terminal (ISPF, DISPLAY)


5️⃣ Checklist – REXX em Batch via IRXJCL

☐ Exec não usa comandos TSO (ALLOCATE, PROFILE, etc.)
☐ Todos os DDs necessários definidos no JCL
☐ Não usa SYSCALL / POSIX
☐ Uso de EXECIO validado com datasets físicos
☐ Testado isoladamente sem ambiente TSO
☐ RC tratado corretamente (IRXJCL retorna RC do exec)


6️⃣ Checklist – REXX com comandos MVS (CONSOLE)

☐ Usuário possui autoridade RACF:

  • ☐ CLASS(CONSOLE)

  • ☐ CLASS(OPERCMDS)
    CONSPROF configurado corretamente
    CONSOLE ACTIVATE e DEACTIVATE sempre pareados
    ☐ Uso de CART único por comando
    ☐ Uso de GETMSG() com timeout adequado
    ☐ Exec não bloqueia console (wait infinito)
    ☐ Exec retorna ao ADDRESS TSO ao final
    ☐ Tratamento de mensagens inesperadas implementado


7️⃣ Checklist – System REXX (SYSREXX)

🔹 Planejamento

☐ SYSREXX realmente necessário (não usar se TSO resolve)
☐ Exec não inicia com letras A–I
☐ Exec armazenado em REXXLIB (não alterar SYS1.SAXREXEC)
☐ Nome do exec documentado e único


🔹 Ambiente

☐ AXR subsystem ativo
☐ Parmlib AXR00 configurado
☐ CPF definido corretamente
☐ AXRUSER definido e validado
☐ Teste em ambiente não produtivo realizado


🔹 Execução

☐ Modo correto definido:

  • ☐ TSO=NO (preferencial)

  • ☐ TSO=YES (se precisa ALLOCATE)
    ☐ Exec não assume userid fixo
    ☐ Exec limpa recursos explicitamente
    ☐ Não depende de terminal ou ISPF
    ☐ Exec tolera execução concorrente


8️⃣ Checklist – Uso das Funções SYSREXX

AXRCMD

☐ Timeout definido
☐ Stem inicializado
stem.0 validado
☐ Mensagens tratadas (não apenas exibidas)

AXRWTO / AXRMLWTO

☐ Uso consciente (não floodar console)
ConnectId controlado
☐ LineType correto (L, D, DE)

AXRWAIT

☐ Tempo mínimo necessário
☐ Não usado como loop de espera infinita


9️⃣ Checklist – Segurança e Auditoria

☐ Exec documenta comandos críticos executados
☐ Nenhum comando destrutivo sem confirmação
☐ Exec compatível com RACF auditing
☐ Exec não eleva privilégio indevidamente
☐ Exec respeita ambiente SYSPLEX
☐ Logs rastreáveis (WTO, SYSLOG, dataset)


🔟 Checklist – Pós-produção

☐ Exec monitorado em produção
☐ CPU e tempo medidos
☐ Exec incluído em inventário técnico
☐ Plano de rollback definido
☐ Procedimento operacional documentado
☐ Responsável técnico identificado


📌 Comentário final (experiência de produção)

REXX em produção não falha por sintaxe — falha por falta de checklist.

sábado, 10 de setembro de 2022

🚀 Como melhorar seu Blogspot para “ser pego” pelos motores de busca (Google, Bing, etc.)

 

SEO ajudando seu blogspot subir com Bellacosa Mainframe


🚀 Como melhorar seu Blogspot para “ser pego” pelos motores de busca (Google, Bing, etc.)

Vou dividir em camadas, como num sistema mainframe bem projetado:
infra → configuração → conteúdo → autoridade → manutenção


🧱 CAMADA 1 — Infra básica (SEM isso, nada funciona)

✅ 1. Blog visível para buscadores

Já falamos, mas reforço:

Configurações → Privacidade ✔ Visível para mecanismos de busca = SIM

✅ 2. Robots e indexação corretos

Configurações → Preferências de pesquisa

✔ Tags personalizadas de robôs:

  • Página inicial → index, follow

  • Posts e páginas → index, follow

❌ Nunca use noindex em posts.


✅ 3. Sitemap ativo (obrigatório)

No Google Search Console:

📌 Sitemap padrão do Blogger:

/sitemap.xml

Envie e confirme.


⚙️ CAMADA 2 — SEO técnico (onde o Blogger costuma falhar)

🔧 4. URLs limpas (isso impacta MUITO)

Configurações → Preferências de pesquisa → Erros e redirecionamentos

✔ URLs personalizadas:

https://seudominio.blogspot.com/2025/01/titulo-do-post.html

❌ Evite títulos longos e com:

  • “de”, “para”, “com”, “um”, “uma”

  • Datas no título


🔧 5. HTTPS e redirecionamento

Configurações → HTTPS

✔ HTTPS disponível → SIM
✔ Redirecionar HTTPS → SIM

SEO hoje exige HTTPS.


🔧 6. Corrigir título da página (erro clássico do Blogspot)

O Blogger costuma gerar títulos ruins.

O ideal é:

Título do Post | Nome do Blog

No HTML do tema, confirme algo assim:

<title> <b:if cond='data:blog.pageType == "item"'> <data:blog.pageName/> | <data:blog.title/> <b:else/> <data:blog.title/> </b:if> </title>

📌 Isso aumenta CTR no Google.


✍️ CAMADA 3 — Conteúdo que o Google respeita

🧠 7. Escreva para “intenção de busca”

Cada post deve responder UMA pergunta clara.

Exemplos bons:

  • o que é REXX no mainframe

  • exemplo prático JCL SORT

  • como criar web service no CICS

Exemplos ruins:

  • minhas reflexões sobre tecnologia

  • algumas ideias sobre COBOL

📌 Google não indexa “reflexão vaga”.


✍️ 8. Estrutura correta do post

Todo post deve ter:

H1 → Título (1 só) H2 → Seções principais H3 → Detalhes técnicos

Exemplo:

H1: O que é REXX no Mainframe H2: Para que serve o REXX H2: Exemplo prático no TSO H2: Erros comuns H3: S0C7 H3: IKJ56500I

🧪 9. Conteúdo técnico indexa MELHOR

Você tem uma vantagem enorme, Vagner:

✔ Código COBOL
✔ JCL
✔ REXX
✔ Mensagens do sistema

📌 O Google AMA código técnico porque:

  • É único

  • É pesquisável

  • Gera backlinks naturais

👉 Sempre use <pre> ou bloco de código.


🔗 CAMADA 4 — Autoridade (o que faz subir no ranking)

🔗 10. Links internos (isso é ouro)

Em todo post:

  • Link para 2–3 posts antigos

  • Use texto descritivo:

    • ❌ “clique aqui”

    • ✔ “exemplo de JCL SORT”


🌐 11. Backlinks inteligentes (sem spam)

Onde postar links do blog:

✔ LinkedIn (posts técnicos)
✔ GitHub (README com link)
✔ Medium (resumo + link)
✔ Stack Overflow (quando fizer sentido)
✔ Grupos técnicos (sem spam)

📌 1 link bom vale mais que 100 ruins.


🖼️ CAMADA 5 — SEO escondido (quase ninguém faz)

🖼️ 12. Imagens com ALT técnico

Sempre use ALT:

ALT="Exemplo de JCL SORT com DFSORT no z/OS"

Google indexa imagens e usa isso no ranking.


📄 13. Página “Sobre” forte

Crie uma página Sobre explicando:

  • Quem você é

  • Experiência real

  • Tecnologias

  • Objetivo do blog

📌 Isso ajuda E-E-A-T (Experiência, Autoridade, Confiança).


🧹 CAMADA 6 — Manutenção (SEO é batch recorrente)

🕒 14. Frequência > volume

✔ 1 post por semana
❌ 10 posts em um dia e sumir


🔄 15. Atualize posts antigos

Posts técnicos antigos sobem MUITO quando atualizados.

Exemplo:

  • “Atualizado para z/OS 2.5”

  • “Inclui exemplo CICS TS”


☕ Dica final estilo Bellacosa Mainframe

SEO é como JCL bem escrito:
não aparece… mas se errar um parâmetro, nada roda.

sexta-feira, 5 de junho de 2015

10 Métricas que os Grandes Blogs Usam para Criar Conteúdo Realmente Engajante

 

Bellacosa Mainframe comenta sobre 10 metricas para crescer nosso blog

10 Métricas que os Grandes Blogs Usam para Criar Conteúdo Realmente Engajante

Série Engenharia de Blogs – El Jefe Midnight Lunch
Autor: Vagner Bellacosa


Existe uma diferença interessante entre escrever na internet e engenheirar conteúdo.

A maioria das pessoas publica textos e torce para que alguém leia.

Os grandes blogs fazem o contrário.

Eles medem tudo.

E essa mentalidade é curiosamente muito próxima da cultura do mainframe.

No mundo IBM Z nós não confiamos em suposições.
Nós olhamos:

  • SMF records

  • RMF

  • logs

  • métricas de performance

No mundo dos blogs acontece exatamente a mesma coisa.

Um blog é, essencialmente, um sistema de distribuição de conhecimento.
E todo sistema precisa de observabilidade.

Hoje vamos explorar 10 métricas usadas por blogs profissionais para medir engajamento real.


1 — Tempo Médio na Página (Average Time on Page)

Essa é uma das métricas mais importantes.

Ela mostra quanto tempo as pessoas realmente passam lendo seu artigo.

Exemplo:

ArtigoTempo Médio
Post A22 segundos
Post B3 minutos
Post C7 minutos

Interpretação rápida:

  • menos de 30s → leitor saiu rápido

  • 2–4 min → bom

  • 5+ min → conteúdo muito engajante

Blogs técnicos geralmente têm tempos maiores porque o leitor está estudando.


2 — Profundidade de Scroll

Também chamada de Scroll Depth.

Mostra até onde o leitor rolou o artigo.

Exemplo típico:

ProfundidadeLeitores
25%100%
50%72%
75%41%
100%18%

Isso revela onde os leitores perdem interesse.

Ferramentas comuns:

  • Microsoft Clarity

  • Hotjar

  • Google Tag Manager


3 — CTR Interno (Internal Click Through Rate)

Essa métrica mostra quantas pessoas clicam em outros artigos do blog.

Exemplo:

  • 1000 visitantes em um post

  • 230 clicaram em outro artigo

CTR interno = 23%

Blogs maduros tentam manter entre:

15% e 30%

Isso significa que o leitor continua explorando o conteúdo.


4 — Bounce Rate (Taxa de Rejeição)

Essa métrica mostra quantos visitantes:

  • entram no blog

  • não interagem

  • saem imediatamente

Valores típicos:

Bounce RateInterpretação
40–55%excelente
55–70%normal
70%+conteúdo fraco ou desalinhado

Mas atenção: em blogs educacionais o bounce pode ser alto.

Se a pessoa encontra a resposta e vai embora, isso não é necessariamente ruim.


5 — Páginas por Sessão

Mostra quantas páginas um visitante acessa durante uma visita.

Exemplo:

Sessão média = 3.4 páginas

Isso indica:

  • curiosidade

  • exploração

  • confiança no conteúdo

Blogs de autoridade normalmente ficam entre:

2 e 5 páginas por sessão


6 — Backlinks Gerados

Essa métrica mede quantos outros sites linkam seu conteúdo.

É uma das métricas favoritas do Google.

Exemplo:

ArtigoBacklinks
Post A3
Post B12
Post C45

Quando um artigo recebe muitos backlinks, significa que ele virou referência.


7 — Compartilhamentos Sociais

Quantas vezes seu conteúdo foi compartilhado em redes sociais.

Exemplo:

RedeShares
LinkedIn180
Twitter70
Facebook35

Posts que geram compartilhamento normalmente têm:

  • insights novos

  • guias completos

  • histórias interessantes


8 — Comentários

Uma métrica simples, mas poderosa.

Comentários indicam:

  • envolvimento

  • curiosidade

  • discussão

Blogs técnicos muitas vezes geram comentários longos com perguntas e experiências.

Isso cria comunidade.


9 — Atualização de Conteúdo (Content Freshness)

Conteúdo envelhece.

Principalmente em tecnologia.

Blogs grandes revisam artigos antigos constantemente.

Exemplo:

ArtigoÚltima atualização
2021desatualizado
2023médio
2025atualizado

Atualizar conteúdo antigo pode aumentar muito o tráfego.


10 — Velocity de Conteúdo

Essa é uma métrica pouco comentada.

Ela mede a velocidade com que um artigo ganha tráfego após ser publicado.

Exemplo:

TempoVisitas
1 dia80
1 semana600
1 mês3000

Se um artigo cresce rápido, ele pode se tornar viral.

Blogs profissionais usam essa métrica para decidir:

  • quais posts promover

  • quais transformar em séries

  • quais atualizar rapidamente


Curiosidade

Grandes blogs muitas vezes fazem algo chamado:

Content Pruning

Eles removem ou reescrevem artigos fracos.

Isso melhora o desempenho geral do site no Google.


Easter Egg

Um experimento interessante:

Pegue um artigo antigo e faça apenas três coisas:

  1. melhore o título

  2. adicione links internos

  3. atualize exemplos

Muitas vezes isso já melhora significativamente o engajamento.


Mapa Mental das Métricas de Engajamento

ENGAJAMENTO

├ Leitura
│ ├ tempo na página
│ └ scroll depth

├ Navegação
│ ├ CTR interno
│ └ páginas por sessão

├ Popularidade
│ ├ backlinks
│ └ compartilhamentos

└ Comunidade
├ comentários
└ retorno de leitores

Mantra do artigo

Não escreva apenas para publicar.

Escreva para ser lido, explorado e compartilhado.

E para isso, métricas são suas melhores aliadas.

domingo, 7 de outubro de 2012

📘 CICS Command Level para padawans

 

Aprenda CICS com Bellacosa Mainframe

📘 CICS Command Level para padawans

Walkthrough estilo Bellacosa Mainframe

CICS e suas interligações


O IBM CICS (Customer Information Control System) é, em termos honestos de CPD, o coração online do mainframe. Se o batch é o pulmão que trabalha à noite, o CICS é o sistema nervoso que reage em milissegundos enquanto o banco, a seguradora ou o governo estão abertos.

Tecnicamente, CICS é um gerenciador de transações que roda sobre o z/OS e controla milhares (às vezes milhões) de requisições simultâneas vindas de terminais 3270, aplicações web, APIs, filas e sistemas distribuídos. Cada requisição vira uma TASK, criada, suspensa, retomada e finalizada pelo CICS com uma eficiência quase antipática. Nada de criar processo novo, nada de desperdício: tudo reaproveitado, tudo controlado.

No mundo real, CICS é quem garante que duas pessoas não atualizem o mesmo saldo ao mesmo tempo, que uma queda de energia não corrompa dados e que o sistema continue respirando mesmo sob carga absurda. Ele faz isso com controle de concorrência, integridade transacional (UOW), recuperação automática e isolamento de falhas.

No estilo Bellacosa: CICS não é framework, não é servidorzinho e não é opcional. É um ecossistema maduro, conservador e extremamente confiável. Se ainda está rodando 40 anos depois, não é nostalgia — é engenharia bem-feita.



🔹 MÓDULO I – Conceitos Básicos

IBM CICS

Vamos ao CICS em funcionamento, versão Bellacosa Mainframe – sem romantizar, mas com respeito.

Tudo começa quando o usuário digita uma transação (ex: ABCD) no terminal 3270 ou quando um sistema chama o CICS via API. Nesse momento, o CICS não executa um programa — ele cria uma TASK. Essa TASK é uma entidade leve, controlada, numerada e com prazo de vida curto. Nada de processo pesado, nada de desperdício.

A TASK entra no dispatcher do CICS, que decide quando ela pode rodar. Se precisar de I/O (VSAM, DB2, fila, terminal), a TASK é suspensa educadamente e outra entra no lugar. Multitarefa cooperativa raiz, funcionando há décadas.

Quando o programa COBOL é chamado, ele roda em modo quasi-reentrant, usando áreas compartilhadas e dados isolados por WORKING-STORAGE ou COMMAREA. Cada comando EXEC CICS passa pelo Command Level Interface, que valida, executa e devolve RESP codes. Se algo der errado, o CICS sabe exatamente onde, quando e por quê.

Se houver atualização, o CICS controla a Unit of Work. Se a TASK termina bem, ele faz commit. Se cair, ele desfaz tudo como se nada tivesse acontecido.

No fim, o CICS devolve a resposta ao usuário, mata a TASK sem cerimônia e segue em frente. Rápido, previsível e implacavelmente confiável.

📌 O que é

Introduz o CICS (Customer Information Control System) como gerenciador transacional online, explicando o conceito de TASK, transação, domains, memória e execução concorrente.

🧠 Resumo rápido

CICS não é programa, é um sistema operacionalzinho dentro do z/OS para aplicações online. Ele cria, controla, pausa, retoma e mata tarefas sem dó.

🧪 Exemplo

Uma transação ABCD digitada no terminal cria uma TASK, que executa um programa COBOL, acessa VSAM e responde em milissegundos.

⚠️ Dica Bellacosa

Se você não entende TASK ≠ JOB, você vai sofrer no CICS.

🥚 Easter Egg

QR (Quasi-Reentrant) não é moda antiga — é o motivo pelo qual mil usuários podem usar o mesmo programa sem corrupção de dados.

🤫 Fofoquice

Todo iniciante acha que cada usuário tem “seu programa na memória”. Não tem. É tudo compartilhado. O CICS é mão de vaca por design.


🔹 MÓDULO II – Básico de Programação CICS

CICS COBOL Estrutura basica de um programa

No modo programação em COBOL, o CICS muda completamente a forma de pensar do programador — e é aí que muita gente tropeça. Em CICS, você não escreve um programa que roda do início ao fim; você escreve respostas a eventos controladas pelo gerenciador transacional.

O programa COBOL é carregado uma vez na memória e compartilhado por centenas ou milhares de usuários. Por isso ele precisa ser quasi-reentrant: nada de variáveis globais inocentes, nada de estado permanente sem controle. Cada execução acontece dentro de uma TASK, criada pelo CICS quando uma transação é disparada ou um programa é chamado via LINK, XCTL ou START.

Toda interação com o mundo externo é feita por comandos EXEC CICS. Não existe READ direto, não existe WRITE direto, não existe DISPLAY. Tudo passa pela API do CICS: READ FILE, SEND MAP, RECEIVE MAP, WRITEQ, LINK. Cada comando retorna códigos RESP e RESP2, e ignorar isso é pedir ABEND.

O fluxo é quase sempre pseudo-conversacional: o programa recebe dados, processa, grava se necessário, envia a tela e termina. No próximo ENTER, o CICS cria outra TASK e chama o programa de novo, passando o estado mínimo via COMMAREA ou Channel/Container.

No estilo Bellacosa: programar CICS em COBOL é aceitar que o controle não é seu. E justamente por isso funciona.

📌 O que é

Ensina como escrever programas CICS em COBOL, comandos EXEC CICS, EIB, SEND/RECEIVE, pseudo-conversação e NEWCOPY.

🧠 Resumo rápido

Programar CICS é pensar em eventos, não em fluxo contínuo. Cada ENTER é um novo começo.

🧪 Exemplo

EXEC CICS SEND MAP('TELA01') MAPSET('MAP01') END-EXEC

⚠️ Dica Bellacosa

Se você usar STOP RUN em CICS, o sistema vai te julgar silenciosamente.

🥚 Easter Egg

O EIB é o “log secreto” da task. Tudo o que deu errado (ou certo) está lá.

🤫 Fofoquice

Conversacional “raiz” funciona… até o dia que 300 usuários derrubam a região.


🔹 MÓDULO III – BMS (Basic Mapping Support)

Tela BMS CICS processo de compilação

Quando falamos de CICS + BMS + terminal 3270, estamos falando da engenharia raiz da interface homem-máquina no mainframe, sem JavaScript, sem frescura e com latência ridiculamente baixa.

A BMS (Basic Mapping Support) é a camada que define a tela 3270. Ela não desenha pixels; ela define campos: posição, tamanho, proteção, intensidade, cor, se aceita teclado ou não. Tudo isso vira um mapa físico que o terminal entende e um mapa lógico que o programa COBOL usa. É separação de responsabilidades antes de isso virar moda.

No funcionamento real, o programa CICS envia a tela usando EXEC CICS SEND MAP. O CICS converte o mapa BMS em um buffer 3270 e manda para o terminal. O usuário digita, pressiona ENTER, e o terminal não executa nada — ele apenas devolve o buffer de campos alterados. Simples e eficiente.

Quando o programa faz EXEC CICS RECEIVE MAP, o CICS interpreta o buffer recebido, preenche as áreas correspondentes no copybook do mapa e informa qual tecla foi pressionada via DFHAID. Nenhum campo inválido passa despercebido se você souber testar o byte de atributo.

No estilo Bellacosa: BMS não é feio, é honesto. Ele entrega exatamente o que promete: controle total, previsibilidade absoluta e zero surpresas em produção.

📌 O que é

BMS define telas 3270: layout, campos, atributos, cores, proteção, cursor.

🧠 Resumo rápido

BMS é HTML dos anos 70, só que mais rápido e sem frescura.

🧪 Exemplo

Campo protegido + numérico:

DFHMDF POS=(5,10),LENGTH=10,ATTRB=(PROT,NUM)

⚠️ Dica Bellacosa

Tela feia é culpa do programador, não do CICS.

🥚 Easter Egg

O byte de atributo é onde mora a magia: cor, intensidade, proteção e cursor.

🤫 Fofoquice

Todo mundo copia DFHBMSCA sem saber metade do que ele tem.


🔹 MÓDULO IV – Ferramentas de Apoio

Comandos de linha CICS

No CICS em linha de comando, você abandona o conforto do código e entra no território onde o sistema se revela. Ferramentas como CEDF, CEDX, CECI, CEMT, CESN, CECS e CMAC não são opcionais — são o kit de sobrevivência de quem resolve problema de verdade.

O CEDF é o debugger raiz. Ele intercepta cada EXEC CICS, mostra argumentos, RESP codes, EIB, working-storage e permite alterar valores em tempo real. O CEDX é a versão estendida: mais detalhes, mais poder, mais chance de fazer besteira se não souber o que está fazendo. Debug sem recompilar, do jeito que só mainframe permite.

O CECI é o intérprete de comandos CICS. Serve para testar READ, WRITE, SEND MAP e tudo mais sem escrever uma linha de COBOL. Ideal para provar que o erro não é do arquivo, é do programa. Já o CECS valida sintaxe de comandos CICS — evita erro bobo que vira ABEND caro.

O CEMT é o painel de controle do CICS: status de tasks, arquivos, programas, filas, conexões. Quem domina CEMT entende a região. O CESN cuida de segurança: sign-on, sign-off e identidade do usuário. E o CMAC é a enciclopédia de abends e mensagens — onde você descobre que o erro já aconteceu antes, só não com você.

Estilo Bellacosa: essas transações não são ferramentas — são raio-X do sistema vivo.

📌 O que é

CEDF, CEDX, CECI, CECS e CMAC — o kit sobrevivência do programador CICS.

🧠 Resumo rápido

CEDF é o debugger raiz: feio, poderoso e perigoso.

🧪 Exemplo

Usar CECI para testar um READ VSAM sem escrever código.

⚠️ Dica Bellacosa

Nunca use CEDF em produção sem autorização. O sysprog sente.

🥚 Easter Egg

CEDF permite forçar ABEND. Sim, oficialmente.

🤫 Fofoquice

CEDF + 2 terminais é coisa de veterano que não confia em ninguém.


🔹 MÓDULO V – Acessando Arquivos

CICS acessando Dataset VSAM

Quando o CICS acessa um dataset VSAM, não existe improviso — existe controle fino, concorrência disciplinada e medo saudável de corromper dados. Diferente do batch, aqui tudo acontece online, em milissegundos, com dezenas ou milhares de usuários disputando o mesmo arquivo.

Antes de qualquer coisa, o VSAM é definido ao CICS como um recurso: nome lógico, tipo (KSDS, ESDS ou RRDS), modo de acesso e regras de compartilhamento. O programa COBOL nunca acessa o VSAM direto; ele pede educadamente via EXEC CICS READ, WRITE, REWRITE ou DELETE. Quem decide se pode ou não é o CICS.

No acesso direto, o programa fornece a chave (RIDFLD) e o CICS localiza o registro. Se for só leitura, tudo bem. Se for atualização, entra o jogo sério: lock de registro. O CICS garante que só uma TASK mexa naquele dado por vez. Se outra tentar, ela espera — ou recebe exceção.

No acesso sequencial (browse), o CICS cria um cursor lógico com STARTBR e entrega registro por registro via READNEXT. Tudo controlado, tudo rastreável. Se a TASK cair no meio, o CICS sabe exatamente onde estava.

Estilo Bellacosa: VSAM no CICS não é arquivo — é recurso crítico. Trate como tal, ou o sistema te cobra com juros.

📌 O que é

Leitura de arquivos VSAM (ESDS, KSDS, RRDS), acesso direto e sequencial.

🧠 Resumo rápido

CICS acessa VSAM sem JCL, sem batch, sem paciência.

🧪 Exemplo

EXEC CICS READ FILE('ARQ01') INTO(AREA) RIDFLD(CHAVE) END-EXEC

⚠️ Dica Bellacosa

READ sem RESP é convite para ABEND invisível.

🥚 Easter Egg

Browse (STARTBR/READNEXT) é cursor de banco de dados versão 1974.

🤫 Fofoquice

Problema de concorrência quase sempre é batch rodando fora do horário.


🔹 MÓDULO VI – Atualizando Arquivos


CICS CRUD em VSAM e unidades de trabalho

No CICS, falar de CRUD sem falar de UOW (Unit of Work) é conversa de quem nunca viu dado corrompido em produção. Aqui, criar, ler, atualizar e excluir registro não é só operação — é compromisso com integridade.

O READ é o ponto de entrada: você consulta um registro VSAM ou DB2 e decide o que fazer. Se for só leitura, o CICS observa. Mas no momento em que você faz um READ UPDATE, o jogo muda. O CICS trava o registro para aquela TASK. A partir daí, qualquer CREATE (WRITE), UPDATE (REWRITE) ou DELETE passa a fazer parte de uma UOW.

A UOW é o acordo sagrado: ou tudo acontece, ou nada acontece. Se o programa termina normalmente, o CICS faz o syncpoint (commit) e grava definitivamente as alterações. Se der erro, ABEND, timeout ou queda de sistema, o CICS entra em ação e desfaz tudo usando seus logs. O sistema volta ao estado consistente como se a TASK nunca tivesse existido.

Isso permite concorrência pesada sem caos. Cem usuários podem acessar o mesmo arquivo e, ainda assim, os dados permanecem corretos. Não é sorte — é arquitetura.

Estilo Bellacosa: CRUD em CICS não é sobre gravar dado, é sobre não estragar o que já existe. Quem ignora UOW aprende rápido… geralmente em produção.

📌 O que é

UPDATE, WRITE, DELETE, UOW, integridade e recuperação.

🧠 Resumo rápido

CICS leva consistência a sério. Se cair, ele volta atrás.

🧪 Exemplo

Atualizar registro com REWRITE após READ UPDATE.

⚠️ Dica Bellacosa

UPDATE sem UOW bem definido = auditor sorrindo.

🥚 Easter Egg

UNLOCK existe porque alguém esqueceu de liberar registro em 1989.

🤫 Fofoquice

Quem não entende syncpoint nunca dormiu após deploy.


🔹 MÓDULO VII – Sub-rotinas

CICS chamando subrotinas Xctl e link

No CICS, chamar subrotinas não é simples desvio de fluxo — é orquestração controlada de programas dentro de uma TASK. Aqui, cada chamada tem consequência arquitetural, e errar isso vira efeito dominó em produção.

O comando mais comum é o LINK. Ele chama outro programa, passa o controle, compartilha a mesma UOW e depois volta para o chamador. É a escolha certa quando você precisa reutilizar lógica e manter contexto. LINK é educado, previsível e fácil de auditar. Se o programa chamado falhar, a TASK inteira sente.

Já o XCTL é corte seco. Ele transfere o controle para outro programa e não volta. A partir daí, o chamador deixa de existir. Isso é útil para navegação de fluxo — mudar de tela, mudar de etapa — mas perigoso se usado sem critério. Muito sistema virou labirinto por abuso de XCTL.

O START cria uma nova TASK, independente, assíncrona. É processamento em paralelo versão mainframe: robusto, rastreável e com impacto real no sistema. Use com consciência.

A comunicação entre programas pode ser via COMMAREA (limitada, clássica) ou Channel/Container (moderna, flexível). Ambas exigem disciplina.

Estilo Bellacosa: em CICS, chamar programa é decisão de arquitetura, não linha de código.

📌 O que é

LINK, XCTL, START, LOAD, níveis lógicos e COMMAREA.

🧠 Resumo rápido

LINK volta, XCTL não. Parece simples, mas derruba sistemas.

🧪 Exemplo

EXEC CICS LINK PROGRAM('PGM02') COMMAREA(AREA) END-EXEC

⚠️ Dica Bellacosa

COMMAREA grande é gambiarra elegante.

🥚 Easter Egg

START cria task assíncrona — tipo thread, só que sério.

🤫 Fofoquice

Muita aplicação virou “espaguete” por abuso de XCTL.


🔹 MÓDULO VIII – Channel / Container

CICS e o uso de commarea e cotainers

No CICS, Channel e Container surgem como resposta adulta a um problema antigo: a COMMAREA era útil, mas pequena, rígida e fácil de virar gambiarra. Channel/Container é o CICS dizendo: “vamos fazer isso direito”.

Um Channel é um agrupador lógico. Pense nele como um envelope nomeado que viaja junto com a TASK. Dentro dele vivem os Containers, que são áreas de dados independentes, cada uma com nome, tipo e tamanho próprio. Não existe limite prático de 32K, não existe copybook único obrigatório, não existe empacotamento manual de estruturas. Cada container carrega exatamente o que precisa carregar.

Na prática, quando um programa chama outro via LINK ou XCTL, ele pode passar um Channel inteiro. O programa chamado acessa apenas os containers que lhe interessam. Isso reduz acoplamento, melhora legibilidade e facilita evolução do sistema sem quebrar o legado.

Os comandos são explícitos: PUT CONTAINER, GET CONTAINER, DELETE CONTAINER. Nada mágico, tudo rastreável. O CICS gerencia memória, ciclo de vida e limpeza automaticamente quando a TASK termina.

Estilo Bellacosa: Channel/Container não é moda — é higiene arquitetural. Quem insiste em COMMAREA gigante não está sendo “clássico”, está só adiando o próximo problema.

📌 O que é

Substituto moderno da COMMAREA.

🧠 Resumo rápido

Channel/Container é COMMAREA adulta, sem limite de 32K.

🧪 Exemplo

Passar múltiplas estruturas sem copybook único.

⚠️ Dica Bellacosa

Projeto novo? Use Channel/Container. Sempre.

 

CICS channel

🥚 Easter Egg

Você pode passar XML, JSON e estruturas complexas sem dor.


🔹 MÓDULO IX – Áreas Externas

CICS em areas externas getmain e freemain

No CICS, falar de áreas externas, GETMAIN e FREEMAIN é entrar no território onde o programador deixa de ser usuário da API e vira responsável direto pela memória. Aqui não tem coletor de lixo, não tem perdão automático.

Por padrão, programas CICS são quasi-reentrant e compartilham código. A WORKING-STORAGE existe, mas é controlada pelo CICS. Quando você precisa de memória dinâmica — tabelas em tempo de execução, buffers variáveis, listas crescentes — entra o GETMAIN. Ele pede ao CICS um bloco de memória, no tamanho exato, dentro da região apropriada (TASK ou SHARED). A memória vem zerada, identificável e sob controle do gerenciador.

O perigo começa quando o programador esquece que toda memória alocada precisa ser devolvida. É aí que entra o FREEMAIN. Ele libera explicitamente aquela área. Se você não chamar FREEMAIN, o CICS até limpa no fim da TASK, mas você cria pressão desnecessária na região, degrada performance e ganha fama silenciosa.

GETMAIN mal usado vira vazamento, corrupção e comportamento fantasma. GETMAIN bem usado resolve problemas reais com elegância.

Estilo Bellacosa: GETMAIN é poder, FREEMAIN é responsabilidade. Quem domina os dois escreve sistema robusto. Quem esquece um deles cria incidente que ninguém entende — até o sysprog olhar.

📌 O que é

GETMAIN, FREEMAIN, tabelas em memória, SET.

🧠 Resumo rápido

Memória dinâmica em CICS é poder — e perigo.

⚠️ Dica Bellacosa

Quem esquece FREEMAIN cria vazamento silencioso.


🔹 MÓDULO X – Filas TD e TS

CICS e dados armazenados em ts e td

No CICS, filas TD e TS existem para resolver dois problemas distintos que muita gente insiste em misturar. E quando mistura, dá dor de cabeça.

As filas TD (Transient Data) são feitas para mensagens sequenciais: logs, integração, auditoria, disparo de processos. Você escreve, alguém lê, acabou. Elas podem ser intrapartition (gerenciadas totalmente pelo CICS) ou extrapartition (apontando para datasets externos). TD é fluxo, é trilha, é “escreveu, seguiu em frente”. Não é banco de dados e não é memória temporária.

Já as filas TS (Temporary Storage) são armazenamento temporário com nome. Você grava um item, lê depois, atualiza, apaga quando quiser. TS é usada para guardar contexto entre pseudo-conversações, listas temporárias, dados intermediários. Pode ser em memória ou em dataset, dependendo da configuração. É flexível, mas exige disciplina.

A regra não escrita: TD não se lê para decidir lógica; TS não se usa como persistência definitiva. TD é linear, TS é aleatório. Cada uma tem custo, impacto e comportamento próprios.

Estilo Bellacosa: TD é correio, TS é gaveta. Quem usa correio como gaveta perde carta. Quem usa gaveta como arquivo perde o sistema.

📌 O que é

Queueing no CICS: TD (logs, integração) e TS (temporário).

🧠 Resumo rápido

TD é “mensagem”, TS é “memória com nome”.

⚠️ Dica Bellacosa

TS não é banco de dados. Nunca foi.


🔹 MÓDULO XI – Tratamento de Exceções

CICS trantando erros e exceções

No CICS, tratamento de erros e exceções não é detalhe — é parte da arquitetura. Aqui o sistema assume que algo vai dar errado e se prepara melhor do que muita aplicação moderna.

Toda chamada EXEC CICS retorna códigos RESP e RESP2. Ignorar isso é escolher viver no escuro. O RESP indica o tipo geral da condição; o RESP2 detalha o motivo real. Arquivo não encontrado, registro bloqueado, mapa inválido, segurança negada — tudo é sinalizado. Quem testa RESP controla o fluxo. Quem não testa, recebe ABEND surpresa.

Além disso, o CICS permite HANDLE CONDITION, que desvia automaticamente o fluxo quando uma exceção ocorre. É poderoso, mas exige disciplina. Existe também o NOHANDLE, para quando você quer assumir o risco conscientemente. Já o IGNORE CONDITION é a forma oficial de dizer: “sei que isso pode acontecer e não é erro”.

Para falhas graves, entra o HANDLE ABEND. Ele permite capturar o abend, registrar contexto, liberar recursos e até apresentar mensagem amigável ao usuário antes do fim da TASK. O CICS não deixa o sistema cair — ele isola o problema.

Estilo Bellacosa: erro em CICS não é acidente, é evento esperado. Trate, registre e siga em frente. Quem não faz isso vira estudo de caso no CMAC.

📌 O que é

RESP, RESP2, HANDLE CONDITION, HANDLE ABEND.

🧠 Resumo rápido

Erro não tratado em CICS vira ABEND educacional.

⚠️ Dica Bellacosa

RESP é obrigação moral.


🔹 MÓDULO XII – Programas Exemplo

Em breve disponibilizarei o link do repositorio do GITHUB.

📌 O que é

Integra tudo: tela, VSAM, navegação, exceções.

🧠 Resumo rápido

Aqui o aluno vira programador de verdade.


📚 GUIA DE ESTUDO (Bellacosa Approved)

Mapa do Tesouro CICS


🥇 Ordem ideal

  1. Conceitos + TASK

  2. EXEC CICS + EIB

  3. BMS

  4. VSAM READ/BROWSE

  5. UPDATE + UOW

  6. LINK/XCTL

  7. Channel/Container

  8. Exceções

🛠️ Treinar sempre

  • CECI antes de codar

  • CEDF em ambiente controlado

  • Ler CMAC após ABEND

🧠 Mentalidade

CICS não executa programas.
Ele orquestra eventos.


Trabalho em curso