☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

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

domingo, 26 de julho de 2026

A Academia Jedi do COBOL: Tudo o Que um Padawan Precisa Saber para Dominar o Mainframe

 

Bellacosa Mainframe e a academia mainframe

 A Academia Jedi do COBOL: Tudo o Que um Padawan Precisa Saber para Dominar o Mainframe

FUNDAMENTOS DO DESENVOLVIMENTO COBOL


1. Conceitos Básicos

Antes de escrever uma linha de código, o aluno precisa entender o que é COBOL.

COBOL significa:

COmmon Business Oriented Language

Criada em 1959 para resolver problemas de negócios.

Enquanto linguagens modernas nasceram para matemática ou sistemas operacionais, COBOL nasceu para:

  • Folha de pagamento

  • Bancos

  • Seguros

  • Governo

  • Contabilidade

  • Controle financeiro

Exemplo:

Imagine um banco processando:

  • 50 milhões de contas

  • 300 milhões de transações por dia

Grande parte disso ainda roda em COBOL.


Estrutura clássica

IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.

Comparação:

COBOLCasa
IdentificationNome do dono
EnvironmentInfraestrutura
DataMóveis
ProcedureO que acontece dentro

2. Tipos de Programas

Um erro comum é achar que existe apenas um tipo de programa COBOL.

Na prática temos:


Programas Batch

Executados sem interação humana.

Exemplo:

Processamento noturno do banco.

23:00 Início
04:00 Fim

Milhões de registros processados.


Programas Online

Executados pelo usuário.

Exemplo:

Caixa eletrônico.

Saque
Extrato
Transferência

Normalmente via CICS.


Subprogramas

Programas chamados por outros programas.

Exemplo:

CALL 'CALCJURO'

Reutilização de código.


Utilitários

Ferramentas auxiliares.

Exemplo:

  • Conversão de arquivos

  • Formatação

  • Migração de dados


3. Etapas para Desenvolvimento

Aqui o aluno aprende que programar é apenas uma parte do trabalho.


Levantamento de requisitos

Perguntas:

  • O que o usuário quer?

  • Quais entradas existem?

  • Quais saídas são necessárias?


Análise

Transformar regra de negócio em lógica.

Exemplo:

Se idade >= 65
então aposentado

Projeto

Definir:

  • Arquivos

  • Variáveis

  • Fluxo

  • Relatórios


Codificação

Somente agora começa o COBOL.


Testes

Muitos iniciantes pulam esta etapa.

Erro gravíssimo.

Um programa sem testes:

COMPILA ≠ FUNCIONA

4. Terminologia, Conceitos e Recursos

Aqui nasce o vocabulário do programador.


Registro

Uma linha lógica.

Exemplo:

001 João      2500.00

Campo

Parte do registro.

Nome
Salário
CPF

Arquivo

Conjunto de registros.


Programa

Conjunto de instruções.


Job

Execução do programa.

No Mainframe:

//STEP01 EXEC PGM=FOLHA001

☕💣 LÓGICA DE PROGRAMAÇÃO


5. Ferramentas de Planejamento

O pior programador é aquele que abre o editor antes de pensar.

Planejamento economiza horas.


Diagrama de Processo

Entrada
 ↓
Validação
 ↓
Cálculo
 ↓
Saída

Tabela de Decisão

Muito usada em bancos.

Exemplo:

SaldoCrédito
>10000Sim
<10000Não

6. Projeto Estruturado

A filosofia:

Resolver problemas grandes
dividindo em pequenos problemas

Exemplo:

Sistema de Folha

LER FUNCIONÁRIO
CALCULAR SALÁRIO
CALCULAR IMPOSTOS
IMPRIMIR

Cada parte vira um parágrafo.


7. Fluxogramas

Antes do COBOL existia o fluxograma.

Exemplo:

INÍCIO
  |
LER ARQUIVO
  |
FIM DO ARQUIVO?
 /      \
SIM      NÃO
 |         |
FIM      PROCESSA

Benefícios

  • Facilita entendimento

  • Ajuda documentação

  • Facilita manutenção


8. Pseudocódigo

Traduz a regra para linguagem humana.

Exemplo:

LER CLIENTE

SE IDADE >= 18
   APROVAR
SENÃO
   REJEITAR
FIM-SE

Depois converte para COBOL.

IF IDADE >= 18
   MOVE 'S' TO APROVADO
ELSE
   MOVE 'N' TO APROVADO
END-IF.

9. Instruções e Operadores

Comandos básicos.


MOVE

MOVE SALARIO TO SALARIO-ANTIGO

COMPUTE

COMPUTE TOTAL = VALOR + JUROS

ADD

ADD 100 TO SALDO

SUBTRACT

SUBTRACT 50 FROM SALDO

MULTIPLY

MULTIPLY QTDE BY PRECO
    GIVING TOTAL

