Wednesday, November 4, 2015

pattern3.AutocallMacro

/*
Ref: E:\ChenyxFiles\2014.Study.TrainingCertificate\SAS.Victoria
\SAS.DS2\SASUniversityEdition\myfolders\DesignPattern
\AUTOCALL MACRO LIBRARIES.pdf

Problem to be solved:
1. save macros in files, save to somewhere in disk
2. load the macros in Autocall Library

Method:
1. define macros, save filename = macro name, in lower case
2. use filename macroName 'fileLocation.sas'
3. add to autocall library:
OPTIONS MAUTOSOURCE SASAUTOS=(freqmeans sumdollar SASAUTOS);

*/
FILENAME freqmeans 'E:\ChenyxFiles\2014.Study.TrainingCertificate\SAS.Victoria\SAS.DS2\SASUniversityEdition\myfolders\Macro.OOP\Analysis\prjName\macro\freqmeans.sas';
FILENAME sumdollar 'E:\ChenyxFiles\2014.Study.TrainingCertificate\SAS.Victoria\SAS.DS2\SASUniversityEdition\myfolders\Macro.OOP\Analysis\prjName\macro\sumdollar.sas';


OPTIONS MAUTOSOURCE SASAUTOS=(freqmeans sumdollar SASAUTOS);

/*
in main program, or the caller program,
call the macros in Autocall library
*/
%sumDollar;
%freqMeans;


/*
delete a macro to override it*/
%macro mark1(var=);

data work.&var.;
length year 8;
year=2003;
run;

%mend mark1;


proc catalog cat=work.sasmacr;
delete mark1.macro;
run;

%macro mark1(var=,year=);

data work.&var.;
length year&year. 8;
year&year=&year.;
run;

%mend mark1;

No comments:

Post a Comment