@Pradeeptdalal28 wrote: Thanks mate, I am using SAS Studio where its Run; statement is not generally considered mandatory, but it solved the problem. Could you elaborate how it works because when "Country" is taken as variable instead of Gender in orion.customer, same code worked without any problem
The same rules for data/proc step boundaries for execution exist in the other forms of SAS as well.
However using them explicitly is still a good idea. As you have just discovered and @Astounding provided just one of the potential issues when using macro code.
You don't have to name data sets in a data step either. SAS will happily create a new data set every time you run something like:
data;
set sashelp.class;
run;
of course keeping track of which dataN you actually want can become a chore.
You also do not have to name the data set used by many procs for input:
proc print;
run;
will happily print the last created data set.
In macro's using either of these code short cuts is very likely to lead to unexpected results, especially if your procedure references a variable that isn't actually in the last created data set.
"Have to" versus "good idea" decisions often result from experience (often defined as learning when something fouls up epically).
... View more