DIVIDE

DIVIDE TOTAL BY PARCELAS
    GIVING VALOR-PARCELA

10. Estruturas de Controle

O cérebro do programa.


IF

IF SALDO > 0

EVALUATE

Equivalente ao SWITCH.

EVALUATE TIPO
   WHEN 1
      ...
   WHEN 2
      ...
END-EVALUATE

PERFORM

Laços de repetição.

PERFORM 100 TIMES

PERFORM UNTIL

PERFORM UNTIL EOF = 'S'

Muito usado em batch.


☕💣 PADRÕES PROFISSIONAIS


11. Padrões de Nomes

Programador júnior:

01 X.
01 Y.

Programador profissional:

01 WS-SALDO-CLIENTE.
01 WS-LIMITE-CREDITO.

Prefixos comuns

PrefixoSignificado
WSWorking Storage
LKLinkage
FDFile Description
INEntrada
OUTSaída

Parágrafos

Ruim:

1000.

Bom:

1000-LER-CLIENTE.
2000-PROCESSAR-CLIENTE.
3000-EMITIR-RELATORIO.

☕💣 ARQUIVOS E RELATÓRIOS


12. Arquivos Sequenciais

A base histórica do COBOL.

Imagine uma fita magnética.

Leitura:

READ ARQ-CLIENTE

Fluxo clássico:

OPEN INPUT ARQ

PERFORM UNTIL EOF
   READ ARQ
END-PERFORM

CLOSE ARQ

13. Relatórios

Objetivo:

Transformar dados em informação.

Exemplo:

RELATÓRIO DE VENDAS

TOTAL VENDIDO:
R$ 1.500.000

Aspectos importantes:

  • Cabeçalho

  • Detalhes

  • Totais

  • Quebras de controle


Quebra de Controle

Exemplo:

Departamento A
Total A

Departamento B
Total B

Técnica extremamente usada em batch.


☕💣 NÍVEL CORPORATIVO


14. Arquivos Indexados

Aqui o aluno entra no mundo dos bancos e seguradoras.


Sequencial

Procurar conta 9000

1
2
3
4
...
9000

Lento.


Indexado

Índice → Registro

Busca quase instantânea.


Exemplo VSAM KSDS:

READ CLIENTE-KSDS
     KEY IS CPF

15. Tabelas Internas

Equivalente aos arrays modernos.

01 TAB-CLIENTES.
   05 CLIENTE OCCURS 100 TIMES.

Acesso:

CLIENTE(15)

Busca binária:

SEARCH ALL

Tema importantíssimo para entrevistas.


16. Subprogramas

Onde o aluno começa a pensar como arquiteto.


Programa principal:

CALL 'CALCIR'

Subprograma:

LINKAGE SECTION.

Recebe parâmetros.


Benefícios:

  • Reuso

  • Manutenção

  • Modularidade

  • Padronização


O QUE ESTÁ FALTANDO PARA O MERCADO ATUAL?

Se eu fosse enriquecer esse módulo para formar um desenvolvedor COBOL moderno, incluiria também:

Módulo Extra 1 – JCL Básico

  • JOB

  • EXEC

  • DD

  • Condições de execução

  • Return Codes


Módulo Extra 2 – VSAM

  • KSDS

  • ESDS

  • RRDS

  • Alternates Index


Módulo Extra 3 – DB2

  • SELECT

  • INSERT

  • UPDATE

  • CURSOR


Módulo Extra 4 – CICS

  • MAPS

  • COMMAREA

  • Pseudo-conversação


Módulo Extra 5 – Debugging

  • Abend S0C7

  • Abend S0C4

  • FILE STATUS

  • CEEDUMP

  • SYSUDUMP


Módulo Extra 6 – Boas Práticas de Mainframe

  • Naming standards

  • Estrutura de parágrafos

  • Controle de versões

  • Revisão de código

  • Performance

  • Segurança RACF


Visão de carreira do Padawan COBOL

A evolução típica é:

Padawan
 ↓
Programador Júnior
 ↓
Programador Pleno
 ↓
Programador Sênior
 ↓
Analista de Sistemas
 ↓
Arquiteto Mainframe
 ↓
Especialista Corporativo

O segredo não está em decorar comandos COBOL, mas em compreender profundamente processamento de dados, regras de negócio, arquivos, bancos de dados, performance e arquitetura corporativa, pois é exatamente isso que diferencia um simples codificador de um verdadeiro Jedi do Mainframe. ☕💣🚀



terça-feira, 22 de julho de 2025

Uma breve visão sobre Portugol para IBM Mainframe

 

Bellacosa Mainframe apresenta o Portugol

Uma breve visão sobre Portugol para IBM Mainframe

4,385 followers

