LOOP 命令

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

说明

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

语法

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

参数

名称 描述
WHILE 测试

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

命令 <...n>

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

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

END LOOP 命令的末尾。

示例

拆分逗号分隔域

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

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

  1. 使用 GROUP 命令逐个记录地处理该表。
  2. 计算与每个记录相关联的部门的数量 (n)。
  3. 使用 LOOP 命令在该记录上迭代 n 次,以提取与该记录相关联的每个部门的数据。

 

COMMENT
使用 GROUP 统计每个部门代码字段中的逗号个数,作为识别有多少个部门与该记录相关联的方式
对每个记录执行 "LOOP" 操作以查找该字段中的每个代码,并且将每个代码提取到它自己的记录中
END
GROUP
  v_department_count = OCCURS(Department_Code,',')
  v_counter = 0
  LOOP WHILE v_counter <= v_department_count
    v_dept = SPLIT(Department_Code, ',', (v_counter + 1))
    EXTRACT FIELDS Invoice_Number, Invoice_Amount, v_dept AS "Department" TO result1
    v_counter = v_counter + 1		
  END
END

备注

提示

有关 LOOP 和 GROUP 命令的详细教程,请参见分组和循环

何时使用 LOOP

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

工作原理

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

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

避免无限循环

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