- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Can you please help me with this looping process through name stored in NAMELIST variable?
I am not sure what is missing.
Thanks a lot!
Harry
The Error notice is:
ERROR: Macro function %SCAN has too many arguments. The excess arguments will be ignored.
ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric
operand is required. The condition was: Alice
ERROR: Argument 2 to macro function %SCAN is not a number.
name 1 is
ERROR: The macro DOPRINT will stop executing.
proc sql ;
select name into :NAMELIST separated by ','
from sashelp.class
; quit;
%put &NAMELIST ;
%macro doprint;
%do i=1 %to 10;
%put name &i is %scan(&NAMELIST,&i);
%end;
%mend;
%doprint;
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Commas are the delimiter in the %scan function. You have placed commas in the body of your NAMELIST variable. So each comma appearing inside Namelist is treated as a delimiter resulting in "too many" parameters.
Your shown code will work if you use "separated by ' ' " in the select into.
Or use a quoting function to "hide" the commas from that use such as
%scan(%bquote(&NAMELIST) ,&i);
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
This is a duplicate question. Please do not post duplicate questions. I have answered your question in your other thread at https://communities.sas.com/t5/SAS-Programming/Proc-SQL-save-multiple-value-to-macro-variable/td-p/6...
Paige Miller
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Commas are the delimiter in the %scan function. You have placed commas in the body of your NAMELIST variable. So each comma appearing inside Namelist is treated as a delimiter resulting in "too many" parameters.
Your shown code will work if you use "separated by ' ' " in the select into.
Or use a quoting function to "hide" the commas from that use such as
%scan(%bquote(&NAMELIST) ,&i);