- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Thank you Astounding. That worked!