I need to do a wordcount based on comma delimiter and pass the delimiter parameters into macro.
Currently it is retreving both the arguments like FILE1,FILE2 & DATA1,DATA2
%let Filename_1 = FILE1,FILE2;
%let SAS_DATASET = DATA1,DATA2;
%macro file_process;
%let word_cnt = %sysfunc(countW(&Filename_1,','));
%do i = 1 %to &word_cnt;
%let file_name=%scan('&Filename_1',&i,',');
%let dataset=%scan('&SAS_DATASET',&i,',');
%end
%mend file_process;
Hi
Since the SAS Macro Language is text based you do not need to use quotes. Since some of your text contains characters which have a meaning in the macro language (comma separating arguments in functions) you need to use quoting functions.
To understand quoting functions, I recommend to read the following blog
http://blogs.sas.com/content/sgf/2014/08/15/macro-quoting-made-easy/
Below is the changed code:
%let Filename_1 = FILE1, FILE2;
%let SAS_DATASET = DATA1, DATA2;
%macro file_process;
%let word_cnt = %sysfunc(countW(%bquote(&Filename_1), %str(,)));
%put NOTE: &=word_cnt;
%do i=1 %to &word_cnt;
%let file_name = %scan(%bquote(&Filename_1), &i, %str(,));
%let dataset = %scan(%bquote(&SAS_DATASET), &i, %str(,));
%put NOTE: &=i &=file_name &=dataset;
%end;
%mend file_process;
%file_process
Bruno
Hi
Since the SAS Macro Language is text based you do not need to use quotes. Since some of your text contains characters which have a meaning in the macro language (comma separating arguments in functions) you need to use quoting functions.
To understand quoting functions, I recommend to read the following blog
http://blogs.sas.com/content/sgf/2014/08/15/macro-quoting-made-easy/
Below is the changed code:
%let Filename_1 = FILE1, FILE2;
%let SAS_DATASET = DATA1, DATA2;
%macro file_process;
%let word_cnt = %sysfunc(countW(%bquote(&Filename_1), %str(,)));
%put NOTE: &=word_cnt;
%do i=1 %to &word_cnt;
%let file_name = %scan(%bquote(&Filename_1), &i, %str(,));
%let dataset = %scan(%bquote(&SAS_DATASET), &i, %str(,));
%put NOTE: &=i &=file_name &=dataset;
%end;
%mend file_process;
%file_process
Bruno
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.