Menu

COBOL - Cláusula de uso


A cláusula USAGE é usada para especificar como um item de dados deve ser armazenado na memória do computador. Cada variável declarada em um programa COBOL possui uma cláusula USAGE - mesmo quando nenhuma cláusula explícita é especificada. Quando não há cláusula USAGE explícita, o padrão - USAGE IS DISPLAY - é aplicado.
  1. A Cláusula USAGE pode ser especificada em itens de dados definidos com qualquer número de nível.

  2. O USAGE de um item de grupo é válido para todos os seus subitens.

Normalmente, um computador pode armazenar dados em mais de um formulário interno. Em COBOL, um programador pode especificar a forma interna do item de dados para facilitar seu uso da maneira mais eficiente.

Existem apenas duas formas gerais de representação interna em COBOL,
  1. COMPUTATIONAL

  2. DISPLAY

Somente itens de dados numéricos podem ser especificados como USAGE IS COMPUTATIONAL e o próprio nome sugere que um item de dados especificado como USAGE IS COMPUTATIONAL pode participar de operações aritméticas com mais eficiência e qualquer item de dados pode ser especificado como USAGE IS DISPLAY.3

Se omitirmos o compilador da cláusula Usage, assumiremos DISPLAY como padrão.

No uso COMP, os dados são armazenados como formato Pure Binary internamente. Dependendo do tamanho do item de dados,

Ele pode ser armazenado em meia palavra (2 bytes com intervalo -32.768 a +32.767) ou palavra completa (4 bytes com intervalo -2.147.483.648 a 2.147.483.647).

The A cláusula PICTURE de um item de dados COMPUTATIONAL não deve conter nenhum caractere diferente de 9 ou S.

exemplo:

01 WS-HDR-LEN          PIC S9(02)  USAGE COMP.

Isso ocupa 2 bytes e dados armazenados como formato binário puro internamente.

Data name lengthLength in COBOL
9(01) to 9(04) 2 bytes
9(05) to 9(09) 4 bytes
S9(10) to S9(18) 8 bytes

COMP-1: Neste caso, o item de dados será representado em uma palavra na forma de ponto flutuante, o número na verdade é representado em formato hexadecimal e é adequado para operações aritméticas. A cláusula PICTURE não pode ser especificada para itens COMP-1.

COMP-1: Leva 4 bytes de armazenamento.

COMP-2: Isso é o mesmo que COMP-1, exceto que os dados são representados internamente em duas palavras. A vantagem é que isso aumenta a precisão dos dados, o que significa que mais dígitos estão disponíveis. Semelhante a COMP-1, a cláusula PICTURE também não pode ser especificado para itens COMP-2. COMP-1 leva 8 bytes de armazenamento.COMP-2 é mais preciso que COMP-1.

COMP-3: Neste caso, os dados são representados na forma decimal, mas um dígito ocupa meio byte. O sinal é armazenado separadamente como o caractere de meio byte mais à direita.

Encontre o armazenamento Comp-3 em bytes: Comprimento da variável/2, se for não é um número puro, então leva o próximo número imediato de bytes.

Por Exemplo: S9(06) takes 4 bytes. Half byte for sign (S) and variable length is 6 bytes which takes 3 bytes. So the total is 3 and half. so its immediate number is 4. Additional added half byte is called slack byte.

COMP-3 Picture clauseNumber of bytes occupied by the field
S9(1) COMP-3 1
S9(2) COMP-3 2
S9(3) COMP-3 2
S9(7) COMP-3 4
S9(8) COMP-3 5
S9(13) COMP-3 7
S9(16) COMP-3 9
S9(18) COMP-3 10

Se você quiser ver os valores COMP-3 em arquivo seqüencial, uma vez que está armazenado na forma decimal, você precisa usar o comando HEX ON para ver os valores COMP-3, quando você usa este comando, ele mostrará duas linhas por cada registro. Você precisa ler o valor comp-3 da esquerda, de cima para baixo (em duas linhas) e depois passar para o segundo caractere lido de cima para baixo.

Por Exemplo :
  1. +87634 will be displayed as 86473C

  2. -4567 will be displayed as 05746D

últimos caracteres representa o sinal.

Se o último caractere for C ou F, isso denota um sinal positivo.

Se o último caractere for D , isso denota um sinal negativo.


Displaying COMP-3 characters:

Antes de exibir COMP-3, mova os dados para a variável de exibição de uso e depois exiba. Se ele mantiver Sign, então Use SIGN LEADING SEPARATE que usa um byte extra para sinal e sinal será exibido separadamente.

01	WS-NUMBER PIC S9(03) COMP-3.
01	WS-NUMBER1 PIC S9(03) SIGN LEADING SEPARATE.
.........
MOVE WS-NUMBWER TO WS-NUMBER1.
DISPLAY WS-NUMBER1.