我有一个RPGLE
子程序,它返回一个dim(100)数组作为输出。当阵列没有完全填满时,我看到未使用的索引中的空白。我需要摆脱那些尾随空白并仅返回带有值的数组索引。
Dcl-Pr SubProc char(10) dim(100);
End-Pr
RPG IV有可能吗?
答案 0 :(得分:1)
为什么这很重要?您使用100个元素定义了数组,这就是要传递的内容。您无法定义要返回的可变长度数组。你可以处理数组,直到找到一个空行,或者你可以在这样的参数中返回数组和行数:
dcl-pi *n;
array char(10) dim(100);
length int(5);
end-pi;
或者,考虑到它,您可以返回包含数组和长度的数据结构,如下所示:
dcl-ds rtnds_t Qualified Template;
length int(5);
array char(10) dim(100);
end-ds;
dcl-pi *n likeds(rtnds_t);
end-pi;
然后在for循环中处理返回的数据结构。
答案 1 :(得分:1)
如前所述,列表似乎是真正想要的。
RPG中有一些列表实现,f。即
根据您要对数据执行的操作,您应该选择其中一个,请参阅http://blog.rpgnextgen.com/blog/2017/02/19/lists-arraylist-vs-linked-list。
文档:http://iledocs.rpgnextgen.com和http://iledocs.sourceforge.net/docs/index.php?program=/QSYS.LIB/FIST1.LIB/QRPGLESRC.FILE/LLIST.MBR(因为没有为链接列表生成新的ILEDocs)
答案 2 :(得分:0)
您可以通过返回varchar数组来删除数组中的尾随空白。但是你仍然会返回整个阵列。
Node.char
...
DCL-PR dan1 varchar(10) dim(100);
end-pr;
答案 3 :(得分:0)
IBMi Rest Web Services - Part3
dcl-ds wrapperDS qualified;
ArrayName char(1) dim(999);
ArrayName_LENGTH int(10);
end-ds;
for i = 1 to ArrayName_LENGTH;
//Process each array entry in the loop
println(ArrayName(i));
endfor;