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.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!
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.