LOOP 命令

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

说明

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

语法

LOOP WHILE 测试
  命令
  <...n>
END

参数

名称 描述
WHILE 测试

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

命令 <...n>

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

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

END LOOP 命令的末尾。

示例

拆分逗号分隔域

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

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

  1. 使用 GROUP 命令逐个记录地处理该表。
  2. 计算与每个记录相关联的部门的数量 (n)。
  3. 使用 LOOP 命令在该记录上迭代 n 次,以提取与该记录相关联的每个部门的数据。
COMMENT
使用 GROUP 可统计每个部门代码字段中的逗号个数,作为识别有多少个部门与该记录相关联的方式
对于该域中的每个代码,对每个记录执行“LOOP”命令,并且在该循环的每次迭代中,将带有单个代码的记录提取至 result1 表
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 命令来防止无限循环。