Translate

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

segunda-feira, 13 de julho de 2026

Inteligência Não é o Resultado: Tokens, Contexto e a Nova Economia da IA Corporativa

 

Bellacosa Mainframe fala sobre tokens contexto e a ia

☕ Um Café no Bellacosa Mainframe

Inteligência Não é o Resultado: Tokens, Contexto e a Nova Economia da IA Corporativa

Imagine a cena.

É madrugada no datacenter. As luzes azuis dos corredores refletem nos gabinetes, os ventiladores trabalham em ritmo constante e, no centro da sala, um programador COBOL padawan observa um painel moderno repleto de gráficos sobre inteligência artificial.

No painel aparecem números impressionantes:

  • bilhões de parâmetros;

  • milhões de tokens processados;

  • GPUs operando em paralelo;

  • latência inferior a um segundo;

  • custo de inferência caindo mês após mês;

  • modelos cada vez maiores e mais rápidos.

O padawan sorri e pergunta ao mestre:

— Então vencemos? Nossa IA está pronta?

O mestre toma um gole de café, olha para o terminal e responde:

— Depende. O que ela fez pela empresa?

O jovem programador fica em silêncio.

A resposta resume um dos maiores desafios da inteligência artificial corporativa:

Inteligência não é o resultado. Inteligência é apenas um componente do caminho até o resultado.

Uma empresa não recebe dinheiro porque processou mais tokens. Não conquista clientes porque sua GPU executou inferências mais rapidamente. Não reduz perdas simplesmente porque instalou um modelo de linguagem com centenas de bilhões de parâmetros.

O valor aparece quando a inteligência é transformada em ação.

Quando uma fraude é bloqueada.

Quando uma transação é concluída.

Quando um cliente recebe a resposta correta.

Quando uma falha é evitada.

Quando uma operação é automatizada com segurança.

Quando uma decisão é tomada com base em dados confiáveis, contexto adequado e regras de negócio governadas.

É sobre essa transformação que vamos conversar neste café.


1. O grande engano da economia dos tokens

Nos primeiros anos da popularização da inteligência artificial generativa, grande parte da discussão se concentrou nos modelos.

As perguntas mais comuns eram:

  • Qual modelo possui mais parâmetros?

  • Qual gera textos melhores?

  • Qual responde mais rápido?

  • Qual possui a maior janela de contexto?

  • Quanto custa um milhão de tokens?

  • Quantas GPUs são necessárias?

  • Qual modelo venceu determinado benchmark?

Essas métricas são importantes. Entretanto, elas medem principalmente capacidade técnica.

Elas não demonstram, por si só, valor de negócio.

É parecido com avaliar um programa COBOL apenas pela quantidade de instruções executadas por segundo.

Imagine que um programa processa dez milhões de registros em dois minutos. Parece excelente. Porém, ao final, ele gera valores incorretos nas contas dos clientes.

Foi rápido?

Sim.

Foi eficiente?

Talvez.

Gerou valor?

Não.

Na realidade, criou um problema mais rapidamente.

O mesmo acontece com a IA.

Uma organização pode reduzir o custo de um milhão de tokens em 80%, aumentar o throughput e utilizar servidores mais poderosos. Contudo, se o sistema continuar produzindo respostas irrelevantes, decisões erradas ou tarefas incompletas, o benefício econômico é pequeno.

O erro está em confundir uma unidade de processamento com uma unidade de valor.

O token é uma unidade técnica.

O resultado é uma unidade de negócio.


2. O que é um token, afinal?

Para um programador COBOL acostumado com registros, campos, bytes e layouts, podemos comparar o token a uma pequena unidade usada pelo modelo para interpretar uma informação.

Uma palavra pode ser formada por um ou vários tokens.

Por exemplo, uma frase como:

O cliente solicitou o cancelamento do cartão.

é dividida internamente em partes menores. O modelo processa essas partes, identifica padrões e calcula quais tokens devem aparecer na resposta.

O custo de muitos serviços de IA é calculado com base na quantidade de tokens de entrada e saída.

Temos então:

Tokens de entrada:
pergunta, documentos, histórico, instruções.

Tokens de saída:
resposta gerada pelo modelo.

Em uma aplicação simples, isso funciona bem.

Entretanto, em uma empresa, o objetivo raramente é apenas gerar texto.

Considere esta solicitação:

Cliente:
Perdi meu cartão e há uma compra que não reconheço.

Um chatbot baseado apenas em texto pode responder:

Sinto muito pelo ocorrido.
Entre em contato com a central do banco para bloquear o cartão.

A resposta pode ser educada e tecnicamente correta.

Mas o problema continua existindo.

O cartão não foi bloqueado.

A transação não foi contestada.

O cliente ainda corre risco.

Nenhuma investigação foi aberta.

A IA gerou tokens, mas não gerou um resultado.


3. Da resposta para a ação

Uma aplicação corporativa madura precisa transformar a solicitação em uma sequência de operações.

Por exemplo:

1. Identificar o cliente.
2. Confirmar a autenticação.
3. Consultar os cartões ativos.
4. Verificar as últimas transações.
5. Bloquear o cartão comprometido.
6. Abrir uma contestação.
7. Solicitar um novo cartão.
8. Registrar a operação para auditoria.
9. Enviar confirmação ao cliente.

Agora não estamos mais falando apenas de um modelo.

Estamos falando de um sistema completo.

Esse sistema precisa conectar:

Modelo de IA
    +
Dados
    +
Aplicações
    +
APIs
    +
Segurança
    +
Governança
    +
Infraestrutura
    +
Operações

A inteligência artificial interpreta a intenção.

Os sistemas corporativos executam a ação.

Essa distinção é essencial.

O modelo pode compreender que o cliente deseja bloquear um cartão. Porém, quem realiza o bloqueio é uma aplicação transacional, talvez escrita em COBOL, executando em CICS e acessando dados no Db2.

O modelo não substitui necessariamente o sistema de negócio.

Ele passa a conversar com ele.


4. Tokens ficam baratos, contexto fica valioso

Uma das ideias mais importantes da nova economia da IA é a seguinte:

Tokens tendem a se tornar abundantes. Contexto confiável continuará sendo raro.

Os modelos estão ficando mais eficientes.

O custo da inferência tende a cair.

A capacidade computacional continua aumentando.

Modelos abertos e comerciais competem intensamente.

Consequentemente, o acesso à inteligência genérica tende a se tornar cada vez mais comum.

A pergunta estratégica deixa de ser:

Qual empresa possui acesso a um modelo de IA?

E passa a ser:

Qual empresa consegue fornecer ao modelo o contexto correto, no momento correto, com segurança e governança?

Vamos comparar duas situações.

Situação A: modelo sem contexto

Usuário:
O cliente João pode receber aumento de limite?

Resposta da IA:

Para avaliar um aumento de limite, considere renda,
histórico de pagamentos e nível de endividamento.

A resposta é genérica.

Pode ter sido escrita por qualquer modelo.

Situação B: modelo com contexto corporativo

Usuário:
O cliente João pode receber aumento de limite?

O sistema consulta:

CRM:
Cliente desde 2012.

Db2:
Nenhum atraso nos últimos 36 meses.

Sistema de crédito:
Score interno 892.

Sistema antifraude:
Nenhum alerta ativo.

Folha de pagamento:
Renda média aumentou 18%.

Política corporativa:
Aumento automático permitido até 20%.

Resposta:

O cliente está elegível para aumento de até 20%,
conforme a política de crédito vigente.

Motivos:
- relacionamento de 14 anos;
- ausência de atraso em 36 meses;
- score interno elevado;
- aumento comprovado de renda;
- nenhum alerta de fraude.

A recomendação exige confirmação do analista.

A diferença não está apenas no modelo.

Está no contexto.


5. O contexto proprietário como vantagem competitiva

Qualquer empresa pode contratar acesso a um modelo.

Porém, nenhuma concorrente possui exatamente:

  • seu histórico de clientes;

  • suas regras de negócio;

  • seus contratos;

  • seus dados operacionais;

  • seus registros de fraude;

  • seus manuais;

  • sua experiência acumulada;

  • seus sistemas legados;

  • seus fluxos de aprovação;

  • seu conhecimento institucional.

Esse conjunto forma o chamado contexto proprietário.

No mundo mainframe, uma parcela significativa desse contexto pode estar armazenada em:

  • tabelas Db2;

  • bancos IMS;

  • arquivos VSAM;

  • filas MQ;

  • transações CICS;

  • programas COBOL;

  • copybooks;

  • logs SMF;

  • datasets sequenciais;

  • catálogos;

  • regras codificadas durante décadas.

Eis um detalhe que muitos projetos modernos ignoram:

O mainframe não armazena apenas dados antigos. Ele contém contexto operacional acumulado.

Um programa COBOL de quarenta anos pode representar regras de negócio que nunca foram formalmente documentadas em outro lugar.

Por exemplo:

IF CLIENTE-SEGMENTO = 'P'
   AND DIAS-ATRASO = ZERO
   AND SCORE-CREDITO > 850
   AND VALOR-SOLICITADO <= LIMITE-AUTOMATICO
       MOVE 'APROVADO' TO STATUS-PROPOSTA
ELSE
       MOVE 'ANALISE' TO STATUS-PROPOSTA
END-IF.

Esse trecho não é apenas código.

Ele é conhecimento empresarial executável.

É uma política.

É contexto.

É parte da inteligência corporativa.


6. O perigo de construir agentes sobre dados desorganizados

Muitas empresas estão correndo para implementar agentes de IA.

O problema é que um agente pode automatizar decisões e executar tarefas. Portanto, um erro cometido por ele pode se espalhar muito mais rapidamente do que um erro em um chatbot tradicional.

Um chatbot errado gera uma resposta ruim.

Um agente errado pode:

  • cancelar um pedido;

  • bloquear um cliente;

  • aprovar um pagamento;

  • alterar um cadastro;

  • abrir milhares de chamados;

  • executar uma rotina indevida;

  • enviar informações confidenciais;

  • interromper um processo produtivo.

Observe esta arquitetura problemática:

Agente de IA
    |
    +--> CRM desatualizado
    |
    +--> planilha manual
    |
    +--> base duplicada
    |
    +--> documentação antiga
    |
    +--> API sem controle

O agente pode ser sofisticado.

O modelo pode ser excelente.

A infraestrutura pode ser poderosa.

Mesmo assim, o resultado será frágil.

No mundo COBOL, aprendemos há décadas a regra:

Garbage In, Garbage Out

Entrada ruim produz saída ruim.

Na era dos agentes, podemos acrescentar:

Garbage In, Automated Disaster Out

Entrada ruim pode produzir desastre automatizado.

É um pouco dramático, mas é verdade.


7. O custo por token não é o custo por tarefa concluída

Aqui aparece uma armadilha financeira importante.

Uma empresa pode celebrar a redução do custo por token, enquanto o custo real de completar uma tarefa continua aumentando.

Imagine um agente responsável por resolver chamados.

Modelo antigo:

Custo por milhão de tokens: US$ 10
Tokens por tarefa: 10.000
Taxa de sucesso: 80%

Modelo novo:

Custo por milhão de tokens: US$ 2
Tokens por tarefa: 40.000
Taxa de sucesso: 45%

O novo modelo parece mais barato por token.

Entretanto, ele usa quatro vezes mais tokens e falha com maior frequência.

Precisamos calcular o custo da tarefa concluída.

Exemplo simplificado

Modelo antigo:

10.000 tokens por tentativa
US$ 10 por 1.000.000 de tokens

Custo por tentativa:
10.000 / 1.000.000 x 10 = US$ 0,10

Com 80% de sucesso:

Custo aproximado por tarefa concluída:
0,10 / 0,80 = US$ 0,125

Modelo novo:

40.000 tokens por tentativa
US$ 2 por 1.000.000 de tokens

Custo por tentativa:
40.000 / 1.000.000 x 2 = US$ 0,08

Com 45% de sucesso:

Custo aproximado por tarefa concluída:
0,08 / 0,45 = US$ 0,177

O token ficou mais barato.

A tarefa ficou mais cara.

