Translate

quinta-feira, 12 de junho de 2025

COBOL: de 1959 até hoje — quando o código atravessa décadas sem pedir aposentadoria.

 

💾 EL JEFE MIDNIGHT LUNCH — Bellacosa Mainframe Chronicles

“COBOL: de 1959 até hoje — quando o código atravessa décadas sem pedir aposentadoria.”


Há linguagens que nascem modinha.
Há linguagens que viram tese acadêmica.
E há o COBOL, que nasceu em 1959 e simplesmente se recusou a morrer — porque alguém precisava rodar o mundo real: folha, banco, seguro, governo, avião no ar e salário no fim do mês.

Hoje vamos fazer uma linha do tempo completa do COBOL no Mainframe, do nariz de foguete dos anos 50 até o Enterprise COBOL moderno, com comentários, curiosidades, easter eggs e aquele café forte do Bellacosa Mainframe.

Senta que lá vem história. ☕




🕰️ 1959 — COBOL nasce

COBOL (Common Business-Oriented Language)
Criado por um comitê liderado por Charles A. Phillips e Joseph Wegstein


🔹 O que havia de novo:

  • Linguagem quase em inglês

  • Pensada em humanos e não técnicos de informatica.

  • Foco em negócios, não em matemática

  • Independência de hardware (uma heresia para a época)

🔹 Equipe criadora do COBOL, listagem não exaustiva:

Alfred Asch (U.S. Air Force)
Benjamin Cheydleur (RCA)
Charles Gaudette (Minneapolis-Honeywell)
Daniel Goldstein (Univac)
Frances “Betty” Holberton (David Taylor Model Basin)
Gertrude Tierney (IBM)
Howard Bromberg (RCA)
Jean Sammet (Sylvania)
Joseph Wegstein (National Bureau of Standards)
Mary Hawes (Burroughs)
Norman Discount (RCA)
Vernon Reeves (Sylvania)
William Logan (Burroughs)
William Selden (IBM)

🧠 Curiosidade:
Grace Hopper odiava linguagens “ilegíveis”. O COBOL nasceu para ser lido por gerentes — ironicamente, só programadores entendem até hoje.

🥚 Easter egg:
O verbo ADD A TO B GIVING C é praticamente poesia corporativa.





🕰️ 1968 — COBOL ANSI 68

Primeira padronização oficial.

🔹 Novidades:

  • Estrutura formal

  • Maior portabilidade

  • Divisão clara em IDENTIFICATION, ENVIRONMENT, DATA e PROCEDURE

🧠 Comentário Bellacosa:
Aqui o COBOL virou “linguagem séria”. Antes era festa; depois, contrato.




🕰️ 1974 — COBOL ANSI 74

A versão que dominou os mainframes por décadas.

🔹 Novidades:

  • IF/ELSE estruturado

  • PERFORM mais poderoso

  • Adeus aos GO TO anárquicos (ou quase)

🧠 Curiosidade:
Boa parte do código que rodou no Y2K ainda era ANSI 74.




🕰️ 1985 — COBOL ANSI 85

O COBOL aprende boas maneiras.

🔹 Novidades:

  • Scope terminators (END-IF, END-PERFORM)

  • Código mais legível

  • Base do COBOL “estruturado”

🥚 Easter egg:
Muita gente ainda hoje esquece o END-IF e culpa o compilador.


🕰️ Anos 80 — COBOL VS / VS II (IBM)

O COBOL entra no reino do MVS.

🔹 Novidades:

  • Integração forte com JCL

  • Batch pesado

  • Performance absurda para a época

🧠 Comentário Bellacosa:
Aqui o COBOL virou músculo. Forte, bruto e confiável.


🕰️ 1991 — COBOL/370

Primeiro grande passo rumo ao “Enterprise”.

🔹 Novidades:

  • Melhor otimização

  • Suporte avançado a CICS e DB2

  • Integração com arquitetura System/370


🕰️ 1994 — Enterprise COBOL 3.2

🔥 Marco histórico.

🔹 O que há de novo:

  • Language Environment (LE)

  • Runtime comum com PL/I e C

  • Otimização real de código

🧠 Curiosidade:
Muitos chamam o LE de “chatice”. Até o primeiro dump bem explicado salvar seu emprego.

🥚 Easter egg:
CEE3ABD virou melhor amigo de quem debuga madrugada.


🕰️ 1996 — Enterprise COBOL 3.3

O compilador do Bug do Milênio.

🔹 Novidades:

  • Melhor I/O

  • Mais estabilidade

  • Código gerado mais rápido

🧠 Comentário Bellacosa:
Se o mundo não acabou em 01/01/2000, agradeça ao COBOL 3.3.


🕰️ 2001 — Enterprise COBOL 3.1 (z/OS)

Transição definitiva para o z/OS.

🔹 Novidades:

  • Unicode (primeiros passos)

  • Melhor integração com ambientes modernos

  • Visão “enterprise de verdade”

🧠 Curiosidade:
Aqui o COBOL começou a flertar com XML… timidamente.


🕰️ 2007 — Enterprise COBOL 4.1

O salto tecnológico.

🔹 Novidades:

  • Arquitetura 64 bits

  • Suporte a XML nativo

  • Melhor interoperabilidade

🥚 Easter egg:
Muita gente demorou anos para sair do 3.3 por medo.


🕰️ 2010 — Enterprise COBOL 5.1

COBOL moderno sem pedir desculpas.

