首先,这是一个班级,我不喜欢这种语言。它简单的Do循环打印数字的平方根。目标是用宏变量替换do循环中的值。这是我的源代码:
%LET Start_Value = 1;
%LET Stop_Value = 5;
DATA sqrt_table;
DO &Start_Value. TO &Stop_Value.;
Sqrt_n = SQRT(&Start_Value.);
OUTPUT;
END;
RUN;
TITLE 'Square root table from 1 to 5';
PROC PRINT DATA = sqrt_table noobs;
RUN;
TITLE;
日志表示错误在DO& Start_Value中。 "符号未被识别" 我按照给出的源代码,我已经按照它们的要求对这些宏进行了decalred,我正在读取它们。有什么问题?
答案 0 :(得分:4)
一般来说,宏代码,在这种情况下,仅用于替换常量文本。首先得到一个没有任何宏变量的工作DO循环,然后用宏变量引用替换你想要改变的部分。
因此,迭代DO循环的基本语法是:
do VAR=START to END;
...
end;
其中VAR
是变量名称,start
和end
是数字表达式。
将其与您的尝试模式进行比较,您可以看到您已离开VAR=
部分。
此外,赋值语句将在DO循环的每次迭代中为SQRT_N
分配相同的值。因为你基本上写了。
Sqrt_n = SQRT(1);
请记住,宏变量只是帮助您生成希望SAS实际运行的程序的方法。
答案 1 :(得分:1)
如果你是SAS的初学者,请不要混用4GL的宏观语言。这就是你需要的。
%LET Start_Value = 1;
%LET Stop_Value = 5;
DATA sqrt_table;
DO i = &Start_Value. TO &Stop_Value.;
Sqrt_n = SQRT(i);
OUTPUT;
END;
RUN;