SAS Programming Professionals,
Did you know that you can save the source code for
compiled macros in the same macro catalog entry as the compiled code for later
use?
The SOURCE option of the %MACRO statement directs SAS to
save the macro source statements along with the compiled macro code in the
macro catalog entry. Thereafter, you can
use the %COPY macro statement to print the macro’s source code to the SAS log,
or have it written to a file. Here is an
example:
libname maclib "c:\temp";
options mstored
sasmstore=maclib;
%MACRO BIGMAC /
store source;
proc print data=sashelp.class;
var
name age;
run;
%MEND BIGMAC;
%COPY BIGMAC
/ source out='c:\temp\bigmac.sas';
We begin this example by allocating a directory to house
the macro catalog via a LIBNAME statement.
The two options specified in the OPTIONS statement declare that all stored macros are to be stored in
the macro catalog (which SAS will name SASMACR)
in the previously allocated directory.
Next, we create the %BIGMAC
macro. The STORE option directs SAS to
store the compiled macro in a catalog entry.
The SOURCE option tells SAS to store the source code for the
macro—everything between %MACRO and
the final semicolon on the %MEND
statement—in the same catalog entry.
We suddenly realize that we need to create a separate SAS
program from the BIGMAC macro catalog entry.
So, we use the %COPY macro statement and the SOURCE option, and create
the BIGMAC.SAS program file. If we had
not specified the OUT= option, SAS would have simply written the macro source
code to the log.
The ability to store macro SOURCE code in the macro
catalog entry was introduced in version 9 of SAS. It obviates the old tried-and-true method of
storing the source code of compiled macros in separate directories. Though many of us have done that for years
and have it down-pat, there is always the possibility that the macro catalog
and the source code directory could somehow lose sight of one another. Having the source code living in the same
Dwelling Unit as the compiled macro provides an extra layer of integrity to the
clever SAS macros that you write!
---MMMMIIIIKKKKEEEE
(aka Michael A. Raithel)
Author of the new cult classic for computer programmers: It Only Hurts When I Hit <ENTER>
Print edition: http://tinyurl.com/z8bzx2e
Kindle edition: http://tinyurl.com/zypgqa7
The hack above is an excerpt from the book: Did You Know That? Essential Hacks for Clever SAS Programmers
Print edition: http://tinyurl.com/z8bzx2e
Kindle edition: http://tinyurl.com/zypgqa7
No comments:
Post a Comment