У меня есть довольно простая программа на Коболе, которую я использую для изучения структур записей. Я заметил странное поведение gnucobol при передаче числовых значений со знаком как части записи в операторе ACCEPT
.
Программа определяется следующим образом:
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
Я предполагаю, что это связано с тем, как значение хранится в необработанной памяти.
Это обычно то, что делает большинство компиляторов кобола? Есть ли способ заставить кобол правильно интерпретировать подписанное значение?