Fiz algumas adaptações livres nos comandos portugol para auxiliar meus alunos de logica de programação estruturada para IBM Mainframe, compartilho o resultado aqui em nossa comunidade.

Agradeço desde já por todas as críticas construtivas e melhorias que surjam.


Portugol


Neste documento irei apresentar de forma sucinta e pratica os comandos em português estruturado para a resolução dos exercícios de Lógica de Programação.

Serão apresentadas as sintaxes mais comuns e básicas para o aluno iniciante conseguir ler e interpretar os comandos antes de codifica-lo em COBOL.


Comandos


Estrutura básica


 "meu programa"
  var ...
  inicio ...
  processamento ...
  procedimentos finais...
fimalgoritmo


Literais/Variáveis

var wss-numero: numérico
var wss-texto : alfabético
var wss-alfanumerico : alfanumérico
var wss-num-comp : numérico computacional 4
var wss-num-comp1 : numérico computacional 1
var wss-num-comp2 : numérico computacional 2
var wss-num-comp3 : numérico computacional 3
var wss-num-comp4 : numérico computacional 4
var wss-num-comp5 : numérico computacional 5


Arrays e Matrizes (Tabelas Internas)


var wss-array: vetor[linha1..linhaN] de tipo

var wss-matriz: vetor[linha1..linhaN, coluna1..colunaN] de tipo

Recebendo Parâmetros (Sysin ou Parm)

 Receba wss-variavel

Exibir informação na Sysout

Exiba wss-variavel


Estrutura Condicional

Condicional simples

se condição entao
   ...
Fimse 

Condicional simples e senão


se condição entao
...
senao
...
fimse

Condicional composto


se condição1 entao
  ...
senao se condição2 entao
       ...
       Senão
       ...
    fimse
fimse


Multiplos condicionais


escolha variável
caso valor1
...
caso valor2
...
caso valor3
...
outrocaso
...
fimescolha


Estrutura de Repetição


Faça enquanto menor que N


enquanto condição faca
 ...
Fimenquanto


Faça iniciando em um valor até N


para variável de valor1 ate valorN passo P faca
 ...
Fimpara


Faça N vezes


Faça n vezes
 ...
Fimfaça


Repita enquanto verdadeiro


repita ...
ate condição


Faça enquanto condição


faca { ... }
enquanto (condição)

Criando procedimento, seção e paragrafo


procedimento nome(parâmetro: tipo; ...)
...
inicio
...
fimprocedimento


Chamada de Programas Externos


Chamando sub-programa


Chamando programa


Processando Arquivos


Arquivos Sequenciais QSAM


Declarando Arquivo


Declarando arquivo1 Entrada
Declarando arquivo2 Saida

Abrindo Arquivo


Abrindo arquivo1 Entrada
Abrindo arquivo2 Saida


Lendo Arquivo


Leia arquivo1 em WSS-REG


Gravando Arquivo


Gravando arquivo2 de WSS-REG


Fechando Arquivo


Fechando arquivo1


Arquivos Sequenciais VSAM


Declarando Arquivo


Declarando arquivo1 Entrada
Declarando arquivo2 Entrada & Saida
Declarando arquivo3 Saida

Abrindo Arquivo


Abrindo arquivo1 Entrada
Abrindo arquivo2 I/O
Abrindo arquivo3 Saida


Lendo Arquivo sequencialmente

Leia arquivo1 em WSS-REG


Lendo Arquivo por chave indexada

Leia arquivo2 em WSS-REG através da chave


Regravando Arquivo

Regrave arquivo2 de WSS-REG


Gravando Arquivo

Gravando arquivo3 de WSS-REG


Fechando Arquivo

Fechando arquivo1

Conclusão:

Portugol é uma linguagem de programação fictícia, escrita em português estruturado, usada principalmente para ensinar lógica de programação de forma acessível e didática.

Características principais:

  • Sintaxe simples e em português, facilitando o aprendizado.
  • Não é executada diretamente por computadores reais, mas existem interpretadores (como o Visualg) que simulam sua execução.
  • Ideal para iniciantes, antes de aprender linguagens como Python, Java ou C.

Exemplo em Portugol:

algoritmo "exemplo"
var
   numero: inteiro

inicio
   escreva("Digite um número: ")
   leia(numero)
   se numero > 0 entao
      escreva("Número positivo")
   senao
      escreva("Número negativo ou zero")
fimalgoritmo

👉 Resumo: Portugol é uma ferramenta educacional que ajuda a entender os fundamentos da programação sem a complexidade de sintaxes em inglês.


 Thesaurus

https://portugol.dev/

https://erickweil.github.io/portugolweb/

https://visualg.com.br/

https://www.vivaolinux.com.br/artigo/Portugol-Online-Software-livre-para-facilitar-o-estudo-de-algoritmos/



https://www.linkedin.com/embed/feed/update/urn:li:ugcPost:7437160256226373634



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...