Translate

domingo, 4 de fevereiro de 2007

O que são as DIVISIONS e SECTIONs do COBOL?

 

Bellacosa o que as divisions e section num programa COBOL

O que são as DIVISIONS e SECTIONs do COBOL?

Uma das primeiras coisas que chama atenção em COBOL é sua estrutura extremamente organizada.

Diferente de muitas linguagens modernas, o COBOL divide o programa em:

  • DIVISIONs;

  • SECTIONs;

  • PARAGRAPHs.

Isso ajuda a criar programas:

  • organizados;

  • legíveis;

  • fáceis de manter.

Especialmente em sistemas corporativos gigantes do:

mainframe IBM Z.


O que são DIVISIONs?

DIVISIONs são:

grandes blocos principais do programa COBOL.

Cada DIVISION possui:

uma responsabilidade específica.


Estrutura clássica COBOL

IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISION
PROCEDURE DIVISION

Analogia simples

Imagine um prédio corporativo.

Cada andar possui uma função:

  • administração;

  • arquivos;

  • dados;

  • operações.

As DIVISIONs funcionam exatamente assim.


Fluxo lógico do COBOL

IDENTIFICATION
      ↓
ENVIRONMENT
      ↓
DATA
      ↓
PROCEDURE

1. IDENTIFICATION DIVISION

Responsável pela:

identificação do programa.


Contém informações como:

  • nome do programa;

  • autor;

  • comentários;

  • data.


Exemplo

IDENTIFICATION DIVISION.
PROGRAM-ID. CLIENTE.
AUTHOR. BELLACOSA.

O item mais importante

PROGRAM-ID

Define:

nome do programa COBOL.


2. ENVIRONMENT DIVISION

Define:

ambiente do programa.


Responsável por:

  • arquivos;

  • dispositivos;

  • configurações;

  • datasets.


Muito usada em batch


SECTIONs principais

CONFIGURATION SECTION
INPUT-OUTPUT SECTION

CONFIGURATION SECTION

Define:

  • máquina;

  • compilador;

  • ambiente.


Exemplo

CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-Z.
OBJECT-COMPUTER. IBM-Z.

INPUT-OUTPUT SECTION

Define:

arquivos do programa.


Exemplo

SELECT CLIENTE
ASSIGN TO ARQCLI.

3. DATA DIVISION

Uma das partes mais importantes.

Responsável pelos:

dados e variáveis.


Aqui ficam:

  • layouts;

  • variáveis;

  • tabelas;

  • áreas de memória;

  • copybooks.


SECTIONs mais famosas


FILE SECTION

Layouts de arquivos.


WORKING-STORAGE SECTION

Variáveis internas.


LINKAGE SECTION

Parâmetros recebidos.


Exemplo FILE SECTION

FD ARQCLIENTE.

01 REG-CLIENTE.
   05 NOME PIC X(30).
   05 SALDO PIC 9(9)V99.

O que é FD?

File Description

Define estrutura do arquivo.


Exemplo WORKING-STORAGE

01 WS-TOTAL PIC 9(9)V99.

O prefixo WS significa:

Working Storage.


Exemplo LINKAGE SECTION

01 LK-CLIENTE PIC X(10).

Muito usada em:

  • CALL;

  • subprogramas;

  • CICS.


O que é PIC?

Define formato do campo.


Exemplos

PIC X(20)

Texto.


PIC 9(5)

Número.


4. PROCEDURE DIVISION

Aqui fica:

a lógica do programa.


É o “cérebro” do COBOL.


Contém:

  • IF;

  • PERFORM;

  • READ;

  • WRITE;

  • COMPUTE;

  • loops;

  • processamento.


Exemplo

PROCEDURE DIVISION.

MAIN.
   DISPLAY 'OLA'.
   STOP RUN.

O que são SECTIONs?

SECTIONs são:

subdivisões dentro das DIVISIONs.


Elas organizam ainda mais o programa.


Exemplo

WORKING-STORAGE SECTION.

O que são PARAGRAPHs?

Pequenos blocos de lógica.


Exemplo

CALCULAR-TOTAL.

Hierarquia do COBOL

DIVISION
   ↓
SECTION
   ↓
PARAGRAPH
   ↓
STATEMENTS

Exemplo completo simplificado

IDENTIFICATION DIVISION.
PROGRAM-ID. TESTE.

DATA DIVISION.

WORKING-STORAGE SECTION.
01 WS-NOME PIC X(20).

PROCEDURE DIVISION.

MAIN.
   MOVE 'VAGNER' TO WS-NOME
   DISPLAY WS-NOME
   STOP RUN.

Como isso aparece no batch?

Muito comum:

READ ARQUIVO
 ↓
VALIDAR
 ↓
PROCESSAR
 ↓
WRITE RELATORIO

Tudo dentro da:

PROCEDURE DIVISION.


Como as DIVISIONs ajudam?

Elas tornam o código:

  • organizado;

  • modular;

  • legível;

  • padronizado.


