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

问题描述

我正在尝试将变量值从分区十进制格式转换为字符,但这样做时,我需要根据 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 语句的代码的整个业务目标。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...