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!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.