TRACE32:PRACTICE脚本:遍历变量列表

问题描述

在PRACTICE脚本中,是否有一种简便的方法来遍历“变量/宏列表”?例如:

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

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

我希望能够添加变量,而无需触摸遍历变量的代码

解决方法

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

api/profilo

输出:

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

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