Por que COBOL é tão organizado?

Porque foi criado para:

sistemas corporativos gigantes.


Grandes programas COBOL possuem:

  • milhares de linhas;

  • dezenas de SECTIONs;

  • centenas de PARAGRAPHs.


Curiosidades incríveis

1. O COBOL foi uma das primeiras linguagens extremamente organizadas


2. Muitas linguagens modernas herdaram ideias de modularização do COBOL


3. Sistemas bancários enormes dependem dessa organização


4. Grandes programas COBOL podem ter centenas de SECTIONs


Erros comuns de iniciantes


1. Misturar lógica na DATA DIVISION


2. Criar PROCEDURE DIVISION gigantesca


3. Não modularizar PARAGRAPHs


4. Confundir FILE SECTION com WORKING-STORAGE


Dicas importantes

Organize variáveis claramente


Separe lógica em PARAGRAPHs pequenos


Nomeie SECTIONs corretamente


Mantenha PROCEDURE DIVISION organizada


Como isso aparece no dia a dia?

Praticamente em:

  • COBOL batch;

  • CICS;

  • DB2;

  • sistemas bancários;

  • processamento financeiro.


Resumo rápido

EstruturaFunção
IDENTIFICATION DIVISIONIdentificação
ENVIRONMENT DIVISIONAmbiente/arquivos
DATA DIVISIONVariáveis/layouts
PROCEDURE DIVISIONLógica
SECTIONSubdivisão
PARAGRAPHBloco lógico

Conclusão

As DIVISIONs e SECTIONs são a base estrutural do COBOL.

Elas organizam programas em áreas específicas de identificação, ambiente, dados e lógica, permitindo criar sistemas corporativos extremamente organizados e confiáveis no ambiente mainframe IBM Z.


sábado, 3 de fevereiro de 2007

O que é COBOL?

 

Bellacosa Mainframe apresenta a linguagem de programação COBOL

O que é COBOL?

Quando falamos de:

  • bancos;

  • cartões;

  • folha salarial;

  • seguros;

  • governos;

  • processamento financeiro;

existe uma linguagem que continua sendo uma das mais importantes do mundo:

COBOL.

Mesmo após décadas, ela ainda movimenta:

  • trilhões de dólares;

  • sistemas bancários;

  • pagamentos;

  • processamento batch;

  • grandes empresas globais.


O que significa COBOL?

COBOL significa:

Common Business Oriented Language

Em português:

Linguagem Orientada a Negócios.


Objetivo do COBOL

O COBOL foi criado para:

processamento de negócios corporativos.

Principalmente:

  • registros;

  • arquivos;

  • relatórios;

  • cálculos financeiros;

  • processamento batch.


Origem histórica

COBOL surgiu em:

1959.

Foi criado por um comitê apoiado pelo governo americano e empresas de tecnologia.


Grace Hopper

Uma das figuras históricas mais importantes relacionadas ao COBOL.

Ela ajudou a popularizar:

  • compiladores;

  • linguagens de alto nível;

  • computação corporativa.


Por que COBOL ficou tão famoso?

Porque ele era:

  • legível;

  • organizado;

  • próximo da linguagem humana;

  • excelente para negócios.


Exemplo COBOL

IF SALDO > 0
   DISPLAY 'SALDO POSITIVO'
END-IF

Muito fácil de entender.


O COBOL foi criado para:

  • bancos;

  • contabilidade;

  • folha salarial;

  • faturamento;

  • seguros;

  • processamento financeiro.


Como COBOL funciona no mainframe?

Principalmente em:

processamento batch.


Fluxo clássico COBOL

LER ARQUIVO
 ↓
VALIDAR
 ↓
CALCULAR
 ↓
ATUALIZAR
 ↓
GERAR RELATÓRIO

O COBOL é procedural?

Tradicionalmente:

sim.

Baseado em:

  • procedimentos;

  • fluxo sequencial;

  • processamento estruturado.


Estrutura clássica de um programa COBOL


IDENTIFICATION DIVISION

Informações do programa.


ENVIRONMENT DIVISION

Ambiente e arquivos.


DATA DIVISION

Variáveis e layouts.


PROCEDURE DIVISION

Lógica do programa.


Exemplo simples

IDENTIFICATION DIVISION.
PROGRAM-ID. TESTE.

PROCEDURE DIVISION.
    DISPLAY 'OLA MUNDO'.
    STOP RUN.

O que é DISPLAY?

Comando usado para:

mostrar mensagens.


O que é MOVE?

Mover valores.


Exemplo

MOVE 100 TO SALDO

O que é PERFORM?

Executar rotinas.


Exemplo

PERFORM CALCULAR

O que é READ?

Ler arquivos.


O que é WRITE?

Gravar registros.


O que é COMPUTE?

Realizar cálculos.


COBOL trabalha muito com arquivos

Principalmente:

  • QSAM;

  • VSAM;

  • datasets sequenciais.


COBOL e DB2

Muito usados juntos.


Exemplo SQL em COBOL

