4

次のようなデータ構造があるとします

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

その後、定義できます

d   poochie                         likeds(dog)

poochie.name などを使用します。

しかし、メモリ内に構造を作成せずに、「犬」をテンプレートとして設定することはできますか?

4

4 に答える 4

7

V6R1 には、TEMPLATE と呼ばれる別のキーワードがあります。It を含むデータ構造はメモリ内に作成されず、コンパイラによって参照用にのみ使用されます。また、inz() と組み合わせて、likes() にデフォルト値を設定することもできます。

于 2008-11-02T09:24:50.350 に答える
5

2つのオプションが思い浮かびます。1つ目は、dog属性のd-specsを使用してソースメンバーを作成し、likeds(dog)を使用する代わりに、そのサブフィールド定義を使用する各データ構造の後に/copyを作成することです。私の意見では、これはいくつかのずさんなコードを作る可能性があり、誰かが将来分析するのを難しくする可能性があります。一方、これと同じデータ構造を複数のプログラムで使用している場合は、利点があります。

頭に浮かぶ2番目のオプションは、dogデータ構造でBased()キーワードを使用してから、ポインターフィールドを定義することです。ポインタフィールドはある程度のメモリを消費しますが、プログラムが割り当てるまで、dogデータ構造はメモリを消費しません。Based()キーワードは、LikeDS()で定義された他のデータ構造には引き継がれません。これにより、プログラムソースでデータ構造を定義できます。そのためにメモリを割り当てる必要はなく、ポインタを任意の値に設定する必要もありません。デフォルトはNullです。コード内のdogデータ構造にアクセスしないように注意してください。プログラムが必要なパラメータなしで呼び出された場合と同じように見えるポインタエラーが発生します。

于 2008-10-21T16:04:35.287 に答える
0

私の知る限り、いいえ。しかし、サブプロシージャーで同様のことを行うことは可能かもしれません。

この質問をMidrange.com RPG-Lに投稿してください。私より賢い人があなたの質問に答えてくれるかもしれません。

于 2008-10-21T15:49:24.270 に答える