Macro Auto Call Libraries:

We can store our macros in a central location called an autocall library
Macros from that library can be shared by programs and programmers
Macros default stores in work library,
Using MSTORED SASMSTORE options we can store Macros in to required libraries.
Syntax:-MSTORED SASMSTORE =<AUTOCALL LIBRARY>;
Example:-

OPTIONS MSTORED SASMSTORE=KRISHNA;
%MACRO PRINT(DNAME)/STORE;
PROC PRINT DATA=&DNAME;
RUN;
%MEND;
%PRINT

Use the MAUTOSOURCE and SASAUTOS= system options to tell SAS where to look for macros. Then you can invoke a macro even though the original macro does not appear in your program.
MSTORED:- Use stored compiled macros
SASMSTORE:- Libref associated with SAS data library containing catalog of compiled stored macros (specify a library where you want to store your macros permanent)
MAUTOSOURCE:- Specifies whether the autocall feature is available.
Syntax:- SASAUTOS=Library specification;
SASAUTOS= system option:- Specifies the location of one or more autocall libraries.
Syntax:- SASAUTOS=Library specification;

Example:-
OPTIONS MSTORED SASMSTORE=KRISHNA;
OPTIONS SASAUTOS=KRISHNA;
%PRINT(SASHELP.CARS);

NESTED MACRO
If we write a macro block or macro call inside of the another macro block
Then these macro blocks are called Nested Macros.
%MACRO PRINT(DS);
PROC PRINT DATA=&DS;
RUN;
%MEND;
%MACRO SPRINT(DNAME1, DNAME2, VAR);
PROC SORT DATA=&DNAME1 OUT=&DNAME2;
BY &VAR;
RUN;
%PRINT(&DNAME2);
%MEND;
%SPRINT (SASHELP.CLASS,DS,SEX);