quinta-feira, 29 de setembro de 2016

Calcular a quantidade máxima de OCCURS

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.

Book SEM numero de ocorrencias - FELIPE BARBOSA FERREIRA

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:

Book com numero de ocorrencias - FELIPE BARBOSA FERREIRA

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
Até o próximo post!

Nenhum comentário:

Postar um comentário