gpt4 book ai didi

cobol - 接受签名值作为记录的一部分

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

我有一个相当基本的 Cobol 程序,用于学习记录结构。在 ACCEPT 语句中将有符号数值作为记录的一部分传递时,我注意到 gnucobol 的奇怪行为。

该程序定义如下:

IDENTIFICATION DIVISION.
PROGRAM-ID. TEST.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Account.
02 Name PIC X(5) VALUE SPACES.
02 Balance PIC S9999V999 VALUE ZEROES.
PROCEDURE DIVISION.
MAIN.
DISPLAY "Enter account details:"
ACCEPT Account.
DISPLAY "Balance is:"
DISPLAY Balance.

STOP RUN.

行为如下:
Enter account details:
AAAAA-123.456
Balance is:
+-123.045

我认为这是由于值如何存储在原始内存中。

这通常是大多数 cobol 编译器所做的吗?有没有办法让 cobol 正确解释带符号的值?

最佳答案

I assume this is due to how the value is stored in raw memory.



是的

Is this generally what most cobol compilers do?



猜测:是的(实际显示会有所不同,但我确信大多数 COBOL 环境不会按照您的意愿行事,至少以这种方式)

Is there a way to get cobol interpreting the signed value properly?



是的,但是有“COBOL”要做:
  • 以内部格式存储数据(就像您所做的那样:带有隐含 3 个小数位的带符号值),但是对于 ACCEPT 并且可能还有 DISPLAY 使用实际具有您想要的数据的格式,例如 PIC +ZZZ9.999$ ,有关详细信息,请查看 this answer
  • 从不对记录进行 ACCEPT,要么拆分为多个 ACCEPT,要么使用一个接受屏幕名称而非记录名称的单个记录 --> 使用 SCREEN SECTION 输入数据,这将为您提供两个单独的字段和大多数 COBOL环境 合理的输入验证。
  • 关于cobol - 接受签名值作为记录的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61272844/

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