Десятичные знаки в языке COBOL - PullRequest
3 голосов
/ 12 апреля 2020

Я очень новичок в Коболе. Я следую учебным пособиям, поставляемым с Micro Focus, и не могу заставить пример работать правильно. Я пытаюсь напечатать -123.45 и получаю следующее:

Enter image description here

Я просмотрел несколько сообщений здесь, но они не решить мою проблему. Я использую Micro Focus 'Visual COBOL в Eclipse . Вот мой код,

   program-id. tictac as "tictac".

   environment division.
   configuration section.

   data division.
   working-storage section.

    01 WS-NUM3 PIC S9(3)V9(2) VALUE -123.45.


   procedure division.
       Display WS-NUM3.
       goback.

   end program tictac.

1 Ответ

9 голосов
/ 12 апреля 2020

V в предложении вашего изображения - это подразумеваемая десятичная точка. Я думаю, что вам нужно поле с PIC -999.99, где . является десятичной точкой явного , для его условия изображения.

Вы можете думать об этом как о языке COBOL, делающем различие между как определяется переменная и как она отображается. Вроде как строка формата в printf просто указывает, как показать переменную, а не как она определена. Хотя в обоих случаях определение и способ его отображения должны в определенной степени совпадать.

Выбор правильного предложения изображения для поля числового значения c важен; если вы выполняете вычисления, это может оказать существенное влияние на производительность.

Поэтому обычно имеет поле с определением, например ...

PIC 9(4)V99 COMP-3

... и соответствующий ему поле для целей вывода, таких как ...

PIC ZZZ9.99

... так, чтобы вычисления могли выполняться на первом, а при отображении поля необходимо использовать оператор MOVE для копирования содержимого с первого на второе.

...