EXEC SQL
   SELECT NOME
   INTO :WS-NOME
   FROM CLIENTES
END-EXEC

COBOL e CICS

Usado para aplicações online.

Exemplo:

  • caixas eletrônicos;

  • consultas bancárias;

  • sistemas transacionais.


COBOL batch

Executado via:

  • JCL;

  • JES2;

  • scheduler.


Exemplo batch

//STEP1 EXEC PGM=COBPGM

O que é compilação COBOL?

Transformar código-fonte em:

executável.


Fluxo simplificado

COBOL SOURCE
   ↓
COMPILADOR
   ↓
LOAD MODULE
   ↓
EXECUÇÃO

O que é copybook?

Arquivo reutilizável com layouts.


Exemplo

01 CLIENTE.
   05 NOME PIC X(30).
   05 SALDO PIC 9(9)V99.

O que é PIC?

Define formato do campo.


Exemplo

PIC X(10)

Texto.


PIC 9(5)

Numérico.


O que é COMP-3?

Formato compactado numérico.

Muito usado em:

processamento financeiro.


O COBOL ainda é usado?

Muito.

Especialmente em:

  • bancos;

  • seguradoras;

  • governos;

  • cartões;

  • sistemas críticos.


Por que COBOL ainda existe?

Porque ele é:

  • extremamente confiável;

  • estável;

  • rápido;

  • eficiente para batch.


Quantidade de código COBOL no mundo

Estima-se:

bilhões de linhas.


COBOL moderno

Hoje existe:

  • COBOL orientado a objetos;

  • APIs REST;

  • integração cloud;

  • DevOps;

  • OpenShift;

  • z/OS Connect.


COBOL não é “morto”

Na verdade:

continua extremamente relevante.


Vantagens do COBOL


Excelente para negócios


Muito estável


Ótimo para batch


Fácil leitura


Alta confiabilidade


Excelente performance em mainframe


Desvantagens


Sintaxe extensa


Curva inicial diferente


Menos popular fora do corporativo


Sistemas antigos podem ser complexos


Curiosidades incríveis

1. Grande parte das transações bancárias do mundo passa por COBOL


2. Muitos sistemas COBOL possuem mais de 40 anos


3. O COBOL sobreviveu a diversas gerações tecnológicas


4. Mainframes executam bilhões de linhas COBOL diariamente


Erros comuns de iniciantes


1. Achar que COBOL morreu


2. Confundir COBOL com linguagem “lenta”


3. Ignorar batch e arquivos


4. Não entender lógica procedural


Como COBOL aparece no dia a dia?

Praticamente em:

  • PIX;

  • cartões;

  • bancos;

  • folha salarial;

  • faturamento;

  • seguros;

  • governo.


Exemplo simplificado real

LER CLIENTE
 ↓
VALIDAR CPF
 ↓
CALCULAR LIMITE
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO

Resumo rápido

ConceitoSignificado
COBOLLinguagem de negócios
BatchProcessamento em lote
CICSProcessamento online
DB2Banco de dados
JCLExecução batch
COPYBOOKLayout reutilizável
COMP-3Formato numérico

Conclusão

COBOL é uma das linguagens mais importantes da história da computação corporativa.

Criado para processamento de negócios, ele continua sendo fundamental no ambiente mainframe IBM Z, executando sistemas críticos de bancos, governos e grandes empresas em todo o mundo.


sexta-feira, 2 de fevereiro de 2007

O que é Paradigma de Programação Procedural Estruturado?

 

Bellacosa Mainframe e o paradigma de programacao procedural estruturado

O que é Paradigma de Programação Procedural Estruturado?

Quando estudamos:

  • COBOL;

  • C;

  • PL/I;

  • programação batch;

  • desenvolvimento no mainframe;

um conceito muito importante aparece:

programação procedural estruturada.

Ela foi uma enorme evolução na história da computação corporativa.


Primeiro: o que significa “procedural”?

Programação procedural é:

organizar programas em procedimentos e rotinas.

Exemplo:

VALIDAR
CALCULAR
GERAR-RELATORIO

Cada parte executa:

uma tarefa específica.


Então o que significa “estruturada”?

Estruturada significa:

organizar o código de forma clara, previsível e controlada.

Ela evita:

  • confusão;

  • desvios excessivos;

  • código caótico;

  • spaghetti code.


Definição simples

Programação procedural estruturada é:

um paradigma procedural que usa estruturas organizadas de fluxo e modularização.

Ela busca:

  • clareza;

  • manutenção;

  • organização;

  • legibilidade.


Analogia simples

Imagine uma cidade.


Código não estruturado

Ruas sem organização.
Tudo confuso.


Código estruturado

Cidade organizada:

  • avenidas;

  • sinais;

  • setores;

  • fluxo lógico.


Origem histórica

Nos primeiros sistemas:

  • Assembly;

  • COBOL antigo;

  • FORTRAN antigo;

era comum usar muitos:

GO TO

