Как получить количество элементов в массиве символов в RPGLE - PullRequest
0 голосов
/ 25 октября 2018

Есть ли способ получить количество элементов в массиве?

У меня есть массив, dim 99 и длина char 8 каждого элемента.Элементы добавляются через программу.

Что-то похожее на size в java или ruby ​​

Определение массива:

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 голосов
/ 25 октября 2018

Короче, нет.RPG не является объектно-ориентированным языком, таким как Java или Ruby, и поэтому такие массивы не имеют встроенных процедур и типов данных.В этом отношении он намного ближе к старым не объектно-ориентированным процедурным языкам, таким как C.Как и в случае большинства языковых решений, это приводит к тому, что некоторые вещи становятся проще, а другие - сложнее.В этом случае вы должны сами следить за размерами массивов и другими деталями, если они вам нужны.

...