索引循环 (DEFINE-!ENDDEFINE 命令)

索引循环的语法如下所示:

!DO !var = start !TO finish [ !BY step ]
    statements
!BREAK
!DOEND
  • 索引变量为 ! var ,并且必须以感叹号开头。
  • 开始,完成和步骤值必须是数字或求值为数字的表达式。
  • 循环从起始值开始,一直持续到到达结束值为止 (除非迂到 !BREAK 语句)。 步骤值是可选的,可用于指定迭代子集。 如果 start 设置为 1 ,完成为 10 ,步骤设置为 3 ,那么将使用指定的索引变量值 1 , 4 , 7 和 10 执行四次循环。
  • 这些语句可以是任何有效的命令或宏关键字。 !DOEND 指定循环结束。
  • !BREAK 是可选规范。 它可以与条件处理结合使用以退出循环。

示例

DEFINE macdef (arg1 = !TOKENS(1)
              /arg2 = !TOKENS(1))
!DO !i = !arg1 !TO !arg2.
frequencies variables = !CONCAT(var,!i).
!DOEND
!ENDDEFINE.
macdef arg1 = 1 arg2 = 3.
  • 变量 ! i 最初被赋予值 1 (arg1) 并递增,直到它等于 3 (arg2) ,此时循环结束。
  • 第一个循环将 var的值并置!I,在第一个循环中为 1。 第二个循环将 var 和 2 并置,第三个循环将 var 和 3 并置。 结果是 FREQUENCIES 执行三次,变量分别为 VAR1 VAR2VAR3