Isso criava programas extremamente difíceis de manter.


Então surgiu a programação estruturada

Com conceitos como:

  • blocos;

  • procedimentos;

  • loops;

  • IF;

  • modularização.


Objetivo principal

Eliminar:

spaghetti code.


O que é spaghetti code?

Código cheio de:

  • desvios;

  • GO TO;

  • saltos;

  • fluxo confuso.

Parecendo:

um prato de espaguete.


Exemplo não estruturado

GO TO A100
GO TO B200
GO TO C300

Fluxo difícil de entender.


Exemplo estruturado

IF SALDO > 0
   PERFORM PROCESSA
ELSE
   PERFORM ERRO
END-IF

Muito mais organizado.


Estruturas fundamentais da programação estruturada


Sequência

Execução linear.


Decisão

Escolha de caminhos.


Repetição

Loops controlados.


Fluxo estruturado clássico

INICIO
 ↓
LER DADOS
 ↓
VALIDAR
 ↓
PROCESSAR
 ↓
GERAR SAÍDA
 ↓
FIM

Como isso aparece no COBOL?

Muito fortemente.


Exemplo COBOL estruturado

PERFORM UNTIL EOF = 'S'

   READ CLIENTE
      AT END
         MOVE 'S' TO EOF
      NOT AT END
         PERFORM PROCESSA-CLIENTE
   END-READ

END-PERFORM

Isso é estruturado porque:

  • possui fluxo claro;

  • evita GO TO;

  • usa blocos organizados.


O que é modularização?

Dividir programa em partes menores.


Exemplo

VALIDAR-CLIENTE
CALCULAR-JUROS
GERAR-RELATORIO

Benefícios

  • manutenção;

  • reutilização;

  • clareza;

  • testes mais fáceis.


O que é bloco estruturado?

Código delimitado logicamente.


Exemplos COBOL

IF / END-IF
EVALUATE
PERFORM UNTIL

Antes da programação estruturada

Muito código tinha:

GO TO

em excesso.


Problema disso

Fluxo imprevisível.


Programação estruturada ajudou a:

  • reduzir bugs;

  • melhorar manutenção;

  • aumentar confiabilidade.


O COBOL moderno é estruturado?

Sim.

Principalmente usando:

  • END-IF;

  • EVALUATE;

  • PERFORM;

  • inline PERFORM.


Exemplo batch estruturado

LER ARQUIVO
 ↓
VALIDAR
 ↓
CALCULAR
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO

Como isso ajuda no mainframe?

Mainframes processam:

  • milhões;

  • bilhões de registros.

Precisam de:

  • estabilidade;

  • clareza;

  • manutenção segura.


Programação estruturada trouxe exatamente isso


Características da programação procedural estruturada


Fluxo previsível


Menos GO TO


Uso de procedimentos


Modularização


Blocos organizados


Facilidade manutenção


Legibilidade


Vantagens


Código mais limpo


Mais fácil de entender


Menos erros


Melhor debugging


Excelente para batch


Muito usada em COBOL


Desvantagens


Sistemas gigantes ainda podem ficar complexos


Exige disciplina de programação


Modularização ruim pode dificultar manutenção


Procedural estruturado vs procedural antigo


Antigo

Muito:

GO TO

Estruturado

Mais:

IF
PERFORM
EVALUATE

Procedural estruturado vs orientação a objetos


Estruturado

Organiza:

procedimentos.


OO

Organiza:

objetos/classes.


Curiosidades incríveis

1. A programação estruturada revolucionou o desenvolvimento corporativo


2. Grande parte do COBOL moderno segue princípios estruturados


3. Muitos sistemas bancários antigos passaram por “reestruturação” para remover GO TO


4. Estruturação ajudou muito na manutenção de sistemas gigantes


Erros comuns de iniciantes


1. Usar GO TO demais


2. Criar procedimentos enormes


3. Misturar lógica demais


4. Não modularizar


Dicas importantes

Use:

  • PERFORM;

  • IF;

  • EVALUATE.


Evite GO TO excessivo


Divida lógica em pequenas rotinas


Organize fluxo claramente


Como isso aparece no dia a dia?

Praticamente em:

  • COBOL;

  • batch;

  • DB2 procedural;

  • faturamento;

  • bancos;

  • folha salarial.


Exemplo simplificado completo

MAIN
 ↓
LER CLIENTES
 ↓
VALIDAR
 ↓
CALCULAR
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO
 ↓
FIM

Resumo rápido

ConceitoSignificado
ProceduralBaseado em procedimentos
EstruturadoFluxo organizado
ModularizaçãoDividir programa
PERFORMExecuta rotina
IFDecisão
GO TODesvio fluxo
Spaghetti CodeCódigo confuso

Conclusão

O paradigma de programação procedural estruturado organiza programas em procedimentos claros e fluxos previsíveis, reduzindo complexidade e facilitando manutenção.

Ele é a base do COBOL moderno e do processamento batch corporativo no ambiente mainframe IBM Z.


