Translate

Mostrar mensagens com a etiqueta variáveis. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta variáveis. Mostrar todas as mensagens

quinta-feira, 14 de abril de 2022

Lógica de Programação no Mainframe : O Guia Definitivo para um Programador Padawan Entender Como Pensar em COBOL

 

Bellacosa Mainframe apresenta logica de programacao em mainframe


☕ Um Café no Bellacosa Mainframe

Lógica de Programação no Mainframe

O Guia Definitivo para um Programador Padawan Entender Como Pensar em COBOL Antes Mesmo de Escrever uma Linha de Código

"A diferença entre um programador júnior e um programador experiente raramente está na linguagem. Está na forma como ele pensa antes de começar a programar."


Introdução

Existe um mito que acompanha praticamente todo iniciante em Mainframe.

Muitos acreditam que aprender COBOL significa decorar comandos como MOVE, IF, PERFORM, READ, WRITE e COMPUTE.

Não.

Isso é parecido com decorar palavras de um idioma sem aprender a formar frases.

Programar não é escrever código.

Programar é resolver problemas.

O computador apenas executa a solução que você imaginou.

Quanto melhor for sua lógica, menor será seu código.

Quanto pior for sua lógica, maior será o desastre.

Curiosamente, essa afirmação vale ainda mais no mundo Mainframe.

Em um sistema bancário, um erro lógico pode movimentar milhões de reais para a conta errada.

Um erro de apenas um operador relacional pode impedir milhares de aposentadorias de serem pagas.

A máquina faz exatamente aquilo que você pediu.

Nunca aquilo que você queria.


Afinal, o que é lógica de programação?

Lógica é a capacidade de organizar pensamentos em uma sequência de passos capazes de resolver um problema.

Em outras palavras:

Entrada → Processamento → Saída

Todo programa do planeta funciona assim.

Sempre.

Sem exceções.

Imagine fazer café.

Entrada:

  • água

  • café

  • filtro

Processamento:

  • aquecer água

  • passar pelo pó

Saída:

  • café pronto

Um programa COBOL faz exatamente isso.

Entrada:

Arquivo de clientes

Processamento

Arquivo atualizado

Nada muda.

Apenas o problema é diferente.


O computador é extremamente inteligente...

...para fazer exatamente o que você mandar.

E extremamente burro para adivinhar.

Se você esquecer um caso específico...

Ele esquecerá também.


Exemplo

Você deseja aprovar clientes maiores de idade.

Errado:

SE IDADE > 18

O cliente com exatamente 18 anos será recusado.

O correto seria

IDADE >= 18

Esse pequeno detalhe pode causar milhares de erros.

A lógica mora justamente nesses detalhes.


O primeiro segredo dos grandes programadores

Eles passam muito mais tempo pensando do que digitando.

Um programador experiente pode gastar:

70%

pensando

20%

planejando

10%

escrevendo

Já o iniciante faz exatamente o contrário.


Antes do COBOL existe o algoritmo

Todo programa começa com uma receita.

Exemplo.

Problema:

Calcular média de um aluno.

Passos.

Receber nota 1

Receber nota 2

Somar

Dividir por 2

Mostrar resultado

Isso é um algoritmo.

COBOL vem depois.


Aprenda primeiro estas estruturas

Toda programação procedural é formada por apenas três estruturas.

Sim.

Somente três.

Todo software do mundo nasce delas.


1 — Sequência

Faça isto

Depois aquilo

Depois aquilo outro

Exemplo

Leia salário

Calcule imposto

Mostre salário líquido

Nada complicado.


2 — Seleção

Agora aparece a primeira decisão.

SE saldo > 0

então saque permitido

senão

saque negado

No COBOL isso aparece como

IF
ELSE
END-IF

A vida inteira você fará isso.


3 — Repetição

Enquanto existir trabalho...

Continue trabalhando.

PERFORM UNTIL

PERFORM VARYING

São os famosos loops.


Curiosidade

Os três pilares da programação estruturada foram formalizados por Edsger W. Dijkstra, Ole-Johan Dahl e C. A. R. Hoare na década de 1960. A ideia revolucionária era simples: qualquer programa poderia ser construído usando apenas sequência, seleção e repetição, reduzindo drasticamente o uso de GOTO e tornando o software mais confiável.


