SAS DO循环与宏

时间:2018-03-22 03:02:04

标签: sas

首先,这是一个班级,我不喜欢这种语言。它简单的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,我正在读取它们。有什么问题?

2 个答案:

答案 0 :(得分:4)

一般来说,宏代码,在这种情况下,仅用于替换常量文本。首先得到一个没有任何宏变量的工作DO循环,然后用宏变量引用替换你想要改变的部分。

因此,迭代DO循环的基本语法是:

do VAR=START to END;
  ...
end;

其中VAR是变量名称,startend是数字表达式。

将其与您的尝试模式进行比较,您可以看到您已离开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;