| Bellacosa Mainframe e a logica de programação estruturada para mainframe |
☕💣 OPERADOR, ANTES DE EXISTIR O COBOL EXISTIA A LÓGICA! — O SEGREDO QUE TRANSFORMA APRENDIZES EM MESTRES DO MAINFRAME
Por que tantos profissionais aprendem COBOL, mas poucos se tornam realmente programadores?
Existe uma crença muito comum entre iniciantes no universo Mainframe:
"Se eu decorar comandos COBOL, vou aprender a programar."
Mas a realidade é outra.
Um programador COBOL experiente sabe que a linguagem é apenas uma ferramenta.
O verdadeiro diferencial está na lógica.
Quando observamos um sistema bancário executando milhões de transações por dia, um processamento batch consolidando contas correntes ou um programa CICS consultando dados em tempo real, o que realmente está funcionando por trás das telas verdes não é COBOL.
É a lógica.
O COBOL apenas traduz essa lógica para o computador.
Por isso, antes de estudar comandos avançados, VSAM, DB2, MQ ou CICS, é fundamental compreender os pilares da programação.
E curiosamente esses mesmos pilares já existiam muito antes dos computadores modernos.
O que é um algoritmo no mundo Mainframe?
A definição clássica diz que algoritmo é uma sequência finita de passos para resolver um problema.
No Mainframe podemos enxergar um algoritmo como um JOB.
Observe:
Exemplo cotidiano
Preparar café.
Colocar água.
Adicionar pó.
Aquecer.
Coar.
Servir.
Existe uma sequência.
Se invertermos os passos, o resultado não será o esperado.
Exemplo Mainframe
Processar folha de pagamento.
Ler arquivo de funcionários.
Ler tabela salarial.
Calcular salário.
Calcular impostos.
Gerar relatório.
Atualizar arquivo mestre.
Perceba:
Um programa COBOL nada mais é que uma sequência organizada de passos.
Isso é um algoritmo.
O algoritmo invisível que existe em todo JOB
Quando um operador submete um JCL:
//JOB001 JOB ...
//STEP01 EXEC PGM=LEFUNC
//STEP02 EXEC PGM=CALCSAL
//STEP03 EXEC PGM=RELATOR
O JCL é um algoritmo.
Ele determina:
O que executar.
Em qual ordem.
Quais dados utilizar.
Qual resultado produzir.
Sem lógica não existe processamento.
O conceito mais importante de toda programação
Todo programa responde a três perguntas:
O que entra?
Input.
O que acontece?
Processamento.
O que sai?
Output.
Exemplo COBOL
Imagine um programa que calcula a média de um aluno.
Entrada:
01 WS-NOTA1 PIC 9(3)V99.
01 WS-NOTA2 PIC 9(3)V99.
Processamento:
COMPUTE WS-MEDIA =
(WS-NOTA1 + WS-NOTA2) / 2.
Saída:
DISPLAY "MEDIA = " WS-MEDIA.
Observe:
Entrada → Processamento → Saída
Esse modelo está presente em praticamente todos os sistemas Mainframe.
Tipos de dados: os tijolos da programação COBOL
Todo programa trabalha com dados.
No COBOL eles são definidos na DATA DIVISION.
Dados numéricos
Exemplos:
01 WS-IDADE PIC 999.
01 WS-SALARIO PIC 9(7)V99.
Utilizados para:
cálculos;
somatórios;
médias;
juros;
impostos.
Dados alfanuméricos
Exemplos:
01 WS-NOME PIC X(40).
01 WS-CPF PIC X(11).
Utilizados para:
nomes;
documentos;
códigos;
mensagens.
Dados lógicos no COBOL
COBOL não possui BOOLEAN clássico como linguagens modernas.
Normalmente utilizamos:
88 CLIENTE-ATIVO VALUE 'S'.
88 CLIENTE-INATIVO VALUE 'N'.
Ou:
01 WS-STATUS PIC X.
88 APROVADO VALUE 'A'.
88 REPROVADO VALUE 'R'.
Esse recurso é extremamente utilizado em sistemas bancários.
Variáveis: os registradores da aplicação
Uma variável representa uma área de memória.
Exemplo:
01 WS-SALDO PIC S9(9)V99 COMP-3.
Durante a execução:
MOVE 1000 TO WS-SALDO.
Depois:
ADD 500 TO WS-SALDO.
Valor atual:
1500
A variável mudou.
Por isso ela recebe esse nome.
Constantes em COBOL
Valores fixos normalmente são definidos com VALUE.
01 WS-TAXA-JUROS PIC 9V999
VALUE 0.125.
Ou:
01 WS-PI PIC 9V99999
VALUE 3.14159.
O conceito é simples:
Uma constante não deve mudar.
MOVE: o comando mais utilizado do COBOL
Na apostila existe o conceito de atribuição.
No COBOL isso ocorre principalmente através do comando MOVE.
Exemplo:
MOVE 100 TO WS-SALDO.
Significa:
"Coloque o valor 100 dentro da variável."
Outro exemplo:
MOVE WS-NOME TO WS-NOME-CLIENTE.
Equivale à atribuição de uma variável para outra.
Entrada e saída de dados no Mainframe
Em linguagens acadêmicas encontramos:
Leia
Escreva
No COBOL encontramos:
READ
WRITE
DISPLAY
ACCEPT
Entrada de dados
Terminal:
ACCEPT WS-NOME.
Arquivo:
READ ARQ-CLIENTES
Saída de dados
Tela:
DISPLAY WS-NOME.
Arquivo:
WRITE REG-SAIDA.
Relatório:
WRITE LINHA-RELATORIO.
Operadores matemáticos no COBOL
O COBOL utiliza verbos muito próximos da linguagem humana.
Soma
ADD A TO B.
Subtração
SUBTRACT A FROM B.
Multiplicação
MULTIPLY A BY B.
Divisão
DIVIDE A INTO B.
Fórmulas complexas
COMPUTE WS-MEDIA =
(WS-NOTA1 + WS-NOTA2) / 2.
O COMPUTE é um dos comandos mais poderosos da linguagem.
Operadores relacionais
São utilizados para comparar valores.
Igual
IF WS-IDADE = 18
Maior
IF WS-SALDO > 1000
Menor
IF WS-SALDO < 0
Diferente
IF WS-STATUS NOT = 'A'
O poder do IF
Todo sistema bancário depende de decisões.
A decisão é implementada através do IF.
Exemplo
IF WS-SALDO > 0
DISPLAY "CONTA POSITIVA"
END-IF.
Exemplo bancário
IF WS-LIMITE > WS-VALOR-SAQUE
PERFORM EFETUA-SAQUE
ELSE
PERFORM NEGA-SAQUE
END-IF.
Observe:
O programa está tomando decisões.
Isso é lógica.
EVALUATE: o SWITCH/CASE do COBOL
Em outras linguagens existe SWITCH.
No COBOL moderno utilizamos:
EVALUATE WS-STATUS
WHEN 'A'
DISPLAY 'ATIVO'
WHEN 'I'
DISPLAY 'INATIVO'
WHEN OTHER
DISPLAY 'INVALIDO'
END-EVALUATE.
Muito comum em sistemas corporativos.
Estruturas de repetição no COBOL
Um dos conceitos mais importantes da programação.
Imagine um arquivo com 50 milhões de registros.
Como processar tudo?
Com laços de repetição.
PERFORM UNTIL
PERFORM UNTIL EOF = 'S'
READ ARQ-CLIENTES
AT END
MOVE 'S' TO EOF
END-READ
END-PERFORM.
Esse é provavelmente um dos padrões mais encontrados no Mainframe.
O algoritmo clássico de processamento batch
Observe a lógica utilizada em milhares de programas COBOL:
ABRIR ARQUIVOS
LER PRIMEIRO REGISTRO
ENQUANTO NÃO FOR FIM DO ARQUIVO
PROCESSAR
LER PRÓXIMO REGISTRO
FIM-ENQUANTO
FECHAR ARQUIVOS
Transformado para COBOL:
OPEN INPUT ARQ-CLIENTES
PERFORM UNTIL EOF = 'S'
READ ARQ-CLIENTES
AT END
MOVE 'S' TO EOF
NOT AT END
PERFORM PROCESSA-REGISTRO
END-READ
END-PERFORM
CLOSE ARQ-CLIENTES.
Esse padrão existe há décadas.
E continua executando boa parte da economia mundial.
A lógica por trás de CICS
Muitos acreditam que CICS é algo completamente diferente.
Mas a lógica é a mesma.
Entrada:
EXEC CICS RECEIVE
Processamento:
IF
EVALUATE
COMPUTE
Saída:
EXEC CICS SEND
Novamente:
Entrada → Processamento → Saída.
O segredo dos grandes programadores COBOL
Os melhores profissionais não decoram comandos.
Eles aprendem a pensar.
Quando recebem uma demanda, primeiro desenham a lógica.
Depois escrevem o código.
Por isso um profissional experiente consegue aprender:
COBOL
PL/I
Natural
Java
Python
C#
Porque a lógica permanece.
A linguagem muda.
O raciocínio não.
Conclusão
Todo sistema Mainframe que processa cartões, PIX, contas correntes, seguros, previdência, telecomunicações ou governo possui a mesma fundação:
Algoritmos.
Variáveis.
Decisões.
Repetições.
Processamento de dados.
O COBOL não é apenas uma linguagem.
Ele é a materialização de uma lógica extremamente bem estruturada, criada para representar regras de negócio de forma clara e confiável.
Quem domina apenas comandos escreve programas.
Quem domina lógica constrói sistemas que sobrevivem décadas.
E talvez esse seja o maior segredo do Mainframe:
Os computadores mudaram.
As telas mudaram.
As linguagens mudaram.
Mas a lógica continua exatamente a mesma desde os primeiros dias da computação.
Sem comentários:
Enviar um comentário