我有以下RPGLE计划:
dmypgm pr extpgm('MYPGM')
d myarr like(myarr)
d somevar like(somevar)
d myarr s 64a dim(100)
d somevar s 65a
/free
callp mypgm(myarr: somevar);
*inlr = *on;
/end-free
当我尝试在V6R1盒子上编译它时,我收到错误消息:
RNF5343 30 1 Array has too many omitted indexes; specification is ignored.
有些documentation告诉我:
RNF5343
数组有太多省略的索引;规范被忽略了。
30
原因。 。 。 。 。 :用作数组的省略索引数 赋值运算符右侧的操作数大于 指定为结果的数组的省略索引数 任务。
恢复。 。 。 :减少操作数的省略索引数; 或者增加结果的省略索引数。编 试。
这不是很有用,因为这是一个程序调用,而不是尝试分配一个值(比如EVAL
语句或其他东西)。
如果我将外部程序调用的声明更改为:
dmypgm pr extpgm('MYPGM')
d myarr 64a dim(100)
d somevar like(somevar)
程序编译得很好。
那么如何将LIKE
关键字与数组一起用于外部程序定义?
答案 0 :(得分:5)
LIKE仅继承数据类型,长度,数据类型和CCSID。 要传递数组,请同时使用LIKE和DIM:
dmypgm pr extpgm('MYPGM')
d myarr like(myarr) dim(%elem(myarr))
d somevar like(somevar)
d myarr s 64a dim(100)
d somevar s 65a