我有一个相当基本的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正确解释带符号的值?
我认为这是由于该值如何存储在原始内存中。
是
通常,大多数cobol编译器都这样做吗?
一个猜测:是的(实际显示会有所不同,但是我敢肯定,至少在这种情况下,大多数COBOL环境不会满足您的期望)]
是否有办法让cobol正确解释带符号的值?
是,但是有“ COBOL”要做:
ACCEPT
以及DISPLAY
也可能使用一种实际具有所需数据的格式,例如PIC +ZZZ9.999$
。SCREEN SECTION
输入数据,这将为您提供两个单独的字段,并且为大多数COBOL环境提供合理的输入验证。