有没有一种方法可以获取数组中的元素数量?
我有一个数组,每个元素的长度为dim 99和char 8。通过程序添加了元素。
类似于Java或ruby中的size
阵列防御:
DCL-S docs char(8) DIM(99) descend;
将所有内容设置为空白,并向数组添加一些字符串
docs = *blanks;
docs(1) = 'doc1 ';
docs(2) = 'doc2 ';
我尝试过的事情:
// Gives 8, size of each element, not size looking for
%size(docs);
// Gives 99, size of elements
%elem(docs);
唯一可行的方法:
SORTA(D) docs;
count = %LOOKUP(*BLANKS : docs) - 1;
// count is 2 because thats how many documents were added
要考虑的另一件事是执行转储,变量清楚地组织为置位变量和空变量。
DOCS CHAR(8) DIM(99)
(1) 'DOC1 '
(2) 'DOC2 '
(3-99) ' '
答案 0 :(得分:4)
简而言之,不。 RPG不是像Java或Ruby这样的面向对象的语言,因此此类数组没有内置的过程和数据类型。在这方面,它更接近于较老的非面向对象的过程语言,例如C。像大多数语言决策一样,这会使某些事情变得更容易,而另一些事情则变得更难。在这种情况下,如果需要,您必须自己跟踪数组大小和其他详细信息。