COBOL - Coding your program - Checking for incompatible data (numeric class test)



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

COBOL - Codificando seu programa - Verificando dados incompatíveis (teste de classe numérica)
Enterprise COBOL for z/OS, Version 4.2

O compilador assume que os valores fornecidos para um item de dados são válidos para as cláusulas PICTURE e USAGE e não verifica sua validade.
Certifique-se de que o conteúdo de um item de dados esteja em conformidade com as cláusulas PICTURE e USAGE antes de usar o item em processamento adicional.

Pode acontecer que valores sejam passados para o seu programa e atribuídos a itens que possuem descrições de dados incompatíveis para esses valores.
Por exemplo, dados não numéricos podem ser movidos ou passados para um campo definido como numérico ou um número com sinal pode ser passado para um campo definido como não assinado.
Em ambos os casos, os campos de recebimento contêm dados inválidos.

Você pode usar o teste de classe numérica para realizar a validação de dados.
Por exemplo:

       LINKAGE SECTION.
       01  COUNT-X   PIC 999.
       . . .
       PROCEDURE DIVISION USING COUNT-X.
       IF COUNT-X IS NUMERIC THEN 
          DISPLAY "Data is good"

O teste de classe numérica verifica o conteúdo de um item de dados em relação a um conjunto de valores que são válidos para PICTURE e USAGE do item de dados.
Por exemplo, um item decimal compactado é verificado para valores hexadecimais de X'0 'a X'9' nas posições dos dígitos e para um valor de sinal válido na posição do sinal (seja separado ou não).

Para itens decimais zoneados e decimais compactados, o teste de classe numérica é afetado pela opção do compilador NUMPROC e pela opção NUMCLS (que é definida no momento da instalação).
Para determinar a configuração NUMCLS usada em sua instalação, consulte o programador do sistema.

Se NUMCLS (PRIM) estiver em vigor em sua instalação, use a tabela a seguir para encontrar os valores que o compilador considera válidos para o sinal.

Tabela 1. NUMCLS (PRIM) e sinais válidos

NUMPROC(NOPFD) NUMPROC(PFD) NUMPROC(MIG)
Signed C, D, F C, D, +0 (positive zero) C, D, F
Unsigned F F F
Separate sign +, - +, -, +0 (positive zero) +, -

Se NUMCLS (ALT) estiver em vigor em sua instalação, use a tabela a seguir para encontrar os valores que o compilador considera válidos para o sinal.

Tabela 2. NUMCLS (ALT) e sinais válidos

NUMPROC(NOPFD) NUMPROC(PFD) NUMPROC(MIG)
Signed A to F C, D, +0 (positive zero) A to F
Unsigned F F F
Separate sign +, - +, -, +0 (positive zero) +, -

Referências Relacionadas


© Copyright IBM Corp.