DATA Step, Macro, Functions and more

Put a record in a dataset if another dataset exists.

Reply
Frequent Contributor
Frequent Contributor
Posts: 78

Put a record in a dataset if another dataset exists.

[ Edited ]

How do I put the dsn info and message from below program into a dataset A? For example;

 

DSN                       Message

d:\test\test.xlsx       TEST_B

 

 


%macro checkds(dsn);

 

%if %sysfunc(fileexist(&dsn)) %then %do;
%put TEST_A;
%end;

 

%else %do;
%put test_B;
%end;

 

%mend checkds;
%checkds(d:\test\test.xlsx)

 

 

Thanks.

Trusted Advisor
Posts: 1,831

Re: SAS query

Do you mean :

 

%macro checkds(dsn);
 
%if %sysfunc(fileexist(&dsn)) %then %do;
     data test_a;
           dsn = "&dsn";
           output;
     end;
%put TEST_A;
%end;
 
%else %do;
%put &dsn Does not exit;
%end;
 
%mend checkds;
%checkds(d:\test\test.xlsx)
Super User
Super User
Posts: 9,416

Re: Put a record in a dataset if another dataset exists.

So why have you jumped straight into macro?  You can do this very simply in a datastep:

%let dsn=sashelp.bmt;

data want;
  dsn="&dsn.";
  message=%sysfunc(exist(&dsn.));
run;

If you really need to then wrap the datastep in a macro call, but obviously only do this if needed.  No point adding macro for no purpose.

Ask a Question
Discussion stats
  • 2 replies
  • 112 views
  • 0 likes
  • 3 in conversation