%Elem在rpgle中不适用于嵌套数据结构数组

问题描述 投票:0回答:1
//我有这样的数据结构

DCL-DS MainDS qualified; SubField packed(7:0); Dcl-DS DetailDS dim(100); detail_1 char(1); Dcl-DS DetailsofDetails dim(100); innerField1 packed(10:0); InnerField2 char(5); End-Ds; End-ds; End-Ds; I need to read the DS for count = 1 to %elem(MainDS.DetailDS) for innercount = 1 to %elem(MainDS.DetailDS(count).DetailsofDetails) ---- //inside logic endFor; --- endFor;

我的详细信息dataStrucure中只有2个元素。但是,InterCount仍在上升到100的数组尺寸。我需要内部循环才能直至2,而不是100。
我在这里错过了什么?

%Elem告诉数组可以保存的元素数量,而不是您已加载的元素数量。实际上,数组中有100个元素,只有大多数元素在定义时都包含内存中的任何内容。当您“加载”一个元素时,您实际上只是在更改其中的值。内存是静态的。

为了做自己想做的事情,您要么需要初始化数组,因此您将识别一个空元素,或者您需要跟踪加载到其中的元素的数量。您可以使用外部阵列中的计数器来做到这一点。如果您并不总是想循环遍历所有100个元素,则还必须跟踪加载到外部阵列中的元素数量。独立变量可用于执行此操作。
rpgle
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.