如何在部分自由格式 RPG 中将 variable/fields 值转换为 IBM 签名数值

How to convert variable/fields value into IBM signed numeric values in Partially Free Format RPG

我正在尝试将变量值从分区十进制格式转换为字符,但在这样做时,我需要根据 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将数值移动到字符域时,字符域基本上得到的是数值的分区十进制值。

%EDITC 使用 X 编辑代码执行此操作。

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

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