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

Why does my code inside my macro is not taken into account?

我正在尝试在 SAS 上编写一个宏,该宏能够创建 1500 人的 50 个不同样本。但是我一输入%macro,下面的所有代码都没有被正确考虑(PROC SURVEYSELECTDATARUN...没有任何颜色了) .你会在下面找到我的代码,你能看看吗?

%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);

这只是增强编辑器的通常行为 window。

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

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

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

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

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