首页 > 解决方案 > I 系列 RPGLE 在多个数组中搜索公共值

问题描述

我试图弄清楚如何使用 RPGLE 在数组的多次出现中搜索常见值,但到目前为止一直没有成功。我想要做的是找出有多少数组共享相同的共同值。每个数组长度为 1,数组长度最大为 100。例如:

Array 1 = 'a' 'b' 'c' 'd' 'e' 'f' ' ' ' '.....
Array 2 = 'a' 'b' 'c' 'd' 'e' 'g' ' ' ' '.....
Array 3 = 'd' 'c' 'a' 'b' 'h' 'e' ' ' ' '.....
Array 4 = 'k' 'b' 'e' 'd' 'a' 'g' ' ' ' '.....

我试图找到一种简单的方法来确定字母 a、b、d 和 e 在数组之间都是通用的,或者这些字母中的每一个都是在数组之间共享的。

有谁知道如何轻松地进行此搜索,所以我不必最终陷入嵌套的do's和if's hell?当一个数组的所有 100 个元素都被填满时,它会变得非常棘手。不过,好消息是只有 10 个数组可以填写。

提前致谢!

标签: arraysibm-midrangerpgle

解决方案


好消息是,如果您使用的是 7.3 或 7.4,IBM 刚刚发布了一些RPG 增强功能,包括FOR-EACH操作码和%LIST()bif

坏消息,我不认为那会是一根魔杖……

您是否只查找所有 10 个数组共有的值?

RPG 没有INTERSECTION运算符……但 SQL 有。

我会考虑构建 10 个逗号分隔的字符串
'a,b,c,d,e,f,...' 以传递给 Db。然后使用SPLIT()SQL 函数(也在 7.3 和 7.4 中)将每个字符串拆分为一组您可以请求 INTERSECTION 的记录。

如果以后有更多时间,我会尝试发布一些代码。

一个 RPG 唯一的解决方案是一个有趣的挑战......


推荐阅读