Testing for an empty parameter in a SAS Macro

后端 未结 2 1881
半阙折子戏
半阙折子戏 2021-01-14 12:46

For example, i have a macro program

%macro test(parameter1= , parameter2=, parameter3=);
  DATA data_gender;
  SET data_input(WHERE=(gender=parameter3));
           


        
2条回答
  •  时光取名叫无心
    2021-01-14 13:05

    Agree with Joe's answer. One good point they make in the paper is they are testing for blank, and their test will return true whether a parameter is null or has blanks in it. Sometimes it is useful have a test that differentiates between a parameter that is null and one that has blanks. The paper mentions %length(%superq( )) as a possible test for null. For example below, this allows you to specify a blank value for sex, and get a different result than you do when sex is null.

    data class;
      set sashelp.class;
      if _n_=1 then sex='';
    run;
    
    %macro test2(parameter1= , parameter2=, sex=);
      DATA data_gender;
      SET class(
                %if %length(%superq(sex)) %then %do;
                  where=(sex="&sex.")
                %end;
               );
      RUN;
    %mend;
    
    %test2(sex=)
    %test2(sex=%str( ))
    

提交回复
热议问题