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