Определения / шаблоны структуры данных в RPG (LE) - PullRequest
4 голосов
/ 21 октября 2008

скажем, у меня есть структура данных, например

d dog           DS                  qualified
d   name                        20
d   breed                       20
d   birthdate                    8  0

Я могу определить

d   poochie                         likeds(dog)

и использовать poochie.name и т. Д.

Но могу ли я просто установить «собаку» как шаблон, не создавая структуру в памяти?

Ответы [ 4 ]

7 голосов
/ 02 ноября 2008

В V6R1 будет другое ключевое слово, которое называется ШАБЛОН. Структуры данных с ним не создаются в памяти и просто используются компилятором для справки. Вы также можете комбинировать его с inz (), чтобы иметь значения по умолчанию в ваших избранных ().

5 голосов
/ 21 октября 2008

На ум приходят два варианта. Во-первых, необходимо создать элемент-источник с d-спецификациями для атрибутов dog и вместо использования favs (dog) иметь / copy после каждой структуры данных, которая будет использовать это определение подполя. На мой взгляд, это может привести к некоторому небрежному коду и затруднить анализ в будущем. С другой стороны, если вы используете одну и ту же структуру данных в нескольких программах, есть преимущества.

Второй вариант, который приходит на ум, - использовать ключевое слово Based () в структуре данных dog, а затем определять поле указателя. Поле указателя будет занимать некоторую память, но структура данных dog не будет занимать какую-либо память, пока ваша программа не выделит ее. Ключевое слово Based () не переносится в другие структуры данных, определенные для него с помощью LikeDS (). Таким образом, у вас есть структура данных, определенная в исходной программе. Вам не нужно выделять для этого память, и вам не нужно устанавливать указатель на какое-либо значение. По умолчанию это Null. Просто будьте осторожны, чтобы не получить доступ к структуре данных dog в вашем коде. Вы получите ошибку указателя, которая выглядит так же, как если бы ваша программа была вызвана без обязательного параметра.

3 голосов
/ 12 декабря 2008

Сделайте это: BASED (указатель-имя)

Использование указателя не требуется --- Я думаю, что будет делать то, что вы хотите.

0 голосов
/ 21 октября 2008

Насколько мне известно, нет. Но может быть возможно сделать нечто подобное с подпроцедурами.

Отправьте этот вопрос на Midrange.com RPG-L , и кто-то умнее меня сможет ответить на ваш вопрос.

...