ILE RPG 程序无法编译
ILE RPG programm won't compile
我是 ILE RPG 的新手。今天,我开始从我的工作中整理书籍。在其中一章中有一些使用 Substring 函数的示例 %SUBSTR
。这是代码:
DMOD S 5 INZ('VWXYZ')
DCON S 5 INZ('abcde')
DLENGTH S 5 0 INZ(2)
DSTART1 S 5 0 INZ(3)
DSTART2 S 5 0 INZ(4)
D*
C mod DSPLY
C con DSPLY
C start1 DSPLY
C start2 DSPLY
C length DSPLY
C*
C EVAL %SUBST(mod:3:2) = con
C*
C EVAL %SUBST(mod : 3 : 2) = %SUBST(con : 4 : 2)
C*
C EVAL %SUBST(mod:start1:length) =
C %SUBST(con:start1:length)
C*
C EVAL %SUBST(mod:start1-1:length) =
C %SUBST(con:start2/2:length+1)
C*
C MOVE *ON *INLR
编译时出现异常执行,提示函数%SUBST
参数错误。确切地说:第二个参数是错误的。我只在最后一个 EVAL
.
中得到这个错误
您 运行 与 RPG 的 precision rules...
冲突
/运算符不是整数除法,它是数字,结果有小数位。
您需要明确控制表达式的结果类型:
DMOD S 5 INZ('VWXYZ')
DCON S 5 INZ('abcde')
DLENGTH S 5 0 INZ(2)
DSTART1 S 5 0 INZ(3)
DSTART2 S 5 0 INZ(4)
D*
C mod DSPLY
C con DSPLY
C start1 DSPLY
C start2 DSPLY
C length DSPLY
C*
C EVAL %SUBST(mod:3:2) = con
C*
C EVAL %SUBST(mod : 3 : 2) = %SUBST(con : 4 : 2)
C*
C EVAL %SUBST(mod:start1:length) =
C %SUBST(con:start1:length)
C*
C EVAL %SUBST(mod:start1-1:length) =
C %SUBST(con:%int(start2 / 2):length+1)
C*
C MOVE *ON *INLR
我是 ILE RPG 的新手。今天,我开始从我的工作中整理书籍。在其中一章中有一些使用 Substring 函数的示例 %SUBSTR
。这是代码:
DMOD S 5 INZ('VWXYZ')
DCON S 5 INZ('abcde')
DLENGTH S 5 0 INZ(2)
DSTART1 S 5 0 INZ(3)
DSTART2 S 5 0 INZ(4)
D*
C mod DSPLY
C con DSPLY
C start1 DSPLY
C start2 DSPLY
C length DSPLY
C*
C EVAL %SUBST(mod:3:2) = con
C*
C EVAL %SUBST(mod : 3 : 2) = %SUBST(con : 4 : 2)
C*
C EVAL %SUBST(mod:start1:length) =
C %SUBST(con:start1:length)
C*
C EVAL %SUBST(mod:start1-1:length) =
C %SUBST(con:start2/2:length+1)
C*
C MOVE *ON *INLR
编译时出现异常执行,提示函数%SUBST
参数错误。确切地说:第二个参数是错误的。我只在最后一个 EVAL
.
您 运行 与 RPG 的 precision rules...
冲突/运算符不是整数除法,它是数字,结果有小数位。
您需要明确控制表达式的结果类型:
DMOD S 5 INZ('VWXYZ')
DCON S 5 INZ('abcde')
DLENGTH S 5 0 INZ(2)
DSTART1 S 5 0 INZ(3)
DSTART2 S 5 0 INZ(4)
D*
C mod DSPLY
C con DSPLY
C start1 DSPLY
C start2 DSPLY
C length DSPLY
C*
C EVAL %SUBST(mod:3:2) = con
C*
C EVAL %SUBST(mod : 3 : 2) = %SUBST(con : 4 : 2)
C*
C EVAL %SUBST(mod:start1:length) =
C %SUBST(con:start1:length)
C*
C EVAL %SUBST(mod:start1-1:length) =
C %SUBST(con:%int(start2 / 2):length+1)
C*
C MOVE *ON *INLR