AS400 WRKQRY 连接十进制

AS400 WRKQRY Concatenate Decimal

在 WRKQRY > 定义结果字段中尝试连接两个字段(其中一个字段包含小数)时会引发错误。

如何获取要连接的带小数的值?

DSICF = .400

DSIUM = 毫克

Field       Expression                         Column Heading       
DOSE        DSICF||DSIUM                       DOSE

连接运算符不允许值。

经过研究,IBM 声明如果表达式中的任何字段是双字节字符集 (DBCS)-图形,则表达式中的所有字段或常量都必须是 DBCS-图形。

仍在研究中。

DIGITS() 似乎是唯一支持数字到字符转换的运算符 Query for i。我怀疑它不会给你你想要的...

CHAR() 和 VARCHAR() 适用于日期、时间和时间戳...

将不受支持且过时的 Query for i product 移至基于 SQL 的解决方案将为您提供最好的服务。

IBM 希望您使用 WebQuery...

但是查询管理器 (STRQM) 是一个 5250 工具,它甚至可以读取和执行您的 Query/400 查询。在提示模式下,它类似于 Query/400,但具有 SQL 的所有功能。

带小数的数字字段必须先转换为字符串。但是,您在此转换中丢失了小数点。为了将小数加回去,您必须解析字符串并手动连接小数。

例子

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