E ainda nem consideramos:

  • retrabalho;

  • intervenção humana;

  • erros operacionais;

  • consumo de APIs;

  • processamento de banco de dados;

  • armazenamento;

  • auditoria;

  • observabilidade;

  • impacto de decisões incorretas.

Esse é um dos grandes ensinamentos:

O indicador correto não é somente custo por token. É custo por resultado confiável.


8. A jornada em três fases

A imagem apresenta uma evolução poderosa:

Tokens → Contexto → Outcomes

Vamos aprofundar cada estágio.

Fase 1 — Tokens

É a fase da inteligência genérica.

A empresa mede:

  • preço;

  • velocidade;

  • capacidade;

  • latência;

  • tamanho do modelo;

  • consumo de GPU.

O objetivo é gerar uma boa resposta.

Fase 2 — Contexto

A empresa conecta o modelo aos seus dados.

Entram em cena:

  • RAG;

  • bancos vetoriais;

  • catálogos;

  • metadados;

  • APIs;

  • documentos;

  • sistemas transacionais;

  • dados históricos;

  • regras corporativas.

O objetivo é gerar uma resposta relevante para a organização.

Fase 3 — Resultado confiável

A empresa transforma a resposta em ação controlada.

Entram em cena:

  • agentes;

  • automação;

  • workflows;

  • aprovações;

  • autenticação;

  • autorização;

  • observabilidade;

  • auditoria;

  • rollback;

  • compliance.

O objetivo é gerar uma ação mensurável, segura e repetível.


9. RAG: dando memória ao modelo

Um dos mecanismos mais comuns para fornecer contexto a um modelo é o RAG, sigla para Retrieval-Augmented Generation.

Em português, algo como geração aumentada por recuperação de informação.

O fluxo básico é:

Pergunta
   |
   v
Busca de documentos relevantes
   |
   v
Documentos adicionados ao prompt
   |
   v
Modelo gera resposta baseada no contexto

Vamos imaginar um assistente para suporte COBOL.

Pergunta:

Como resolver o ABEND S0C7 do programa PAGT001?

Sem RAG, o modelo responde genericamente:

S0C7 normalmente indica dados inválidos em uma operação numérica.

Com RAG, o sistema consulta:

  • manual interno;

  • dump do programa;

  • copybook;

  • histórico de incidentes;

  • documentação do batch;

  • versão do módulo.

O contexto recuperado informa:

O campo WS-VALOR-ENTRADA é lido da posição 81,
mas o arquivo recebido possui caracteres em branco.

A resposta passa a ser:

No programa PAGT001, o S0C7 ocorre porque o campo
WS-VALOR-ENTRADA recebe espaços do registro de entrada.

Antes da conversão, valide o conteúdo:

IF CAMPO-ENTRADA NUMERIC
    MOVE CAMPO-ENTRADA TO WS-VALOR
ELSE
    MOVE ZERO TO WS-VALOR
END-IF.

Agora a resposta possui contexto real.


10. Do RAG ao agente

RAG responde.

Agente executa.

Considere este pedido:

Reprocesse o job de faturamento que falhou.

Um agente corporativo poderia seguir este fluxo:

1. Localizar o job no JES2.
2. Consultar o retorno no SDSF.
3. Identificar o step com falha.
4. Ler mensagens do sistema.
5. Correlacionar com incidentes anteriores.
6. Validar se o reprocessamento é permitido.
7. Solicitar aprovação, quando necessário.
8. Reexecutar o job.
9. Monitorar o novo processamento.
10. Registrar tudo na auditoria.

Perceba a diferença.

O agente não pode simplesmente encontrar um exemplo de JCL e submetê-lo.

Ele precisa respeitar:

  • autorização RACF;

  • regras operacionais;

  • janela batch;

  • dependências;

  • datasets;

  • estado do processamento;

  • políticas de reexecução;

  • impacto financeiro;

  • aprovação humana.

É aí que governança e segurança deixam de ser acessórios.

Elas tornam-se componentes centrais.


11. Segurança: o agente não pode ser um superusuário irresponsável

Um agente precisa operar segundo o princípio do menor privilégio.

Em ambientes z/OS, isso significa respeitar controles como:

  • RACF;

  • SAF;

  • perfis de dataset;

  • classes de recurso;

  • autorização de comandos;

  • acesso a transações;

  • controle de APIs;

  • trilhas SMF;

  • segregação de funções.

Imagine um agente que pode:

  • submeter qualquer job;

  • ler qualquer dataset;

  • alterar tabelas;

  • cancelar transações;

  • acessar dados pessoais.

Mesmo que a intenção seja legítima, esse desenho cria um risco gigantesco.

O correto é limitar o agente.

Exemplo:

Agente de suporte batch:

Pode:
- consultar spool;
- ler mensagens;
- comparar incidentes;
- sugerir correções;
- reexecutar jobs pré-autorizados.

Não pode:
- alterar loadlibs de produção;
- modificar datasets críticos;
- submeter JCL fora da whitelist;
- acessar dados de clientes;
- ignorar aprovações.

Uma boa arquitetura trata o agente como qualquer identidade corporativa.

Ele possui:

  • credencial;

  • função;

  • escopo;

  • permissões;

  • responsabilidade;

  • trilha de auditoria.


12. Governança: quem decidiu, por quê e com quais dados?

Em ambientes regulados, não basta uma decisão estar correta.

Ela precisa ser explicável.

Considere um agente de crédito.

Ele nega uma proposta.

A empresa precisa responder:

  • Qual modelo foi utilizado?

  • Qual versão?

  • Quais dados foram consultados?

  • Qual política estava vigente?

  • Houve intervenção humana?

  • A decisão pode ser reproduzida?

  • Existia viés?

  • Os dados estavam atualizados?

  • O cliente pode contestar?

Sem essas respostas, a automação se torna uma caixa-preta perigosa.

Uma trilha de auditoria pode registrar:

Data/Hora: 2026-07-14 14:35:12
Agente: AGT-CREDITO-01
Modelo: MODELO-CREDITO-V3
Política: POL-CRED-2026-04
Cliente: ID anonimizado 984521
Dados consultados:
- score interno;
- renda declarada;
- histórico de pagamento;
- alertas de fraude.

Decisão:
Encaminhado para análise humana.

Motivo:
Divergência entre renda declarada e histórico de movimentação.

Esse registro transforma uma ação de IA em uma ação corporativamente defensável.


13. O papel da infraestrutura

A imagem apresenta uma fundação composta por tecnologias como LinuxONE, OpenShift, IBM Fusion, Storage Scale, Ceph e watsonx.

A mensagem não é que uma única tecnologia resolve tudo.

A mensagem é que IA corporativa exige uma base coordenada.

Vamos interpretar cada camada.

LinuxONE

LinuxONE representa uma plataforma voltada a cargas Linux empresariais com forte ênfase em:

  • escalabilidade;

  • consolidação;

  • segurança;

  • disponibilidade;

  • eficiência operacional.

Ele pode hospedar aplicações, APIs, bancos de dados, containers e serviços de IA próximos dos sistemas corporativos.

Red Hat OpenShift

OpenShift atua como camada de orquestração de containers.

Ele permite executar:

  • microsserviços;

  • APIs;

  • pipelines;

  • modelos;

  • aplicações;

  • agentes;

  • componentes de integração.

Para o padawan COBOL, podemos compará-lo a uma grande plataforma que administra milhares de aplicações empacotadas em containers, distribuindo recursos, reiniciando componentes e aplicando políticas.

IBM Fusion

IBM Fusion aparece como uma fundação para dados e operações.

Em uma arquitetura de IA, armazenamento não significa apenas “guardar arquivos”.

É necessário:

  • disponibilizar dados;

  • proteger dados;

  • mover dados;

  • criar cópias;

  • restaurar ambientes;

  • aplicar políticas;

  • manter consistência;

  • fornecer desempenho.

Storage Scale

Storage Scale é associado ao acesso paralelo e distribuído a grandes volumes de informação.

Em cargas de IA, muitos processos podem precisar acessar enormes conjuntos de dados simultaneamente.

Um armazenamento lento transforma GPUs caras em máquinas esperando dados.

É o velho problema de I/O.

O programador COBOL conhece isso bem.

Não adianta possuir CPU rápida se o programa passa o tempo inteiro aguardando leitura.

Ceph

Ceph fornece armazenamento distribuído em diferentes formatos:

  • objeto;

  • bloco;

  • arquivo.

É bastante útil em ambientes de nuvem e containers, especialmente quando aplicações precisam de armazenamento resiliente e escalável.

watsonx

O watsonx representa a camada de IA, dados e governança.

De forma conceitual:

watsonx.ai
Modelos, desenvolvimento e inferência.

watsonx.data
Dados preparados para análise e IA.

watsonx.governance
Controle, risco, transparência e auditoria.

O ponto central é importante:

A IA empresarial não é apenas o modelo. Ela depende de dados e governança na mesma proporção.


14. O mainframe como servidor de contexto

Muitos projetos cometem um erro cultural: tratam o mainframe como um sistema antigo que precisa ser contornado.

Entretanto, nas grandes empresas, o mainframe frequentemente contém o contexto mais confiável.

É nele que estão:

  • o saldo verdadeiro;

  • o estoque verdadeiro;

  • o contrato vigente;

  • o pagamento confirmado;

  • a apólice ativa;

  • o cadastro oficial;

  • a transação contabilizada.

Uma IA pode ler milhares de documentos, mas a resposta definitiva pode depender de uma única consulta ao Db2.

Exemplo:

SELECT STATUS_CONTA,
       SALDO_DISPONIVEL,
       LIMITE_CREDITO
  FROM CONTAS
 WHERE NUMERO_CONTA = :WS-CONTA;

Essa consulta retorna o estado operacional real.

O documento explica a política.

O sistema transacional informa a verdade atual.

A combinação dos dois produz contexto confiável.


15. Exemplo completo: agente de atendimento bancário

Vamos montar uma arquitetura passo a passo.

Solicitação

Cliente:
Quero contestar a compra de R$ 2.500 realizada ontem.

Etapa 1 — Interpretação

O modelo identifica:

Intenção:
Contestar transação.

Entidades:
Valor: R$ 2.500.
Período: ontem.

Etapa 2 — Autenticação

Antes de consultar informações, o sistema confirma a identidade do cliente.

MFA validado.
Sessão autenticada.
Token de acesso emitido.

Etapa 3 — Consulta de transações

Uma API chama o sistema transacional.

OpenShift
   |
   v
API corporativa
   |
   v
z/OS Connect
   |
   v
CICS
   |
   v
Programa COBOL
   |
   v
Db2

O COBOL recebe os dados:

01 REQUEST-DATA.
   05 REQ-CONTA          PIC X(12).
   05 REQ-DATA-INICIAL   PIC X(10).
   05 REQ-VALOR          PIC 9(7)V99.

01 RESPONSE-DATA.
   05 RESP-CODIGO        PIC X(04).
   05 RESP-DESCRICAO     PIC X(100).
   05 RESP-ID-TRANSACAO  PIC X(20).

Etapa 4 — Aplicação das regras

A política determina:

Compras acima de R$ 2.000 exigem análise adicional.

O agente não pode simplesmente devolver o dinheiro.

Ele precisa:

- bloquear temporariamente a transação;
- gerar protocolo;
- abrir análise antifraude;
- avisar o cliente;
- registrar a decisão.

Etapa 5 — Auditoria

Tudo é registrado.

Quem solicitou.
Qual agente atuou.
Quais dados foram consultados.
Qual regra foi aplicada.
Qual ação foi executada.

Etapa 6 — Resultado

Resposta final:

A transação de R$ 2.500 foi localizada.

Foi aberto o protocolo 845219.
O valor está em análise.
O cartão permanece ativo, mas novas transações suspeitas
serão monitoradas.

Prazo estimado: até 5 dias úteis.

Agora existe um resultado real.

Não apenas uma resposta elegante.


16. TTO: Time to Outcome

A sigla TTO significa Time to Outcome, ou tempo até o resultado.

Durante muitos anos, a tecnologia falou sobre:

  • Time to Market;

  • Time to Value;

  • tempo de resposta;

  • tempo de processamento;

  • SLA.

O TTO mede quanto tempo uma organização leva para transformar uma necessidade em um resultado concluído.

Considere um incidente batch.

