如何在 RPGLE Fixed 或自由格式中声明小数位?
How to declare Decimal place in RPGLE Fixed or in free format?
我对RPGLE了解不多。我正在尝试解决给我的这个小练习。我从未工作过或看过使用小数的练习。我想获得 7 个值的百分比。所以,我想做下面的计算。
例如RPGLE。
DTotal S 3P 0
DPercnt S 2P 2
/Free
Total = 589;
Percnt = (Total/700)100;
Dsply Percnt;
*Inlr = *On;
/End-Free
预期输出为 84.142857143
或小数点四舍五入到两位 (84.14)
或四位 (84.1430)
。
- 我应该为
Total
和 Percent
变量使用哪种数据类型?
- 如何声明
Percent
变量(打包或分区)以保留两位或四位或 N 位小数?
- 请问谁能在《RPG IV》或Fixed format中输入声明部分和计算部分?
我遇到的错误和我进行的更正:
The end of the expression is expected.
(在 SEU 中)
上面的错误,我加了*
,解决了Percnt = (Total/700) * 100;
下面是第二个错误。
The target for a numeric operation is too small to hold the result (C G D F)
对于上述错误,我将 Percnt
变量长度增加到 4P 2
。
但是这次答错了,DSPLY 8414
。不符合预期。
所以,我按照下面的建议使用了 Eval
。 Eval(H) Percnt = (Total/700) * 100;
仍然是相同的输出:DSPLY 8414
.
谢谢@Barbara。我很晚才注意到这个提示。 DSPLY (%CHAR(Percnt))
给了我想要的输出 84.14
.
RPG 数值变量由总位数和小数位数定义。所以如果你想要两个整数位和两个小数位(12.34),定义变量为 packed(4:2) in free-form 或者 4P 2 in fixed form.
如果要舍入,请为操作码编写 (H) 扩展符('H' 代表“half-adjust”)。赋值的操作码是 EVAL 操作码,通常被省略。但是如果你想添加一个扩展器,你必须编码它。
DTotal S 3P 0
DPercnt S 4P 2
Total = 589;
Eval(H) Percnt = (Total/700) * 100;
DSPLY (%CHAR(Percnt));
*Inlr = *On;
除非您使用的是 7.1 之前的版本,否则您不需要再编写 /FREE 和 /END-FREE。
我对RPGLE了解不多。我正在尝试解决给我的这个小练习。我从未工作过或看过使用小数的练习。我想获得 7 个值的百分比。所以,我想做下面的计算。
例如RPGLE。
DTotal S 3P 0
DPercnt S 2P 2
/Free
Total = 589;
Percnt = (Total/700)100;
Dsply Percnt;
*Inlr = *On;
/End-Free
预期输出为 84.142857143
或小数点四舍五入到两位 (84.14)
或四位 (84.1430)
。
- 我应该为
Total
和Percent
变量使用哪种数据类型? - 如何声明
Percent
变量(打包或分区)以保留两位或四位或 N 位小数? - 请问谁能在《RPG IV》或Fixed format中输入声明部分和计算部分?
我遇到的错误和我进行的更正:
The end of the expression is expected.
(在 SEU 中)上面的错误,我加了
*
,解决了Percnt = (Total/700) * 100;
下面是第二个错误。
The target for a numeric operation is too small to hold the result (C G D F)
对于上述错误,我将
Percnt
变量长度增加到4P 2
。但是这次答错了,
DSPLY 8414
。不符合预期。所以,我按照下面的建议使用了
Eval
。Eval(H) Percnt = (Total/700) * 100;
仍然是相同的输出:
DSPLY 8414
.谢谢@Barbara。我很晚才注意到这个提示。
DSPLY (%CHAR(Percnt))
给了我想要的输出84.14
.
RPG 数值变量由总位数和小数位数定义。所以如果你想要两个整数位和两个小数位(12.34),定义变量为 packed(4:2) in free-form 或者 4P 2 in fixed form.
如果要舍入,请为操作码编写 (H) 扩展符('H' 代表“half-adjust”)。赋值的操作码是 EVAL 操作码,通常被省略。但是如果你想添加一个扩展器,你必须编码它。
DTotal S 3P 0
DPercnt S 4P 2
Total = 589;
Eval(H) Percnt = (Total/700) * 100;
DSPLY (%CHAR(Percnt));
*Inlr = *On;
除非您使用的是 7.1 之前的版本,否则您不需要再编写 /FREE 和 /END-FREE。