当我在 macOS 上使用 GnuCOBOL 3.2 构建以下程序并输入时10.5
,为什么它会打印10.0
?
program-id. foo.
data division.
working-storage section.
77 x pic 99v9.
procedure division.
accept x.
display x.
stop run.
类似地,如果我将 Picture 子句更改为PIC 9(3)V99
并输入458.12
,它会打印458.10
。
图片字符
V
是隐含的小数点。因此,您的第一个示例隐含地替换了无效值MOVE
。较长的版本也类似。10.
.
您可以做的是使用
ACCEPT
更大的PIC X
字段,然后MOVE FUNCTION NUMVAL (INP-FLD) TO x
使用隐含的小数来正确定位它。这样做还有一个好处,就是您可以将符号与S
图片字符一起使用,在您的变量示例中,这USAGE DISPLAY
将对字符进行“过度打孔”以存储负值。