Como um programa COBOL pensa?

Imagine um funcionário de banco.

Ele chega.

Recebe documentos.

Confere informações.

Atualiza cadastro.

Emite comprovante.

Vai embora.

Um programa COBOL trabalha exatamente assim.


Entrada

READ
ACCEPT
LINKAGE

Processamento

MOVE

ADD

SUBTRACT

MULTIPLY

DIVIDE

COMPUTE

STRING

UNSTRING

Saída

DISPLAY

WRITE

REWRITE

RETURN

SEND

O cérebro do programa

A PROCEDURE DIVISION.

Ela é composta por:

Parágrafos

Sections

Sentenças

Comandos

Cada um possui sua responsabilidade.


Parágrafos

Pense em capítulos de um livro.

CALCULAR-JUROS.

VALIDAR-DADOS.

ATUALIZAR-SALDO.

Cada um resolve uma única tarefa.

Essa organização melhora leitura, manutenção e testes.


Sections

São grupos de parágrafos relacionados.

Muito usadas em programas legados e ainda presentes em diversos ambientes corporativos.

VALIDACAO SECTION

PROCESSAMENTO SECTION

FINALIZACAO SECTION

Hoje, muitos times preferem programas menores e menos dependentes de SECTION, mas você encontrará ambos os estilos no mercado.


PERFORM é seu melhor amigo

Nunca copie código.

Faça um parágrafo.

Execute quando necessário.

PERFORM VALIDAR-CLIENTE

Muito melhor que repetir cinquenta linhas.


Variáveis

Uma variável representa um espaço reservado para armazenar informações.

Exemplo

Nome

Saldo

CPF

Data

Valor

Cada variável deve representar apenas uma ideia.

Não misture responsabilidades.


Um bom nome vale ouro

Ruim

A

X

TEMP

VAR1

Bom

WS-CLIENTE-SALDO

WS-VALOR-TOTAL

WS-DATA-PAGAMENTO

Você agradecerá daqui a dez anos.

E quem der manutenção também.


Expressões

Expressões representam cálculos.

A + B

SALDO - SAQUE

JUROS * TAXA

VALOR / PARCELAS

No COBOL moderno, COMPUTE simplifica expressões complexas, tornando o código mais legível.


Expressões booleanas

São perguntas.

IDADE >= 18

SALDO > 0

CPF = CPF-INFORMADO

Resultado?

VERDADEIRO

ou

FALSO

Toda programação gira em torno dessas respostas.


Operadores importantes

Igual

Maior

Menor

Maior ou igual

Menor ou igual

Diferente

AND

OR

NOT

Eles parecem simples.

Mas definem todo o comportamento do programa.


Fluxo de execução

Imagine uma estrada.

O programa começa.

Segue em frente.

Em alguns momentos:

vira

repete

retorna

encerra

Esse caminho é chamado fluxo.

Um fluxo claro é um programa fácil de manter.


O perigo do GO TO

Nos anos 70 era comum.

Hoje deve ser evitado.

Por quê?

Porque destrói o fluxo natural.

Cria o famoso:

"espaguete"

Linhas indo para todos os lados.

Difícil testar.

Difícil entender.

Difícil manter.

Por isso:

PERFORM

END-IF

EVALUATE

substituem praticamente todos os antigos GO TO.


EVALUATE

É o "switch" do COBOL.

Muito mais elegante que dezenas de IF aninhados.

Exemplo conceitual:

Cliente Ouro

↓

desconto

Cliente Prata

↓

desconto menor

Cliente Bronze

↓

sem desconto

Código mais limpo.

Mais fácil de ler.


Loops

No Mainframe você processará arquivos enormes.

Milhares.

Milhões.

Bilhões de registros.

Você não faz:

READ

READ

READ

READ

Você faz

PERFORM UNTIL EOF

Até chegar ao fim do arquivo.


EOF

Uma das primeiras variáveis que todo programador COBOL aprende.

WS-FIM-ARQUIVO

88 EOF VALUE "S"

Quando ela muda...

O loop termina.

Quase todo processamento batch funciona assim.


Subprogramas

Grandes bancos dividem responsabilidades.

Programa principal

Chama

Subprograma

Retorna resultado

Assim nasce software reutilizável.