Processo tradicional

08:00 — job falha.
08:20 — operador identifica.
08:45 — chamado é aberto.
09:30 — equipe analisa.
10:15 — causa é descoberta.
11:00 — correção é aprovada.
11:30 — job é reexecutado.
12:00 — processamento termina.

TTO:

4 horas.

Processo assistido por IA

08:00 — job falha.
08:01 — agente lê mensagens.
08:02 — correlaciona com incidente anterior.
08:03 — valida pré-requisitos.
08:04 — solicita aprovação.
08:07 — operador aprova.
08:08 — agente reexecuta.
08:30 — processamento termina.

TTO:

30 minutos.

A IA não criou valor porque leu o spool rapidamente.

Criou valor porque reduziu o tempo até a recuperação.


17. Métricas melhores para IA corporativa

Além do custo por token, uma organização deveria acompanhar:

Taxa de conclusão

Quantas tarefas foram realmente concluídas?

Tarefas iniciadas: 1.000
Tarefas concluídas: 760
Taxa de conclusão: 76%

Taxa de intervenção humana

Quantas tarefas exigiram correção?

Tarefas concluídas: 760
Intervenções humanas: 180
Taxa: 23,7%

Custo por resultado

Inclui:

  • tokens;

  • infraestrutura;

  • APIs;

  • processamento;

  • armazenamento;

  • retrabalho;

  • supervisão humana.

Tempo até o resultado

Quanto tempo o processo completo levou?

Taxa de erro operacional

Quantas ações precisaram ser revertidas?

Conformidade

Quantas ações possuíam:

  • autorização;

  • justificativa;

  • trilha;

  • evidência;

  • política associada?

Essas métricas aproximam IA de operação real.


18. Um exemplo COBOL: preparando contexto para uma API

Imagine um programa COBOL que consulta dados de um cliente para um agente.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CLIENTE-CONTEXTO.

       DATA DIVISION.
       WORKING-STORAGE SECTION.

       01 WS-CLIENTE-ID        PIC 9(10).
       01 WS-NOME              PIC X(40).
       01 WS-SEGMENTO          PIC X(10).
       01 WS-SCORE             PIC 9(03).
       01 WS-DIAS-ATRASO       PIC 9(03).
       01 WS-STATUS            PIC X(10).

       01 WS-CONTEXTO.
          05 FILLER            PIC X(12) VALUE
             '"cliente":"'.
          05 WS-JSON-NOME      PIC X(40).
          05 FILLER            PIC X(14) VALUE
             '","segmento":"'.
          05 WS-JSON-SEGMENTO  PIC X(10).
          05 FILLER            PIC X(10) VALUE
             '","score":'.
          05 WS-JSON-SCORE     PIC 9(03).
          05 FILLER            PIC X(01) VALUE '}'.

       PROCEDURE DIVISION.

           MOVE 1234567890 TO WS-CLIENTE-ID

           EXEC SQL
               SELECT NOME,
                      SEGMENTO,
                      SCORE,
                      DIAS_ATRASO,
                      STATUS
                 INTO :WS-NOME,
                      :WS-SEGMENTO,
                      :WS-SCORE,
                      :WS-DIAS-ATRASO,
                      :WS-STATUS
                 FROM CLIENTES
                WHERE CLIENTE_ID = :WS-CLIENTE-ID
           END-EXEC

           IF SQLCODE = 0
               MOVE WS-NOME     TO WS-JSON-NOME
               MOVE WS-SEGMENTO TO WS-JSON-SEGMENTO
               MOVE WS-SCORE    TO WS-JSON-SCORE
               DISPLAY WS-CONTEXTO
           ELSE
               DISPLAY 'ERRO SQLCODE: ' SQLCODE
           END-IF

           GOBACK.

O objetivo do exemplo não é apresentar um gerador JSON perfeito, mas mostrar a ideia.

O programa:

  1. recebe o identificador do cliente;

  2. consulta dados no Db2;

  3. organiza as informações;

  4. disponibiliza o contexto para outro componente.

O LLM não precisa conhecer a estrutura interna do banco.

Uma API intermediária pode transformar os dados em um contrato bem definido.

Exemplo:

{
  "cliente": "Maria Silva",
  "segmento": "Platinum",
  "score": 920,
  "diasAtraso": 0,
  "status": "Ativo"
}

Esse JSON se torna contexto para a decisão.


19. Easter egg: o mainframe já fazia “agentes” antes da moda

Existe uma curiosidade divertida.

Muito antes dos atuais agentes de IA, o mainframe já executava cadeias automáticas de decisões.

JCL, schedulers, CICS, IMS, MQ e automação operacional já permitiam:

  • detectar eventos;

  • disparar jobs;

  • avaliar códigos de retorno;

  • chamar programas;

  • executar contingências;

  • registrar resultados.

Considere este exemplo simplificado:

//STEP01 EXEC PGM=VALIDA
//STEP02 EXEC PGM=PROCESSA,COND=(0,NE,STEP01)
//STEP03 EXEC PGM=NOTIFICA,COND=(0,NE,STEP02)

A lógica diz:

Valide.
Se estiver tudo certo, processe.
Se o processamento terminar corretamente, notifique.

Isso é uma forma primitiva de orquestração orientada a resultados.

A diferença moderna é que a IA pode interpretar linguagem, analisar informações não estruturadas e escolher ferramentas dinamicamente.

Mas o princípio de automação controlada não nasceu ontem.

O mainframe já ensinava isso quando muitos dos atuais especialistas em IA ainda brincavam com disquetes.


20. Faster complexity: complexidade mais rápida

Uma frase poderosa do texto é:

Isso não é transformação. É complexidade mais rápida.

Automatizar um processo ruim não o transforma automaticamente em um processo bom.

Imagine um fluxo com:

  • cinco planilhas;

  • três aprovações redundantes;

  • dados duplicados;

  • políticas conflitantes;

  • sistemas sem integração.

Adicionar IA pode acelerar o fluxo.

Mas também pode acelerar:

  • inconsistências;

  • erros;

  • retrabalho;

  • decisões conflitantes;

  • consumo de recursos;

  • dívida operacional.

Antes de automatizar, a empresa deveria perguntar:

Este processo ainda faz sentido?
Os dados são confiáveis?
As regras estão documentadas?
As responsabilidades estão claras?
A decisão pode ser auditada?
Existe mecanismo de reversão?

A IA não elimina arquitetura.

Ela aumenta a importância da arquitetura.


21. Um roteiro prático para o programador COBOL padawan

Como começar essa jornada?

Passo 1 — Identifique um resultado

Não comece com:

Vamos usar IA.

Comece com:

Queremos reduzir o tempo de análise de um ABEND de 90 para 15 minutos.

Passo 2 — Localize o contexto

Pergunte:

Onde estão os dados necessários?

Talvez em:

  • spool;

  • Db2;

  • SMF;

  • documentação;

  • Git;

  • tickets;

  • datasets;

  • copybooks.

Passo 3 — Defina as fontes confiáveis

Nem toda informação possui o mesmo peso.

Fonte oficial:
Db2 de produção.

Fonte complementar:
manual interno.

Fonte histórica:
tickets anteriores.

Fonte não confiável:
planilha local sem atualização.

Passo 4 — Crie uma camada de integração

Evite permitir acesso direto e irrestrito ao sistema.

Use:

  • APIs;

  • z/OS Connect;

  • MQ;

  • serviços CICS;

  • stored procedures;

  • camadas de autorização.

Passo 5 — Aplique governança

Registre:

  • modelo;

  • versão;

  • fonte;

  • decisão;

  • ação;

  • usuário;

  • horário;

  • resultado.

Passo 6 — Comece com aprovação humana

Antes de permitir ação autônoma:

IA sugere.
Humano aprova.
Sistema executa.

Depois, tarefas simples e de baixo risco podem ganhar maior autonomia.

Passo 7 — Meça o resultado

Acompanhe:

  • tempo economizado;

  • taxa de sucesso;

  • retrabalho;

  • custo por tarefa;

  • falhas;

  • impacto operacional.


22. Conclusão: a verdadeira corrida da IA

A corrida da inteligência artificial está mudando.

Na primeira fase, todos buscavam modelos maiores.

Na segunda, perceberam que o modelo sem contexto possui valor limitado.

Na terceira, as empresas vencedoras aprenderão a transformar contexto em ação confiável.

A fórmula é simples de escrever:

Compute
   +
Data
   +
Storage
   +
Context
   +
Applications
   +
Security
   +
Governance
   +
Operations
   =
Trusted Outcomes

Mas implementá-la exige engenharia.

Exige integração entre o novo e o legado.

Exige APIs, segurança, arquitetura, armazenamento, observabilidade e governança.

Exige reconhecer que o COBOL, o CICS, o IMS, o Db2 e o IBM Z não são obstáculos à inteligência artificial.

Eles podem ser a fonte do contexto mais valioso da organização.

Os tokens ficarão mais baratos.

Os modelos serão cada vez mais acessíveis.

A capacidade computacional continuará crescendo.

Contudo, o contexto confiável continuará raro.

E o resultado governado será ainda mais valioso.

No final, a pergunta correta não será:

Quantos tokens sua empresa processou?

Será:

Quantos problemas reais ela resolveu, com segurança, velocidade, rastreabilidade e confiança?

O mestre termina o café, olha novamente para o jovem programador e conclui:

— Padawan, o modelo pode conhecer milhares de respostas. Mas somente o sistema completo consegue entregar o resultado.

E, no fundo do datacenter, enquanto o IBM Z continua processando milhões de transações, uma antiga verdade da computação reaparece com nova roupa:

Tecnologia não vale pelo que promete. Vale pelo que consegue concluir.

 

quarta-feira, 1 de julho de 2026

Java na Stack Mainframe: O Roteiro Definitivo para um Programador COBOL Padawan Entrar no Mundo Java, IA, Cloud e Modernização do IBM Z

 

Bellacosa Mainframe e o Java na Stack Mainframe

☕ Um Café no Bellacosa Mainframe

Java na Stack Mainframe: O Roteiro Definitivo para um Programador COBOL Padawan Entrar no Mundo Java, IA, Cloud e Modernização do IBM Z

Imagine que você acabou de entrar em um grande banco.

Você conhece COBOL.

Sabe fazer um PERFORM UNTIL.

Entende JCL.

Já escreveu programas para CICS.

Conhece Db2, VSAM e talvez IMS.

Mas, em uma reunião, alguém diz:

"Vamos desenvolver essa nova API em Java, publicar pelo z/OS Connect, automatizar o deploy com Ansible e integrar um agente de IA."

Você pensa:

"Será que vou precisar esquecer tudo o que aprendi em Mainframe?"

A resposta é uma das melhores notícias que um profissional IBM Z pode receber:

Não.

Na verdade, tudo o que você aprendeu continua extremamente valioso.

O Java não veio substituir o COBOL.

Ele veio conversar com ele.

Hoje, o IBM Z é uma plataforma híbrida, onde aplicações COBOL escritas há décadas convivem com microsserviços Java, APIs REST, containers, LinuxONE, automação, inteligência artificial e cloud híbrida.

Neste artigo vamos construir um roteiro completo para que um COBOL Padawan evolua para um desenvolvedor Java dentro da Stack Mainframe.


O maior mito sobre Java no Mainframe

O erro mais comum é procurar um curso chamado:

  • Java para Mainframe

  • Java para z/OS

  • Java para COBOL

antes mesmo de aprender Java.

Isso é equivalente a querer aprender CICS antes de entender COBOL.

Primeiro aprendemos a linguagem.

Depois aprendemos onde ela roda.

Essa é exatamente a recomendação feita por Ian Burnett, engenheiro da equipe de desenvolvimento do IBM CICS:

"Java continua sendo Java. Salvo quando você utiliza recursos específicos do IBM Z, o mesmo código roda em diversas plataformas."

Essa frase resume toda a filosofia da plataforma Java.


Esqueça a ideia de "Java Mainframe"

Não existe uma linguagem chamada Java Mainframe.

Existe apenas Java.

O mesmo Java roda em:

  • Windows

  • Linux

  • macOS

  • LinuxONE

  • z/OS UNIX System Services (USS)

  • OpenShift

  • Cloud

