Translate

Mostrar mensagens com a etiqueta FILE SECTION. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta FILE SECTION. Mostrar todas as mensagens

quinta-feira, 8 de fevereiro de 2007

Leitura de Dataset no COBOL

Bellacosa Mainframe e a leitura de dados de um dataset cobol


Leitura de Dataset no COBOL

Uma das funções mais importantes do COBOL no mainframe é:

processamento de arquivos.

Grande parte dos sistemas batch trabalha lendo:

  • datasets sequenciais;

  • VSAM;

  • arquivos financeiros;

  • relatórios;

  • cargas;

  • integrações.

Por isso, entender:

  • ENVIRONMENT DIVISION;

  • DATA DIVISION;

  • FILE SECTION;

  • FILE STATUS;

  • layouts;

  • associação com JCL;

é fundamental no ambiente:

IBM Z / zOS.


Fluxo geral da leitura de arquivos

JCL
 ↓
DDNAME
 ↓
ENVIRONMENT DIVISION
 ↓
SELECT / ASSIGN
 ↓
FILE SECTION
 ↓
FD
 ↓
READ
 ↓
PROCESSAMENTO

Onde o arquivo é definido no COBOL?

Principalmente em:

  • ENVIRONMENT DIVISION;

  • DATA DIVISION.


ENVIRONMENT DIVISION

Responsável por:

ambiente e associação dos arquivos.


Estrutura clássica

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

O que é FILE-CONTROL?

Área onde o COBOL:

associa arquivos lógicos ao JCL.


Exemplo

SELECT ARQCLIENTE
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL.

Explicando

ElementoFunção
ARQCLIENTENome lógico COBOL
CLIENTEDDNAME do JCL
SEQUENTIALOrganização arquivo

O que é ASSIGN?

Faz ligação entre:

  • COBOL;

  • JCL.


Relação COBOL ↔ JCL

COBOL: ASSIGN TO CLIENTE
            ↓
JCL: //CLIENTE DD DSN=...

Exemplo completo no JCL

//STEP1 EXEC PGM=COBPGM

//CLIENTE DD DSN=EMPRESA.CLIENTES,
//            DISP=SHR

Como COBOL encontra o dataset?

Pelo:

DDNAME.


DATA DIVISION

Responsável pelos:

dados e layouts.


Estrutura típica

DATA DIVISION.

FILE SECTION.

O que é FILE SECTION?

Define:

layout do arquivo.


Exemplo

FD ARQCLIENTE.

01 REG-CLIENTE.
   05 CLI-ID       PIC 9(5).
   05 CLI-NOME     PIC X(30).
   05 CLI-SALDO    PIC 9(7)V99.

O que é FD?

File Description

Define:

  • características;

  • layout;

  • estrutura registro.


O que é REG-CLIENTE?

Área memória usada no:

READ.


Fluxo do READ

READ ARQCLIENTE
      ↓
registro carregado
      ↓
REG-CLIENTE preenchido

Exemplo simples de leitura

READ ARQCLIENTE

Leitura completa correta

READ ARQCLIENTE
   AT END
      MOVE 'S' TO EOF
END-READ

O que é EOF?

End Of File

Fim arquivo.


Controle clássico batch

PERFORM UNTIL EOF = 'S'

   READ ARQCLIENTE
      AT END
         MOVE 'S' TO EOF

      NOT AT END
         PERFORM PROCESSA

   END-READ

END-PERFORM

O que é FILE STATUS?

Código retorno da operação arquivo.

Muito importante no COBOL.


Definição FILE STATUS

Fica na:

WORKING-STORAGE.


Exemplo

01 WS-FS-CLIENTE PIC XX.

Associando FILE STATUS

SELECT ARQCLIENTE
ASSIGN TO CLIENTE
FILE STATUS IS WS-FS-CLIENTE.

O que ele faz?

Após:

  • OPEN;

  • READ;

  • WRITE;

  • CLOSE;

o COBOL grava:

