Hi. I'm trying to conditionally create an index, but only if it doesn't already exist. Can anyone help me with this? This attempt isn't working for me.
data _null_;
set sashelp.vmember (where=(Libname='WORK' and memname='FINALDATA%unquote(&zip5)'));
if upcase(index) = 'NO' then do;
PROC DATASETS;
MODIFY FinalData%unquote(&zip5);
INDEX CREATE imb_code /unique;
end;
RUN;
Well, this will give you a start, but I don't know what that macro variable is or why it is there at all:
data _null_; set sashelp.vmember (where=(Libname='WORK' and memname='FINALDATA%unquote(&zip5)'));
if upcase(index)='NO' then call execute('proc datasets; modify finaldata'||&zip5.||'; index create imb_code /unique; run; quit;'); run;
Well, this will give you a start, but I don't know what that macro variable is or why it is there at all:
data _null_; set sashelp.vmember (where=(Libname='WORK' and memname='FINALDATA%unquote(&zip5)'));
if upcase(index)='NO' then call execute('proc datasets; modify finaldata'||&zip5.||'; index create imb_code /unique; run; quit;'); run;
@RW9 wrote:
data _null_; set sashelp.vmember (where=(Libname='WORK' and memname='FINALDATA%unquote(&zip5)'));
if upcase(index)='NO' then call execute('proc datasets; modify finaldata'||&zip5.||'; index create imb_code /unique; run; quit;'); run;
My 2 cents on this: this code will not create an index if any index exists. It is not specific to index imb_code. So there may still be room for improvement. But kudo's to the use of call execute(). Very underestimated and often misunderstood.
- Jan.
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.