代码之家  ›  专栏  ›  技术社区  ›  Clément Hurel

为什么不考虑宏中的代码?

  •  0
  • Clément Hurel  · 技术社区  · 8 年前

    我试图在SAS上编写一个宏,该宏能够创建50个不同的1500人样本。但我一进去 %macro ,未正确考虑以下所有代码( PROC SURVEYSELECT ,则, DATA ,则, RUN 。。。不再有任何颜色)。下面是我的代码,你能看看吗?

    %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);
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   user667489    8 年前

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

    您应该发现,调用宏时,代码运行正常,但在宏定义中没有应用高亮显示。

    一种解决方法是在宏定义的开头,在 %macro 声明:

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

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

        2
  •  2
  •   data _null_    8 年前

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

    推荐文章