Olá!
Em programas que possuem lista de registros na área de dados de comunicação (entrada/saída de dados do programa), onde a quantidade de ocorrências da lista tem que ser determinada para aproveitar todo o espaço da área de dados. Ou seja, se as variáveis que não estão na lista ocupam 20 % do espaço da área de dados, os outros 80% podem ser ocupados com os dados da lista.
Assim, para determinar a quantidade máxima de ocorrências que a lista possa assumir, de modo a aproveitar todo espaço de dados, é necessário realizar a avaliação do espaço que está sendo utilizado pelas variáveis que não estão na lista; do tamanho de cada registro da lista, e do tamanho do espaço da área de dados do programa.
Por exemplo, se cada registro da consulta tiver o tamanho de 1.5 MB e a rotina utilizar comunicação via COMMAREA, o número máximo de registros que poderão ser passados a cada vez para a outra camada é de 21 registros. Porque o tamanho máximo suportado em COMMAREA é de 32.7 MB e divido pelo tamanho do registro que é 1.5 MB, temos o resultado de 21.8 que representa o número de vezes que podemos repetir o tamanho desse registro, ou seja, podemos passar até 21 registros para a outra camada.
Para simplificar o cálculo básico para definir a quantidade registros que podem ser trafegados entre as camadas, é: A = (B - C) / D.
Onde:
- A - Número de ocorrências
- B - Tamanho da área de comunicação
- C - Parte de dados fixa
- D - O tamanho de cada registro
Exemplo de cálculo com o book abaixo para comunicação COMMAREA.
A - ??
B - 32.7 MB
C - 127 bytes
D - 1.5 MB
A = (32700 - 127) / 1500
Logo, o resultado de A = 21,71, como não existe 0,71 de ocorrência, então arredondamos para baixo, 21 ocorrências possíveis. Assim, o book de exemplo pode conter além da parte fixa, uma lista com até 21 ocorrências.
Para facilitar a leitura e codificação dos controles de laço de repetição que manipularam os campos da lista, é uma boa prática definir o total ocorrências com números que contenham o final em zero, exemplo: 10; 20; 50; 100; 200; 500; 1000; 1500; 2000.
Book com número de ocorrências definido:
Agora, pense na situação em que por exemplo a lista de resposta do programa somente consiga transportar 20 registros, entretanto na base de dados (DB) há 100 registros para a resposta do programa, assim se executarmos o programa irá faltar 80 registros. Para que seja retornado todos os 100 registros, será necessário criar um controle de reprocessamento, para que sejam processados os 20 primeiros registros e depois os demais registros que estão contidos no DB. Este controle será apresentado no próximo post!
Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA
FELIPE BARBOSA FERREIRA
Até o próximo post!