Home » BI Tools, Coding & Data

Does your SAS code know what time it is? Add a timestamp.

Submitted by on December 20, 2012 – 6:12 am 7 Comments

In 1986 the Beastie Boys released their classic debut album, License to Ill, and the last track posed a question: “What’s the time?”  The Beasties answered with an anthem, “It’s time to get ill.”  I think Peter Crawford, SAS programmer extraordinaire, would have answered more simply.  What time is it?  It’s %now.

%Now – a Timestamp Macro

%Now generates a timestamp.   It’s a simple SAS macro, but despite its simplicity, it has a lot to teach about macro design.  In fact, Peter wrote an entire paper about the macro, so I won’t repeat the lessons.

The macro is:

%MACRO now( fmt= DATETIME23.3 ) /DES= 'timestamp' ; 
  %SYSFUNC( DATETIME(), &fmt )
%MEND now ;

It’s a utility macro, and I have it in my autocall library, so that it’s always there when I want it.

I often use it in footnotes. This code snippet:

Will produce a footnote with a timestamp in it:

 

I also add timestamps to file names.  Here, I add a timestamp to the log file from a nightly job.  The default format (DATETIME23.3) is fine for a footnote.  For file names, I typically format the timestamp as YYYYMMDDThhmmss, which maintains readability and also sorts in chronological order.

 

 

I’ve written before about macro utilities, and about minimalist programming, and %Now combines both of those interests.   %Now has a special place in my heart, since it is the first one-liner I learned, and it helped me realize the purpose of the macro language.  Other useful one-liners I’ve seen include %isblank and %age.  If you have a favorite macro one-liner, please share it in the comments below!

 

Tags: ,

x
Loading...
%d bloggers like this: