sábado, 25 de fevereiro de 2017

Armazenamento de compactados

Olá!

Ao trabalhar com variáveis numéricas compactadas, ocorre a necessidade de interpretar qual a quantidade que será utilizada no armazenamento, e também se o intervalo de valores suportados pela variável é suficiente para a aplicação.

No COBOL há os seguintes formatos de itens compactados:
  • COMPUTATIONAL ou COMP (binário)
    • Este é equivalente ao binário, a palavra Computational é sinônimo de binário.

  • COMPUTATIONAL-1 ou COMP-1 (ponto flutuante)
    • Utilizado para itens com ponto flutuante interno com precisão única, esses possuem 4 bytes de comprimento.

  • COMPUTATIONAL-2 ou COMP-2 (ponto flutuante longo)
    • Utilizado para itens com ponto flutuante interno com precisão dupla, esses possuem 8 bytes de comprimento.


  • COMPUTATIONAL-4 ou COMP-4 (binário)
    • Equivalente ao um item binário.

  • COMPUTATIONAL-5 ou COMP-5 (binário nativo)
    • Os dados armazenados em COMP-5 possuem o truncamento no tamanho do campo binário, em vez do limite especificado pela PICTURE na declaração Cobol.
    • Quando um item COMP-5 é referenciado, todo o campo binário é utilizado na operação.
    • A opção do compilador TRUNC(BIN) faz com que todos os itens de dados binários (USAGE BINARY, COMP, COMP-4) sejam tratados como itens COMP-5.

A tabela abaixo mostra o armazenamento ocupado e intervalo de valores suportados para cada PICTURE de um item COMP-5.



A PICTURE para um item COMP-5 pode ser definida com o fator de escala, isto é, posições inteiras ou decimais implícitas, por exemplo a declaração PICTURE S99V99 COMP-5 é representado com uma halfword binária. Assim, os valores suportados apresentados na tabela devem ser dimensionados adequadamente para quando ocorrer essa situação.
FELIPE BARBOSA FERREIRA

Até o próximo post!

sábado, 18 de fevereiro de 2017

Variáveis numéricas (Computational items)

Olá!

Para os sistemas realizam cálculos de valores que abrangem uma grande quantidade de dados, ou também, para aqueles que possuem a necessidade de trabalhar com várias casas decimais, há sempre a preocupação quanto a declaração variável numérica; qual o tipo de dado?; tamanho?; com ou sem sinal?; São algumas questões sobre a variável a ser declarada. 

Nos sistemas bancários por exemplo, pode ser facilmente visto a declaração de uma variável numérica da seguinte forma: PIC S9(15)V9(02). 

Nossa, é realmente necessária uma variável com 17 posições? Sim. Pense no faturamento de um banco de proporção mundial. Então, possivelmente somente 2 posições após o ponto flutuante não serão suficientes, assim, alguns sistemas precisam trabalhar com variáveis com mais de 17 posições.

  • Itens computacionais: é um valor usado em operações aritméticas. Deve ser numérico. E um item de grupo denominado como item computacional, possui os seus elementos numéricos.

No Cobol os itens computacionais possuem o comprimento padrão de 18 dígitos decimais, exceto para um item PACKED-DECIMAL que pode conter o comprimento máximo de 31 dígitos decimais.

O comprimento de um item PACKED-DECIMAL pode variar de acordo com a opção do compilador que estiver em vigor. Sendo, se a opção ARITH(COMPAT) estiver ativa o item PACKED-DECIMAL possui o comprimento máximo de 18 dígitos decimais, caso a opção ARITH(EXTEND) for ativada o comprimento máximo do item PACKED-DECIMAL passa a ser de 31 dígitos decimais.

A declaração (PIC - PICTURE) de um item computacional pode conter apenas S9VP, conforme:
S - Um sinal operacional
9 - Uma ou mais posições numéricas de caracteres
V - Um ponto decimal implícito
P - Uma ou mais posições de escala decimal

Exemplo: PIC S9(15)V9(02)

Observação: itens COMP-1 e COMP-2 items não possuem PICTURE, pois utilizam ponto flutuante interno com precisão.

A quantidade de armazenamento ocupada por um item binário depende do número de dígitos decimais definidos em sua cláusula PICTURE, veja na tabela abaixo:

Dígitos na cláusula PICArmazenamento ocupado
S9(01) até S9(04)2 bytes (halfword)
S9(05) até S9(09)4 bytes (fullword)
S9(10) até S9(18)8 bytes (doubleword)

Os dados binários são big-endian: o sinal operacional está contido no bit mais à esquerda. E os itens de dados BINARY, COMPUTATIONAL e COMPUTATIONAL-4 podem ser afetados pela opção do compilador TRUNC.

Veja também a comparação dos tamanhos de tipo de dado no post: Conversão de tipo de dado.
FELIPE BARBOSA FERREIRA

Até o próximo post!