ilannyxu
在宏程序中有一段数组的运算,在没有使用宏的情况下,设定q=2,可以运行;再使用了宏之后再设定q=2则显示数组下标越界,不知什么原因,请指教!
%macro a(q);
*计算m,muhat,siga2,sigc2和mr1(暂时设q=2);
nq = 1215;
m = &q*(nq-&q+1)*(1-&q/nq);
muhat = (x{1216}-x{1})/nq;
siga = 0;
sigc = 0;
do i = 1 to 1215;
siga = siga+(x{i+1}-x{i}-muhat)**2;
end;
siga2 = siga/(nq-1);
%do i = &q %to 1215;
sigc = sigc+(x{i+1}-x{i+1-&q}-&q*muhat)**2;
%end;
sigc2 = sigc/m;
mr1 = sigc2/siga2;
%mend a;
%a(2);
keep mr1;
run;
以上是程序中涉及到的部分,就是那个q,不用宏的话确定能够运行。