小编Gae*_*l L的帖子

COBOL - 对于相同的COMPUTE,从大型机到PC的不同答案

我有这个非常简单的虚拟COBOL程序,它执行一个虚拟COMPUTE并显示结果.

   ID DIVISION.
   PROGRAM-ID. DUMMYPGM.
   DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 NUM-A PIC 9(3) VALUE 399.
   01 NUM-B PIC 9(3) VALUE 211.
   01 NUM-C PIC 9(3).
  *
   PROCEDURE DIVISION.
   MAIN.
       COMPUTE NUM-C = ((NUM-A / 100) - (NUM-B / 100)) * 100
       DISPLAY 'NUM-C IS ' NUM-C
       STOP RUN.
Run Code Online (Sandbox Code Playgroud)

当我在大型机上编译此代码(使用编译器MVS Enterprise COBOL V4.2)并执行它时,我得到"NUM-C IS 100",可能因为(399/100)被视为3而不是3.99计算(同样适用于211/100).

但是当我在PC上编译完全相同的代码(使用GnuCobol编译器)并执行它时,我得到"NUM-C IS 188".PC的答案是正确的,但我想让它的行为与大型机一样(因此,在该计算语句中失去精度而不是188而不是)... ...我该怎么做?

上述原因是此代码的一般表达式:

 COMPUTE PDISCR = (((((X(1) + DX - XBRAK) * (ABRAK(1) / 1000)) / 100)
                  + PHT(1) + DPH - PHBRAK) * …
Run Code Online (Sandbox Code Playgroud)

cobol mainframe gnucobol

10
推荐指数
1
解决办法
333
查看次数

标签 统计

cobol ×1

gnucobol ×1

mainframe ×1