COBOL - Funções intrínsecas - Converting to numbers (NUMVAL, NUMVAL-C)


Volta a página anterior

Volta ao Menu Principal


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

COBOL - Funções intrínsecas - Converting to numbers (NUMVAL, NUMVAL-C)
Intrinsic functions - Enterprise COBOL for z/OS 6.3.0

As funções NUMVAL e NUMVAL-C convertem cadeias de caracteres literais alfanuméricos ou nacionais, ou itens de dados alfanuméricos ou nacionais de classe) em números.
Use essas funções para converter números de representação de caracteres de formato livre em formato numérico, para que você possa processá-los numericamente.


       01  R       PIC X(20)  VALUE "- 1234.5678".
       01  S       PIC X(20)  VALUE "  $12,345.67CR".
       01  TOTAL   USAGE IS COMP-1.
       . . .
           COMPUTE TOTAL = FUNCTION NUMVAL(R) + FUNCTION NUMVAL-C(S)

       Resultado - Total : -13580.238

Use NUMVAL-C quando o argumento incluir um símbolo de moeda ou vírgula ou ambos, conforme mostrado no exemplo acima.
Você também pode colocar um sinal algébrico antes ou depois da sequência de caracteres, e o sinal será processado.
Os argumentos não devem exceder 18 dígitos quando você compila com a opção padrão ARITH (COMPAT) ( modo de compatibilidade ) nem 31 dígitos quando você compila com ARITH (EXTEND) ( modo estendido ), sem incluir os símbolos de edição.

NUMVAL e NUMVAL-C retornam valores longos de ponto flutuante (64 bits) no modo de compatibilidade e retornam valores de ponto flutuante de precisão estendida de 128 bits no modo estendido.
Uma referência a uma dessas funções representa uma referência a um item de dados numéricos.

No máximo 15 dígitos decimais podem ser convertidos com precisão em ponto flutuante de precisão longa (conforme descrito na referência relacionada abaixo sobre conversões e precisão).
Se o argumento para NUMVAL ou NUMVAL-C tiver mais de 15 dígitos, é recomendável especificar a opção do compilador ARITH (EXTEND) para que um resultado da função de precisão estendida que possa representar com precisão o valor do argumento seja retornado.

Quando você usa NUMVAL ou NUMVAL-C, não precisa declarar estaticamente dados numéricos em um formato fixo nem inserir dados de maneira precisa.
Por exemplo, suponha que você defina os números a serem inseridos da seguinte maneira:


       01  X       PIC S999V99  LEADING SIGN IS SEPARATE.
       . . .
           ACCEPT X FROM CONSOLE

O usuário do aplicativo deve inserir os números exatamente como definido na cláusula PICTURE.
Por exemplo:


       +001.23
       -300.00

No entanto, usando a função NUMVAL, você pode codificar:

       01  A       PIC X(10).
       01  B       PIC S999V99.
       . . .
           ACCEPT A FROM CONSOLE
           COMPUTE B = FUNCTION NUMVAL(A)

A entrada pode ser:

       1.23
       -300

© Copyright IBM Corp.