LOOP 命令
在指定条件的求值结果为真的情况下,对记录重复执行一系列的 ACLScript 命令。
说明
必须将 LOOP 命令放在 GROUP 命令内部。
语法
LOOP WHILE 测试 命令 <...n> END
参数
名称 | 描述 |
---|---|
WHILE 测试 |
要使 LOOP 命令内的命令被执行而必须评估为真的测试。 如果测试评估为真,则命令将重复执行直至测试评估为假。 |
命令 <...n> |
要执行的一个或多个命令。 您可输入 LOOP 命令内的多个命令。 每个命令必须从新行开始。 |
END | LOOP 命令的末尾。 |
示例
拆分逗号分隔域
您具有一个包含发票数据的表,并且需要按部门隔离发票金额的特定信息。 一个发票可能与一个以上的部门相关,部门代码以逗号分隔格式存储在该表中。
要按部门提取发票金额,您:
- 使用 GROUP 命令逐个记录地处理该表。
- 计算与每个记录相关联的部门的数量 (n)。
- 使用 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 命令来防止无限循环。