宏的宏定义错误:缺少右括号

Macro Definition error for Macro : Closing parenthesis missing

我在使用宏工具的时候出现了这个错误! **** 宏 ISsame 的宏定义错误:缺少右括号 我检查了所有括号,这似乎是真的,但我又犯了同样的错误。你能帮我求情吗?

set i/1*5/;
parameter 
a(i) /1 1,2 0,3 1,4 0,5 0/
b(i) /1 0,2 1,3 1,4 0,5 0/
c(i) /1 1,2 0,3 1,4 0,5 0/
d(i) /1 1,2 0,3 1,4 0,5 1/
e(i) /1 1,2 1,3 1,4 0,5 1/;

*check two parameter are equal or not
parameter same;

$ontext

same = sum(i, abs(a(i)-b(i)));
if(same > 0,
   display 'Parameter a is not equal to parameter b', same;);
$offtext   


* Define Macro
$macro ISsame(a(j),b(j))   same = sum(i, abs(a(i)-b(i))); if(same > 0,display 'Parameter a is not equal to parameter b', same;);


* End of Macro definition

* Call Macro                        
ISsame(a(j),b(j) )

问题出在 ISSame 的参数列表中。这些参数应该是 "pure identifiers",不需要括号,因此您应该将 $macro ISsame(a(j),b(j)) 更改为 $macro ISsame(a,b)。而且,当您调用它时,我猜您想完全传递 ab。所以,总的来说你应该有这个:

...
* Define Macro
$macro ISsame(a,b)   same = sum(i, abs(a(i)-b(i))); if(same > 0,display 'Parameter a is not equal to parameter b', same;);


* End of Macro definition

* Call Macro                        
ISsame(a,b)