CL 程序或过程中的 ITERATE 命令
Iterate (ITERATE) 命令可用于跳过活动 DOWHILE , DOUNTIL 或 DOFOR 组中的其余命令。
对于简单 DO 命令组, ITERATE 无效。
没有标签的 ITERATE 命令将跳至最内部活动 DO 组的 ENDDO。 指定标签将跳过与该标签关联的 DO 的 ENDDO。
以下示例说明如何使用 ITERATE 命令:
DO_1:
DO_2:DOWHILE &LGL
DO_3: DOFOR &INT FROM(0) TO(99)
.
.
.
IF (&A *EQ 12) THEN (ITERATE DO_1)
.
. /* Not processed if &A equals 12 */
.
IF (&A *GT 12) ITERATE
.
. /* Not processed if &A greater than 12 */
.
ENDDO
.
.
.
IF (&A *LT 0) (ITERATE DO_1)
.
. /* Not processed if &A less than zero */
.
ENDDO
在此示例中,标签 DO_1 和 DO_2 与 DOWHILE 组相关联。 可以在出现在 DOWHILE 或 DOFOR 组中的 ITERATE 命令上指定它们。 当 &A 等于 12 时,运行 ITERATE DO_1 命令。 在与 DOWHILE 命令关联的 ENDDO 处继续处理。 评估 &LGL 的值,如果为真,则继续执行 DOWHILE 之后的 DOFOR。 如果 &LGL 为假,则继续执行第二个 ENDDO 之后的 CL 命令。
如果 &A 不等于 12 但大于 12,则继续执行 DOFOR 组的 ENDDO。 &INT 的值会递增,并与 99 的终止值进行比较。 如果 &INT 小于或等于 99,则继续处理 Do For (DOFOR) 命令后的第一条命令。 如果 &INT 大于 99,则继续处理第一条 ENDDO 之后的下一条命令。
当处理完第三条 IF 命令且 &A 小于零时,继续处理第二条 ENDDO。 将评估 &LGL 的值,如果为假,控制权将转到 ENDDO 之后的命令。 如果为 true ,那么将在 DOWHILE 之后使用 Do For (DOFOR) 命令继续处理。