T32 脚本用法



我是T32脚本的新手,并且对脚本有疑问。查看我们项目的脚本,我发现代码如下:

A.cmm
=======================================================
....
   if (&AAA==TRUE())
   (
      do B.cmm F=test1
      entry &detect
   )
.....
=======================================================
B.cmm
=======================================================
.......
test1:
........
return TRUE()
=======================================================

有几个问题:1. 入口函数是用来接收test1子例程的返回值,放到"检测"宏的吗?2. "F="有什么意思吗?我们不能只在 do 命令后面使用 test1 吗?谢谢!

DO <filename> [<parameter_list>]

这意味着 F=test1 是一个应该在 B.cmm 中评估的参数。B.cmm 似乎使用 F=function 来决定调用 B.cmm 中的哪个函数。B.cmm 中可能有一些类似的代码:

LOCAL &ARGS &ARG_FUNCTION 
ENTRY %LINE &ARGS
&ARG_FUNCTION=STRing.SCANAndExtract("&ARGS","F=","")
IF "&ARG_FUNCTION"!=""
(
    PRIVATE &rval
    GOSUB &ARG_FUNCTION
    ENTRY &rval
    ENDDO &rval
)
ENDDO

ENTRY 用于获取参数以及获取返回值。entry &detect 从对 B.cmm 的调用中获取返回值,并将其保存到 &detect

在较新版本的TRACE32中,您还可以使用 PARAMETERSRETURNVALUES 而不是 ENTRY。但是,对于参数/返回值,所有参数都必须在双引号中传递(例如 DO B.cmm "F=test1")。上面的示例将如下所示:

LOCAL &ARGS &ARG_FUNCTION
PARAMETERS &ARGS
&ARG_FUNCTION=STRing.SCANAndExtract("&ARGS","F=","")
IF "&function"!=""
(
    PRIVATE &rval
    GOSUB &function "&args"
    RETURNVALUES &rval
    ENDDO "&rval"
)
ENDDO

最新更新