test your macro

Post on 30-Nov-2014

1.531 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

A quick test of your macro skills

TRANSCRIPT

Test Your Macro

Ray

Summary

A. Intro to macro

1. Why macro?

2. Components of macro language (macro variables, programs, facility interfaces, storage techniques)

3. Macro variable

User defined/Automatic

Global/Local)

4. Syntax

B. Method to create macro variable1. Open code using %let2. Inside a macro program3. Select into: in proc sql4. Call symput in data step

C. Macro processing1. Macro Compiling2. Macro Expression & Quoting Types: Text/Logic/Arithmetic %eval and %sysevalf %compfl and %compchar 3. Storing & Reusing Macros Saving macros in an autocall library Calling an autocall macro Saving macros using the stored compiled macro facility

Calling a stored compiled macro

1. How do professionals pronounce ampersand(&) for the macro variable?

1. How do professionals pronounce ampersand(&) for the macro variable?

"amper", not "ampersand"

2. Where does SAS store macro variables?

2. Where does SAS store macro variables?

PDV, program data vector

Second memory area

3. What is the title on the report in the following?

%let dwarfs = 7;

proc print data = awards;

title 'There are were &dwarfs small statues awarded in 1939';

run;

A. There are were &dwarfs small statues awarded in 1939

B. There are were 7 small statues awarded in 1939

3. What is the title on the report in the following?

%let dwarfs = 7;

proc print data = awards;

title 'There are were &dwarfs small statues awarded in 1939';

run;

A. There are were &dwarfs small statues awarded in 1939

B. There are were 7 small statues awarded in 1939

The macro facility does not "peak inside" code with single quotes to resolve macro variables.

4. How to replace with macro variables?

%let year = 2007;

%let month = MAR;

%let type = revenue;

%let libinfo = company;

Target:

Libname company 'C:\m data''

proc print data = company.MAR2007;

var revenuecanada revenueus;

run;

4. How to replace with macro variables?

%let year = 2007;

%let month = MAR;

%let type = revenue;

%let libinfo = company;

Answer:

Libname &libinfo 'C:\m data''

proc print data = &libinfo..&month&year;

var &type.canada &type.us;

run;

Whenever SAS encounters a period after a macro variable reference, the period is treated as a way to end the macro variable and then the period is thrown away.

5. What is the ???? in the following?

%let mouse1 = Mickey;

%let mouse2 = Minnie;

%let mouse3 = Miss Bianca;

%let num=2;

%let type = mouse;

proc print data = work.all_movies;

where star = "????";

title "???? is my favorite character";

run;

5. What is the ???? in the following?

%let mouse1 = Mickey;

%let mouse2 = Minnie;

%let mouse3 = Miss Bianca;

%let num=2;

%let type = mouse;

proc print data = work.all_movies;

where star = "&&mouse&num";

title "&&mouse&num is my favorite character";

run;

&&mouse&num

&mouse2

Minnie

6. How to assign singleq with O'neill ?

We have

%let singleq = O'neill;

%put &singleq; Is this the result?

Warning

6. How to assign singleq with O'neill ?

We have

%let singleq = %str(O%'neill);

%put &singleq;

Umatched quotation marks('): %STR

Percent sign(%) : %NRSTR

Comma(,): %BQUOTE

Ampersand(&): %SUPERQ

top related