在RPG过程中接受未知大小的数组

Sar*_*emp 3 arrays rpg rpgle

我正在尝试创建一个将采用数组并返回已使用元素计数的过程(为什么这不是BIF?).我正在努力找到一种方法将一个未知大小的数组传递给我的程序.

就像是...

P count         B
D count         PI              3  0 
D  array                         *
D  size                        10  0
D  elems                        3  0
 *
D ct            S               3  0
 /free
  // find the first blank or zero element and return 
 /end-free
P count         E
Run Code Online (Sandbox Code Playgroud)

显然我是新手,所以我有几个问题:

  1. 有没有办法将size和max元素作为参数传递(或者可能是一种传递一种带有数据详细信息的头文件包的方法)?
  2. 有没有办法确定数据的类型?(所以我知道是否要寻找*ZEROS或*BLANKS)
  3. 我错过了其他一些更好的方法来解决这个问题吗?

我知道我可以保留一个单独的计数器变量,只要我在数组中设置一个元素就会增加,但我真的想找到一个更好的解决方案...谢谢你阅读.

Buc*_*bro 7

我已经在RPG中编程......很长一段时间.看到一个新的RPG程序员是非常了不起的,看到现代编码概念从一开始就使用起来是非常了不起的.

RPG开始使用固定大小的一切.固定大小的字符串,固定大小的数字和固定大小的数组.作为一种基于打孔卡的强类型语言,这一切都是有道理的.当然,现代计算要求往往需要不同大小的字符串,数字和数组.RPG仍然是强类型的,因此给定变量只能是字符串或数字; 它永远不会切换类型.这也意味着编译器没有办法在运行时确定变量类型 - 变量类型是不可变的,程序员和编译器都知道该类型是什么.那好吧.

至于你的不同长度数组,有一些希望.Mihael Schmidt有一个名为ArrayList服务程序,可以满足您的许多需求.

  • 对于调试,您可以通过RPG操作代码DUMP强制执行.这将在程序执行时生成程序中每个变量的假脱机文件.为了更好一点,我使用SEP Developer调试器和Rational Developer for i.RDi是一个很棒的IDE,带有编辑器,浏览器和调试器. (2认同)