Quando eu crio o programa a seguir com o GnuCOBOL 3.2 no macOS e digito 10.5
, por que ele imprime 10.0
?
program-id. foo.
data division.
working-storage section.
77 x pic 99v9.
procedure division.
accept x.
display x.
stop run.
Da mesma forma, se eu alterar a cláusula Picture para PIC 9(3)V99
e inserir 458.12
, ele imprime 458.10
.
O caractere de imagem
V
é um ponto decimal implícito. Portanto, seu primeiro exemplo faz um implícitoMOVE
de10.
O inválido.
é substituído. O mesmo vale para a variante mais longa.O que você pode fazer é criar um campo
ACCEPT
maior e, em seguida, usar o decimal implícito para posicioná-lo corretamente. Isso também tem a vantagem de poder usar um sinal junto com o caractere de imagem, o que, no seu exemplo de variável, fará um "overpunch" de um caractere para armazenar valores negativos.PIC X
MOVE FUNCTION NUMVAL (INP-FLD) TO x
S
USAGE DISPLAY