A mágica acontece graças à JVM.


O que é a JVM?

JVM significa:

Java Virtual Machine

Ela é responsável por executar o bytecode produzido pelo compilador Java.

O processo funciona assim:

Código Java (.java)

        │

      javac

        │

Bytecode (.class)

        │

        JVM

        │

Sistema Operacional

No mundo IBM Z acontece exatamente a mesma coisa.

A diferença é que existe uma JVM otimizada para o processador IBM Z.

Hoje a IBM utiliza principalmente o IBM Semeru Runtime, baseado no OpenJDK, otimizado para z/OS e LinuxONE.

Isso significa que o mesmo programa Java pode executar em:

  • LinuxONE

  • USS

  • Open Liberty

  • CICS JVM Server

  • Batch Java

sem precisar ser reescrito.

É o famoso conceito:

Write Once, Run Anywhere.


O COBOL continua vivo?

Mais vivo do que nunca.

Os maiores bancos do mundo ainda executam bilhões de linhas de COBOL.

Esses programas representam décadas de regras de negócio.

Por exemplo:

  • cálculo de juros

  • empréstimos

  • cartões

  • PIX

  • investimentos

  • seguros

  • previdência

O Java não veio substituir essas aplicações.

Ele veio criar novas formas de utilizá-las.


O legado não é o problema

Existe uma frase muito repetida no Bellacosa Mainframe:

O legado não é um peso. É um patrimônio.

Imagine um programa COBOL que calcula crédito há trinta anos.

Ele funciona.

Foi testado milhões de vezes.

Então surge um aplicativo Android.

O aplicativo não precisa reescrever a lógica.

Ele apenas precisa conversar com esse programa.

É aí que entra a modernização.


Java como ponte entre o mundo moderno e o legado

Hoje uma aplicação bancária pode seguir este fluxo:

Aplicativo Android

↓

REST API

↓

Java Spring Boot

↓

z/OS Connect

↓

CICS

↓

Programa COBOL

↓

Db2

Observe quem está no meio da conversa.

O Java.

Ele conecta o mundo digital ao legado corporativo.


O papel do z/OS Connect

O z/OS Connect EE é uma das tecnologias mais importantes da modernização IBM Z.

Sua missão é simples.

Transformar programas COBOL em APIs REST.

Imagine um programa CICS chamado:

CONSULTA_CLIENTE

Antes, somente aplicações CICS conseguiam chamá-lo.

Com o z/OS Connect:

GET

/clientes/12345

vira automaticamente:

Programa COBOL

↓

COMMAREA

↓

Resposta JSON

Sem reescrever o COBOL.

Sem alterar décadas de negócio.

Essa talvez seja a maior revolução do IBM Z nos últimos anos.


JSON substituiu a COMMAREA?

Não.

Cada um possui sua função.

Dentro do CICS continua existindo:

  • COMMAREA

  • Containers

  • Channels

Fora do Mainframe:

  • JSON

  • REST

  • OpenAPI

O z/OS Connect faz a tradução entre esses mundos.


Java conversa naturalmente com o Db2

Outro ponto importante.

O Java utiliza JDBC.

Java

↓

JDBC

↓

Db2 for z/OS

Para quem conhece SQL em COBOL, aprender JDBC costuma ser bastante natural.


LinuxONE: onde o Java brilha

Quando falamos de Java no IBM Z, é impossível não falar do LinuxONE.

O LinuxONE é uma plataforma Linux construída sobre a mesma arquitetura IBM Z.

Ele oferece:

  • alta disponibilidade

  • criptografia

  • escalabilidade

  • virtualização

  • containers

  • Kubernetes

  • OpenShift

Para aplicações Java, é um ambiente extremamente eficiente.

Muitos microsserviços modernos executam em LinuxONE enquanto continuam acessando o legado z/OS.


Open Liberty

Outro componente importante é o Open Liberty.

Ele é um servidor Java moderno, extremamente leve e compatível com Jakarta EE e MicroProfile.

Nele podemos executar:

  • APIs REST

  • aplicações corporativas

  • microsserviços

  • autenticação

  • integração

Tudo isso podendo acessar COBOL via z/OS Connect ou IBM MQ.


IBM MQ

Nem toda integração precisa ser REST.

Muitos bancos utilizam filas.

Java

↓

IBM MQ

↓

COBOL

As mensagens ficam armazenadas até serem processadas.

Isso aumenta confiabilidade e desacopla sistemas.


Ansible no mundo Mainframe

Durante muitos anos administrar Mainframe significava executar comandos manualmente.

Hoje isso mudou.

O Ansible automatiza tarefas como:

  • criação de ambientes

  • deploy

  • configuração

  • instalação

  • atualização

  • coleta de informações

  • execução de scripts

Imagine precisar atualizar cinquenta servidores.

Em vez de acessar um por um, basta executar um Playbook.

Exemplo simplificado:

- Atualizar Open Liberty
- Reiniciar serviço
- Validar aplicação

Tudo automaticamente.

No IBM Z existem coleções específicas para:

  • z/OS

  • USS

  • CICS

  • RACF

  • datasets

  • JCL

  • operações administrativas

O DevOps chegou definitivamente ao Mainframe.


Cloud no mundo Mainframe

Quando falamos em Cloud, muitas pessoas imaginam abandonar o Mainframe.

A realidade é outra.

Hoje predominam arquiteturas híbridas.

Um exemplo:

Cloud

↓

API Gateway

↓

Java

↓

z/OS Connect

↓

COBOL

Parte da aplicação roda na nuvem.

Parte continua no IBM Z.

Cada ambiente faz aquilo em que é melhor.


Inteligência Artificial no IBM Z

Outro tema que deixou de ser futuro.

Hoje encontramos IA aplicada em:

  • detecção de fraudes

  • análise de crédito

  • observabilidade

  • automação operacional

  • atendimento inteligente

  • copilotos de desenvolvimento

  • geração de código

  • documentação

  • análise de logs

Modelos como IBM Granite e watsonx podem trabalhar lado a lado com aplicações Java e COBOL.

O objetivo não é substituir o programador.

É aumentar sua produtividade.


O roteiro Bellacosa para aprender Java

Fase 1 — Pensar como programador Java

Aprenda:

  • variáveis

  • classes

  • objetos

  • métodos

  • encapsulamento

  • herança

  • interfaces

  • exceções

  • Collections

  • Generics

Ainda não pense em Mainframe.


Fase 2 — Ferramentas modernas

Aprenda:

  • Git

  • Maven

  • Gradle

  • JUnit

  • Mockito

  • VS Code

  • IntelliJ IDEA


Fase 3 — Desenvolvimento Web

Estude:

  • HTTP

  • REST

  • JSON

  • XML

  • Servlets

  • APIs


Fase 4 — Spring Boot

Aprenda a criar:

  • microsserviços

  • APIs REST

  • autenticação

  • integração com bancos de dados


Fase 5 — Java Enterprise

Conheça:

  • Open Liberty

  • Jakarta EE

  • MicroProfile


Fase 6 — Java na Stack Mainframe

Agora sim, entre no universo IBM Z:

  • JVM no z/OS

  • USS

  • LinuxONE

  • JDBC para Db2

  • IBM MQ

  • CICS JVM Server

  • JCICS

  • JZOS

  • z/OS Connect EE

  • RACF

  • Open Liberty

  • Batch Java

  • OpenShift


O maior diferencial do programador COBOL

Muitos desenvolvedores Java sabem criar APIs.

Poucos entendem regras de negócio bancárias.

Você já conhece:

  • consistência transacional

  • processamento em lote

  • auditoria

  • integridade

  • alta disponibilidade

  • segurança

Esses conhecimentos não desaparecem.

Eles tornam você um profissional muito mais completo.


Recursos para continuar estudando

Além dos fundamentos de Java, vale explorar materiais específicos sobre Java no ecossistema IBM Z.

Java no CICS

Artigos técnicos

Open Liberty

IBM Semeru Runtime

IBM z/OS Connect

LinuxONE

Automação

IA para IBM Z


Um café antes de partir...

Se existe uma mensagem que todo Padawan COBOL deve levar deste artigo, é esta:

Você não está mudando de profissão. Está ampliando sua stack.

O COBOL continua sendo o coração de milhares de sistemas críticos. O Java tornou-se a ponte que conecta esse legado ao mundo das APIs, aplicativos móveis, microsserviços, cloud híbrida e inteligência artificial. Tecnologias como z/OS Connect, LinuxONE, Open Liberty, Ansible e watsonx não substituem décadas de conhecimento acumulado; elas o potencializam.

O profissional mais disputado da próxima década não será apenas o especialista em COBOL nem apenas o especialista em Java. Será aquele capaz de unir os dois mundos, preservando a confiabilidade do legado enquanto entrega inovação com velocidade. Esse é o verdadeiro espírito da Stack Mainframe: tradição e modernização trabalhando lado a lado. E essa jornada começa aprendendo Java, mas nunca esquecendo as lições que o Mainframe ensinou.

quarta-feira, 11 de junho de 2025

Laboratório Prático de Java para IBM Mainframe 20 Labs para Transformar um Programador COBOL em um Desenvolvedor Java para IBM Z

 

Bellacosa Mainframe e um laboratorio java para mainframers

☕ Um Café no Bellacosa Mainframe

Laboratório Prático de Java para IBM Mainframe

Metodologia do Laboratório

Este laboratório foi desenvolvido para programadores COBOL iniciantes no ecossistema IBM Z, utilizando uma metodologia prática baseada no conceito learning by doing (aprender fazendo). Em vez de ensinar Java de forma isolada, cada conceito é apresentado em paralelo com tecnologias já conhecidas pelo desenvolvedor Mainframe, como COBOL, JCL, CICS, DB2, VSAM e z/OS. Dessa forma, o aluno estabelece uma associação natural entre os dois ambientes, reduzindo a curva de aprendizado e compreendendo como ambas as linguagens coexistem na arquitetura corporativa moderna.

Os vinte laboratórios evoluem gradualmente, começando pelos fundamentos da linguagem Java, passando por orientação a objetos, tratamento de exceções, coleções, acesso ao DB2 via JDBC, processamento Batch, APIs REST, WebSphere Liberty, IBM MQ, z/OS Connect, automação com Ansible, DevOps, LinuxONE e containers. Cada exercício apresenta objetivos claros, arquitetura, código comentado, desafios práticos e solução completa.

Ao final do treinamento, espera-se que o desenvolvedor compreenda o papel estratégico do Java no IBM Z e no LinuxONE, saiba como a JVM é executada nessas plataformas, desenvolva aplicações Batch e Online, integre serviços Java com programas COBOL e DB2, automatize processos utilizando ferramentas modernas e participe de projetos de modernização sem abandonar os sólidos fundamentos do Mainframe. O objetivo não é substituir o COBOL, mas formar profissionais capazes de transitar com segurança por todo o ecossistema IBM Z.

20 Labs para Transformar um Programador COBOL em um Desenvolvedor Java para IBM Z

Objetivo: Capacitar um programador COBOL Junior a compreender como o Java funciona dentro do ecossistema IBM Z, sempre relacionando os novos conceitos com aquilo que ele já conhece em COBOL, JCL, CICS e DB2.


Filosofia do Laboratório

Este não é um curso tradicional de Java.

É um curso pensado para quem já conhece Mainframe.

Durante todos os exercícios faremos comparações entre:

  • COBOL × Java

  • JCL × JVM

  • CICS × Liberty

  • SQL Embutido × JDBC

  • VSAM × Collections

  • Batch × Java Batch

  • Online CICS × REST APIs

O objetivo é diminuir o choque entre os dois mundos.


Ambiente sugerido

Desenvolvimento

  • VS Code

  • IBM Z Open Editor

  • Java 21 LTS

  • Maven

  • Git

  • Zowe CLI

Mainframe

  • IBM z/OS

  • USS (Unix System Services)

  • Enterprise COBOL

  • DB2

  • CICS TS

  • z/OS Connect

  • IBM MQ

  • WebSphere Liberty

Opcional

  • LinuxONE

  • Docker

  • OpenShift

  • Ansible


LAB 01 — Primeiro Programa Java

Objetivo

Criar o famoso Hello World.

