如何在部分自由格式 RPG 中将变量/字段值转换为 IBM 有符号数字值

mrs*_*ted 2 rpgle ibm-midrange

我正在尝试将变量值从分区十进制格式转换为字符,但这样做时,我需要根据 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
Run Code Online (Sandbox Code Playgroud)

Bar*_*ris 5

当 MOVEL 将数值移动到字符字段时,字符字段基本上是获取数值的分区十进制值。

带有 X 编辑代码的 %EDITC 执行此操作。

var2 = %editc (var1: 'X');

但是对于您想要将 -123.45 之类的数值转换为 '1234N' 之类的字符的每种情况,最好考虑一下您的代码为什么需要这种值。也许您需要查看 MOVEL 的结果是如何使用的。除了将 MOVEL 转换为自由格式之外,您可能希望将多个语句组合成一个过程,以完成包含 MOVEL 语句的代码的整个业务目标。