编写此循环的更好方法

时间:2015-04-13 13:59:23

标签: ibm-midrange rpgle

我有一个程序,用于从运输系统获取一些已被替换的数据。以前的代码链接到运输系统 公司 订购# 发布# 从订单明细表中获取这些。请注意,订单可以包含多个行,其中包含不同的商品编号。

现在新的运输系统没有发货编号。它每个订单都有一个行计数器#但是我们会有

company order   phno

001     123       1
001     123       2
001     123       3

所以对于我想知道的代码是否有更简洁的方法来编写代码。

我认为可行的是,

为上述3列创建逻辑。

创建一次只会运行一次' 1'到密钥列表 comp,order#,counter' 1' (仅限节目的第一次)

链。将comp和order移动到prev_comp,Prev_order

然后下次在子例程中,检查订单#= prev_order if =将1添加到phno,chain,继续直到#not = to prev_order。 然后Z-add1到计数器链,设置prev字段,重复循环/

1 个答案:

答案 0 :(得分:3)

您可以将SetLL与前两列一起使用,然后使用ReadE来读取订单的每个项目。

如果您的逻辑文件被声明为"公司,订单,PhNo",结果将以相同的顺序订购。

免费示例:

SetLL (Company:Order) YourFile;
ReadE (Company:Order) YourFile;
DoW not %EoF(YourFile);
  ... //Your logic per item here
  ReadE (Company:Order) YourFile;
EndDo;