COBOL - Coding your program - Defining numeric data



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - Codificando seu programa - Definindo dados numéricos
Enterprise COBOL for z/OS, Version 4.2

Defina itens numéricos usando a cláusula PICTURE com o caractere 9 na descrição dos dados para representar os dígitos decimais do número.
Não use um X, que é para itens de dados alfanuméricos.

Por exemplo, COUNT-Y abaixo é um item de dados numéricos, um item decimal externo que tem USAGE DISPLAY (um item decimal zoneado):

           05  COUNT-Y        PIC 9(4)  VALUE 25.
           05  CUSTOMER-NAME  PIC X(20) VALUE "Johnson".

Você pode definir itens de dados numéricos da mesma forma para conter caracteres nacionais (UTF-16).

           05  COUNT-N        PIC 9(4)  VALUE 25  USAGE NATIONAL.

Você pode codificar até 18 dígitos na cláusula PICTURE ao compilar usando a opção do compilador padrão ARITH (COMPAT) (conhecida como modo de compatibilidade).
Ao compilar usando ARITH (EXTEND) (conhecido como modo estendido), você pode codificar até 31 dígitos na cláusula PICTURE.

Outros caracteres de significado especial que você pode codificar são:

P
Indica zeros à esquerda ou à direita
S
Indica um sinal, positivo ou negativo
V
Implica um ponto decimal

O S no exemplo a seguir significa que o valor é assinado:

           05  PRICE  PIC S99V99.

O campo pode, portanto, conter um valor positivo ou negativo.
O V indica a posição de um ponto decimal implícito, mas não contribui para o tamanho do item porque não requer uma posição de armazenamento.
Normalmente, um S não contribui para o tamanho de um item numérico porque, por padrão, S não requer uma posição de armazenamento.

No entanto, se você planeja portar seu programa ou dados para uma máquina diferente, pode querer codificar o sinal para um item de dados decimais zoneados como uma posição separada no armazenamento.
No caso a seguir, o sinal ocupa 1 byte:

           05  PRICE  PIC S99V99  SIGN IS LEADING, SEPARATE.

Essa codificação garante que a convenção que sua máquina usa para armazenar um sinal não separado não causará resultados inesperados em uma máquina que usa uma convenção diferente.

Sinais separados (Separate signs) também são preferíveis para itens de dados decimais zoneados que serão impressos ou exibidos.

Sinais separados (Separate signs) são necessários para itens de dados decimais nacionais que são assinados.
O sinal ocupa 2 bytes de armazenamento, como no exemplo a seguir:

           05 PRICE PIC S99V99 USAGE NATIONAL SIGN IS LEADING, SEPARATE.

Você não pode usar a cláusula PICTURE com dados de ponto flutuante interno (floating-point) (COMP-1 ou COMP-2).
No entanto, você pode usar a cláusula VALUE para fornecer um valor inicial para um literal de ponto flutuante (floating-point) interno:

           05  COMPUTE-RESULT  USAGE COMP-2  VALUE 06.23E-24.

Para obter informações sobre dados de ponto flutuante externos, consulte os exemplos mencionados abaixo e o conceito relacionado sobre formatos para dados numéricos.

Examples: numeric data and internal representation - Exemplos: dados numéricos e representação interna

Conceitos relacionados:



© Copyright IBM Corp.