Em COBOL isso ocorre com CALL.


O conceito de responsabilidade única

Cada parágrafo.

Cada rotina.

Cada subprograma.

Deve fazer apenas uma coisa.

Muito bem feita.

Esse conceito, hoje conhecido como Single Responsibility Principle, já aparecia naturalmente em muitos sistemas COBOL décadas antes de se popularizar na orientação a objetos.


Como pensar antes de programar

Faça estas perguntas.

Qual é o problema?

Quais dados entram?

Quais dados saem?

Quais regras existem?

Existem exceções?

O que acontece se faltar informação?

O arquivo pode estar vazio?

Pode existir duplicidade?

O valor pode ser negativo?

Quanto mais perguntas...

Menos bugs.


A diferença entre programar e desenvolver

Programar é escrever código.

Desenvolver é resolver problemas.

Um excelente desenvolvedor pode escrever poucas linhas.

Mas resolver um problema enorme.


O Mainframe muda sua forma de pensar

Aqui você aprende que:

dados são patrimônio;

performance importa;

I/O custa caro;

cada acesso a disco deve ser pensado;

processar um milhão de registros é rotina;

estabilidade vale mais que criatividade.

Essa mentalidade acompanha você por toda a carreira, mesmo trabalhando depois com Java, Python, Go ou JavaScript.


A disciplina do COBOL

COBOL obriga você a ser organizado.

Divisões bem definidas.

Dados separados da lógica.

Nomes claros.

Fluxo explícito.

Isso forma excelentes engenheiros de software.

Não por acaso, muitos arquitetos de grandes bancos começaram suas carreiras escrevendo COBOL.


Os erros mais comuns dos iniciantes

  • Programar antes de entender o problema.

  • Criar variáveis com nomes sem significado.

  • Misturar validação, cálculo e gravação na mesma rotina.

  • Usar GO TO sem necessidade.

  • Ignorar casos de erro e exceções.

  • Esquecer o tratamento de fim de arquivo.

  • Repetir código em vez de criar parágrafos reutilizáveis.

  • Não documentar regras de negócio complexas.

  • Alterar programas sem compreender seu fluxo completo.

  • Testar apenas o "caminho feliz", esquecendo entradas inválidas e situações de borda.


Trilha de estudos para um Padawan Mainframe

Uma sequência eficiente de aprendizado é:

  1. Lógica de programação.

  2. Algoritmos e fluxogramas.

  3. Tipos de dados e variáveis.

  4. Operadores e expressões.

  5. Estruturas de decisão (IF e EVALUATE).

  6. Estruturas de repetição (PERFORM, UNTIL e VARYING).

  7. Modularização com parágrafos, SECTION e subprogramas.

  8. Arquivos sequenciais e VSAM.

  9. JCL e execução batch.

  10. CICS, Db2, APIs e integração com o mundo moderno.


Easter Egg ☕

Existe uma velha brincadeira entre programadores veteranos.

Perguntaram a um desenvolvedor COBOL:

— Quantas linguagens você conhece?

Ele respondeu:

— Muitas.

— Então por que continua usando COBOL?

O veterano sorriu:

— Porque o banco prefere que o dinheiro continue chegando na conta certa.

A piada resume uma grande verdade: linguagens vêm e vão, mas a lógica permanece. Quem domina lógica aprende qualquer linguagem com muito mais facilidade.


Curiosidade histórica

Grace Hopper, uma das pioneiras da computação e uma das maiores influências para o COBOL, costumava dizer:

"A frase mais perigosa da linguagem é: 'Sempre fizemos assim'."

Embora COBOL seja uma linguagem com mais de seis décadas, ela continua evoluindo. Hoje suporta recursos modernos como JSON, XML, UTF-8, integração com APIs REST, chamadas a serviços, tratamento avançado de dados e otimizações para arquiteturas IBM Z. O que permanece imutável não é a sintaxe, mas a lógica por trás da solução.


Conclusão

Todo programador COBOL experiente conhece centenas de comandos.

Mas isso nunca foi o diferencial.

O diferencial sempre foi saber pensar.

A lógica de programação é a verdadeira linguagem universal da computação. Ela atravessa décadas, plataformas e paradigmas. O profissional que domina sequência, seleção, repetição, modularização, fluxo de execução e organização do pensamento será capaz de trabalhar não apenas com COBOL, mas também com Java, Python, C#, JavaScript, Go ou qualquer tecnologia que surgir no futuro.

