AS400 WRKQRY сцепленный десятичный - PullRequest
0 голосов
/ 28 сентября 2018

В WRKQRY> Определить поля результатов выдает ошибку при попытке объединить два поля, где одно поле содержит десятичное число.

Как получить значение с десятичным знаком для объединения?

DSICF = .400

DSIUM = MG

Field       Expression                         Column Heading       
DOSE        DSICF||DSIUM                       DOSE

Значение не допускается с оператором конкатенации.

После исследования IBM заявляет, что если какое-либо поле в выражении является двухбайтовым набором символов (DBCS), все поля или константы в выражении должны быть DBCS-графическими.

Все еще исследую.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Числовые поля с десятичными числами должны быть сначала преобразованы в строку.Однако в этом преобразовании вы теряете десятичную дробь.Чтобы добавить десятичную запятую, необходимо проанализировать строку и вручную объединить десятичную дробь.

Пример

DCIFC = 0.400
DCIUM = MG

Field           Expression
CNVRTUNIT        digits(DCIFC)  //Converts .400 to 0000000400 

NEWUNIT         substr(CNVRTUNIT,7,1)||'.'||substr(CNVRTUNIT,8,2)||'/'||DCIUM

-----
NEWUNIT now equals 0.400/MG
0 голосов
/ 28 сентября 2018

DIGITS () - единственный оператор Query для i, который поддерживает преобразование чисел в символы.Я подозреваю, что это не даст вам того, что вы хотите ...

CHAR () и VARCHAR () работают для дат, времени и временных меток ...

Вы были бы лучшеслужил удалением неподдерживаемого и устаревшего продукта Query for i в решение на основе SQL.

IBM хочет, чтобы вы использовали WebQuery ...

Но Query Manager (STRQM) - это инструмент 5250который может даже читать и выполнять ваши запросы Query / 400.В режиме подсказки он похож на Query / 400, но со всеми функциями SQL.

...