COBOL - Codificação de arquivos
Etapas no processamento de arquivos:
Processamento de arquivos em COBOL dividido principalmente em cinco etapas.
1.Declaration | File specifications in ENVIRONMENT DIVISION |
2. Definition | Record specifications in DATA DIVISION. |
3. Open | Open the file in PROCEDURE DIVISION. |
4. Process | Performing any operations like READ/WRITE/REWRITE/DELETE in PROCEDURE DIVISION. |
5. Close | Close the file in PROCEDURE DIVISION. |
O exemplo a seguir mostra o formato geral da codificação de entrada/saída.
As explicações das informações fornecidas pelo usuário (
bold texto em negrito no exemplo) são fornecidas abaixo:
IDENTIFICATION DIVISION.
. . .
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT filename ASSIGN TO assignment-name (1) (2)
ORGANIZATION IS org ACCESS MODE IS access (3) (4)
FILE STATUS IS file-status (5)
. . .
DATA DIVISION.
FILE SECTION.
FD filename
01 recordname (6)
nn . . . fieldlength & type (7) (8)
nn . . . fieldlength & type
. . .
WORKING-STORAGE SECTION.
01 file-status PIC 99.
. . .
PROCEDURE DIVISION.
OPEN iomode filename (9)
. . .
READ filename
. . .
WRITE recordname
. . .
CLOSE filename
STOP RUN.
|
Nome do arquivo:
Qualquer nome COBOL válido. Você deve usar o mesmo nome de arquivo na cláusula SELECT e na entrada FD e nas instruções OPEN, READ, START, DELETE e CLOSE.
Este nome não é necessariamente o nome do arquivo do sistema. Cada arquivo requer sua própria cláusula SELECT, entrada FD e instruções de entrada/saída. Para WRITE e REWRITE, você especifica um registro definido para o arquivo.
Nome da atribuição:
você pode codificar ASSIGN TO nome da atribuição para especificar o ID do sistema de arquivos de destino e o nome do arquivo do sistema diretamente ou pode definir o valor indiretamente usando uma variável de ambiente. Este nome é usado no nome JCL DD para acessar o arquivo.
Se você deseja que o nome do arquivo do sistema seja identificado na hora de OPEN, especifique ASSIGN USING data-name. O valor de data-name no momento da execução da instrução OPEN para esse arquivo é usado. Opcionalmente, você pode preceder o nome do arquivo do sistema pelo identificador do sistema de arquivos, usando um hífen como separador.
O exemplo a seguir mostra como o arquivo de inventário é associado dinamicamente ao arquivo /user/inventory/parts por meio de uma instrução MOVE:
SELECT inventory-file ASSIGN USING a-file . . .
. . .
FD inventory-file . . .
. . .
77 a-file PIC X(25) VALUE SPACES.
. . .
MOVE "/user/inventory/parts" TO a-file
OPEN INPUT inventory-file |
O exemplo a seguir mostra como o arquivo de inventário é associado dinamicamente às partes do arquivo Encina SFS indexadas e mostra como os arquivos de índice alternativos altpart1 e altpart2 são associados ao nome totalmente qualificado (/.:/cics/sfs neste exemplo) do Servidor Encina.
SELECT inventory-file ASSIGN USING a-file . . .
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS FILESYSFILE-KEY
ALTERNATE RECORD KEY IS ALTKEY1
ALTERNATE RECORD KEY IS ALTKEY2. . . .
. . .
FILE SECTION.
FD inventory-file . . .
. . .
WORKING-STORAGE SECTION.
01 a-file PIC X(80). . .
. . .
MOVE "/.:/cics/sfs/parts(/.:/cics/sfs/parts;altpart1,/.:/
cics/sfs/parts;altpart2)" TO a-file
OPEN INPUT inventory-file
|
Org:
Indica a organização: LINHA SEQUENCIAL, SEQUENCIAL, INDEXADO ou RELATIVO. Se você omitir esta cláusula, o padrão será ORGANIZATION SEQUENTIAL.
Access:
Indica o modo de acesso, SEQUENCIAL, ALEATÓRIO ou DINÂMICO. Se você omitir esta cláusula, o padrão será ACCESS SEQUENTIAL.
File-status:
A chave de status do arquivo COBOL. Você pode especificar a chave de status do arquivo como um item de dados alfanumérico ou nacional de dois caracteres, ou como um item decimal zonado ou decimal nacional de dois dígitos.
Recordname:
O nome do registro usado nas instruções WRITE e REWRITE. Você pode especificar mais de um registro para um arquivo.
Fieldlength:
O comprimento lógico do campo.
Type:
Deve corresponder ao formato de registro do arquivo. Se você quebrar a entrada da descrição do registro além da descrição do nível 01, mapeie cada elemento com precisão em relação aos campos do registro.
IOmode:
Especifica o modo aberto. Se você estiver apenas lendo de um arquivo, codifique INPUT. Se você estiver gravando apenas em um arquivo, codifique OUTPUT (para abrir um novo arquivo ou sobrescrever um existente) ou EXTEND (para adicionar registros ao final do arquivo). Se você estiver fazendo ambos, codifique IO.
File position indicator:
O indicador de posição do arquivo marca o próximo registro a ser acessado para solicitações COBOL sequenciais.
Você não define explicitamente o indicador de posição do arquivo em nenhum lugar do seu programa. Ele é definido pelas instruções OPEN, START, READ, READ NEXT e READ PREVIOUS bem-sucedidas. As solicitações READ, READ NEXT ou READ PREVIOUS subsequentes usam o local do indicador de posição do arquivo estabelecido e o atualizam.
O indicador de posição do arquivo não é usado ou afetado pelas instruções de saída WRITE, REWRITE ou DELETE. O indicador de posição do arquivo não tem significado para processamento aleatório.
Não se preocupe se você não estiver claro neste exemplo, veremos explicações detalhadas com exemplos nos próximos capítulos...