COBOL中的小数
我对COBOL很陌生。我正在学习Micro Focus附带的教程,但我似乎无法让示例正常工作。我试着打印-123.45,我不断得到以下信息 我在这里查阅了一些帖子,但它们没有解决我的问题。我用的是Micro Focus的视觉COBOL。这是我的密码COBOL中的小数,cobol,microfocus,Cobol,Microfocus,我对COBOL很陌生。我正在学习Micro Focus附带的教程,但我似乎无法让示例正常工作。我试着打印-123.45,我不断得到以下信息 我在这里查阅了一些帖子,但它们没有解决我的问题。我用的是Micro Focus的视觉COBOL。这是我的密码 program-id. tictac as "tictac". environment division. configuration section. data division. working-storage
program-id. tictac as "tictac".
environment division.
configuration section.
data division.
working-storage section.
01 WS-NUM3 PIC S9(3)V9(2) VALUE -123.45.
procedure division.
Display WS-NUM3.
goback.
end program tictac.
picture子句中的
V
是一个隐含的小数点。我想您需要一个带有PIC-999.99
的字段,其中
是其picture子句的一个显式小数点
您可能会认为这是COBOL对变量的定义和显示方式进行了区分。有点像printf
中的格式字符串,它只是指定如何显示变量,而不是如何定义变量。尽管在这两种情况下,定义和显示方式必须在一定程度上匹配
为数字字段选择正确的picture子句很重要;如果您正在进行计算,它可能会对性能产生重大影响
所以通常有一个定义为
PIC 9(4)V99 COMP-3
PIC ZZZ9.99
…和用于输出目的的相应字段,例如
PIC 9(4)V99 COMP-3
PIC ZZZ9.99
…这样就可以对第一个字段进行计算,并且在需要显示字段时,可以使用
MOVE
语句将第一个字段的内容复制到第二个字段。另一种选择可能是01 WS-NUM3 PIC S9(3)V9(2)符号前导独立值-123.45。