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

How to get number of elements in char array in 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)             '        '

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