gpt4 book ai didi

db2 - COBOL 将 0 添加到 COMPUTE 中的变量

转载 作者:行者123 更新时间:2023-12-04 21:19:52 26 4
gpt4 key购买 nike

我在 $WORK 中处理 COBOL 程序时遇到了一个奇怪的语句。

我们有一个打开游标的段落(来自 DB2),并循环遍历它直到遇到 EOT(伪代码):

... working storage ...
01 I PIC S9(9) COMP VALUE ZEROS.
01 WS-SUB PIC S9(4) COMP VALUE 0.

... code area ...
PARA-ONE.
PERFORM OPEN-CURSOR
PERFORM FETCH-CURSOR

PERFORM VARYING I FROM 1 BY 1 UNTIL SQLCODE = DB2EOT
do stuff here...
END-PERFORM

COMPUTE WS-SUB = I + 0
PERFORM CLOSE-CURSOR

... do another loop using WS-SUB ...

我想知道为什么 COMPUTE WS-SUB = I + 0 行在那里。我的理解是 I 将始终至少为 1,因为它上面有执行 block (即,即使有一个 EOT 开始,I 将在该初始迭代中设置为 1)。

是否还需要 COMPUTE 行?它是否在进行一些我不知道的隐式转换?它为什么会在那里?你为什么不直接MOVE I TO WS-SUB

最佳答案

称之为愚蠢,但对于一些编译器(具有有效的正确选项),给定

 01  SIGNED-NUMBER   PIC S99 COMP-5 VALUE -1.
01 UNSIGNED-NUMBER PIC 99 COMP-5.
...
MOVE SIGNED-NUMBER TO UNSIGNED-NUMBER
DISPLAY UNSIGNED-NUMBER

结果:255。但是...

COMPUTE UNSIGNED-NUMBER = SIGNED-NUMBER + ZERO

结果:1​​(无符号)

因此,为了回答您的问题,这可以归类为一种使用将有符号数转换为无符号数的技术。但是,在您提供的代码示例中,它根本没有任何意义。

关于db2 - COBOL 将 0 添加到 COMPUTE 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8512009/

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