No Mainframe, essa disciplina ganha um valor ainda maior. Cada programa processa informações críticas para bancos, seguradoras, hospitais, governos e empresas que movimentam bilhões de transações diariamente. Não há espaço para improvisação: clareza, simplicidade e previsibilidade são virtudes.

Lembre-se sempre desta máxima do Bellacosa Mainframe:

"O computador não premia quem escreve mais código. Ele recompensa quem pensa melhor. Antes de aprender COBOL, aprenda a organizar suas ideias. Depois disso, a linguagem será apenas uma ferramenta nas mãos de um verdadeiro engenheiro de software."

domingo, 4 de março de 2007

O que é o Comando MOVE em COBOL?

 

Bellacosa Mainframe e o comando move em cobol

O que é o Comando MOVE em COBOL?

O comando MOVE é um dos comandos mais utilizados em COBOL.

Sua função é simples:

copiar dados de um campo para outro.

Praticamente todo programa COBOL utiliza MOVE para:

  • transferir valores;

  • inicializar variáveis;

  • mover dados de arquivos;

  • preencher layouts;

  • preparar registros para gravação.


Sintaxe básica

MOVE origem TO destino

Exemplo simples

MOVE 100 TO WS-SALDO

Resultado:

WS-SALDO = 100

Movendo texto

MOVE 'BELLACOSA'
     TO WS-NOME

Resultado:

WS-NOME = BELLACOSA

Movendo entre variáveis

MOVE WS-SALDO-ATUAL
     TO WS-SALDO-ANTERIOR

Analogia simples

Imagine um operador copiando um documento de uma pasta para outra.

O MOVE faz exatamente isso:

ORIGEM
   ↓
DESTINO

Exemplo completo

WORKING-STORAGE SECTION.

01 WS-NOME     PIC X(20).
01 WS-CLIENTE  PIC X(20).

PROCEDURE DIVISION.

    MOVE 'VAGNER'
         TO WS-NOME

    MOVE WS-NOME
         TO WS-CLIENTE

    DISPLAY WS-CLIENTE

    STOP RUN.

Saída:

VAGNER

MOVE Numérico

MOVE 5000
     TO WS-SALARIO

MOVE Decimal

MOVE 1234.56
     TO WS-VALOR

MOVE entre formatos diferentes

COBOL realiza conversões automáticas em muitos casos.

Exemplo:

01 WS-TEXTO PIC X(5).
01 WS-NUM   PIC 9(5).

MOVE WS-NUM TO WS-TEXTO

MOVE para grupos

Uma característica poderosa do COBOL.

01 CLIENTE.
   05 NOME  PIC X(20).
   05 IDADE PIC 9(3).

01 CLIENTE-BKP PIC X(23).
MOVE CLIENTE
     TO CLIENTE-BKP

Move toda a estrutura.


MOVE CORRESPONDING

Também chamado:

MOVE CORR

Move campos com o mesmo nome.


Exemplo

01 CLIENTE-A.
   05 NOME PIC X(20).
   05 IDADE PIC 9(3).

01 CLIENTE-B.
   05 NOME PIC X(20).
   05 IDADE PIC 9(3).
MOVE CORRESPONDING CLIENTE-A
                   TO CLIENTE-B

O que acontece?

NOME  → NOME
IDADE → IDADE

Automaticamente.


MOVE HIGH-VALUES

Preenche com o maior valor hexadecimal.

MOVE HIGH-VALUES
     TO WS-CAMPO

Muito usado em:

  • VSAM;

  • inicialização;

  • pesquisas.


MOVE LOW-VALUES

Preenche com o menor valor hexadecimal.

MOVE LOW-VALUES
     TO WS-CAMPO

MOVE SPACES

Preenche com espaços.

MOVE SPACES
     TO WS-NOME

Equivalente:

MOVE ' '
     TO WS-NOME

MOVE ZEROES

Preenche com zeros.

MOVE ZEROES
     TO WS-SALDO

MOVE ALL

Repete um valor.

MOVE ALL '*'
     TO WS-LINHA

Resultado:

********************

MOVE em arquivos