O que aprender

  • Classe

  • Método main()

  • JVM

  • Compilação

Exercício

Criar

HelloMainframe.java

Executar

javac HelloMainframe.java

java HelloMainframe

Solução

Exibir

Olá IBM Z

LAB 02 — Comparando COBOL e Java

Objetivo

Criar um programa que recebe nome e idade.

Comparar com

WORKING-STORAGE
DISPLAY
ACCEPT

Aprender

  • Scanner

  • Variáveis

  • String

  • int

Solução

Programa imprime

Olá João

Você possui 30 anos

LAB 03 — Estruturas de Decisão

Comparar

COBOL

IF
ELSE
END-IF

com

Java

if

else

Exercício

Calcular maioridade.


LAB 04 — Estruturas de Repetição

Comparar

PERFORM UNTIL

com

for

while

Exercício

Exibir números de 1 a 100.


LAB 05 — Métodos

Comparar

SECTION

PARAGRAPH

com

Métodos Java

Criar método

calcularIR()

LAB 06 — Orientação a Objetos

Primeiro contato.

Criar

Cliente
Conta

Banco

Aprender

  • classe

  • objeto

  • atributos

  • métodos


LAB 07 — Collections

Comparar

Tabela OCCURS

com

ArrayList

Exercício

Cadastrar clientes.


LAB 08 — Tratamento de Exceções

Comparar

IF SQLCODE

IF FILE STATUS

com

try

catch

Gerar erro proposital.

Capturar erro.


LAB 09 — Leitura de Arquivos

Comparar

Sequential File

com

BufferedReader

Ler arquivo

CLIENTES.TXT

LAB 10 — Escrevendo Arquivos

Criar

RELATORIO.TXT

Comparar

WRITE

com

FileWriter.


LAB 11 — JDBC + DB2

Objetivo

Primeira conexão com DB2.

Aprender

  • Driver JDBC

  • Connection

  • Statement

  • ResultSet

Consulta

SELECT *

CLIENTE

Solução

Exibir registros na tela.


LAB 12 — PreparedStatement

Comparar

EXEC SQL

com

PreparedStatement

Inserir cliente.

Depois atualizar.

Depois excluir.


LAB 13 — Java Batch

Criar um processamento Batch.

Fluxo

Ler Arquivo

↓

Validar

↓

Atualizar DB2

↓

Gerar Relatório

Executar usando JCL.


LAB 14 — Java no USS

Entrar no Unix System Services.

Executar

java

javac

jar

Aprender

  • PATH

  • JAVA_HOME

  • CLASSPATH


LAB 15 — WebSphere Liberty

Criar primeira aplicação.

Executar

localhost:9080

Primeira API REST.


LAB 16 — Java + MQ

Criar

Produtor

Consumidor

Enviar mensagens.

Comparar com Batch desacoplado.


LAB 17 — Java + CICS

Criar aplicação Java.

Consumir programa COBOL.

Fluxo

Java

↓

CICS

↓

COBOL

Entender integração.


LAB 18 — Java + z/OS Connect

Criar API REST.

Consumir programa COBOL.

Resultado

GET

/clientes

Retorna

JSON.


LAB 19 — Deploy Automatizado

Criar Pipeline.

Ferramentas

  • Git

  • Maven

  • Jenkins

  • Zowe

  • Ansible

Deploy automático.


LAB 20 — Projeto Final

Sistema Bancário Completo

Arquitetura

Cliente

↓

REST API

↓

Spring Boot

↓

Liberty

↓

MQ

↓

CICS

↓

COBOL

↓

DB2

O Projeto

Cadastrar clientes.

Consultar clientes.

Atualizar clientes.

Excluir clientes.

Gerar relatório Batch.

Consultar API REST.

Executar deploy automático.


Estrutura sugerida

MainframeJavaLabs

│

├── Lab01_HelloJava

├── Lab02_Variaveis

├── Lab03_IF

├── Lab04_FOR

├── Lab05_Metodos

├── Lab06_OO

├── Lab07_Collections

├── Lab08_Exceptions

├── Lab09_Arquivos

├── Lab10_FileWriter

├── Lab11_JDBC

├── Lab12_PreparedStatement

├── Lab13_JavaBatch

├── Lab14_USS

├── Lab15_Liberty

├── Lab16_MQ

├── Lab17_CICS

├── Lab18_zOSConnect

├── Lab19_Ansible

└── Lab20_ProjetoFinal

O que cada laboratório deve conter

Para que o aprendizado seja realmente prático, todos os 20 laboratórios devem seguir a mesma estrutura:

  • Objetivo: o que será aprendido e por que isso é importante no IBM Z.

  • Conceitos COBOL equivalentes: comparação direta entre os conceitos de COBOL e Java.

  • Arquitetura: diagrama do fluxo da aplicação.

  • Pré-requisitos: softwares, datasets, tabelas DB2 ou configurações necessárias.

  • Passo a passo: instruções detalhadas de implementação.

  • Código comentado: explicando cada linha e sua função.

  • Compilação e execução: tanto no ambiente local quanto no z/OS, quando aplicável.

  • Análise dos resultados: como validar se tudo funcionou corretamente.

  • Desafios extras: exercícios para expandir o laboratório.

  • Solução completa: código-fonte, JCL, scripts Maven/Gradle, SQL e arquivos de configuração.

Competências desenvolvidas

Ao concluir os 20 laboratórios, o programador COBOL Junior terá desenvolvido competências para:

  • Escrever aplicações Java orientadas a objetos.

  • Compreender a execução da JVM no IBM Z.

  • Criar programas Batch em Java executados por JCL.

  • Desenvolver APIs REST com Spring Boot e WebSphere Liberty.

  • Integrar aplicações Java com programas COBOL via CICS e z/OS Connect.

  • Acessar tabelas DB2 utilizando JDBC e PreparedStatement.

  • Utilizar IBM MQ para comunicação assíncrona.

  • Trabalhar com USS (Unix System Services).

  • Automatizar builds e deploys com Maven, Git, Jenkins, Zowe e Ansible.

  • Entender o papel do LinuxONE, Docker e OpenShift na modernização do ecossistema IBM Z.

Resultado esperado

Ao final desse laboratório, o aluno deixará de enxergar Java como uma tecnologia "concorrente" do COBOL. Em vez disso, compreenderá como ambas as linguagens coexistem no IBM Z, cada uma exercendo um papel específico na arquitetura corporativa moderna. Esse conhecimento amplia significativamente as oportunidades profissionais e prepara o desenvolvedor para atuar em projetos de modernização, integração por APIs e DevOps, mantendo o COBOL como o coração das regras de negócio e o Java como a ponte entre o Mainframe e o restante do mundo.


quarta-feira, 28 de maio de 2025

Java no IBM Mainframe: Quando o Programador COBOL Descobre que a JVM Também Mora no z/OS

 

Bellacosa Mainframe e o java no mundo mainframe

☕ Um Café no Bellacosa Mainframe

Java no IBM Mainframe: Quando o Programador COBOL Descobre que a JVM Também Mora no z/OS

"O futuro do Mainframe nunca foi COBOL ou Java. Sempre foi COBOL e Java trabalhando juntos."


Durante muitos anos surgiu um mito que assustou milhares de programadores COBOL.

"O Java vai substituir o COBOL."

O tempo mostrou exatamente o contrário.

Hoje, praticamente todos os grandes bancos, seguradoras, operadoras de cartão, bolsas de valores e órgãos governamentais utilizam COBOL e Java lado a lado, cada um fazendo aquilo em que é melhor.

Na realidade, aprender Java não significa abandonar o COBOL.

Significa entender como funciona o restante do ecossistema moderno do IBM Z.

Se você é um programador COBOL Junior, este artigo é praticamente um mapa mostrando onde o Java entra na arquitetura Mainframe e por que ele pode transformar sua carreira.

Pegue seu café.

Hoje vamos conhecer um dos moradores mais importantes do IBM Z.


O dia em que o Java chegou ao Mainframe

Quando a Sun Microsystems lançou o Java em 1995, sua proposta era revolucionária.

Write Once, Run Anywhere.

Escreva uma vez.

Execute em qualquer lugar.

Enquanto isso, o Mainframe continuava executando milhões de linhas de COBOL.

A IBM rapidamente percebeu que aquela linguagem seria importante.

Ao invés de ignorá-la, fez algo típico da empresa:

levou o Java para dentro do z/OS.

Poucos anos depois surgiu a JVM para Mainframe.

Desde então, cada geração do IBM Z recebeu melhorias específicas para acelerar Java.

Hoje existem instruções de hardware dedicadas para execução da JVM.

Ou seja:

O Java não está "rodando emulado" no Mainframe.

Ele roda utilizando otimizações do próprio processador IBM Z.


Onde o Java aparece no Mainframe?

Muito mais lugares do que imaginamos.

Você provavelmente já utiliza sistemas Java sem perceber.

Exemplos:

  • Internet Banking

  • Aplicativos Mobile

  • APIs REST

  • Microserviços

  • IBM MQ

  • WebSphere Liberty

  • CICS Java

  • Batch Java

  • z/OS Connect

  • IBM Z Open Automation Utilities

  • Ansible

  • Jenkins

  • Zowe

  • Eclipse

  • IBM Developer for z/OS

  • Spring Boot para z/OS

Em muitos ambientes, o COBOL continua sendo o responsável pelas regras de negócio.

O Java apenas conversa com ele.


A arquitetura moderna

Imagine um banco.

Cliente
     │
Internet
     │
API REST
     │
Spring Boot
     │
z/OS Connect
     │
CICS
     │
Programa COBOL
     │
DB2

Perceba algo interessante.

O Java raramente substitui o COBOL.

Ele funciona como uma ponte.


Java Batch

Quando pensamos em Mainframe normalmente lembramos de processamento Batch.

A boa notícia é que Java também executa Batch.

Por exemplo:

Leitura de arquivos

↓

Validação

↓

Processamento

↓

Atualização DB2

↓

Geração de Relatórios

A execução ocorre através do JCL.

Exemplo simplificado:

