28.GLOBAL AND LOCAL MACROS

                                 GLOBAL AND LOCAL MACROS


MACROS::: REDUCE THE CODE AND  MINIMIZE THE TIME REPETITIVE CODES


EX::: SORT PROCEDURE(15 STEPS) TO 1 STEP        

         SUMMARY PROCEDURE(15 STEPS) TO 1 STEP                    

        MEANS PROCEDURE(20 STEPS) TO 1 STEP


PROC SORT DATA=DSN1;

BY ID;

RUN;

PROC SORT DATA=DSN2;

BY ID;

RUN;


%MACRO SOMESH(JGXS= XHSJX=);

PROC SORT DATA=&DSN;

BY &VAR;

RUN;

%MEND;


%SOMESH(SASHELP.CLASS AGE);

%SOKMESH(PROG1.SALES SALARY);



HOW DO YOU IDENTIFY THE SAS VARIABLES                MACRO VARIABLES


 --NAME AGE GENDER HT WT                                  --&NAME &AGE &GENDER &HT &WT


--HOW DO YOU IDENTIFY THE SAS STATEMENTS             --MACRO STATEMENTS


--DATA PROC SCAN SUBSTR DO END                 --%MACRO %LET %PUT %SCAN %SUBSTR %DO %END



&(AMPER)---MACRO VARIABLE::: &NAME &AGE &GENDER &HT


 %(PERCENTILE)-----MACRO STATEMENT::: %MACRO %LET %PUT %SCAN %SUBSTR %DO %END



FOR CREATING ASSIGNING THE MACRO:: %MACRO %LET %SCAN %SUBSTR %DO %END


 FOR CALLING THE MACRO:: %PUT::: PUT STATEMENT PUT FUNCTION %PUT IN MACRO


MACRO VARIABLE:


1.GLOBAL MACRO::: DEFAULT MACROS BY SAS 


2.LOCAL MACRO::: USE WITHIN THE PROGRAM


1.GLOBAL MACRO:

    ->IT CAN BE USED ANYWHERE IN THE SAS PROGRAM 

->THEY ARE SYSTEM ASSINGNED VARIABLES*/;


PROC PRINT DATA=SASHELP.CARS;

WHERE MAKE='Audi' AND TYPE='Sports';

TITLE "SALES OF &SYSDAY &SYSDATE9";

RUN;


%PUT TODAY SALES IS &SYSDAY &SYSDATE &SYSVER;


2.LOCAL MACRO::

 ->THESE VAR CAN BE ACCESSED BY SAS PROGRAM WHICH DECLARED AS A PART OF

       THE PROGRAM


%LET XXX='Audi';

%LET YYY='Sports';


PROC PRINT DATA=SASHELP.CARS;

WHERE MAKE=&XXX AND TYPE=&YYY;

TITLE "SALES OF &SYSDAY &SYSDATE9";

RUN;


%LET XXX='BMW';

%LET YYY='SUV';


%PUT &XXX &YYY;


%LET XXX='Honda';

%let yyy='SUV';


%PUT &XXX &YYY;



_AUTOMATIC_::: THIS IS HAVING THE SYSTEM GENERATED MACRO VARIABLE INFO


%PUT _AUTOMATIC_;


%PUT TODAY IS &SYSDATE9;


%PUT SYSTEM HAVING SAS VERSION &SYSVER;


%LET NAME=ADITYA;

%LET SEX=M;

%PUT DATA OF CLINOVO &NAME &SEX;


%PUT _USER_;


%PUT _ALL_;


DEFINING THE MACRO:


%MACRO XXXXX;

TEXT,STATMENT,DATA/PROC STEP;

%MEND;


PROC PRINT DATA=SASHELP.CARS;

WHERE MAKE='Audi' AND TYPE='Sedan';

TITLE "SALES OF &SYSDAY &SYSDATE";

RUN;


%MACRO DIVYA(MAKE,TYPE);

PROC PRINT DATA=SASHELP.CARS;

WHERE MAKE=&MAKE AND TYPE=&TYPE;

TITLE "SALES OF &SYSDAY &SYSDATE";

RUN;

%MEND;


%DIVYA('Audi','Sedan')




--PLEASE FOLLOW THE BLOG FOR MORE INFO....

--JOIN US IN TELEGRAM CHANNEL FOR MORE UPDATES

   CLICK HERE: https://t.me/SasAll4You


Comments