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