为什么我的宏中的代码没有考虑在内?

时间:2018-04-11 11:59:01

标签: sas sas-macro

我正在尝试在SAS上编写一个宏,它能够创建50个不同的1500人样本。但是只要我输入%macro loop(50); %do i=1 %to 50; PROC SURVEYSELECT DATA=WORK.TOP_1() METHOD=SRS OUT= WORK.ALEA_1 N=1500; RUN; %end; %mend; %loop(50); ,就不会正确考虑以下所有代码(PROC SURVEYSELECT,DATA,RUN ......不再有任何颜色)。你会在我的代码下面找到,你能看一下吗?

{{1}}

2 个答案:

答案 0 :(得分:2)

这只是增强编辑器窗口的常见行为。

您应该会发现,当您调用宏时代码运行正常,但突出显示并未在宏定义中应用。

一种解决方法是在宏定义的开头,在%macro语句之后的行上添加以下内容:

%local DUMMY;
%let DUMMY = %nrstr(%mend);

这会欺骗编辑器认为它已经到达宏定义的末尾而实际上没有对宏内的代码产生任何影响,导致突出显示被恢复。

答案 1 :(得分:2)

你不需要宏。如果您想要50个样品,请使用SURVEYSELECT选项REPS = 50。