Translate

Mostrar mensagens com a etiqueta leitura arquivos COBOL. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta leitura arquivos COBOL. 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.