RPG(LE)中的数据结构定义/模板

时间:2008-10-21 14:39:59

标签: ibm-midrange rpgle

假设我有一个数据结构,例如

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

然后我可以定义

d   poochie                         likeds(dog)

并使用poochie.name等。

但是我可以将'dog'设置为模板而不在内存中创建结构吗?

4 个答案:

答案 0 :(得分:7)

在V6R1中会有另一个名为TEMPLATE的关键字。带有它的数据结构不是在内存中创建的,只是由编译器用于参考。你也可以将它与inz()结合起来,在你的喜欢()中使用默认值。

答案 1 :(得分:5)

有两种选择。第一种是使用dog属性的d-spec创建一个源成员,而不是使用likeds(dog),在每个将使用该子字段定义的数据结构之后都有/ copy。在我看来,这可能会造成一些草率的代码,并且可能使某些人难以分析道路。另一方面,如果您在多个程序中使用相同的数据结构,则会带来好处。

首先想到的选项是在dog数据结构上使用Based()关键字,然后定义指针字段。指针字段将占用一些内存,但是狗数据结构在程序分配之前不会占用任何内存。使用LikeDS(),Based()关键字不会转移到针对它定义的其他数据结构中。这样,您就可以在程序源中定义数据结构。您不必为它分配内存,也不必将指针设置为任何值。它默认为Null。请注意不要在代码中访问dog数据结构。你会得到一个指针错误,看起来与没有必需参数的程序调用相同。

答案 2 :(得分:3)

执行此操作:基于(指针名称)

使用指针是不必要的 - 我认为会做你想做的事。

答案 3 :(得分:0)

据我所知,没有。但是可以用子程序做类似的事情。

Midrange.com RPG-L上发布此问题,而且比我聪明的人可以回答您的问题。