Refer to macro variables using &
CONTAINS is not a valid SAS function (SQL function)
Because you want to introduce conditional filters, you need to use macro %IF/%THEN logic, not data step IF/THEN logic.
/*Create dataset*/
%macro prob(var1=, var2=);
data demand&var1.problem;
set qul.test0;
/*Need to use two seperate where condition to subset data based on var2 value*/
%if %sysfunc(find(&var2., "try1")>0) %then %do;
where &var2. ne 0;
%else
where &var2. > 0;
run;
%mend;
%prob(var1=Fcst, var2=test_try1);
%prob(var1=sd, var2=test_test);
However your logic doesn't make sense to me.
You're testing if VAR2 contains the value of TRY1, which implies a character variable.
But then adding a WHERE clause on VAR2 being greater than 0 or equal to 0, which implies a numeric variable. So this is a bit inconsistent.
Should one of those be var1?
@dht115 wrote:
Hello,
I do need to subset my dataset by two different condition.
I am getting LINE and COLUMN cannot be determined error.
/*Create dataset*/
%macro prob(var1=, var2=);
data demand&var1.problem;
set qul.test0;
/*Need to use two seperate where condition to subset data based on var2 value*/
if var2. contains "try1" then
where var2. ne 0;
else
where var2. > 0;
run;
%mend;
%prob(var1=Fcst, var2=test_try1);
%prob(var1=sd, var2=test_test);
... View more