Menu

COBOL - Método de acesso ao arquivo


Cada organização de arquivos (em nossa seção anterior, discutimos muitas organizações de arquivos) tem diferentes modos de acesso.

O modo de acesso é usado para definir a forma de acesso ao arquivo com base nos requisitos do programa. Em suma, podemos dizer que o modo de acesso define como os dados são necessários para ler e gravar no arquivo.

Existem 3 modos de acesso,
  1. Acesso Sequencial
  2. Acesso aleatório
  3. Acesso dinâmico
Agora, veremos como definir um arquivo em COBOL com o modo de acesso correto,

Syntax:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT [OPTINAL] filename ASSIGN TO ddname.
    ORGANIZATION IS {SEQUENTIAL/INDEXED/RELATIVE}.
    [ACCESS IS {SEQUENTIAL/RANDOM/DYNAMIC}].
    [RECORD KEY IS ws-key].
    [RELATIVE KEY IS ws-rel-rrn].
    [ALTERNATE RECORD KEY IS ws-key {WITH/WITHOUT} DUPLICATES].
    [FILE STATUS IS ws-status].

Vejamos cada modo de acesso abaixo,

Acesso sequencial:

Como o nome indica, os registros no arquivo podem ser lidos sequencialmente para o acesso sequencial, ou seja, um após o outro desde o início.

O método para recuperar o registro varia de acordo com a organização de arquivos escolhida.

Nos acesso sequencial, os registros são recuperados da mesma forma que foram inseridos.

Exemplo:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT file-name ASSIGN TO dd-name
    ORGANIZATION IS SEQUENTIAL
    ACCESS MODE IS SEQUENTIAL.

Para arquivos indexados, os registros são acessados ​​na ordem do arquivo de chave selecionado, começando na posição atual do indicador de posição do arquivo.

Exemplo:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT file-name ASSIGN TO dd-name
    ORGANIZATION IS INDEXED
    ACCESS MODE IS SEQUENTIAL
    RECORD KEY IS rec-key1
    ALTERNATE RECORD KEY IS rec-key2.

Para arquivos relativos, os registros são acessados ​​na ordem do número do registro relativo.

Exemplo:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT file-name ASSIGN TO dd-name
    ORGANIZATION IS RELATIVE
    ACCESS MODE IS SEQUENTIAL
    RELATIVE KEY IS rec-key1.

Desvantagens do modo de acesso sequencial:
O modo de acesso sequencial é muito eficaz quando o arquivo possui menos registros, mas quando o arquivo possui um grande número de registros, levará muito tempo para ler um registro específico do arquivo.

Acesso aleatório:

No modo de acesso aleatório, podemos acessar os registros aleatoriamente, ou seja, diretamente fornecendo a chave.

Esse modo de acesso geralmente é usado apenas para arquivos indexados e relativos.

Para arquivos indexados, os registros são recuperados de acordo com o valor que você coloca em um campo-chave. O valor pode ser primário, alternativo ou relativo. Pode haver um ou mais índices alternativos.

Exemplo:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file-name ASSIGN TO dd-name
    ORGANIZATION IS INDEXED
    ACCESS MODE IS RANDOM
    RECORD KEY IS rec-key1
    ALTERNATE RECORD KEY IS rec-key2.

Os registros são recuperados para arquivos relativos com base no valor que você colocou na chave relativa.

Exemplo:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT file-name ASSIGN TO dd-name
    ORGANIZATION IS RELATIVE
    ACCESS MODE IS RANDOM
    RELATIVE KEY IS rec-key1.

Acesso dinâmico:

No mesmo programa, o acesso dinâmico permite acesso sequencial e aleatório. No modo de acesso dinâmico, podemos usar uma descrição de arquivo para ambos os tipos de processamento, ou seja, processamento aleatório e sequencial, como recuperar alguns registros com a ajuda de chaves e alguns registros em ordem sequencial.

Exemplo:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT file-name ASSIGN TO dd-name
    ORGANIZATION IS SEQUENTIAL
    ACCESS MODE IS DYNAMIC
    RECORD KEY IS rec-key1
    ALTERNATE RECORD KEY IS rec-key2.

Com arquivos relativos e indexados, o modo de acesso dinâmico permite alternar entre o modo de acesso aleatório e o modo de acesso sequencial ao ler um arquivo usando a frase NEXT na instrução READ.

Exemplo:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT file-name ASSIGN TO dd-name
    ORGANIZATION IS RELATIVE
    ACCESS MODE IS DYNAMIC
    RELATIVE KEY IS rec-key1.