разница между коболом и рисунком, имеющим тире (-) и имеющим X - PullRequest
2 голосов
/ 16 сентября 2011

В чем различия между двумя изображениями ниже?

PIC X (15)

PIC ----, ---, ---. 99.

Является ли дно еще одним способом изобразить верх?

Ответы [ 2 ]

9 голосов
/ 16 сентября 2011

PIC X(15) Представляет 15 символов практически любого типа данных, могут быть цифры, буквы или любые другие символы (для печати или нет).

PIC ----,---,---.99 Представляет элемент данных с числовым редактированием, способный содержать значенияв диапазоне от +999999999,99 до -999999999,99.Этот элемент будет отображать начальный знак минус, если значение, помещенное в него, является отрицательным, в противном случае будет отображаться число без начального знака.Отображаемое число будет иметь запятые в указанных позициях при условии, что перед ним будет хотя бы одна цифра.

Вот несколько примеров того, как определенные числа будут отображаться:

999999999.99 displays as 999,999,999.99
1234.56      displays as       1,234.56
0            displays as            .00
-1234567.12  displays as  -1,234,567.12
-3           displays as          -3.00

Переменные, подобные этой, предназначены только для отображения.Даже не думай заниматься арифметикой с ними!С учетом следующих объявлений данных:

01 DISP-NBR   PIC ----,---,---.99.
01 NBR        PIC S9(9)V99.

Следующие MOVE обе операции действительны

MOVE 1234.56 TO NBR
MOVE 1234.56 TO DISP-NBR

Тем не менее,

ADD 1 TO NBR

совершенно допустимо, но ...

ADD 1 TO DISP-NBR

выдаст ошибку компиляции.Даже если DISP-NBR содержит числовые данные, они представлены только в формате отображения.Вам нужно сделать математику, используя чисто числовые элементы данных, а затем MOVE их, чтобы отобразить поля для «красивой печати».

В этой таблице описаны все элементы PICTURE, которыеможет использоваться в COBOL и для чего они нужны.

2 голосов
/ 16 сентября 2011

Первый может иметь любые буквенно-цифровые символы.

Второй используется для форматирования числа.Тире означает, что если у вас отрицательное число, рядом с (слева) от номера будет отображаться тире.Будет отображаться только один тире.Если число положительное, для каждой тире будет отображаться пробел.

...