How to do a proc export only on Tuesday

Reply
New User
Posts: 1

How to do a proc export only on Tuesday

Hi everybody,

 

my need is to execute a proc export all the days in the programme, but i want to obtain the output file only if the day of the week is tuesday. Could you please help me?

 

I wrote a datastep like this but it doesn't work. Why?

 

data _null_;

if WEEKDAY(today())=3 then do;

PROC EXPORT DATA= RLWORK.prova

OUTFILE= "DIRECTORY"

DBMS=DLM REPLACE LABEL;

DELIMITER='3B'x;

 

PUTNAMES=YES;

RUN;

run;

 

Super User
Posts: 5,771

Re: How to do a proc export only on Tuesday

You need some macro logic here.
If you aren't on latest maintenance level you need to wrap you code inside a macro, and in there do %If on the weekday.
The alternative is to do he test in a data step, and if positive issue a call execute that contains your PROC EXPORT.
Data never sleeps
Super Contributor
Posts: 284

Re: How to do a proc export only on Tuesday

afaik, you cannot have a proc export within a datastep. try macro programming instead. 

%macro _xprt;

%if sysfunc(WEEKDAY(today())) = 3 %then %do;

PROC EXPORT DATA= RLWORK.prova

OUTFILE= "DIRECTORY"

DBMS=DLM REPLACE LABEL;

DELIMITER='3B'x;

 PUTNAMES=YES;

RUN;

%end;

%mend _xprt;

%_xprt;

Super User
Posts: 12,690

Re: How to do a proc export only on Tuesday

Here's an example of @LinusH call execute suggestion:

 

data _null_;
   if WEEKDAY(today())=3 then do;
      Call execute ('PROC EXPORT DATA= RLWORK.prova
      OUTFILE= "DIRECTORY"
      DBMS=DLM REPLACE LABEL;
      DELIMITER="3B"x; 
      PUTNAMES=YES;
      RUN;');
   end;
run;

Assumes of course that your outfile is substituted with something that will work. Not sure why you are using the hex "3B"x instead of

 

";" though.

Super User
Posts: 5,771

Re: How to do a proc export only on Tuesday

Well you can't execute a PROC within a data step, but you can issue/call it. Either with CALL EXECUTE that holds the PROC code (as shown by @ballardw), or to a macro that holds the program.
Either way, the PROC will be queued and execute right after data step termination.
Data never sleeps
Ask a Question
Discussion stats
  • 4 replies
  • 81 views
  • 1 like
  • 4 in conversation