从RPGLE Array中删除未使用的索引

时间:2017-11-08 10:22:24

标签: rpgle

我有一个RPGLE子程序,它返回一个dim(100)数组作为输出。当阵列没有完全填满时,我看到未使用的索引中的空白。我需要摆脱那些尾随空白并仅返回带有值的数组索引。

Dcl-Pr SubProc char(10) dim(100);

End-Pr

RPG IV有可能吗?

4 个答案:

答案 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.comhttp://iledocs.sourceforge.net/docs/index.php?program=/QSYS.LIB/FIST1.LIB/QRPGLESRC.FILE/LLIST.MBR(因为没有为链接列表生成新的ILEDocs)

示例:http://rpgnextgen.com/index.php?content=examples

答案 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;
相关问题