Hello,
I am using a multi-value prompt and have the code below. The prompt is called "DRGFilterCommas". I am getting a message when I run this that "DRGFilterCommas_Count" is not initialized and this is causing the program to work as intended (see below) even though earlier in the log it displays that the value of DRGFilterCommas_Count is 1. Any ideas as to why this is?
My code:
data _null_;
length DRGsCommas_List $10000;
if symget('DRGFilterCommas_Count')>=1 then do;
DRGsCommas_List=cats("'", tranwrd("&DRGFilterCommas", ",", "','"), "'");
put DRGsCommas_List; /* just for checking */
put DRGFilterCommas_COUNT; /* just for checking */
call symputx('DRGsCommas_WHERE_CLAUSE',cats('and dr.DRGCode in (',DRGsCommas_List,')'));
call symputx('DRGsCommas_JOIN_CLAUSE','INNER JOIN SQL_STG.DRG dr ON dr.DRGKey = e.DRGKey');
call symputx('DRGs_List_Displayed',DRGFilterCommas);
end;
else do;
call symputx('DRGs_List_Displayed',"ALL");
end;
run;
Log shows the following:
%LET DRGFilterCommas_count = 1;
NOTE: Variable DRGFilterCommas_COUNT is uninitialized.
Thanks,
KelseyB
Macro variables and DATA step variables are not the same thing. It's probably too large a topic to try to go into detail here, except to say that macro variables are not contained within a SAS DATA set.
I would recommend two changes. First, get rid of the diagnostic statement:
put DRGFilterCommas_COUNT; /* just for checking */
And change this statement:
if symget('DRGFilterCommas_Count')>=1 then do;
Based on what I think you are trying to accomplish, it should look like this:
if &DRGFilterCommas_Count>=1 then do;
Good luck.
Macro variables and DATA step variables are not the same thing. It's probably too large a topic to try to go into detail here, except to say that macro variables are not contained within a SAS DATA set.
I would recommend two changes. First, get rid of the diagnostic statement:
put DRGFilterCommas_COUNT; /* just for checking */
And change this statement:
if symget('DRGFilterCommas_Count')>=1 then do;
Based on what I think you are trying to accomplish, it should look like this:
if &DRGFilterCommas_Count>=1 then do;
Good luck.
Thank you Astounding. That worked!
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.