gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:35:26 30 4
gpt4 key购买 nike

我有一个非常简单的虚拟 COBOL 程序,它执行虚拟计算并显示结果。

   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.

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

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

上面的原因是这段代码的一般表达:

 COMPUTE PDISCR = (((((X(1) + DX - XBRAK) * (ABRAK(1) / 1000)) / 100)
+ PHT(1) + DPH - PHBRAK) * 2) + ((V(1) + DV
+ VBRAKMPM) * (V(1) + DV - VBRAKMPM) / 100000))

这是一个已有 50 年历史的 Train 模拟程序的一部分,我需要将其迁移到 GnuCOBOL。 COMPUTE 中使用的所有字段都是整数。我需要能够从 GnuCOBOL 获得相同的答案。

已确认 OpenCOBOL/GnuCOBOL 最高可达 2.0。

最佳答案

https://lwn.net/Articles/733129/

此链接提到了 gnuCobol 2.2 的新 std 选项:ibm-strict。我想知道这是否会强制计算语句执行您想要的操作。

关于COBOL - 对于相同的计算,从大型机到 PC 的不同答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39854413/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com