如何在RPGLE中的char数组中获取元素数

时间:2018-10-24 22:09:29

标签: rpgle

有没有一种方法可以获取数组中的元素数量?

我有一个数组,每个元素的长度为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)             '        '

1 个答案:

答案 0 :(得分:4)

简而言之,不。 RPG不是像Java或Ruby这样的面向对象的语言,因此此类数组没有内置的过程和数据类型。在这方面,它更接近于较老的非面向对象的过程语言,例如C。像大多数语言决策一样,这会使某些事情变得更容易,而另一些事情则变得更难。在这种情况下,如果需要,您必须自己跟踪数组大小和其他详细信息。