如何在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 等较早的非面向对象过程语言。与大多数语言决策一样,这会导致一些事情变得更容易,而另一些事情变得更难。在这种情况下,如果需要,您必须自己跟踪数组大小和其他详细信息。
有没有办法获取数组中元素的数量?
我有一个数组,每个元素的长度为 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 等较早的非面向对象过程语言。与大多数语言决策一样,这会导致一些事情变得更容易,而另一些事情变得更难。在这种情况下,如果需要,您必须自己跟踪数组大小和其他详细信息。