编写此循环的更好方法
better way to code this loop
嗨,我有一个用于从运输系统获取一些数据的程序,该程序已被替换。以前的代码链接到运输系统
公司
命令#
发布#
从订单详情中获取这些 table。请注意,订单可以有多行,其中的商品编号不同。
现在新的运输系统没有发布号。每个订单确实有一个行计数器#但是所以我们会有
company order phno
001 123 1
001 123 2
001 123 3
所以对于代码,我想知道是否有更简洁的编码方式。
我认为可行的是,
为以上 3 列创建逻辑。
仅创建一次 运行 将“1”移动到密钥列表
comp, order#, counter '1'(仅限程序的第一次)
连锁。将补偿和订单移动到 prev_comp、Prev_order
然后下一次在子例程中,检查 order# = prev_order
if = 将 1 添加到 phno,链,继续直到 order# not = 到 prev_order。
然后 Z-add1 到计数器链,设置 prev 字段,重复循环/
您可以对前两列使用 SetLL,然后使用 ReadE 来读取订单中的每个项目。
如果您的逻辑文件声明为 "Company, Order, PhNo",结果将按相同的顺序排列。
免费示例:
SetLL (Company:Order) YourFile;
ReadE (Company:Order) YourFile;
DoW not %EoF(YourFile);
... //Your logic per item here
ReadE (Company:Order) YourFile;
EndDo;
嗨,我有一个用于从运输系统获取一些数据的程序,该程序已被替换。以前的代码链接到运输系统 公司 命令# 发布# 从订单详情中获取这些 table。请注意,订单可以有多行,其中的商品编号不同。
现在新的运输系统没有发布号。每个订单确实有一个行计数器#但是所以我们会有
company order phno
001 123 1
001 123 2
001 123 3
所以对于代码,我想知道是否有更简洁的编码方式。
我认为可行的是,
为以上 3 列创建逻辑。
仅创建一次 运行 将“1”移动到密钥列表 comp, order#, counter '1'(仅限程序的第一次)
连锁。将补偿和订单移动到 prev_comp、Prev_order
然后下一次在子例程中,检查 order# = prev_order if = 将 1 添加到 phno,链,继续直到 order# not = 到 prev_order。 然后 Z-add1 到计数器链,设置 prev 字段,重复循环/
您可以对前两列使用 SetLL,然后使用 ReadE 来读取订单中的每个项目。
如果您的逻辑文件声明为 "Company, Order, PhNo",结果将按相同的顺序排列。
免费示例:
SetLL (Company:Order) YourFile;
ReadE (Company:Order) YourFile;
DoW not %EoF(YourFile);
... //Your logic per item here
ReadE (Company:Order) YourFile;
EndDo;