/************************************************************ * check whether a variable is in a dataset * * Peng Zeng (Auburn University) * 10-17-2018 ************************************************************/ options minoperator mindelimiter = ','; /************************************************************ * version 1: pay attention to the quotation mark ************************************************************/ %macro variable_in_data(var, input_data); proc contents data = &input_data out = input_data_contents noprint; run; proc sql noprint; select upcase(name) into: input_data_variable_list separated by '", "' from input_data_contents; quit; %if %upcase(&var.) in ("&input_data_variable_list") %then %put &var. is in the variable list; %else %put &var. is NOT in the variable list; %mend variable_in_data; %variable_in_data("conb", sashelp.citimon); /* TRUE */ %variable_in_data(conb, sashelp.citimon); /* FALSE */ /************************************************************ * version 2: pay attention to the quotation mark ************************************************************/ %macro variable_in_data2(var, input_data); proc contents data = &input_data out = input_data_contents noprint; run; proc sql noprint; select upcase(name) into: input_data_variable_list separated by ',' from input_data_contents; quit; %if %upcase(&var.) in (&input_data_variable_list) %then %put &var. is in the variable list; %else %put &var. is NOT in the variable list; %mend variable_in_data2; %variable_in_data2("conb", sashelp.citimon); /* FALSE */ %variable_in_data2(conb, sashelp.citimon); /* TRUE */