LOOP 命令

在指定条件的求值结果为真的情况下,对记录重复执行一系列的 ACL脚本 命令。

说明

必须将 LOOP 命令放在组命令内部。

语法

LOOP WHILE test
  command
  <...n>
END

参数

名称 描述
WHILE 测试

要使 LOOP 命令内的命令被执行而必须评估为真的测试。如果测试评估为真,则命令将重复执行直至测试评估为假。

命令 <...n>

要执行的一个或多个命令。

您可输入 LOOP 命令内的多个命令。每个命令必须从新行开始。

END LOOP 命令的末尾。

示例

拆分逗号分隔域

您具有一个包含发票数据的表,并且需要按部门隔离发票金额的特定信息。一个发票可能与一个以上的部门相关,部门代码以逗号分隔格式存储在该表中。

要按部门提取发票金额,您:

  1. 使用 GROUP 命令逐个记录地处理该表。
  2. 计算与每个记录相关联的部门的数量 (n)。
  3. 使用 LOOP 命令在该记录上迭代 n 次,以提取与该记录相关联的每个部门的数据。
COMMENT
Use GROUP to count commas in each department code field as a way of identifying how many departments are associated with the record
"LOOP" over each record for each code in the field, with each iteration of the loop extracting the record with a single code to the result1 table
END

GROUP
  v_department_count = OCCURS(Dept_Code,',')
  v_counter = 0
  LOOP WHILE v_counter <= v_department_count
    v_dept = SPLIT(Dept_Code, ',', (v_counter + 1))
    EXTRACT FIELDS Invoice_Number, Amount, v_dept AS "Department" TO result1
    v_counter = v_counter + 1
  END
END

备注

提示

有关 LOOP 和 GROUP 命令的详细教程,请参阅控制结构和分组和循环。

何时使用 LOOP

当一条记录包含需要处理的重复数据段时,常常使用循环。

工作原理

每个 LOOP 命令都必须指定一个要测试的 WHILE 条件,而且必须以 END 语句结束。只要指定的测试为真,在 LOOP 和 END 之间的命令就重复地对当前记录执行。

如果测试一开始就为假,则不会执行命令。

避免无限循环

要避免创建无限循环,请确保您指定的测试最终返回假。还可使用 SET LOOP 命令来防止无限循环。