status da operação.


Exemplo status comuns

StatusSignificado
00OK
10EOF
35Arquivo inexistente
39Layout incompatível
92Erro lógico
93Arquivo não aberto

Exemplo validação

IF WS-FS-CLIENTE NOT = '00'
   DISPLAY 'ERRO ARQUIVO'
END-IF

O que é OPEN?

Abre arquivo.


Exemplos

OPEN INPUT ARQCLIENTE

Leitura.


OPEN OUTPUT ARQREL

Saída.


OPEN I-O ARQVSAM

Leitura e gravação.


O que é CLOSE?

Fecha arquivo.


Exemplo

CLOSE ARQCLIENTE

Tipos comuns de arquivos COBOL


Sequential

Sequencial.


Indexed

VSAM KSDS.


Relative

Acesso relativo.


Line Sequential

Texto.


Organização do arquivo

ORGANIZATION IS SEQUENTIAL

Acesso

ACCESS MODE IS SEQUENTIAL

Exemplo completo

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT ARQCLIENTE
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WS-FS.

DATA DIVISION.

FILE SECTION.

FD ARQCLIENTE.

01 REG-CLIENTE.
   05 CLI-ID     PIC 9(5).
   05 CLI-NOME   PIC X(30).

WORKING-STORAGE SECTION.

01 WS-FS         PIC XX.
01 EOF           PIC X VALUE 'N'.

PROCEDURE DIVISION.

MAIN.

   OPEN INPUT ARQCLIENTE

   PERFORM UNTIL EOF = 'S'

      READ ARQCLIENTE
         AT END
            MOVE 'S' TO EOF

         NOT AT END
            DISPLAY CLI-NOME

      END-READ

   END-PERFORM

   CLOSE ARQCLIENTE

   STOP RUN.

O que é layout?

Estrutura do registro.


Exemplo

12345JOAO SILVA                 0001500

Layout correspondente

05 ID     PIC 9(5).
05 NOME   PIC X(30).
05 SALDO  PIC 9(7).

O que acontece se layout estiver errado?

Pode causar:

  • lixo dados;

  • truncamento;

  • ABEND;

  • S0C7.


COBOL e JCL trabalham juntos


JCL

Entrega dataset.


COBOL

Processa dataset.


Fluxo real

Dataset
 ↓
JCL DD
 ↓
ASSIGN
 ↓
READ
 ↓
REGISTRO MEMÓRIA
 ↓
PROCESSAMENTO

O que é DISP=SHR?

Compartilhado.


O que é DISP=OLD?

Uso exclusivo.


Como isso aparece no batch?

Praticamente em:

  • bancos;

  • folha salarial;

  • PIX;

  • cartões;

  • faturamento.


Curiosidades incríveis

1. Muitos batchs processam bilhões de registros COBOL diariamente


2. FILE STATUS evita muitos ABENDs


3. Grande parte do mundo financeiro ainda depende fortemente de arquivos sequenciais


4. JCL + COBOL é uma das integrações mais clássicas do mainframe


Erros comuns de iniciantes


1. Esquecer OPEN


2. Não tratar FILE STATUS


3. Layout incompatível


4. DDNAME diferente do ASSIGN


5. Não controlar EOF


Dicas importantes

Sempre trate FILE STATUS


Controle EOF corretamente


Valide layouts


Nomeie DDNAME claramente


Resumo rápido

ElementoFunção
SELECTDefine arquivo lógico
ASSIGNLiga ao JCL
FDDefine layout
READLê registro
FILE STATUSRetorno operação
OPENAbre arquivo
CLOSEFecha arquivo
EOFFim arquivo

Conclusão

A leitura de arquivos é uma das bases do COBOL batch no ambiente mainframe IBM Z.

ENVIRONMENT DIVISION, DATA DIVISION, FILE SECTION, FILE STATUS e integração com JCL permitem processar grandes volumes de dados com segurança, organização e alta confiabilidade no z/OS. 

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.