🔹 Novidades:

  • Performance absurda

  • Melhor otimização para hardware z

  • Preparação para serviços

🧠 Comentário Bellacosa:
Aqui o COBOL começa a humilhar linguagens modernas em benchmark.


🕰️ 2016 — Enterprise COBOL 6.1

O COBOL acorda para o século XXI.

🔹 Novidades:

  • Melhor uso de CPU

  • Integração com DevOps

  • Compilador mais inteligente

🥚 Easter egg:
Compila mais rápido, roda mais rápido… e ainda reclamam.


🕰️ 2019–2022 — Enterprise COBOL 6.2 / 6.3 / 6.4

O COBOL sem vergonha de ser moderno.

🔹 Novidades:

  • Melhor suporte a APIs

  • Integração com pipelines

  • Foco em cloud híbrida e z/OS Connect

🧠 Curiosidade:
COBOL virou backend de API REST. Sim, isso é real.


🕰️ 2023–2025 — Enterprise COBOL 6.5 (atual)

O COBOL que ri do etarismo.

🔹 O que há de novo:

  • Performance ainda maior

  • Melhor diagnóstico

  • Alinhamento com z/OS moderno, containers e automação

  • Funções intrínsecas criadas pelo programador

🧠 Comentário Bellacosa:
Enquanto discutem se COBOL morreu, ele roda bilhões de transações por dia.


☕ Conclusão Bellacosa Mainframe

COBOL não sobreviveu apesar do tempo.
Ele sobreviveu porque o tempo precisava dele.

De 1959 até hoje:

  • Mudou

  • Evoluiu

  • Aprendeu XML, API, DevOps, Unicode e JSON
    Mas nunca perdeu seu propósito: fazer o negócio rodar.

“COBOL não é velho.
Velho é sistema que cai.”
El Jefe Midnight Lunch



Fonte: https://www.ibm.com/docs/pt-br/cobol-zos/6.5.0?topic=overview-cobol-compiler-versions-required-runtimes-support-information 


Tabela 1. Nomes de compiladores COBOL, versões e releases, identificadores de produtos, datas GA e EOS e tempos de execução necessários
Compilador
Versão, liberação e nível de modificação
Identificador de produto (PID)
Data de disponibilidade geral (GA)
(Ano-Mês-Dia)
Data do fim do suporte (EOS)1
(Ano-Mês-Dia)
Tempos de execução necessários2
OS/VS COBOL1.2.1----
OS/VS COBOL1.2.2----
OS/VS COBOL1.2.35740-CB11974-09-231999-12-31
  • Biblioteca de tempo de execução COBOL OS/VS; ou
  • Biblioteca de tempo de execução do VS COBOL II; ou
  • z/OS Language Environment
OS/VS COBOL1.2.45740-CB11976-09-231999-12-31
  • Biblioteca de tempo de execução COBOL OS/VS; ou
  • Biblioteca de tempo de execução do VS COBOL II; ou
  • z/OS Language Environment
VS COBOL II1.15668-9581985-10-011997-06-30
  • Biblioteca de tempo de execução do VS COBOL II; ou
  • z/OS Language Environment
VS COBOL II1.25668-9581986-12-191997-06-30
  • Biblioteca de tempo de execução do VS COBOL II; ou
  • z/OS Language Environment
VS COBOL II1.335668-9581988-12-161996-06-30
  • Biblioteca de tempo de execução do VS COBOL II; ou
  • z/OS Language Environment
VS COBOL II1.435668-9581993-03-122001-03-31
  • Biblioteca de tempo de execução do VS COBOL II; ou
  • z/OS Language Environment
COBOL/370
1.15688-1971991-12-201997-09-30z/OS Language Environment
COBOL para MVS & VM
1.25688-1971995-10-272001-12-31z/OS Language Environment
COBOL for OS/390® & VM
2.135648-A251997-05-232004-12-31z/OS Language Environment
COBOL for OS/390 & VM
2.235648-A252000-09-292004-12-31z/OS Language Environment
Enterprise COBOL for z/OS®
3.15655-G532001-11-302004-04z/OS Language Environment
Enterprise COBOL for z/OS
3.25655-G532002-09-272005-10-03z/OS Language Environment
Enterprise COBOL para z/OS
3.35655-G532004-02-272007-04-30z/OS Language Environment
Enterprise COBOL para z/OS
3.45655-G532005-07-012015-04-30z/OS Language Environment
Enterprise COBOL para z/OS
4.15655-S712007-12-142014-04-30z/OS Language Environment
Enterprise COBOL para z/OS
4.25655-S712009-08-282022-04-30z/OS Language Environment
Enterprise COBOL para z/OS
5.15655-W322013-06-212020-04-30z/OS Language Environment
Enterprise COBOL para z/OS
5.25655-W322015 -02-272020-04-30z/OS Language Environment
Enterprise COBOL para z/OS
6.15655-EC62016-03-182022-09-30z/OS Language Environment
Enterprise COBOL para z/OS
6.25655-EC62017-09-082024-09-30z/OS Language Environment
Enterprise COBOL para z/OS
6.35655-EC62019-09-062025-09-30z/OS Language Environment
Enterprise COBOL 
Enterprise COBOL para z/OS
6.45655-EC62022-05-27A ser determinadoz/OS Language Environment
Enterprise COBOL para z/OS
6.55655-EC62025-06-13A ser determinadoz/OS Language Environment

 

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.


Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

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

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