我是T32脚本的新手,并对脚本提出了疑问。 看看我们项目的脚本,我找到了如下代码:
A.cmm
=======================================================
....
if (&AAA==TRUE())
(
do B.cmm F=test1
entry &detect
)
.....
=======================================================
B.cmm
=======================================================
.......
test1:
........
return TRUE()
=======================================================
得到的问题很少: 1.是用于接收test1子程序的返回值的入口函数,并将其放入"检测"宏? 2." F ="?的任何含义我们只能在do命令后面使用test1吗? 谢谢!
答案 0 :(得分:3)
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&amp; detect 从 B.cmm 的调用中获取返回值,并将其保存到&amp; detect 。
在较新版本的TRACE32中,您还可以使用 PARAMETERS 和 RETURNVALUES 代替 ENTRY 。但是对于 PARAMETERS / RETURNVALUES ,所有参数必须以双引号传递(例如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