| Bellacosa Mainframe e o fluxograma no mundo mainframe |
☕💥 Fluxogramas no Mundo Mainframe
Ou como um Padawan COBOL descobre que antes do IF WS-SALDO > ZERO, existia um desenhinho que salvava projetos milionários
"Um programa COBOL sem fluxograma é como um JCL sem JOB CARD. Talvez execute. Talvez funcione. Mas ninguém vai entender daqui seis meses."
— Mestre Bellacosa Mainframe
Introdução
Uma das maiores diferenças entre um desenvolvedor COBOL júnior de hoje e um analista de sistemas da década de 1970, 1980 ou 1990 não está na linguagem.
Não está no z/OS.
Não está no DB2.
Não está no CICS.
Está na forma de pensar software.
Hoje aprendemos:
Fazer código
Testar
Commitar
Fazer Pull Request
Antigamente aprendíamos:
Analisar
Modelar
Desenhar
Revisar
Aprovar
Codificar
E neste mundo existia um personagem muito poderoso.
O Fluxograma.
O nascimento dos fluxogramas
A ideia é muito antiga.
Vem dos trabalhos de engenharia industrial.
Frank Gilbreth
Henry Gantt
Por volta de 1921 começaram a desenhar processos industriais.
Exemplo:
Receber matéria-prima
↓
Produzir
↓
Inspecionar
↓
Embalar
↓
Enviar
Décadas depois os computadores apareceram.
E alguém percebeu:
"Programas são processos."
Logo...
Processos industriais
viraram
Processos computacionais.
O modelo Waterfall
Se você trabalha em Mainframe bancário provavelmente ainda verá isso.
Waterfall.
As fases clássicas:
Requisitos
↓
Análise
↓
Fluxogramas
↓
Especificação Técnica
↓
Codificação
↓
Teste
↓
Implantação
Documentos clássicos do Waterfall
Documento Funcional
O que o sistema faz.
Exemplo:
Pagamento de boleto
Regra:
Se vencido
cobrar multa
Se pago em dia
valor normal
Documento Técnico
Como será implementado.
Exemplo:
Programa:
PAGBOL01
Tabela:
TB_BOLETO
Transação:
PB01
Copybooks
CPBOLETO
Fluxograma
É a ponte entre os dois.
Negócio
↓
Fluxograma
↓
COBOL
| Bellacosa Mainframe e os simbolos de fluxograma |
O que é um Fluxograma?
É uma representação gráfica de um algoritmo.
Ao invés de escrever:
IF SALDO > ZERO
DISPLAY "OK"
ELSE
DISPLAY "NEGADO"
END-IF
Desenhamos.
◇
SALDO > 0 ?
/ \
SIM NÃO
↓ ↓
OK NEGADO
Nosso cérebro entende imagens mais rapidamente.
Por isso funcionam.
Símbolos principais
Oval
Significado:
Início
Fim
Exemplo
_______
(START )
-------
ou
_______
( END )
-------
Retângulo
Processamento.
Fazer algo.
Exemplo:
Calcular juros
Atualizar cadastro
Mover campos
Exemplo COBOL
COMPUTE JUROS =
SALDO * 0.05
Fluxograma
□ Calcular juros
Losango
Decisão.
Pergunta.
Tem duas saídas.
SIM
NÃO
Exemplo
Cliente VIP?
COBOL
IF CLIENTE-VIP='S'
Paralelogramo
Entrada e saída.
DISPLAY
ACCEPT
RECEIVE
SEND
Batch
Ler arquivo
Online
Receber PFKEY
Seta
Fluxo.
Indica sequência.
Sem seta.
Existe caos.
Com seta.
Existe entendimento.
Círculo
Conector.
Liga páginas.
Muito usado em especificações gigantes.
Página 1
↓
○A
Página 10
○A
continuação
| Bellacosa Mainframe e um fluxograma cobol batch |
Fluxograma de Batch COBOL
Imagine:
Pagar folha salarial.
Desenho
START
↓
Abrir arquivo
↓
Ler funcionário
↓
Fim Arquivo?
◇
Sim
Gerar relatório
END
Não
Calcular salário
Gravar saída
Ler próximo
COBOL
OPEN INPUT FUNCIONARIO
PERFORM UNTIL EOF='S'
READ FUNCIONARIO
AT END
MOVE 'S' TO EOF
NOT AT END
PERFORM CALCULA
WRITE REG-SAIDA
END-READ
END-PERFORM
| Bellacosa Mainframe exemplo de fluxograma cobol vsam |
Fluxograma para VSAM
Abrir KSDS
↓
READ
↓
FOUND?
SIM
UPDATE
REWRITE
NÃO
WRITE
END
| Bellacosa Mainframe exemplo de fluxograma online cics |
Fluxograma Online CICS
Exemplo.
Consulta saldo.
START
Receber tela
↓
ENTER?
SIM
↓
Validar conta
↓
Conta existe?
◇
SIM
Ler DB2
Enviar tela
NÃO
Mensagem erro
END
COBOL
EXEC CICS RECEIVE MAP
EXEC SQL
SELECT SALDO
INTO :WS-SALDO
FROM CONTA
END-EXEC
EXEC CICS SEND MAP
END-EXEC
| Bellacosa Mainframe exemplo de fluxograma db2 |
Fluxograma com DB2
Exemplo.
Transferência bancária.
START
Receber origem
Receber destino
Valor válido?
◇
SIM
BEGIN UNIT OF WORK
SELECT
UPDATE
UPDATE
COMMIT
NÃO
ROLLBACK
END
Fluxograma das tabelas DB2
Tabela
CLIENTE
Tabela
CONTA
Tabela
MOVIMENTO
Fluxo
CLIENTE
↓
CONTA
↓
MOVIMENTO
Exemplo SQL
SELECT
C.NOME,
M.VALOR
FROM CLIENTE C
JOIN CONTA CT
ON...
JOIN MOVIMENTO M
Fluxograma ajuda a enxergar joins.
Workflow
Muitos confundem.
Fluxograma
não é
Workflow
Mas workflow pode usar fluxograma.
Exemplo
Solicitação crédito
Cliente
↓
Análise
↓
Aprovação gerente
↓
Compliance
↓
Liberação
Hoje isso está em:
IBM BPM
Camunda
ServiceNow
Power Automate
Fluxos de diálogo
Muito usado em CICS.
Tela login
↓
Senha válida?
◇
Sim
Menu
Não
Mensagem erro
Chatbots fazem isso.
ChatGPT faz isso.
URA faz isso.
PIX faz isso.
Boas práticas
1 Não cruzar linhas
Errado
Linhas embaralhadas.
Causa dor psicológica.
2 Usar nomes claros
Errado
Processo 1
Correto
Calcular IOF
3 Uma decisão por vez
Evita confusão.
4 Modularizar
Subfluxos.
Exemplo
Pagamento
↓
Calcular imposto
↓
Fluxograma separado
Curiosidades
Easter Egg 1
COBOL nasceu em 1959.
Fluxogramas já eram padrão.
Easter Egg 2
Muitos programadores COBOL dos anos 80 codificavam olhando apenas para fluxogramas.
Nem tinham acesso ao usuário.
Easter Egg 3
Ferramentas CASE prometiam gerar COBOL automaticamente.
Excelerator
ADW
CoolGen
IEF
Pacbase
A ideia era:
Desenhar
Gerar programa
Compilar
Easter Egg 4
IBM usou fluxogramas extensivamente na documentação do OS/360.
Centenas de páginas.
Easter Egg 5
DFSORT pode ser representado perfeitamente por fluxograma.
INPUT
↓
SORT
↓
SUM
↓
OUTREC
↓
OUTPUT
Por que ainda usamos em Mainframe?
Porque sistemas bancários possuem:
Centenas de regras
Milhares de IFs
Milhões de contas
Um código COBOL pode ter:
30000 linhas
500 parágrafos
200 IFs
Ler isso é cansativo.
Ver um desenho leva segundos.
O Fluxograma como ferramenta de sobrevivência do Padawan COBOL
Imagine receber:
Programa:
FINA0345
38 mil linhas.
Criado em 1994.
Sem documentação.
Sem analista.
Sem usuário.
Sem autor.
Você abre.
Encontra:
PERFORM P1120
PERFORM P1130
PERFORM P1140
PERFORM P1150
O que fazem?
Ninguém sabe.
Mas após desenhar:
START
↓
Validar Cliente
↓
Consultar DB2
↓
Calcular Limite
↓
Atualizar Histórico
↓
Gerar Extrato
↓
END
Tudo fica claro.
É por isso que arquitetos, analistas de sistemas, especialistas em CICS, DB2, IMS, MQ, BPM e até equipes DevOps continuam utilizando fluxogramas.
Eles não substituem COBOL.
Não substituem UML.
Não substituem documentação funcional.
Mas fazem algo extremamente valioso: transformam milhares de linhas de código em uma história visual que qualquer pessoa consegue seguir.
E, no universo Bellacosa Mainframe, talvez esta seja a melhor definição possível:
Fluxograma é o mapa da dungeon. COBOL é a espada. DB2 é o tesouro. CICS é o portal de entrada. E o programador júnior que aprende a desenhar processos deixa de ser apenas um codificador e começa a pensar como um verdadeiro Analista de Sistemas do Reino IBM Z. ☕🚀
Sem comentários:
Enviar um comentário