gpt4 book ai didi

cobol - COBOL中 `NOT ON OVERFLOW`有什么用?

转载 作者:行者123 更新时间:2023-12-05 09:15:26 25 4
gpt4 key购买 nike

根据我在使用 UNSTRING 时的理解,如果在使用 UNSTRING 时发生溢出,则使用 ON OVERFLOW [INSTRUCTION] 将很有用

但是如果没有溢出,为什么要使用 NOT ON OVERFLOW [INSTRUCTION] 呢?

NOT ON OVERFLOW [INSTRUCTION] 的唯一可能的用途是在没有溢出的情况下传递一条指令,但如果您已经从UNSTRING ?

有没有具体的例子说明这在这个例子中是如何有用的:

IDENTIFICATION DIVISION.
PROGRAM-ID. YOUR-PROGRAM-NAME.
DATA DIVISION.
FILE SECTION.


WORKING-STORAGE SECTION.
01 WS-VAR1 PIC A(11) VALUE "Hello World".
01 WS-VAR2 PIC A(5).
01 WS-VAR3 PIC A(5).
01 WS-COMPTEUR PIC 9 VALUE 2.

PROCEDURE DIVISION.
MAIN-PROCEDURE.
INTO WS-VAR2 WS-VAR3
WITH POINTER WS-COMPTEUR
ON OVERFLOW DISPLAY "This string is too large"
END-UNSTRING.

DISPLAY WS-VAR2
DISPLAY WS-VAR3.
STOP RUN.
END PROGRAM YOUR-PROGRAM-NAME.

即使在我阅读 IBM 文档时,它也没有给我太多关于在这种情况下可以使用什么的解释,而是显示一条消息?

IBM 文档:link

最佳答案

From my understanding when using UNSTRING, the use of ON OVERFLOW phrase will be useful if there would be an overflow in the use of the UNSTRING.

But if there is no overflow, why would you use NOT ON OVERFLOW phrase ?

The only possible utility to the NOT ON OVERFLOW phrase would be to pass an instruction if there is no overflow but what would be the use of that if you already had the expected result from the UNSTRING ?

在 COBOL 74 中没有 NOT ON OVERFLOW 短语。因此,有必要使用 GO TO 语句或在紧随其后的 IF 语句中设置测试标志。 COBOL 85 中加入了NOT ON OVERFLOW 短语和END-UNSTRING 以改进程序结构。

对于您的示例,我做了一些更改,首先显示 WS-VAR1,然后显示 UNSTRING 的结果。请注意,OVERFLOW 条件涉及项目的数量而不是文本的长度。我运行了三个测试来显示结果

   IDENTIFICATION DIVISION.
PROGRAM-ID. YOUR-PROGRAM-NAME.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-VAR1 PIC A(11) VALUE "Hello World".
01 WS-VAR2 PIC A(5).
01 WS-VAR3 PIC A(5).
PROCEDURE DIVISION.
MAIN-PROCEDURE.
MOVE SPACE TO WS-VAR2 WS-VAR3
DISPLAY WS-VAR1
UNSTRING WS-VAR1
DELIMITED SPACE
INTO WS-VAR2 WS-VAR3
ON OVERFLOW
DISPLAY
"Incorrect number of items in WS-VAR1 - expected 2"
NOT ON OVERFLOW
DISPLAY WS-VAR2
DISPLAY WS-VAR3
END-UNSTRING
STOP RUN.
END PROGRAM YOUR-PROGRAM-NAME.

结果:

Hello World
Hello
World
--
Hello
Incorrect number of items in WS-VAR1 - expected 2
--
Hello W rld
Incorrect number of items in WS-VAR1 - expected 2

从代码中可以看出,ON OVERFLOW用于错误处理; NOT ON OVERFLOW 用于正常处理。如果没有 NOT ON OVERFLOW 的改进结构,正常处理将紧跟在错误处理之后,除非使用前面提到的 COBOL 74 类型处理。

请注意,DELIMITED ALL SPACE 给出的结果与上面一种情况下显示的结果不同。 [忽略--]

--
Hello
Hello

--

关于cobol - COBOL中 `NOT ON OVERFLOW`有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52506447/

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