gpt4 book ai didi

cobol - 除法功能是什么意思

转载 作者:行者123 更新时间:2023-12-01 09:20:54 24 4
gpt4 key购买 nike

DIVIDE  WS-ENT-CNYR-RED BY 4 GIVING WS-DT-CNYR 
REMAINDER WS-YR-REMAINDER ON SIZE ERROR.

这是什么意思?

最佳答案

DIVIDE是一个COBOL动词,可让您像数学一样进行除法运算。

您的手册和课程笔记中涵盖了该动词以及其他数学动词。

您显示的实际DIVIDE在语法上是不正确的:ON SIZE ERROR短语后应有一个“命令式”。没有任何合理的COBOL编译器将允许该语句进行编译。

DIVIDE在做什么?这很可能是a年支票的开始。如果将一年除以四,则可以选择为leap年(除非也可以除以400,否则也不能除以100)。

除法的结果放置在GIVING之后的数据名称中,而除法的“剩余”则放置在REMAINDER之后的数据名称中。

通常,当使用REMAINDER时,将用整数除,这对于一年是有意义的。 2015年除以四得到503,其余为三。不是a年。

在这种情况下,ON SIZE ERROR应该是多余的。它用文字(4)除,除非结果字段的大小不足以包含结果,否则永远不会出现SIZE ERROR。

数据定义应为:

ll  WS-ENT-CNYR-RED                  PIC 9(4).
ll WS-DT-CNYR PIC 9(3).
ll WS-YR-REMAINDER PIC 9.

除非当年的价值很高,否则WS-DT-CNYR必须为9(4)。 ll是一个级别编号,它将在01-49(或1-49)或77的范围内。

88级条件名称应出现在WS-YR-REMAINDER上,例如:
88  could-be-leap-year               VALUE ZERO.

在COBOL中很常见。如果未使用GIVING,则结果存储在语句中提到的字段之一中(您应检查DIVIDE, MULTIPLYADDSUBTRACT的哪个字段)。

剩余部分只有在需要除数的“模数”时,您才会看到。

除非指定了ROUNDED短语,否则不会舍入结果,而使用REMAINDER舍入没有太大意义。

在此示例中,只有WS-ENT-CNYR-RED必须是数字项。 WS-DT-CNYR和WS-YR-REMAINDER都可以是数字编辑的项目。格式化报告行时,GIVING上的项目通常会进行数字编辑。在这个开始a年检查的典型代码中,很可能全部都是数字,而全部都是整数。

根据使用这三个项目的数量以及如何使用它们,可以将它们定义为PACKED-DECIMAL(对于该编译器而言,无论哪个COMPUTATIONAL-?打包为十进制)或什至是二进制。

这不一定是a年检查的开始。除以4并需要知道余数可能还有其他原因。

请注意,DIVIDE ... INTO ...也是有效的。确实,1985年COBOL标准(及更早版本)中记录的DIVIDE语句有五种不同的格式,您应该在手册中看到这些格式。

ON SIZE ERROR告诉编译器在发生“大小错误”时生成代码。 “大小错误”是指结果不适合为其提供的字段。
  ON SIZE ERROR 
imperative-statement.

要么
  ON SIZE ERROR 
imperative-statement.
END-... (scope-delimiter, consists of END- prefix and verb used, in this case `END-DIVIDE`).

命令式语句可以是多个语句,但通常是一个语句(将结果字段设置为默认值,通常为零)。因为它可以是多个语句,所以终止该语句非常重要,否则您将使非期望的代码成为命令性语句的一部分。

许多人认为ON SIZE ERROR仅适用于“除以零”,但事实并非如此。如果由于字段的大小而导致结果不适合某个字段,则发生“大小错误”。

我不使用ON SIZE ERROR。我确保非零除数,并且所有结果字段都足够大以包含预期的结果。

因为我不使用ON SIZE ERROR,所以我不知道REMAINDER是否也会引起尺寸错误。我会检查 :-)

好,我检查了。这是与IBM的Enterprise COBOL一起使用的,除了扩展之外,它还适用于1985年标准。如果“剩余”字段太小而无法容纳剩余部分,则会处理“打开大小错误”。因此,请非常注意剩余字段的大小,因为无法知道哪个字段导致了大小错误。

记录如下:

SIZE ERROR短语有关格式1、2和3,请参阅“SIZE ERROR短语”
在第296页。
对于格式4和5,如果尺寸错误出现在
商,没有余数计算是有意义的。因此,
商字段(标识符3)和余数字段的内容
(标识符4)不变。如果其余部分出现尺寸错误,
其余字段(标识符4)的内容不变。在
在这两种情况下,您都必须分析结果以确定
情况实际上已经发生。

格式4和5带有REMAINDER。

如果未指定ON SIZE ERROR,则行为将取决于单个编译器和运行时选项。 Enterprise COBOL将截断这些字段,但仅在转到运行时(语言环境)检查您是否希望发生其他事情之后才进行截断。相对于指定ON SIZE ERROR,这将花费大量时间。

因此,请确保您的字段大小正确。如果您不想这样做,请使用ON SIZE ERROR。如果将ON SIZE ERROR与REMAINDER结合使用,则必须确定自己是引起SIZE ERROR的原因,然后再执行任何操作。

ON SIZE ERROR有一个对应项,NOT ON SIZE ERROR。它的用法类似于ON SIZE ERROR,但有明显的区别。 ON SIZE ERROR和NOT ON SIZE ERROR可以同时使用:
DIVIDE WS-ENT-CNYR-RED       BY 4 
GIVING WS-DT-CNYR
REMAINDER WS-YR-REMAINDER
ON SIZE ERROR
imperative-statement-1
NOT ON SIZE ERROR
imperative-statement-2
END-DIVIDE (or .)

关于cobol - 除法功能是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33037286/

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