domingo, 8 de janeiro de 2017

Balance-Line conceito

Olá!

Para não produzir um post extenso, o assunto sobre arquivos está abordado em posts particionados conforme:
  1. Declarações básicas
  2. Código básico
    1. Código leitura arquivo
    2. Código escrita arquivo
    3. Código leitura/escrita no mesmo arquivo
  3. Código intermediário:
    1. Balance-Line conceito
    2. Balance-Line código
O termo balance-line no Cobol refere-se ao ato de realizar a consolidação de dados de duas ou mais base de dados. Ou seja, realizar o balanceamento das informações que estão presentes nestas bases e verificando a existência de compatibilidade ou a inconsistência de registros, está verificação depende da regra negocial a ser aplicada.

No Cobol este termo é aplicado para a verificação das informações que estão presentes em dois ou mais arquivos, com o objetivo de produzir um resultado com o balanço das informações contidas nos arquivos analisados.

Sendo que o resultado produzido pelo balanço dos dados dos arquivos, pode no fim gerar um novo arquivo, ou atualização de registros na base de dados, ou um relatório gerencial, etc.

Para realizar o balanceamento das informações é primordial que os arquivos estejam com os dados ordenados, e também possuam alguma chave para comparação dos registros.

Para exemplo, veja os arquivos abaixo:

Arquivo para cadastro Arquivo com as pessoas cadastradas
Código Nome Código  Nome
1 Felipe 2 Gabi
3 Ana 3 Ana
4 João 5 Maira
5 Maira 6 Jose
7 Paulo 8 Lara

No primeiro arquivo está presente as pessoas que devem ser cadastradas, e no segundo arquivo contém as pessoas que já foram cadastradas. Contudo, no primeiro arquivo há pessoas que já foram cadastradas, deste modo como seria um arquivo que contenha somente as novas pessoas para cadastro.

Para isso é necessário realizar o balanceamento das informações contidas nos dois arquivos, a fim de verificar quais pessoas para cadastramento ainda não foram cadastradas. Então, basicamente é criar um programa Cobol que realize a leitura dos dois arquivos, e quando o código da pessoa do arquivo para cadastro não esteja presente no arquivo com as pessoas cadastradas, efetivar a gravação desse registro em um novo arquivo.

O fluxo básico para realizar a leitura de dois arquivos e gerar um terceiro, de modo a verificar a existência de registro com a mesma chave, é:
1. Abre arquivos em modo de leitura
    1.1. Abrir os arquivos de entrada (arquivos com as informações)
    1.2. Abre Input arquivoA
    1.3. Abre Input arquivoB
2. Ler arquivos
    2.1. Ler arquivoA
    2.2. Ler arquivoB
    2.3. Se não haver registro em algum destes arquivos, encerrar o programa
3. Abrir terceiro arquivo em modo de gravação (novo arquivo)
    3.1. Abre Output arquivoC
4. Faz comparação com registros lidos dos arquivos (realizar o balance-line)
    4.1. Se chave-arquivoA igual chave-arquivoB
        4.1.1. Realizar gravação dos dados no arquivoC
        4.1.2. Ler próximo registro dos arquivos A e B
    4.2. Se chave-arquivoA maior que chave-arquivoB, ler próximo registro do arquivoB
    4.3. Se chave-arquivoA menor que chave-arquivoB, ler próximo registro do arquivoA
5. Fechar arquivos
    5.1. Fechar arquivoA, arquivoB, arquivoC.

O item 4 deve estar em um loop que tenha a condição de terminar quando encontrado o fim de leitura de arquivo (arquivoA ou arquivoB). O encerramento da leitura de arquivo é indicado pelo file-status com código +10 após a ação de leitura do arquivo, este representa que não há mais registros a serem lidos.

Para aplicar o fluxo básico acima de modo que realize a leitura dos arquivos de cadastro de pessoas, é necessário somente fazer uma pequena alteração no item 4 que contém as cláusulas de compatibilidade dos registros contidos nos arquivos, alterando o item 4 para:

4. Faz comparação com registros lidos dos arquivos (realizar o balance-line)
    4.1. Se chave-arquivoA igual chave-arquivoB
        4.1.1. Ignorar o registro, pois já é uma pessoa cadastrada
        4.1.2. Ler próximo registro dos arquivos A e B
    4.2. Se chave-arquivoA maior que chave-arquivoB, ler próximo registro do arquivoB
    4.3. Se chave-arquivoA menor que chave-arquivoB, ler próximo registro do arquivoA
        4.3.1. Realizar a gravação do registro do arquivoA no arquivoC, pois este registro ainda não é uma pessoa cadastrada

