Macros 调用symputx会引发宏变量错误
我试图使用Macros 调用symputx会引发宏变量错误,macros,sas,Macros,Sas,我试图使用 call symputx 然而,SAS抛出错误 我写的程序就是这样 data want; set have; array SR(*) &orde; bb=dim(SR); call symputx('D',bb); array M(symget('D')); do i=1 to dim(SR); M(i)=SR(i); end; run; 它给出了如下错误: array MXY_A(symget(D)); -
call symputx
然而,SAS抛出错误
我写的程序就是这样
data want;
set have;
array SR(*) &orde;
bb=dim(SR);
call symputx('D',bb);
array M(symget('D'));
do i=1 to dim(SR);
M(i)=SR(i);
end;
run;
它给出了如下错误:
array MXY_A(symget(D));
-
79
76
ERROR 79-322: Expecting a ).
ERROR 76-322: Syntax error, statement will be ignored.
这里可能有什么问题?数组的维度是在编译数据步骤期间,在开始执行之前设置的。在数据步骤开始执行之前,不会通过调用symput来定义宏变量。如果要使用宏变量来设置这样的数组大小,则需要在数据步骤之前对其进行定义。数组的维度是在编译数据步骤期间,在开始执行之前设置的。在数据步骤开始执行之前,不会通过调用symput来定义宏变量。如果要使用宏变量设置这样的数组大小,需要在数据步骤之前定义它。下面的代码迭代数组的每个值,然后将其输出到所需数据集中的新行中: 代码: 输出:
下面的代码迭代数组的每个值,然后将其输出到数据集中的新行中: 代码: 输出:
您是否尝试过:数组M(dim(SR))?是的,这是相同的错误。你能为你的输入和期望的输出提供一个描述或例子吗?所以我给你正确的代码。你试过:数组M(dim(SR))?是的,这是相同的错误。你能为你的输入和期望的输出提供一个描述或例子吗?所以我给你正确的代码。
data want(keep=id new);
array score{3} s1-s3;
/*array values: 99,60,82 */
input id score{*};
do i=1 to dim(score);
new=score{i};
output;
end;
datalines;
1234 99 60 82
;
run;