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

时间:2019-07-18 04:58:58

标签: gams-math

当我使用Macro工具时出现此错误!       ****宏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) )

1 个答案:

答案 0 :(得分:0)

问题出在ISSame的参数列表中。这些参数应为“纯标识符”,在此处不应包含括号,因此应将$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)