Translate

segunda-feira, 12 de fevereiro de 2007

Comandos COBOL para Manipulação de Arquivos: ACCESS MODE, FILE-CONTROL, FILE STATUS, OPEN, READ, START, WRITE, REWRITE, DELETE e CLOSE

Bellacosa Mainframe e comandos de mainupalação de datasets em Mainframe



Comandos COBOL para Manipulação de Arquivos: ACCESS MODE, FILE-CONTROL, FILE STATUS, OPEN, READ, START, WRITE, REWRITE, DELETE e CLOSE

Quando um programa COBOL trabalha com arquivos QSAM ou VSAM, existe um conjunto de comandos fundamentais que controlam toda a entrada, saída e atualização dos dados.

Esses comandos aparecem diariamente em sistemas:

  • bancários;

  • seguradoras;

  • cartões;

  • governo;

  • ERP;

  • processamento batch.


Visão Geral

FILE-CONTROL
     ↓
OPEN
     ↓
READ / START
     ↓
WRITE / REWRITE / DELETE
     ↓
CLOSE

FILE-CONTROL

Fica na:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.

Responsável por:

  • associar arquivos;

  • definir organização;

  • definir acesso;

  • definir FILE STATUS.


Exemplo

SELECT ARQCLIENTE
       ASSIGN TO CLIENTE
       ORGANIZATION IS INDEXED
       ACCESS MODE IS DYNAMIC
       RECORD KEY IS CLI-ID
       FILE STATUS IS WS-FS.

ACCESS MODE

Define como o programa acessará o arquivo.


SEQUENTIAL

Leitura em sequência.

ACCESS MODE IS SEQUENTIAL

Fluxo:

REG1
 ↓
REG2
 ↓
REG3

Muito usado em:

  • QSAM

  • Batch


RANDOM

Acesso direto pela chave.

ACCESS MODE IS RANDOM

Exemplo:

PROCURA CLIENTE 1000

Vai diretamente ao registro.


DYNAMIC

Mistura Sequential e Random.

ACCESS MODE IS DYNAMIC

Muito comum em VSAM.


FILE STATUS

Retorno das operações do arquivo.


Declaração

01 WS-FS PIC XX.

Associação

FILE STATUS IS WS-FS

Status comuns

CódigoSignificado
00Sucesso
10EOF
22Chave duplicada
23Registro não encontrado
35Arquivo inexistente
39Definição incompatível
92Erro lógico
93Arquivo não aberto

OPEN

Abre o arquivo.


INPUT

Somente leitura.

OPEN INPUT ARQCLI

OUTPUT

Cria novo arquivo.

OPEN OUTPUT ARQSAIDA

I-O

Leitura e atualização.

OPEN I-O ARQVSAM

EXTEND

Acrescenta registros.

OPEN EXTEND ARQREL

READ

Lê um registro.


QSAM

READ ARQCLI

Com EOF

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

READ para VSAM

READ ARQVSAM

Lê o registro corrente.


READ NEXT

Muito usado em VSAM KSDS.


Exemplo

READ ARQVSAM NEXT RECORD

Fluxo

Registro 100
 ↓
READ NEXT
 ↓
Registro 101

START

Posiciona o ponteiro em uma chave.

Funciona apenas em arquivos indexados.


Exemplo

START ARQVSAM
   KEY IS >= WS-CHAVE
END-START

Fluxo

Chave procurada = 1000
       ↓
Posiciona no primeiro >= 1000

Muito usado para pesquisas.


WRITE

Grava novo registro.


Exemplo

WRITE REG-CLIENTE

Em arquivo sequencial

Registro gravado no final

Em VSAM

Registro incluído pela chave

Possível erro

FS = 22

Chave duplicada.


REWRITE

Atualiza registro existente.


Exemplo

REWRITE REG-CLIENTE

Fluxo

READ
 ↓
ALTERA DADOS
 ↓
REWRITE

Exemplo completo

READ ARQVSAM

MOVE 5000 TO CLI-SALDO

REWRITE REG-CLIENTE

DELETE

Remove registro.

Disponível em arquivos indexados.


Exemplo

DELETE ARQVSAM

Fluxo

READ
 ↓
DELETE
 ↓
Registro removido

Muito usado em:

  • VSAM KSDS

  • RRDS


Não funciona em QSAM

Arquivos sequenciais não suportam DELETE.


CLOSE

Fecha arquivo.


Exemplo

CLOSE ARQCLI

Sempre execute CLOSE

Evita:

  • perda de dados;

  • buffers pendentes;

  • inconsistências.


Exemplo Completo VSAM

OPEN I-O ARQCLI

MOVE 1000 TO WS-ID

START ARQCLI
   KEY >= WS-ID

READ ARQCLI NEXT RECORD

IF WS-FS = '00'

   MOVE 'NOVO NOME'
      TO CLI-NOME

   REWRITE REG-CLIENTE

END-IF

CLOSE ARQCLI

Ciclo de Vida de um Arquivo COBOL

FILE-CONTROL
      ↓
OPEN
      ↓
START
      ↓
READ
      ↓
WRITE
      ↓
REWRITE
      ↓
DELETE
      ↓
CLOSE

Resumo Rápido

ComandoFunção
FILE-CONTROLDefine arquivo
ACCESS MODETipo de acesso
FILE STATUSRetorno da operação
OPENAbre arquivo
READLê registro
READ NEXTPróximo registro
STARTPosiciona por chave
WRITEInclui registro
REWRITEAtualiza registro
DELETERemove registro
CLOSEFecha arquivo

Dica de Programador Mainframe

Para arquivos QSAM, normalmente você verá:

OPEN INPUT
READ
WRITE
CLOSE

Para arquivos VSAM KSDS, os comandos mais comuns são:

OPEN I-O
START
READ NEXT
WRITE
REWRITE
DELETE
CLOSE

Esses são os comandos fundamentais que formam a base de praticamente todos os programas COBOL que manipulam arquivos no ambiente IBM Z.


Sem comentários:

Enviar um comentário