问题描述
我正在尝试将变量值从分区十进制格式转换为字符,但这样做时,我需要根据 IBM 标准将它们转换的代码,在旧的 RPG 代码中,大多数开发人员使用操作码 MOVEL 和 MLLZO,但有什么替代品部分自由格式RPG的命令。
*For example,the result of below code will be var2 = 1234N
D var1 s 10s 2 inz(-123.45)
D var2 s 10
/Free
C MOVEL var1 var2
dsply var2;
*Inlr = *on;
/End-free
解决方法
当MOVEL将一个数值移动到一个字符域时,字符域基本上是得到该数值的分区十进制值。
带有 X 编辑代码的 %EDITC 执行此操作。
var2 = %editc (var1: 'X');
但是对于您想要将数值(例如 -123.45)转换为字符(例如“1234N”)的每种情况,最好仔细考虑您的代码为何需要这种值。也许您需要查看 MOVEL 的结果是如何使用的。您可能不只是将 MOVEL 转换为自由格式,而是希望将多个语句组合成一个过程,以实现包含 MOVEL 语句的代码的整个业务目标。