TRACE32:实践脚本:遍历变量列表

TRACE32: PRACTICE Script: Iterating over a list of variables

在 PRACTICE 脚本中,是否有一种简单的方法来迭代“variables/macros 的列表”?例如:

; this "list" changes...
PRIVATE &var1 &var2 &var3

; this implementation shall not change
; do something with &var1 &var2 &var3 ...

我希望能够添加变量,而无需触及迭代变量的代码。

我假设您正在考虑应该处理可变数量参数的子例程或单独的脚本。由于宏在执行时被展开,被调用者将看不到宏,而只能看到它们的内容。所以被调用者看到的是 space 分隔值的列表。您可以编写一个子例程,将参数解析为一个字符串,然后使用 STRing.SPLIT() 将它们分开。示例:

PRINT "Print 1 item:"
GOSUB PrintItems ONE
PRINT "Print 3 items:"
GOSUB PrintItems ONE TWO THREE
ENDDO

PrintItems:
  PRIVATE &list &count
  ENTRY %LINE &list
  &count=STRing.COUNT("&list"," ")+1
  &index=0
  RePeat
  (
    PRIVATE &item
    &item=STRing.SPLIT("&list"," ",&index)
    PRINT "&item"
    &index=&index+1
  )
  WHILE &index<&count
  RETURN

输出:

Print 1 item:
ONE
Print 3 items:
ONE
TWO
THREE

也可以使用其他分隔字符,通过替换 STRing.COUNT() 和 STRing.SPLIT() 中的空白,当然也可以在子程序调用中使用。