How to use SAS macro in a SAS Dataset -
i want use macro call in data step. below macro , invocation in data step isnt working. can guys please suggest way make work.
%macro xscan(string, delimiter, word_number); %let len1=%length(&string); /*computing length of string*/ %let len=%eval(&len1+1); %let sub=%scan(&string,&word_number,"&delimiter"); %if &word_number ge 0 %then %do; %let pos=%index(&string,&sub); /* locate position while reading left right*/ %end; %if &word_number lt 0 %then %do; data _null_; pos=find("&string","&sub",-&len); call symput("pos",pos); run; %end; %let strg=%substr(&string,&pos); /* extract substring*/ %put string &strg; %mend; data work.in_data; length in_string $50; in_string = “a bb ccc dddd bb eeeee”; output; in_string = “aa b cc aa dee”; output; run; data work.out_data; set work.in_data; length sub_str $50; start_word_num = -(_n_ +1); sub_str = %xscan(in_string,’ ‘, start_word_num); run; proc print; run;
if macro used inside datastep, write more using datastep functions instead of making complicated macro functions. there plenty of sas string functions allow accomplish appears want in far less code.
Comments
Post a Comment