quinta-feira, 1 de fevereiro de 2007

O que é Paradigma de Programação Procedural?

 

Bellacosa Mainframe e o paradigma de programação procedural

O que é Paradigma de Programação Procedural?

Quando estudamos:

  • COBOL;

  • C;

  • PL/I;

  • Assembler;

  • programação no mainframe;

um dos conceitos mais importantes é o:

paradigma procedural.

Ele dominou o desenvolvimento corporativo durante décadas e ainda hoje é extremamente utilizado no ambiente:

z/OS IBM Z.


Primeiro: o que é paradigma?

Paradigma é:

um modelo ou estilo de programação.

Ele define:

  • como o programa será organizado;

  • como a lógica será construída;

  • como o fluxo será executado.


O que significa “procedural”?

Procedural vem de:

procedimentos.

Ou seja:
o programa é dividido em:

  • rotinas;

  • módulos;

  • procedimentos;

  • etapas organizadas.


Definição simples

Programação procedural é:

um paradigma baseado em procedimentos que executam tarefas passo a passo.

O programa normalmente:

  • segue sequência;

  • manipula variáveis;

  • altera estados;

  • executa rotinas.


Analogia simples

Imagine uma empresa.

Cada setor possui um procedimento:

  • financeiro;

  • RH;

  • cobrança;

  • estoque.

Cada procedimento executa:

uma tarefa específica.

O paradigma procedural funciona assim.


Relação com paradigma imperativo

O procedural é:

um tipo de programação imperativa.

Porque ele também diz:

como fazer as tarefas.


O que muda?

No procedural:

o código é organizado em procedimentos.


Exemplo simples

INICIO
   VALIDAR CLIENTE
   CALCULAR SALDO
   GERAR RELATORIO
FIM

Cada etapa é um:

procedimento.


Como isso aparece no COBOL?

Muito fortemente.


Exemplo COBOL procedural

PROCEDURE DIVISION.

MAIN-PROCESS.
    PERFORM VALIDAR-CLIENTE
    PERFORM CALCULAR-SALDO
    PERFORM GERAR-RELATORIO
    STOP RUN.

O que é PERFORM?

Comando COBOL usado para:

executar procedimentos.


Exemplo dos procedimentos

VALIDAR-CLIENTE.
    DISPLAY 'VALIDANDO'.

CALCULAR-SALDO.
    DISPLAY 'CALCULANDO'.

GERAR-RELATORIO.
    DISPLAY 'GERANDO'.

Isso é programação procedural

O sistema:

  • chama procedimentos;

  • executa etapas;

  • controla fluxo.


Estrutura clássica procedural

ENTRADA
 ↓
VALIDAÇÃO
 ↓
PROCESSAMENTO
 ↓
ATUALIZAÇÃO
 ↓
RELATÓRIO
 ↓
FIM

Características do paradigma procedural


Código dividido em procedimentos


Fluxo sequencial


Uso intenso de variáveis


Alteração de estado


Reutilização de rotinas


Forte controle do fluxo


Como procedural aparece no mainframe?

Praticamente em tudo:

  • COBOL batch;

  • utilitários;

  • JCL procedural;

  • automações;

  • sistemas financeiros.


O COBOL é procedural?

Tradicionalmente:

sim.

Especialmente:

  • COBOL batch clássico;

  • sistemas legados.


Por que procedural fez tanto sucesso no mainframe?

Porque funciona muito bem para:

  • processamento batch;

  • regras de negócio;

  • arquivos sequenciais;

  • grandes volumes de dados.


Exemplo real batch procedural

LER ARQUIVO
 ↓
VALIDAR REGISTRO
 ↓
CALCULAR VALOR
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO

O que é modularização?

Dividir programa em partes menores.


Exemplo

ROTINA-LEITURA
ROTINA-CALCULO
ROTINA-IMPRESSAO

Isso facilita:

  • manutenção;

  • testes;

  • reutilização;

  • organização.


O que é subprograma?

Programa chamado por outro programa.

Muito comum em COBOL.


Exemplo

CALL 'CALCSAL'

O que é parâmetro?

Informação enviada para procedimento/subprograma.


Exemplo

CALL 'CALCSAL' USING SALARIO

Procedural vs Orientado a Objetos


Procedural

Organiza:

procedimentos.


Orientado a Objetos

Organiza:

objetos/classes.


Procedural vs Declarativo


Procedural

Diz:

como executar.


Declarativo

Diz:

o que deseja obter.


Exemplo SQL

SELECT NOME
FROM CLIENTES

Mais declarativo.


Exemplo procedural equivalente

LER CLIENTE
SE NOME EXISTE
   MOSTRAR

Vantagens do paradigma procedural


Fácil entender fluxo


Excelente para batch


Ótimo desempenho


Muito eficiente em mainframe


Bom para regras de negócio


Muito estável


Desvantagens


Sistemas grandes ficam complexos


Muito acoplamento


Código repetitivo


Difícil manutenção em programas enormes


GO TO excessivo gera spaghetti code