Como, pode ser observado, o fluxo básico de exemplo é simples e eficaz, e dependendo da regra a ser aplicada na verificação dos dados, são necessárias poucas alterações no item que de fato realiza o balanceamento dos dados. Caso esteja trabalhando com mais arquivos demais itens também sofreram pequenos ajustes.

O código Cobol para realizar a geração dos registros de pessoas para cadastra é apresentado no próximo post.

Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA

Até o próximo post!

sábado, 17 de dezembro de 2016

Trabalhando com arquivos - Parte 2.3 - Código leitura/escrita no mesmo arquivo

Olá!

Para não produzir um post extenso, o assunto sobre arquivos está abordado em posts particionados conforme:
  1. Declarações básicas
  2. Código básico
    1. Código leitura arquivo
    2. Código escrita arquivo
    3. Código leitura/escrita no mesmo arquivo
  3. Código intermediário:
    1. Balance-Line conceito
    2. Balance-Line código
Neste post é abordado os comandos e uma lógica de processamento simples para realizar a leitura e gravação de dados em um arquivo. Lembrando, que na parte 1 desse assunto foi apresentado as declarações básicas que devem ser feitas para executar uma rotina COBOL com arquivos.

O fluxo de processamento consiste em quatro passos: abrir o arquivo em modo de leitura e escrita, ler os dados do arquivo, gravar os dados (sobrescrever as informações do registro) no arquivo, e por fim encerrar o uso do arquivo (fechar o arquivo).


    1 - Abrir o arquivo em modo de leitura e escrita

Quando a abertura de um arquivo é feita no modo de leitura e escrita, significa que as informações do arquivo podem ser manipuladas pelo código COBOL e depois atualizadas no arquivo, ou seja, os dados lidos do arquivo podem ser alterados por informações do banco de dados, variáveis, cálculos, etc; enfim, os dados são manipulados pelo programa COBOL e atualizados no arquivo.

A sintaxe do comando para abrir o arquivo em modo de leitura e escrita, é:
OPEN I-O nome-logico-arquivo.

Exemplo: OPEN I-O ARQUIVO-TESTE.



    2 - Ler os dados no arquivo

Com o comando READ, mesmo procedimento da parte 2.1, é realizado a leitura dos registros do arquivo. Sintaxe:
READ nome-logico-arquivo.

Exemplo: READ ARQUIVO-TESTE.



    3 - Gravar os dados no arquivo

Após ter feito a leitura do registro do arquivo com o comando READ. Usamos o comando REWRITE para realizar a gravação dos novos dados sobre o registro atual do arquivo. Sintaxe:
REWRITE nome-do-item-de-grupo-do-layout-do-arquivo.

      * -- Descricao do arquivo de entrada e saida
       FD ARQUIVO-TESTE.
      *
      * Layout do arquivo: ARQUIVO-TESTE
       01 ARQUIVO-TESTE-REG.
           03 ARQ-TEST-NM-PSS           PIC  X(020).
           03 ARQ-TEST-NM-PSS-SNM       PIC  X(040).
           03 ARQ-TEST-DT-PSS-NSC       PIC  X(010).

Exemplo: REWRITE ARQUIVO-TESTE-REG.



    4 - Encerrar o uso do arquivo

Com o fim da leitura e escrita dos dados no arquivo, é uma boa prática executar o comando CLOSE para fechar o arquivo (encerrar a sessão). Caso, algum arquivo aberto não seja fechado com este comando, então após a execução completa do programa todos arquivos ainda abertos serão fechados. Sintaxe:
CLOSE nome-logico-arquivo.

Exemplo: CLOSE ARQUIVO-TESTE.

  • Exemplo prático de programa
Então com os comandos Open I-O, ReWrite e Close, podemos criar um fluxo simples e eficaz para ler as informações de um arquivo, e sobrescrever o registro do arquivo com novas informações.

Veja a parte do código que contém o fluxo para realizar a leitura e atualização dos dados de um arquivo:
cobol ler e escrever arquivo - felipe barbosa ferreira

Neste programa de exemplo está sendo realizada a leitura de dois registros do arquivo, e alterando a data de nascimento do segundo registro para 99/99/9999. 

Ao ter adicionado comandos displays no programa de exemplo, temos a seguinte resposta após a sua execução:

Abaixo está apresentado o antes e depois dos dados do arquivo para a execução do código de exemplo:

