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;