O que é spaghetti code?

Código confuso cheio de desvios.

Muito famoso em sistemas antigos COBOL.


Curiosidades incríveis

1. Grande parte do sistema bancário mundial ainda usa lógica procedural


2. Muitos programas COBOL possuem décadas de evolução procedural


3. Procedural dominou a computação corporativa por muitos anos


4. O COBOL procedural continua extremamente relevante


Erros comuns de iniciantes


1. Criar procedimentos gigantes


2. Não modularizar


3. Usar GO TO demais


4. Misturar lógica demais em uma única rotina


Dicas importantes

Divida programas em pequenas rotinas


Use PERFORM corretamente


Nomeie procedimentos claramente


Organize fluxo do programa


Como isso aparece no dia a dia?

Praticamente em:

  • COBOL;

  • batch;

  • DB2 procedural;

  • processamento financeiro;

  • faturamento;

  • folha salarial.


Exemplo simplificado completo

MAIN
 ↓
LER CLIENTES
 ↓
VALIDAR DADOS
 ↓
CALCULAR JUROS
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO
 ↓
FIM

Resumo rápido

ConceitoSignificado
ProceduralBaseado em procedimentos
PERFORMExecuta rotina COBOL
CALLChama subprograma
ModularizaçãoDividir programa
FluxoOrdem execução
COBOLPrincipal exemplo procedural

Conclusão

O paradigma procedural é um dos modelos mais importantes da programação tradicional no ambiente mainframe IBM Z.

Ele organiza programas em procedimentos e rotinas reutilizáveis, permitindo criar sistemas batch eficientes, estáveis e capazes de processar enormes volumes de dados no z/OS.


quarta-feira, 31 de janeiro de 2007

O que é Paradigma de Programação Imperativo?

 

Bellacosa Mainframe e o paradigma de programação imperativo

O que é Paradigma de Programação Imperativo?

Quando começamos a estudar:

  • COBOL;

  • Assembler;

  • C;

  • JCL;

  • programação mainframe;

encontramos um conceito muito importante chamado:

paradigma de programação.

E um dos paradigmas mais famosos da computação é o:

paradigma imperativo.


O que significa “paradigma”?

Paradigma é:

um modelo ou estilo de programação.

Ou seja:
é a forma como organizamos a lógica do programa.


Definição simples

Programação imperativa é:

dizer ao computador exatamente o que fazer, passo a passo.

O programa descreve:

  • sequência;

  • comandos;

  • mudanças de estado;

  • fluxo de execução.


Analogia simples

Imagine ensinar alguém a fazer um bolo.

Você diz:

1. Pegue farinha
2. Misture ovos
3. Ligue o forno
4. Coloque a massa
5. Asse por 40 minutos

Isso é:

programação imperativa.

Você descreve:

cada passo da execução.


Por que “imperativo”?

Porque o programa usa:

comandos e instruções.

Ou seja:
ele “ordena” o que o computador deve fazer.


Como isso aparece no mainframe?

O mainframe tradicional é fortemente baseado em:

paradigma imperativo.

Principalmente em:

  • COBOL;

  • Assembler;

  • PL/I;

  • JCL procedural.


Exemplo simples em pseudocódigo

LER SALARIO
SE SALARIO > 5000
   CALCULAR IMPOSTO
SENAO
   MOSTRAR ISENTO

O programa controla:

  • ordem;

  • variáveis;

  • decisões;

  • fluxo.


Exemplo COBOL

IF SALARIO > 5000
   COMPUTE IMPOSTO = SALARIO * 0.15
ELSE
   DISPLAY 'ISENTO'
END-IF

Isso é imperativo porque:

o programador define:

exatamente como o processamento acontece.


Características do paradigma imperativo


Sequência de comandos


Alteração de variáveis


Controle de fluxo


Uso de IF e LOOP


Estado do programa muda durante execução


O que é “estado”?

Valores atuais do programa.

Exemplo:

SALDO = 100

Depois:

SALDO = 200

O estado mudou.


Estruturas clássicas do imperativo


IF

Decisão.


PERFORM

Repetição COBOL.


GO TO

Desvio fluxo.


MOVE

Movimentação dados.


COMPUTE

Cálculo.


Exemplo COBOL batch

READ CLIENTE
IF SALDO > 0
   WRITE RELATORIO
END-IF

Fluxo típico imperativo

INICIO
 ↓
LER DADOS
 ↓
PROCESSAR
 ↓
ATUALIZAR
 ↓
GERAR SAÍDA
 ↓
FIM

Por que o paradigma imperativo domina no mainframe?

Porque ele funciona muito bem para:

  • processamento batch;

  • regras de negócio;

  • arquivos sequenciais;

  • grande volume de dados.


O COBOL é imperativo?

Sim.

Principalmente:

COBOL procedural clássico.


O Assembler é imperativo?

Totalmente.

Assembler é um dos exemplos mais “puros” de paradigma imperativo.


O JCL é imperativo?

Parcialmente.

