Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带宏的SAS DO循环_Sas - Fatal编程技术网

带宏的SAS DO循环

带宏的SAS DO循环,sas,Sas,首先,这是为了上课,我不喜欢这种语言。打印数字的平方根很简单。目标是用宏变量替换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

首先,这是为了上课,我不喜欢这种语言。打印数字的平方根很简单。目标是用宏变量替换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_值中。“无法识别符号”
我遵循了给定的源代码,我已经按原样贴花了宏,我正在按我阅读的方式访问它们。问题出在哪里?

宏代码通常用于替换常量文本,在本例中尤其如此。首先获得一个没有任何宏变量的工作DO循环,然后替换要随宏变量引用而变化的部分

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

do VAR=START to END;
  ...
end;
其中,
VAR
是变量名,
start
end
是数值表达式

将其与您尝试的模式进行比较,您可以看到您已经省略了
VAR=
部分

此外,赋值语句将在DO循环的每次迭代中将相同的值赋值给
SQRT\u N
。因为你基本上已经写好了

Sqrt_n = SQRT(1);

请记住,宏变量只是帮助您生成希望SAS实际运行的程序的方法。

如果您是SAS中的begginer,请不要将宏lanauge与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;

说你不喜欢一种语言是一种向用户寻求帮助的好方法。我就是这样做的,这就是我获得上述代码和当前编译错误的原因。所以你修复了
do
循环的语法?那任务书呢?您在
do
循环中使用了什么变量名?您是否确保在
sqrt()
函数调用中引用该变量?太好了,非常感谢。至于宏,这是我们在进入R之前在我的统计认证中涉及的最后一个单元。这是我被指示要做的。