//JAVAJOB JOB
//STEP01 EXEC PGM=JVMLDM86
//STDENV DD *
JAVA_HOME=/usr/lpp/java
CLASSPATH=/u/apps/meuapp.jar
/*

Na prática, o JCL prepara o ambiente.

Quem executa o processamento é a JVM.


Um pequeno programa Java

public class HelloMainframe {

    public static void main(String[] args){

        System.out.println("Olá IBM Z!");

    }

}

Compilação:

javac HelloMainframe.java

Execução:

java HelloMainframe

No z/OS funciona praticamente da mesma forma.

A diferença está no ambiente preparado pelo JCL.


Java Online

Agora imagine uma aplicação bancária.

O cliente faz um PIX.

O aplicativo envia uma requisição.

Essa requisição chega ao Mainframe.

Quem recebe?

Pode ser um programa Java.

Ou um serviço REST.

Depois disso:

Java

↓

CICS

↓

COBOL

↓

DB2

↓

Resposta JSON

Tudo ocorre em poucos milissegundos.


Java dentro do CICS

Muitos desenvolvedores não sabem.

O CICS executa programas Java.

Isso permite:

  • APIs REST

  • SOAP

  • JSON

  • XML

  • JMS

  • MQ

Tudo dentro do ambiente transacional.

O COBOL continua executando a lógica principal.

O Java cuida da integração.


Java e DB2

Uma das maiores vantagens do Java é sua integração com bancos relacionais.

O acesso normalmente ocorre através do JDBC.

Exemplo:

Connection conn =
DriverManager.getConnection(url,user,password);

PreparedStatement ps =
conn.prepareStatement(
"SELECT NOME FROM CLIENTES");

ResultSet rs = ps.executeQuery();

No Mainframe ocorre exatamente o mesmo conceito.

A diferença está no driver utilizado.

Normalmente utiliza-se o IBM Data Server Driver.


JDBC ou SQL Embutido?

Programadores COBOL costumam perguntar:

"Se existe SQL Embutido, por que usar JDBC?"

Porque são tecnologias diferentes.

COBOL

EXEC SQL
SELECT ...
END-EXEC

Java

PreparedStatement

O resultado final é semelhante.

Ambos acessam o DB2.


Vantagens do PreparedStatement

Nunca monte SQL concatenando Strings.

Ruim:

"SELECT * FROM CLIENTES WHERE ID="+id;

Correto:

PreparedStatement

Além de mais rápido, evita SQL Injection.


Java e Stored Procedures

Outra integração muito comum.

Java

↓

Stored Procedure DB2

↓

SQL

↓

Resultado

Muitos bancos utilizam esse modelo.


Java conversando com COBOL

Existem diversas formas.

Por exemplo:

  • CICS LINK

  • MQ

  • REST

  • SOAP

  • z/OS Connect

  • JNI

  • Arquivos

  • Stored Procedures

Na maioria dos projetos modernos, REST e MQ são os campeões.


Java e IBM MQ

Imagine dezenas de sistemas conversando.

Ao invés de chamadas diretas, utiliza-se filas.

Java

↓

MQ

↓

COBOL

Se o COBOL estiver ocupado...

A mensagem continua aguardando.

Isso aumenta a disponibilidade.


Java e z/OS Connect

Talvez esta seja a tecnologia que mais mudou o Mainframe.

Antes:

Aplicações externas precisavam conhecer CICS.

Hoje:

REST

↓

JSON

↓

z/OS Connect

↓

COBOL

Quem desenvolve a API geralmente utiliza Java.


WebSphere Liberty

O Liberty tornou-se praticamente o servidor Java padrão do IBM Z.

Leve.

Moderno.

Compatível com Jakarta EE.

Executa:

  • REST

  • MicroProfile

  • JWT

  • OAuth

  • OpenAPI

Tudo muito integrado ao z/OS.


Java e LinuxONE

Aqui surge uma dúvida.

LinuxONE é Mainframe?

Sim.

É a mesma arquitetura IBM Z.

A diferença é que executa Linux como sistema operacional principal.

Nesse ambiente podemos instalar:

  • Java

  • Spring Boot

  • Docker

  • Kubernetes

  • Kafka

  • PostgreSQL

  • MongoDB

  • Redis

Tudo rodando sobre hardware IBM.

É comum encontrar arquiteturas híbridas:

LinuxONE

↓

Java

↓

API

↓

MQ

↓

z/OS

↓

COBOL

Java e Containers

Hoje o Java roda perfeitamente em containers.

Exemplo:

Docker

↓

Java

↓

Spring Boot

No IBM Z isso normalmente acontece utilizando:

  • Red Hat OpenShift

  • Kubernetes

  • LinuxONE


Java e OpenShift

Imagine centenas de APIs.

Em vez de dezenas de servidores, utiliza-se OpenShift.

Cada API Java roda em um container.

Quando aumenta o acesso...

O OpenShift cria novos containers automaticamente.


Java e Ansible

Aqui está uma surpresa para muitos programadores COBOL.

O Ansible também administra aplicações Java.

Por exemplo:

  • Deploy

  • Atualização

  • Reinício

  • Configuração

  • Instalação

  • Coleta de logs

Tudo automatizado.

Um Playbook simples:

- hosts: zos

  tasks:

    - name: Reiniciar Liberty

      command: server stop liberty

    - name: Iniciar Liberty

      command: server start liberty

Java e Zowe

O Zowe aproximou muito o Mainframe do mundo Open Source.

Com ele podemos:

  • enviar JCL

  • consultar Jobs

  • acessar datasets

  • acessar USS

  • automatizar builds

Tudo usando JavaScript, Node.js ou Java.


Java e USS

O UNIX System Services é praticamente um Linux dentro do z/OS.

É nele que encontramos:

/usr/lpp/java

Ali estão instalados:

  • JVM

  • Bibliotecas

  • Ferramentas

  • Scripts

Grande parte das aplicações Java vive dentro do USS.


Java e Git

Hoje é comum encontrar projetos Java armazenados no GitHub.

Fluxo típico:

Git

↓

Jenkins

↓

Compilação

↓

Testes

↓

Deploy

↓

Liberty

Tudo automático.


Java e DevOps

Mainframe moderno faz DevOps.

Ferramentas comuns:

  • Git

  • GitHub

  • GitLab

  • Jenkins

  • UrbanCode Deploy

  • Ansible

  • Zowe CLI

  • Maven

  • Gradle

  • SonarQube


Maven

Quase todo projeto Java utiliza Maven.

Arquivo:

pom.xml

Ali ficam:

  • dependências

  • plugins

  • versão

  • compilação

É o equivalente ao gerenciamento de bibliotecas do projeto.


Gradle

Outro gerenciador bastante utilizado.

Mais flexível.

Mais rápido em projetos grandes.


Java e APIs REST

Hoje praticamente toda integração passa por APIs.

Exemplo simples:

GET

/clientes/123

Resposta:

{
 "id":123,
 "nome":"João"
}

Quem produz esse JSON?

Na maioria das vezes:

Java.

Quem consulta o DB2?

COBOL.


Curiosidades

Pouca gente sabe que:

  • O IBM Z possui otimizações específicas para Java.

  • Existe JIT Compiler dedicado.

  • A JVM recebe melhorias a cada geração do processador.

  • Grande parte das ferramentas IBM modernas utiliza Java.

  • O IBM Developer for z/OS é baseado em Eclipse, escrito em Java.

  • O IBM Installation Manager é Java.

  • Diversos componentes do IBM MQ possuem módulos Java.

  • O z/OS Explorer e o CICS Explorer também são baseados em Eclipse.

Ou seja...

Mesmo sem programar Java, você provavelmente já utiliza softwares escritos nessa linguagem todos os dias.


Dicas para quem vem do COBOL

1. Aprenda Orientação a Objetos

É a maior mudança de mentalidade.

COBOL organiza programas.

Java organiza objetos.


2. Domine Collections

Aprenda:

  • List

  • Set

  • Map

  • Queue

Você utilizará essas estruturas constantemente.


3. Entenda Exceptions

Em COBOL temos:

IF SQLCODE

Em Java temos:

try{

}
catch(Exception e){

}

É outra forma de tratar erros.


4. Não tenha medo do Garbage Collector

COBOL trabalha muito com controle explícito de memória.

Java possui coleta automática.

Isso reduz vazamentos de memória, mas exige entender como o Garbage Collector funciona para escrever aplicações eficientes.


5. Aprenda SQL antes de JDBC

Quem domina SQL aprende JDBC muito mais rapidamente.

O banco continua sendo o mesmo.


6. Conheça o ecossistema

Não estude apenas a linguagem.

Conheça também:

  • Spring Boot

  • Maven

  • Gradle

  • Git

  • Docker

  • OpenShift

  • Ansible

  • Zowe

  • Liberty

  • MQ

  • z/OS Connect


Um roteiro de estudos para o Programador COBOL Junior

Uma boa sequência é:

  1. Fundamentos da linguagem Java (variáveis, classes, objetos e herança).

  2. Coleções, exceções, entrada/saída e programação funcional com Streams.

  3. JDBC e acesso ao DB2.

  4. Maven ou Gradle para gerenciamento de dependências.

  5. Git e GitHub.

  6. Spring Boot e criação de APIs REST.

  7. IBM MQ para mensageria.

  8. WebSphere Liberty e implantação de aplicações Java no z/OS.

  9. z/OS Connect para expor programas COBOL como APIs.

  10. LinuxONE, Docker e OpenShift.

  11. Zowe CLI para integração com o ambiente Mainframe.

  12. Ansible para automação de deploy, configuração e administração.

Essa jornada amplia sua visão do ecossistema IBM Z e faz de você um profissional muito mais versátil.

O que muda na carreira?

Há vinte anos, um programador COBOL precisava conhecer principalmente JCL, CICS e DB2.

Hoje isso continua importante, mas o cenário mudou.

O profissional mais valorizado é aquele que entende o fluxo completo da aplicação:

  • O aplicativo móvel envia uma requisição.

  • Uma API Java recebe a chamada.

  • O z/OS Connect faz a integração.

  • O CICS executa a transação.

  • O COBOL aplica as regras de negócio.

  • O DB2 armazena e recupera os dados.

  • O MQ garante comunicação assíncrona quando necessário.

  • O Liberty hospeda os serviços.

  • O OpenShift escala os containers.

  • O Ansible automatiza o ambiente.

  • O Zowe integra tudo ao pipeline de DevOps.

Perceba que o COBOL continua no centro da operação. O Java amplia as possibilidades de integração, modernização e entrega contínua.

Conclusão

Existe uma frase muito conhecida no universo Mainframe:

"As regras de negócio ficam onde elas sempre estiveram; o que muda é a forma de acessá-las."

É exatamente isso que aconteceu com o Java no IBM Z.

Ele não chegou para substituir o COBOL, mas para conectar o Mainframe ao restante do mundo: aplicações web, dispositivos móveis, microsserviços, nuvem híbrida, APIs, automação e DevOps. Enquanto o COBOL continua executando com confiabilidade as transações críticas, o Java oferece a flexibilidade necessária para construir novas interfaces e integrar tecnologias modernas.

Para o programador COBOL Junior, aprender Java significa entender como as aplicações corporativas são construídas hoje. Você continuará valorizando conceitos clássicos como JCL, CICS, DB2 e VSAM, mas também passará a dominar ferramentas como Maven, Spring Boot, Liberty, MQ, Zowe, OpenShift e Ansible.

No fim das contas, o mercado não procura especialistas em uma única linguagem. Procura profissionais capazes de navegar por todo o ecossistema IBM Z. E, nesse ecossistema, COBOL e Java não são rivais — são parceiros que, juntos, mantêm funcionando alguns dos sistemas mais importantes do planeta.


sábado, 30 de novembro de 2024

Ansible for IBM Z & LinuxONE Foundations Quando um Programador COBOL Descobre que Também Pode Automatizar o Mainframe

 

Bellacosa Mainframe apresenta ansible para mainframers

☕ Um Café no Bellacosa Mainframe

Ansible for IBM Z & LinuxONE Foundations

Quando um Programador COBOL Descobre que Também Pode Automatizar o Mainframe

"Durante décadas, os profissionais de Mainframe aprenderam que havia uma maneira 'correta' de administrar um ambiente IBM Z: abrir uma sessão TSO, navegar pelo ISPF, editar datasets, submeter JCLs, acompanhar o SDSF e executar comandos manualmente. Funcionava muito bem... até que a escala dos sistemas cresceu. Hoje, um único ambiente pode possuir milhares de datasets, centenas de aplicações, dezenas de LPARs e pipelines de integração contínua. É nesse momento que surge uma pergunta inevitável: será que ainda faz sentido repetir manualmente tarefas que um computador pode executar sozinho?"

Essa pergunta é exatamente a razão da existência do Ansible.

Se você é um programador COBOL Júnior, talvez imagine que Ansible seja uma ferramenta exclusiva para administradores Linux ou profissionais DevOps. Na realidade, ela está se tornando uma das tecnologias mais importantes para qualquer profissional que trabalhe com IBM Z.

Neste artigo vamos entender, passo a passo, como o Ansible funciona, como ele conversa com o z/OS, quais componentes fazem parte da arquitetura e como um desenvolvedor COBOL pode utilizá-lo para automatizar tarefas do dia a dia.

Prepare seu café. Hoje vamos descobrir que YAML pode ser tão importante quanto JCL.


O problema que o Ansible veio resolver

Imagine que seu gerente peça para criar o mesmo ambiente em dez LPARs diferentes.

Manual seria algo parecido com isto:

  • abrir TSO;

  • acessar ISPF;

  • criar datasets;

  • copiar membros COBOL;

  • copiar PROC;

  • enviar JCL;

  • acompanhar o JOB;

  • repetir tudo novamente.

Agora imagine repetir isso cem vezes.

Ou mil vezes.

É exatamente aqui que nasce a automação.

Ao invés de repetir procedimentos, descrevemos o resultado esperado.

O computador faz o restante.


Uma comparação que todo programador COBOL entende

Imagine um JCL.

Você não diz ao sistema:

"Abra um DD, aloque espaço, carregue buffers..."

Você apenas escreve:

//STEP1 EXEC PGM=IEFBR14

O z/OS sabe como executar.

O Ansible segue exatamente essa filosofia.

Você não escreve scripts enormes.

Você descreve o estado desejado.


O que é o Ansible?

Ansible é uma plataforma de automação criada para executar tarefas repetitivas de maneira segura e previsível.

Ele permite automatizar:

  • instalação de softwares;

  • deploy de aplicações;

  • criação de datasets;

  • envio de JCL;

  • execução de comandos MVS;

  • administração de USS;

  • configuração de servidores Linux;

  • configuração de IBM Z;

  • administração de LinuxONE.

Tudo utilizando arquivos YAML extremamente simples.


Infrastructure as Code

Esse talvez seja o conceito mais importante de todo o artigo.

Durante décadas a infraestrutura era documentada em Word.

Algo parecido com:

Abra ISPF

Entre na opção 3.2

Crie um Dataset

Configure FB

LRECL 80

BLKSIZE 27920

O problema?

Se alguém esquecer um passo...

Tudo quebra.

Hoje fazemos diferente.

A infraestrutura vira código.

- name: Criar Dataset
  zos_data_set:
      name: USER.TEST
      type: seq
      state: present

Esse pequeno arquivo substitui páginas inteiras de documentação.


O Control Node

Todo ambiente Ansible possui um cérebro.

Chamado de Control Node.

Ele normalmente é um servidor Linux.

É nele que ficam:

  • Playbooks

  • Inventário

  • Roles

  • Collections

  • Variáveis

  • Arquivos YAML

Ele nunca precisa estar dentro do Mainframe.

Ele apenas envia instruções.


Managed Nodes

São as máquinas administradas.

Podem ser:

  • Linux

  • Windows

  • IBM Z

  • LinuxONE

  • AIX

  • z/OS

Pense nelas como os "clientes" do Control Node.


Como o Ansible conversa com o Mainframe?

Essa é uma das perguntas mais comuns.

Muitos imaginam que exista algum protocolo proprietário.

Na prática existem três formas principais.

1. SSH

A mais utilizada.

Ansible

↓

SSH

↓

USS

↓

z/OS

O Ansible acessa o Unix System Services e executa comandos.


2. z/OSMF

O z/OSMF disponibiliza APIs REST.

Então o fluxo fica:

Ansible

↓

HTTPS

↓

z/OSMF

↓

Serviços REST

↓

Mainframe

3. ZOAU

Talvez o componente mais importante.

ZOAU significa:

IBM Z Open Automation Utilities.

Ele oferece APIs para:

  • datasets

  • jobs

  • console

  • USS

  • comandos MVS

  • VSAM

É ele que faz a "ponte" entre o mundo moderno e o z/OS.


O que é YAML?

YAML é a linguagem utilizada pelo Ansible.

Ela foi criada para ser extremamente legível.

Exemplo:

nome: Bellacosa

idade: 52

linguagens:

 - COBOL

 - PL/I

 - JCL

Perceba que praticamente parece português.


Atenção com a indentação

Esse é o erro número um dos iniciantes.

YAML usa espaços.

Nunca TAB.

Errado:

-name:

Correto:

- name:

Um único espaço errado pode impedir toda a execução.


O Inventário

O Inventário informa onde estão os servidores.

Exemplo:

[zos]

LPAR1

LPAR2

LPAR3

[linux]

WEB01

WEB02

Depois disso basta dizer:

hosts: zos

E todas as máquinas do grupo receberão a mesma automação.


O conceito de Playbook

Um Playbook é o equivalente ao nosso JCL.

Ele organiza tarefas.

Imagine:

Criar Dataset

↓

Copiar Programa

↓

Enviar Compile

↓

Executar Bind

↓

Executar Teste

Tudo isso pode estar em um único arquivo YAML.


Primeiro Playbook

---
- hosts: zos

  tasks:

  - name: Criar Dataset

    zos_data_set:

      name: USER.COBOL.TESTE

      type: seq

      state: present

Simples.

Legível.

Reproduzível.


Entendendo Task por Task

Cada Task representa uma ação.

Exemplo:

Task 1

Criar Dataset

↓

Task 2

Copiar Programa

↓

Task 3

Submeter JCL

↓

Task 4

Consultar Resultado

É exatamente como um fluxo Batch.


O conceito de Módulos

Cada Task utiliza um módulo.

Exemplos famosos:

copy

file

package

command

shell

No IBM Z existem módulos especializados.

Como:

zos_data_set

zos_copy

zos_fetch

zos_job_submit

zos_operator

zos_ping

Criando um Dataset

- name: Criar Dataset

  zos_data_set:

      name: BELLA.TESTE

      type: pds

      state: present

Resultado:

Caso exista:

Nada acontece.

Caso não exista:

Ele será criado.


Esse comportamento possui um nome

Idempotência.

É uma palavra difícil.

Mas um conceito simples.

Executar:

Playbook

↓

100 vezes

Produzirá exatamente o mesmo ambiente.

Não cria datasets duplicados.

Não reinstala componentes desnecessariamente.

Não destrói configurações.


Copiando um programa COBOL

- name: Copiar Fonte

  zos_copy:

      src: HELLO.cbl

      dest: USER.COBOL(HELLO)

Muito parecido com copiar um arquivo no Windows.


Submetendo um JOB

- name: Compilar

  zos_job_submit:

      src: USER.JCL(COMPILE)

O JOB é enviado automaticamente ao JES.


Consultando o resultado

Depois podemos verificar o retorno.

CC 0000

↓

Sucesso

CC 0004

↓

Warning

CC 0008

↓

Erro

Sxxx

↓

Abend

Imagine integrar isso diretamente a um pipeline DevOps.


Estrutura recomendada de um projeto

Projeto

inventories/

roles/

playbooks/

group_vars/

host_vars/

collections/

README.md

Essa organização facilita manutenção e reutilização.


Collections

As Collections são bibliotecas prontas.

A principal para IBM Z é:

ibm.ibm_zos_core

Ela disponibiliza dezenas de módulos específicos para o z/OS.

Você não precisa reinventar a roda.


Exemplo completo

---
- hosts: zos

  collections:

    - ibm.ibm_zos_core

  tasks:

  - name: Criar Dataset

    zos_data_set:

      name: BELLA.SOURCE

      type: pds

      state: present

  - name: Copiar Programa

    zos_copy:

      src: HELLO.cbl

      dest: BELLA.SOURCE(HELLO)

  - name: Executar Compile

    zos_job_submit:

      src: BELLA.JCL(COMPILE)

Perceba como o fluxo inteiro cabe em poucas linhas.


Relacionando com o dia a dia do COBOL

Imagine que um desenvolvedor novo entre na equipe.

Manual:

  • criar datasets;

  • copiar fontes;

  • copiar PROC;

  • copiar macros;

  • configurar ambiente.

Com Ansible:

ansible-playbook onboarding.yml

Em poucos minutos o ambiente está pronto.


Onde entra o Git?

Os Playbooks são armazenados em um repositório Git.

Isso significa:

  • histórico;

  • auditoria;

  • rollback;

  • revisão por pares;

  • integração com CI/CD.

Infraestrutura passa a evoluir exatamente como o código COBOL.


Integração com DevOps

O fluxo moderno normalmente funciona assim:

Git

↓

Pull Request

↓

Pipeline

↓

Ansible

↓

IBM Z

↓

Compile

↓

Teste

↓

Deploy

Observe que o desenvolvedor continua escrevendo COBOL.

Quem automatiza todo o restante é o Ansible.


O futuro do programador COBOL

Há alguns anos bastava conhecer:

  • COBOL;

  • JCL;

  • CICS;

  • DB2.

Hoje o mercado também valoriza conhecimentos em:

  • Git;

  • YAML;

  • APIs REST;

  • DevOps;

  • Docker (conceitos);

  • Zowe;

  • VS Code;

  • Ansible.

Isso não significa abandonar o COBOL.

Significa ampliar seu conjunto de ferramentas.


Erros comuns dos iniciantes

  1. Misturar TAB e espaços no YAML.

  2. Não organizar o inventário.

  3. Executar playbooks diretamente em produção sem homologação.

  4. Ignorar o conceito de idempotência.

  5. Não versionar os playbooks no Git.

  6. Esquecer de validar os retornos dos JOBs.

  7. Criar playbooks gigantes em vez de reutilizar Roles e Collections.

Evitar esses erros desde o início torna a automação muito mais confiável.


Conclusão

Durante décadas aprendemos que administrar um Mainframe significava conhecer profundamente TSO, ISPF, JCL, JES2, RACF, SDSF e inúmeros comandos específicos. Esses conhecimentos continuam indispensáveis. O Ansible não substitui essa experiência; ele a potencializa.

Pense nele como um novo "JCL da infraestrutura". Em vez de automatizar apenas a execução de programas Batch, ele automatiza ambientes inteiros, permitindo criar datasets, copiar programas, submeter JCLs, consultar resultados, configurar servidores e integrar o IBM Z aos modernos pipelines de DevOps.

Para o programador COBOL Júnior, aprender Ansible é investir em uma habilidade que conecta o mundo tradicional do Mainframe às práticas atuais de automação. Você continuará escrevendo programas COBOL, entendendo CICS, DB2 e JCL, mas também será capaz de entregar soluções mais rápidas, reproduzíveis e confiáveis.

No Bellacosa Mainframe, costumamos dizer que o futuro do IBM Z não está em substituir tecnologias consolidadas, mas em integrá-las ao que há de mais moderno. O Ansible representa exatamente essa filosofia: respeitar décadas de robustez do Mainframe enquanto abraça a automação, a colaboração e a infraestrutura como código. Quem dominar esses dois universos estará preparado para construir a próxima geração de aplicações corporativas sobre a plataforma mais confiável do mercado.


sexta-feira, 23 de dezembro de 2022

Java no IBM Z: Como Java Conversa com COBOL, DB2, CICS e o Mundo Mainframe na Prática

 

Bellacosa Mainframe como java conversa com o mainframe

☕ Um Café no Bellacosa Mainframe

Java no IBM Z: Como Java Conversa com COBOL, DB2, CICS e o Mundo Mainframe na Prática

"O Java não chegou para substituir o COBOL. Ele chegou para conversar com ele."

Existe uma lenda que circula há muitos anos entre profissionais de TI.

Ela diz que existem dois mundos completamente diferentes.

De um lado está o mundo Mainframe.

Do outro está o mundo Java.

Na realidade... isso nunca foi verdade.

Hoje, milhares de bancos, seguradoras, governos e bolsas de valores executam aplicações onde Java, COBOL, CICS, DB2, MQ, z/OS Connect e APIs REST trabalham juntos no mesmo IBM Z.

A pergunta deixou de ser:

"Java ou COBOL?"

e passou a ser:

"Como fazer ambos trabalharem juntos?"

Pegue seu café porque hoje vamos abrir a tampa do motor do IBM Z.


A chegada do Java ao Mainframe

Quando Java apareceu em 1995, muitos profissionais de Mainframe olharam com desconfiança.

"Uma linguagem interpretada?"

"Rodando em máquina virtual?"

"Orientada a objetos?"

Parecia impossível competir com COBOL compilado.

Mas havia um detalhe importante.

Java tinha uma vantagem gigantesca.

Escrever uma vez, executar em qualquer lugar

A JVM (Java Virtual Machine) permitia que o mesmo programa funcionasse em:

  • Windows

  • Linux

  • Unix

  • AIX

  • IBM Z

A IBM rapidamente percebeu que clientes desejariam executar Java perto dos dados.

E onde estavam os dados?

No DB2.

No VSAM.

No IMS.

No CICS.

No MQ.

Ou seja...

Java precisava ir até o Mainframe.

Não fazia sentido mover bilhões de registros para outro servidor.

Muito mais eficiente era mover o processamento.


O nascimento do Java no z/OS

A IBM portou a JVM para o z/OS.

Depois vieram:

  • IBM SDK for Java

  • JZOS

  • JDBC para DB2

  • CICS Java

  • Liberty

  • WebSphere

  • OpenJ9 JVM

Hoje Java é cidadão de primeira classe dentro do IBM Z.


A arquitetura moderna

Imagine um banco.

Cliente Web

      │

 REST API

      │

 Liberty

      │

 Java

      │

 JDBC

      │

 DB2

Agora imagine outro fluxo.

Cliente

↓

CICS

↓

Programa Java

↓

Programa COBOL

↓

DB2

Ou ainda

Java

↓

MQ

↓

COBOL

↓

IMS

Ou

Java

↓

z/OS Connect

↓

CICS

↓

COBOL

↓

VSAM

Perceba.

O Java raramente trabalha sozinho.

Ele normalmente atua como a camada de integração.


JDBC

JDBC significa:

Java Database Connectivity

É a API padrão do Java para conversar com bancos de dados.

No Mainframe ela conversa principalmente com o DB2.


Exemplo

Connection conn =
DriverManager.getConnection(
"jdbc:db2://servidor:446/BANCO",
"usuario",
"senha");

A partir daí...

PreparedStatement ps =
conn.prepareStatement(
"SELECT NOME,SALDO FROM CLIENTE WHERE ID=?");
ps.setInt(1,100);
ResultSet rs = ps.executeQuery();

Enquanto houver registros

while(rs.next()){

System.out.println(
rs.getString("NOME"));

}

Isso parece simples.

Mas por trás existe uma enorme infraestrutura.


O Driver JDBC

O Driver JDBC entende dois idiomas.

Ele fala Java.

E fala DB2.

É literalmente um tradutor.

Java

↓

Driver JDBC

↓

DRDA

↓

DB2

O desenvolvedor escreve SQL.

O Driver transforma isso em chamadas compreendidas pelo DB2.


O Prepared Statement

No Mainframe quase nunca usamos:

Statement

Preferimos:

PreparedStatement

Por quê?

Porque:

  • reutiliza plano de acesso

  • melhora performance

  • evita SQL Injection

  • reduz parsing

Exemplo

SELECT *
FROM CLIENTE
WHERE CPF=?

O ponto de interrogação representa um parâmetro.


Como Java conversa com DB2

Internamente ocorre algo semelhante.

Java

↓

JDBC

↓

DRDA

↓

DB2 Thread

↓

Buffer Pool

↓

Tablespace

O Java nunca lê páginas do banco.

Quem faz isso é o DB2.


Como COBOL acessa DB2

No COBOL usamos:

EXEC SQL

SELECT NOME

INTO :WS-NOME

FROM CLIENTE

END-EXEC.

No Java:

String nome=
rs.getString("NOME");

O objetivo é exatamente o mesmo.

A tecnologia muda.


Conversão de tipos

Essa é uma das maiores dúvidas.

Como converter tipos COBOL para Java?

COBOL

PIC X(30)

Java

String

COBOL

PIC X

Java

char

ou

String

COBOL

PIC 9(4)

Java

int

COBOL

PIC 9(9)

Java

long

COBOL

PIC S9(9)V99 COMP-3

Java

BigDecimal

Nunca utilize:

double

para dinheiro.

Sempre:

BigDecimal

Datas

COBOL

PIC X(10)

2026-07-01

Java

LocalDate

ou

LocalDateTime

Boolean

COBOL tradicional não possui boolean.

Normalmente usa:

"S"

"N"

ou

1

0

No Java

boolean

Estruturas COBOL

Imagine

01 CLIENTE.

   05 ID.

   05 NOME.

   05 SALDO.

No Java

class Cliente{

int id;

String nome;

BigDecimal saldo;

}

Observe a semelhança.

O Java apenas encapsula os dados dentro de uma classe.


OO versus Procedural

COBOL

LER CLIENTE

↓

VALIDAR

↓

ATUALIZAR

↓

GRAVAR

Fluxo procedural.


Java

Cliente

↓

objeto

↓

métodos

↓

atributos

Em vez de funções espalhadas,

o comportamento fica dentro do objeto.


Classe

public class Cliente{

private String nome;

private BigDecimal saldo;

public void sacar(){

}

}

A classe reúne:

  • dados

  • comportamento


O que seria uma estrutura COBOL equivalente?

WORKING-STORAGE

↓

PROCEDURE DIVISION

↓

PARÁGRAFOS

A ideia é semelhante.

Só muda a organização.


Como Java chama COBOL?

Existem diversas formas.

CICS

Java

↓

EXEC CICS LINK

↓

Programa COBOL

JNI

Java pode chamar código nativo.


MQ

Java envia mensagem.

COBOL recebe.


REST

Java chama uma API exposta pelo COBOL.


Stored Procedures

DB2 executa procedimento COBOL.

Java apenas chama.


CICS

Imagine um caixa eletrônico.

O Java recebe uma requisição REST.

POST

/saque

Java valida.

Depois

EXEC CICS LINK

para

SAQ001

escrito em COBOL.

O COBOL atualiza saldo.

Retorna.

Java transforma em JSON.

Cliente recebe resposta.

Tudo acontece em poucos milissegundos.


JSON

O Java trabalha naturalmente com JSON.

Exemplo

{
 "id":100,
 "nome":"Maria",
 "saldo":2500
}

Classe

Cliente

Bibliotecas como Jackson fazem:

Objeto

JSON

e

JSON

Objeto

automaticamente.


XML

Antes do JSON predominava XML.

<cliente>

<nome>Maria</nome>

</cliente>

Ainda muito utilizado em:

SOAP

WebServices

Integrações legadas.


Conversão COBOL para JSON

Suponha

01 CLIENTE.

05 NOME.

05 CPF.

05 SALDO.

Java monta

{
 "nome":"",
 "cpf":"",
 "saldo":0
}

O mapeamento costuma ser feito por:

  • Jackson

  • JAXB

  • JSON-B


Datasets

Java também pode acessar datasets.

Mas normalmente utiliza:

JZOS.

Exemplo

HLQ.CLIENTES.MASTER

O Java lê registros do dataset.

Sem necessidade de FTP.


VSAM

Também pode acessar

  • KSDS

  • ESDS

  • RRDS

através de APIs específicas.


Arquivos Sequenciais

Java consegue ler datasets RECFM FB.

Cada registro torna-se um array de bytes.

Depois converte.

Bytes

↓

String

↓

Objeto Java

EBCDIC versus ASCII

Outro ponto crítico.

Mainframe usa:

EBCDIC.

Java trabalha internamente em Unicode.

Então existe conversão automática.

EBCDIC

↓

Unicode

↓

String

Sem isso os caracteres apareceriam ilegíveis.


Batch Java

Pouca gente sabe.

Java também roda Batch.

JCL

//STEP1 EXEC PGM=JVMLDM86

ou

BPXBATCH

executando

java MinhaClasse

Exemplo

//JAVA EXEC PGM=BPXBATCH
//STDENV DD *
JAVA_HOME=/usr/lpp/java
/*

O Java executa como qualquer programa batch.

Pode:

  • ler datasets

  • acessar DB2

  • gerar arquivos

  • enviar MQ

  • consumir APIs


Java Online

Dentro do CICS.

Ou Liberty.

Recebe milhares de requisições simultâneas.


JSP

Nos anos 2000 a IBM utilizou muito:

JSP

↓

Servlet

↓

Java

↓

DB2

A página dinâmica misturava HTML com Java.

Exemplo

<%=cliente.getNome()%>

Hoje é menos comum.

Frameworks modernos predominam.

Mas muitos sistemas bancários ainda utilizam JSP.


Servlets

O Servlet recebe a requisição.

HTTP

↓

Servlet

↓

Java

↓

DB2

Depois devolve HTML.

Ou JSON.


APIs REST

Hoje a arquitetura mais comum é

Angular

↓

REST

↓

Java

↓

COBOL

↓

DB2

O usuário nem imagina que existe COBOL.


LinuxONE

Agora entra um personagem muito importante.

O LinuxONE.

Ele compartilha praticamente a mesma arquitetura do IBM Z.

Executa:

  • Linux

  • Containers

  • Docker

  • Kubernetes

  • OpenShift

  • Java

  • IA

Tudo extremamente próximo do z/OS.

Isso reduz:

  • latência

  • tráfego de rede

  • custo

Imagine

LinuxONE

↓

Java

↓

MQ

↓

z/OS

↓

COBOL

Tudo dentro do mesmo hardware.


OpenJ9

A JVM da IBM foi otimizada.

Ela consome menos memória.

Melhora Garbage Collection.

Aproveita processadores IBM Z.


zIIP

Aqui está um dos grandes diferenciais.

Grande parte do processamento Java pode utilizar processadores zIIP.

Resultado:

mais desempenho.

Menor custo de licenciamento.

É uma das razões pelas quais muitas empresas migraram workloads Java para o IBM Z.


Um fluxo completo

Imagine uma transferência bancária.

Celular

↓

HTTPS

↓

API REST

↓

Liberty

↓

Java

↓

Validação

↓

EXEC CICS LINK

↓

COBOL

↓

DB2

↓

COMMIT

↓

Resposta COBOL

↓

Objeto Java

↓

JSON

↓

Cliente

Perceba que cada tecnologia faz aquilo em que é especialista.

  • Java oferece APIs, integração, orientação a objetos e desenvolvimento web.

  • COBOL executa regras de negócio consolidadas ao longo de décadas.

  • CICS coordena as transações com alta disponibilidade.

  • DB2 garante consistência, integridade e desempenho.

  • JCL agenda e executa processos batch.

  • MQ desacopla sistemas e permite comunicação assíncrona.

  • LinuxONE hospeda aplicações Java, microsserviços e containers próximos aos dados.

  • IBM Z fornece segurança, escalabilidade, criptografia e confiabilidade.

Não existe competição entre essas tecnologias. Existe colaboração.


Procedural x Orientado a Objetos: uma visão para quem vem do COBOL

Para um programador COBOL, pense da seguinte forma:

No COBOL você cria um programa que manipula registros.

No Java você cria um objeto que representa aquele registro e sabe operar sobre ele.

No COBOL:

LER CLIENTE
VALIDAR CLIENTE
ATUALIZAR CLIENTE
GRAVAR CLIENTE

No Java:

Cliente cliente = repositorio.buscar(id);
cliente.validar();
cliente.atualizarSaldo(valor);
repositorio.salvar(cliente);

A regra de negócio continua praticamente a mesma. O que muda é a forma de organizá-la.


O futuro

Nos últimos anos surgiram novas tecnologias como:

  • Jakarta EE

  • Spring Boot

  • Quarkus

  • Open Liberty

  • z/OS Connect EE

  • APIs REST

  • GraphQL

  • Kafka

  • OpenShift

  • Red Hat Ansible Automation Platform

  • IA Generativa integrada ao IBM Z

Mesmo assim, o núcleo dos sistemas bancários continua sendo, em muitos casos, o mesmo:

  • COBOL processando regras críticas.

  • CICS coordenando milhões de transações.

  • DB2 armazenando dados.

  • Java expondo serviços modernos.

  • LinuxONE executando aplicações cloud-native próximas ao ambiente z/OS.


Conclusão

Durante muitos anos, criou-se a falsa ideia de que Java substituiria o COBOL. A história mostrou o contrário. O IBM Z evoluiu para unir o melhor dos dois mundos.

O COBOL permanece imbatível na execução de regras de negócio críticas e estáveis. O Java tornou-se a ponte para APIs REST, aplicações web, microsserviços, integração com nuvem, processamento orientado a objetos e experiências digitais modernas.

Hoje, quando um cliente consulta o saldo pelo aplicativo do banco, dificilmente percebe a sofisticada cadeia tecnológica envolvida. Um JSON percorre uma API REST hospedada em Open Liberty, passa por classes Java, utiliza JDBC para acessar o DB2 ou aciona um programa COBOL via CICS. Em segundos, o resultado retorna ao celular com segurança, integridade transacional e disponibilidade próxima de 100%.

Esse é o verdadeiro espírito do IBM Z moderno: não substituir o legado, mas ampliá-lo. Java, COBOL, CICS, DB2, JCL, LinuxONE, APIs e containers deixaram de ser tecnologias concorrentes e passaram a formar um único ecossistema. É justamente essa capacidade de integrar décadas de investimento com inovação contínua que mantém o Mainframe como a espinha dorsal de alguns dos maiores sistemas financeiros, governamentais e corporativos do planeta. E, para o profissional de Mainframe que aprende Java, abre-se uma nova fronteira: compreender não apenas como cada tecnologia funciona isoladamente, mas como elas conversam para sustentar o mundo digital moderno.