3
votes

Below is the code to create the dataset from exisitng datasets, where end and end8, end7 are macro variables, just wondering why add . at the end of the macro variables?

data tab4a_&end.;
set 
mck_tab4a_&end8.
mck_raw.mck_tab4a_&end7.
run;
2

2 Answers

4
votes

The dot marks the end of the macro variable. It is often used when macro text is combined with static text, e.g. in a filename, so that SAS knows where the macro variable ends. E.g.:

%let year=2017;

%let filename = &year._accounts.xlsx;

%put &filename;

Produces 2017_accounts.xlsx

Without the first dot, SAS will produce a warning message, because it will be looking for a macro variable called year_accounts. (It can't tell where the macro ends and the text starts).

If there is a space or an end of statement after the macro variable then the dot can be omitted. Including the dot has no effect in this case. Some people think it is good to always include the dot.

2
votes

It's used to denote the end of a macro variable. This is important when you're mixing macro variables and text.

For example:

%let my_var = TEST;
%let my_var_new = WRONG;
%put &my_var._new;
%put &my_var_new.;

OUTPUT:

 58             %let my_var = TEST;
 59             %let my_var_new = WRONG;
 60             %put &my_var._new;
 TEST_new
 61             %put &my_var_new.;
 WRONG

How does the macro processor know if the macro variable is my_var or my_var_new? The period tells SAS where the macro variable ends.

Including the dot also turns the macro variable green in the editor which helps for reading and debugging code.