Felipe  Barbosa Ferreira    19/02/1992
Ana     Vieira              12/07/1988
Joao    Santos              03/05/1995
Aline   Silva               14/08/1985

Maira   Dantas              27/12/1976


Felipe  Barbosa Ferreira    19/02/1992
Ana     Vieira              99/99/9999
Joao    Santos              03/05/1995
Aline   Silva               14/08/1985
Maira   Dantas              27/12/1976


Para Ctrl + C do código acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA

Até o próximo post!

domingo, 11 de dezembro de 2016

Trabalhando com arquivos - Parte 2.2 - Código escrita arquivo

Olá!

Para não produzir um post extenso, o assunto sobre arquivos está abordado em posts particionados conforme:
  1. Declarações básicas
  2. Código básico
    1. Código leitura arquivo
    2. Código escrita arquivo
    3. Código leitura/escrita no mesmo arquivo
  3. Código intermediário:
    1. Balance-Line conceito
    2. Balance-Line código
Neste post é abordado os comandos e uma lógica de processamento simples para realizar a gravação de dados em um arquivo. Lembrando, que na parte 1 desse assunto foi apresentado as declarações básicas que devem ser feitas para executar uma rotina COBOL com arquivos.

O fluxo de processamento consiste em três passos: abrir o arquivo em modo de escrita, gravar os dados  (registro) no arquivo e encerrar o uso do arquivo (fechar o arquivo).


    1 - Abrir o arquivo em modo de escrita

Quando a abertura de um arquivo é feita modo de escrita, significa que as informações trabalhadas pelo código COBOL podem ser transmitidas para dentro do arquivo, ou seja, os dados (informações do banco de dados, variáveis, cálculos, etc.) manipulados pelo programa COBOL podem ser gravados em um arquivo.

A sintaxe do comando para abrir o arquivo em modo de escrita, é :
OPEN OUTPUT nome-logico-arquivo.

Exemplo: OPEN OUTPUT ARQUIVO-SAIDA.


    2 - Gravar os dados no arquivo

Após ter feito a abertura do arquivo com OPEN OUTPUT, o arquivo está pronto receber informações do programa COBOL. E com o comando WRITE é realizado a gravação dos dados no arquivo. Sintaxe:
WRITE nome-do-item-de-grupo-do-layout-do-arquivo.

      * -- Descricao do arquivo de saida
       FD ARQUIVO-SAIDA.
      *
      * Layout do arquivo: ARQUIVO-SAIDA
       01 ARQUIVO-SAIDA-REG.
           03 ARQ-SAID-NM-PSS           PIC  X(020).

           03 ARQ-SAID-DT-PSS-NSC       PIC  X(010).

Exemplo: WRITE ARQUIVO-SAIDA-REG.



    3 - Encerrar o uso do arquivo

Com o fim da escrita dos dados no arquivo, é uma boa prática executar o comando CLOSE para fechar o arquivo (encerrar a sessão). Caso, algum arquivo aberto não seja fechado com este comando, então após a execução completa do programa todos arquivos ainda abertos serão fechados. Sintaxe:
CLOSE nome-logico-arquivo.

Exemplo: CLOSE ARQUIVO-SAIDA.

  • Exemplo prático de programa
Então com os comandos Open Input, Write e Close, podemos criar um fluxo simples e eficaz para a escrita de dados em um arquivo sequencial.

Veja a parte do código que contém o fluxo para realizar a gravação dos dados no arquivo:
FELIPE BARBOSA FERREIRA - FLUXO GRAVACAO ARQUIVO

Sendo que deste modo, se o arquivo já possuir informações, estas serão sobrepostas pela gravação dos dados do programa COBOL. Neste exemplo o arquivo está sendo gravado com as informações de pessoas e cada registro possui os dados dispostos da seguinte forma: o nome com no máximo 20 caracteres;  data de nascimento no formato dd/mm/aaaa.

Abaixo está apresentado os dados que foram gravados no arquivo de saída pela execução do código de exemplo arquivo-saida.txt, que contém 3 registros:

Felipe Barbosa      19/02/1992
Ana Vieira          02/04/1988
Joao Santos         03/05/1995


Também, há o comando OPEN EXTEND que permite a gravação de dados em um arquivo que já possua informações, ou seja, quando realizado a abertura de um arquivo no modo EXTEND é possivel adicionar dados após as informações contidas no arquivo.

Para Ctrl + C do código acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA

Até o próximo post!