Как преобразовать символ в десятичный прогресс 4GL? - PullRequest
0 голосов
/ 19 апреля 2019

Я написал запрос для отображения символа в виде десятичного значения, но получил ошибку. Позвольте мне поделиться:

DEFINE VARIABLE cDateTime AS CHARACTER NO-UNDO.

DEFINE TEMP-TABLE tt_data NO-UNDO
    FIELD DateTime   AS DECIMAL FORMAT "->>,>>9.99".

ASSIGN
cDateTime = "20191604121566".

CREATE tt_data.
ASSIGN
tt_data.DateTime = DECIMAL(cDateTime) /* Message Date and Time */

Но там написано:

"Невозможно отобразить значение с помощью - >>>, >>>, >> 9.999999".

Не могли бы вы помочь этому делу и сказать, что здесь не так?

Ответы [ 2 ]

5 голосов
/ 19 апреля 2019

Код, который вы показываете, не приводит к сообщаемой вами ошибке.

Я предполагаю, что у вас есть оператор DISPLAY где-то в вашем реальном коде.

Сообщенная ошибкапросто означает, что этот формат DISPLAY недостаточно широк для данных.По умолчанию DISPLAY будет использовать любой формат, который вы указали в определении элемента данных.Если вы ничего не указали, то каждый тип данных также имеет значение по умолчанию.Для десятичных чисел по умолчанию используется значение «- >>, >>>. 99».

Вы можете увеличить формат в определении или переопределить его в операторе отображения следующим образом:

display tt_data.DateTime format ">>>>>>>>>>>>>>>9". 

Примечание: формат отображения не влияет на значения, которые вы можете сохранить в поле.Вы всегда можете «залить» больше данных в переменную, чем можете отобразить.Формат предназначен только для вывода на экран - он не имеет ничего общего с хранилищем.

3 голосов
/ 19 апреля 2019

Назначение работает нормально, но на дисплее нет.

Итак ...

DISPLAY tt_data.DateTime.

... не работает, так как использует формат "- >>, >> 9.99".

Вы можете изменить формат в определении, например «99999999999999», или сделать:

DISPLAY tt_data.DateTime FORMAT "99999999999999".
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...