Porque ele descreve:

sequência operacional.


Paradigma imperativo vs declarativo


Imperativo

Diz:

COMO fazer.


Declarativo

Diz:

O QUE deseja obter.


Exemplo SQL

SELECT NOME
FROM CLIENTES
WHERE SALDO > 1000

Isso é mais:

declarativo.


Porque o SQL não explica:

  • loops;

  • leitura;

  • memória;

  • fluxo detalhado.


Exemplo imperativo equivalente

LER CLIENTE
SE SALDO > 1000
   MOSTRAR NOME
LER PRÓXIMO

Paradigma imperativo em batch

Muito comum em:

  • COBOL;

  • SORT;

  • processamento sequencial.


Exemplo clássico batch

LER REGISTRO
VALIDAR
CALCULAR
GRAVAR
LER PRÓXIMO

Isso é extremamente comum no z/OS


O que é programação procedural?

Subtipo muito ligado ao paradigma imperativo.

Usa:

  • procedimentos;

  • rotinas;

  • subprogramas.


COBOL clássico é procedural


Vantagens do paradigma imperativo


Fácil entender fluxo


Controle detalhado


Excelente para batch


Ótimo desempenho


Muito eficiente em processamento massivo


Desvantagens


Pode ficar complexo


Muito código repetitivo


GO TO excessivo vira “spaghetti code”


Difícil manutenção em sistemas enormes


O que é spaghetti code?

Código confuso cheio de desvios.

Muito comum em sistemas antigos.


Curiosidades incríveis

1. Grande parte do sistema financeiro mundial roda lógica imperativa


2. COBOL foi criado pensando em processamento procedural


3. Mainframes executam bilhões de instruções imperativas diariamente


4. Muitos sistemas críticos possuem décadas de evolução imperativa


Erros comuns de iniciantes


1. Confundir paradigma com linguagem

Paradigma:
modelo lógico.

Linguagem:
ferramenta.


2. Usar GO TO demais


3. Não controlar estado das variáveis


4. Criar lógica procedural confusa


Como isso aparece no dia a dia?

Praticamente em:

  • COBOL;

  • batch;

  • JCL;

  • DB2 procedural;

  • CICS;

  • automação.


Exemplo real simplificado

LER CONTA
 ↓
VALIDAR
 ↓
CALCULAR JUROS
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO

Resumo rápido

ConceitoSignificado
ParadigmaEstilo de programação
ImperativoDiz como fazer
EstadoValores atuais
ProceduralBaseado em procedimentos
FluxoOrdem da execução
COBOLPrincipal exemplo no mainframe

Conclusão

O paradigma imperativo é um dos modelos mais importantes da computação e domina grande parte do desenvolvimento tradicional em mainframe IBM Z.

Ele organiza programas através de comandos sequenciais, decisões e alterações de estado, sendo a base do COBOL, Assembler e do processamento batch no z/OS.


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.

segunda-feira, 29 de janeiro de 2007

Como Funciona um JOB Batch no Mainframe

 

Bellacosa Mainframe explica como funciona um job no processo batch

Como Funciona um JOB Batch no Mainframe

Quando falamos de:

  • bancos;

  • cartões;

  • PIX;

  • folha salarial;

  • faturamento;

  • processamento noturno;

quase tudo gira em torno de:

JOBs batch.

O processamento batch é um dos pilares do ambiente mainframe IBM Z.

E para organizar milhares de JOBs automaticamente, existem ferramentas chamadas:

schedulers.


O que é um JOB batch?

JOB batch é:

um processamento automático executado sem interação do usuário.

Ele normalmente:

  • lê arquivos;

  • processa dados;

  • atualiza bancos;

  • gera relatórios;

  • integra sistemas.


Analogia simples

Imagine uma fábrica funcionando durante a madrugada.

Existem:

  • centenas de tarefas;

  • ordem correta;

  • dependências;

  • horários;

  • prioridade.

O scheduler funciona como:

o gerente da fábrica.


Fluxo simples de um JOB batch

Scheduler
   ↓
JES2
   ↓
Fila batch
   ↓
Initiator
   ↓
Execução
   ↓
Spool
   ↓
SDSF

O que o JOB batch pode executar?

  • COBOL;

  • SORT;

  • DB2;

  • IDCAMS;

  • FTP;

  • APIs;

  • backups;

  • integrações.


O que é scheduler?

Scheduler é:

ferramenta de automação batch.

Ela:

  • agenda;

  • controla;

  • monitora;

  • encadeia JOBs.


Por que schedulers existem?

Imagine executar manualmente:

  • 20 mil JOBs por noite.

Seria impossível.

Então surgiram ferramentas de automação batch.


O que é scheduling?

Scheduling significa:

gerenciamento de execução batch.


O scheduler controla:

  • horários;

  • dependências;

  • prioridade;

  • falhas;

  • calendário;

  • SLA;

  • rerun;

  • alertas.


Exemplo real

JOB A termina
   ↓
JOB B inicia
   ↓