Muito usado antes do WRITE.

MOVE WS-NOME
     TO NOME-SAIDA

WRITE REG-SAIDA

MOVE em DB2

Muito usado para preencher host variables.

MOVE WS-CPF
     TO HV-CPF

MOVE em CICS

Também extremamente comum.

MOVE WS-MENSAGEM
     TO MSG-AREA

Cuidados com MOVE

Truncamento

Campo menor que origem.

Exemplo:

PIC X(5)

Recebendo:

BELLACOSA

Resultado:

BELLA

Perda de casas decimais

MOVE 123.99
     TO PIC 9(3)

Pode perder precisão.


Conversões inválidas

Mover texto para numérico pode gerar erro lógico.


MOVE vs COMPUTE

MOVE:

MOVE 100 TO WS-A

Apenas copia.


COMPUTE:

COMPUTE WS-A = 50 + 50

Calcula.


MOVE vs ADD

MOVE:

MOVE 100 TO WS-A

Substitui conteúdo.


ADD:

ADD 100 TO WS-A

Soma ao conteúdo existente.


Onde o MOVE é utilizado?

Praticamente em todos os programas COBOL:

  • Batch;

  • CICS;

  • DB2;

  • VSAM;

  • Arquivos QSAM;

  • APIs;

  • Processamento financeiro.


Curiosidades

1. MOVE é provavelmente o comando mais utilizado do COBOL

2. Alguns sistemas executam milhões de MOVEs por segundo

3. MOVE CORRESPONDING é muito usado em sistemas corporativos

4. Grande parte da integração entre layouts depende de MOVE


Resumo rápido

ComandoFunção
MOVECopia dados
MOVE CORRESPONDINGCopia campos iguais
MOVE SPACESPreenche espaços
MOVE ZEROESPreenche zeros
MOVE HIGH-VALUESMaior valor hexadecimal
MOVE LOW-VALUESMenor valor hexadecimal
MOVE ALLRepete conteúdo

Conclusão

O comando MOVE é a principal instrução de transferência de dados do COBOL. Ele permite copiar informações entre variáveis, registros e estruturas de forma simples, eficiente e segura, sendo um dos pilares de praticamente todos os sistemas executados em mainframes IBM Z.


terça-feira, 30 de janeiro de 2007

O que é Lógica de Programação em Mainframe?

 

Bellacosa Mainframe e a logica de programação mainframe

O que é Lógica de Programação em Mainframe?

Quando alguém começa a estudar:

  • COBOL;

  • JCL;

  • REXX;

  • Assembler;

  • DB2;

  • programação no z/OS;

existe um conceito que aparece antes de qualquer linguagem:

lógica de programação.

Muitos iniciantes pensam que programar é:

decorar comandos.

Mas na verdade:
programar significa:

resolver problemas usando lógica.


Definição simples

Lógica de programação é:

a forma organizada de pensar para criar soluções computacionais.

Ela ensina:

  • sequência;

  • decisão;

  • repetição;

  • organização;

  • fluxo de processamento.


O que muda no mainframe?

No ambiente mainframe:

a lógica normalmente processa enormes volumes de dados.

Exemplo:

  • milhões de contas bancárias;

  • bilhões de transações PIX;

  • folhas salariais;

  • cartões de crédito;

  • faturamento.


Analogia simples

Imagine ensinar alguém a fazer café.

Você precisa explicar:

  1. pegar água;

  2. ferver;

  3. colocar pó;

  4. filtrar;

  5. servir.

Isso é:

lógica.

O computador funciona exatamente assim:

seguindo passos organizados.


A lógica existe antes da linguagem

Antes de aprender:

  • COBOL;

  • Java;

  • Python;

  • Assembler;

é importante entender:

como pensar como programador.


O que a lógica ensina?


Sequência

Ordem correta das ações.


Decisão

Escolher caminhos.


Repetição

Executar várias vezes.


Variáveis

Guardar informações.


Fluxo

Controlar execução.


Exemplo simples de lógica

LER SALARIO
SE SALARIO > 5000
   MOSTRAR "IMPOSTO MAIOR"
SENAO
   MOSTRAR "IMPOSTO MENOR"

Isso é lógica

Ainda não importa qual linguagem será usada.


Como isso aparece no COBOL?


Exemplo COBOL simples

IF SALARIO > 5000
   DISPLAY 'IMPOSTO MAIOR'
ELSE
   DISPLAY 'IMPOSTO MENOR'
END-IF

A lógica continua igual

Apenas muda a sintaxe.


Principais conceitos da lógica


Entrada

Dados recebidos.

Exemplo:

  • arquivo;

  • teclado;

  • banco DB2.


Processamento

Regras executadas.


Saída

Resultado final.


Fluxo clássico

ENTRADA
   ↓
PROCESSAMENTO
   ↓
SAÍDA

O que é algoritmo?

Algoritmo é:

sequência lógica de passos.


Exemplo algoritmo

1. Ler cliente
2. Validar saldo
3. Atualizar conta
4. Gerar relatório

O que é variável?

Espaço usado para guardar valores.


Exemplo

NOME
SALARIO
IDADE

O que é condição?

Tomada de decisão.


Exemplos

IF
ELSE
EVALUATE

O que é repetição?

Executar várias vezes.


Exemplo COBOL

PERFORM UNTIL EOF='S'

Muito usado no mainframe

Porque batch processa:

  • milhares;

  • milhões;

  • bilhões de registros.


O que é EOF?

End Of File

Fim do arquivo.


Lógica em processamento batch

Exemplo real:

LER REGISTRO
   ↓
VALIDAR
   ↓
CALCULAR
   ↓
GRAVAR
   ↓
LER PRÓXIMO

Isso é a essência do COBOL batch


O que é fluxograma?

Desenho visual da lógica.


Exemplo

INICIO
 ↓
LER ARQUIVO
 ↓
PROCESSAR
 ↓
FIM

Por que lógica é tão importante no mainframe?

Porque sistemas mainframe:

  • processam muito volume;

  • exigem precisão;

  • não podem falhar facilmente.


Um erro lógico pode causar:

  • cálculo errado;

  • perda financeira;

  • falha batch;

  • ABEND;

  • inconsistência DB2.


O que é debugging?

Analisar lógica para encontrar erros.


O que é bug?

Erro na lógica/programação.


Exemplo clássico

Programa deveria somar:

10 + 20 = 30

Mas lógica errada gera:

10 + 20 = 300

Isso é bug lógico


Como lógica aparece no COBOL?

Principalmente em:

  • IF;

  • PERFORM;

  • EVALUATE;

  • READ;

  • WRITE;

  • COMPUTE.


Exemplo real COBOL batch

READ CLIENTE
IF SALDO > 0
   WRITE RELATORIO
END-IF

Como lógica aparece no JCL?

JCL possui lógica mais operacional.

Exemplo:

COND=(0,NE)

Como lógica aparece no scheduler?

Dependências:

JOBB só executa após JOBA

Como lógica aparece no DB2?

Consultas:

SELECT
WHERE
JOIN

Curiosidades incríveis

1. COBOL foi criado para lógica de negócios


2. Grande parte do processamento bancário depende de lógica batch


3. Programadores experientes valorizam lógica mais do que sintaxe


4. A mesma lógica funciona em várias linguagens


Erros comuns de iniciantes


1. Decorar comandos sem entender lógica


2. Não visualizar fluxo do programa


3. Ignorar regras de negócio


4. Não validar dados


Dicas importantes

Aprenda lógica antes de linguagem


Desenhe fluxos


Entenda entrada → processamento → saída


Pratique algoritmos simples


Como lógica aparece no dia a dia do mainframe?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • CICS;

  • batch;

  • JCL;

  • automação;

  • integração.


Exemplo completo simplificado

LER ARQUIVO
 ↓
VALIDAR CPF
 ↓
CALCULAR SALDO
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO
 ↓
FIM

Resumo rápido

ConceitoSignificado
LógicaForma organizada de pensar
AlgoritmoSequência de passos
VariávelGuarda dados
CondiçãoDecisão
RepetiçãoLoop
BatchProcessamento em lote
DebugEncontrar erros

Conclusão

Lógica de programação é a base de todo desenvolvimento no ambiente mainframe IBM Z.

Ela permite criar algoritmos organizados para processar grandes volumes de dados com segurança, precisão e eficiência, sendo fundamental para COBOL, JCL, DB2 e todo o ecossistema z/OS.