DB2 atualiza
   ↓
Relatório gerado

Tudo automático.


Principais schedulers do mainframe


IBM IWS

Antigo:

OPC/TWS

Hoje:

IBM Workload Scheduler.


Control-M

Muito popular em ambientes distribuídos e mainframe.


OpCon

Scheduler moderno multiplataforma.


CA-7

Scheduler clássico do mainframe.


AutoSys

Muito usado em ambientes híbridos.


ESP

Scheduler corporativo avançado.


O que é IBM IWS?

IWS significa:

IBM Workload Scheduler


Antigos nomes históricos

OPC
 ↓
TWS
 ↓
IWS

O IWS é extremamente famoso no z/OS

Muito usado em:

  • bancos;

  • seguradoras;

  • governos.


O que o IWS faz?

Ele:

  • agenda JOBs;

  • controla dependências;

  • monitora batch;

  • gerencia workload.


O que é aplicação no IWS?

Conjunto lógico de JOBs.


Exemplo

Aplicação:

FOLHA_PAGAMENTO

Contém:

  • extração;

  • cálculo;

  • DB2;

  • relatório;

  • envio.


O que é predecessor?

JOB anterior obrigatório.


Exemplo

JOBB só executa após JOBA

O que é successor?

JOB seguinte dependente.


O que é job stream?

Fluxo encadeado de JOBs.


Exemplo visual

EXTRACAO
   ↓
SORT
   ↓
COBOL
   ↓
DB2
   ↓
RELATORIO

O que é calendário batch?

Define:

  • dias úteis;

  • feriados;

  • fechamento mensal;

  • execução especial.


O que é SLA?

Service Level Agreement

Tempo esperado de conclusão.


O scheduler monitora SLA

Se atrasar:

  • gera alerta;

  • envia notificação;

  • abre incidente.


O que é rerun?

Reexecutar JOB.


Muito usado após falhas


O que é restart?

Reiniciar JOB em STEP específico.


Exemplo

RESTART=STEP3

Isso evita rerun completo


Como Control-M funciona?

Muito parecido com IWS.

Mas famoso pela integração:

  • Linux;

  • Windows;

  • cloud;

  • APIs;

  • mainframe.


O Control-M possui interface gráfica forte

Muito usado por:

  • DevOps;

  • operações híbridas.


O que o scheduler monitora?

  • RC;

  • ABEND;

  • spool;

  • tempo;

  • CPU;

  • dependências.


O que acontece se JOB falhar?

Scheduler pode:

  • parar fluxo;

  • executar contingência;

  • chamar rerun;

  • enviar alerta.


Exemplo real

S0C7 detectado
   ↓
JOB sucessor bloqueado
   ↓
Alerta enviado

O que é batch window?

Janela batch.

Período destinado ao processamento.

Exemplo:

00:00 até 06:00

O que é critical path?

Fluxo crítico do batch.

Se atrasar:

  • impacta negócio;

  • relatórios;

  • PIX;

  • fechamento bancário.


O que é workload automation?

Automação inteligente de workload.


O scheduler conversa com:

  • JES2;

  • SDSF;

  • DB2;

  • CICS;

  • FTP;

  • cloud;

  • APIs.


Como operadores usam scheduler?

Para:

  • monitorar produção;

  • resolver falhas;

  • rerun;

  • acompanhar SLA.


Como programadores usam scheduler?

Para:

  • automatizar processos;

  • integrar aplicações;

  • encadear JOBs.


Curiosidades incríveis

1. Grandes bancos executam milhões de JOBs diariamente


2. Alguns batchs noturnos duram poucas horas mas processam bilhões de registros


3. O scheduler é considerado o “cérebro” da produção batch


4. Muitas empresas possuem operação 24x7 baseada em schedulers


Erros comuns de iniciantes


1. Confundir JES2 com scheduler

JES2:
executa/controla JOB.

Scheduler:
organiza automação batch.


2. Ignorar dependências

Pode quebrar fluxo inteiro.


3. Fazer rerun incorreto

Pode duplicar processamento.


4. Não monitorar SLA

Impacta negócio.


Dicas importantes

Aprenda:

  • predecessor;

  • successor;

  • rerun;

  • restart.


Entenda critical path


Leia spool e RC


Aprenda JES2 e SDSF junto com scheduler


Como isso aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • PIX;

  • cartões;

  • faturamento;

  • folha salarial;

  • cloud híbrida.


Resumo rápido

ConceitoSignificado
SchedulerAutomação batch
IWSIBM Workload Scheduler
Control-MScheduler corporativo
PredecessorJOB anterior
SuccessorJOB seguinte
RerunReexecutar JOB
RestartReiniciar STEP

Conclusão

O processamento batch é um dos pilares do ambiente mainframe IBM Z.

Ferramentas como IWS, Control-M, CA-7 e outros schedulers permitem automatizar milhares de JOBs diariamente, controlando dependências, prioridades, falhas e SLA de forma extremamente eficiente e confiável.