Hi,
The example below error-ed out. I believe I need to resolve my macro var before the datastep but not sure how. Could someone please advise how I can run this correctly.
%macro Test ( InputDS = L1DWP.CUSTOMER_DIM_&LAST_MONTH_YYYYMM.
OutptDS = CUSTOMER_DIM_&LAST_MONTH_YYYYMM.);
data &OutptDS.;
set &InputDS. (obs=10);
run;
%mend;
%Test;
Thanks
Your example is missing a comma, but not sure if that will solve your problem:
%macro Test ( InputDS = L1DWP.CUSTOMER_DIM_&LAST_MONTH_YYYYMM. ,
OutptDS = CUSTOMER_DIM_&LAST_MONTH_YYYYMM.);
data &OutptDS.;
set &InputDS. (obs=10);
run;
%mend;
%Test;
Your example is missing a comma, but not sure if that will solve your problem:
%macro Test ( InputDS = L1DWP.CUSTOMER_DIM_&LAST_MONTH_YYYYMM. ,
OutptDS = CUSTOMER_DIM_&LAST_MONTH_YYYYMM.);
data &OutptDS.;
set &InputDS. (obs=10);
run;
%mend;
%Test;
Haha - trap for the young player!
Execute the command OPTIONS MPRINT; before you run the code. Then, show us the SASLOG so we can see the error message, by clicking the {i} icon and pasting the SASLOG into the window that appears.
1 %_eg_hidenotesandsource;
MPRINT(_EG_HIDENOTESANDSOURCE): options nonotes;
MPRINT(_EG_HIDENOTESANDSOURCE): options nosource;
MPRINT(_EG_RESTORENOTESANDSOURCE): options NOTES;
MPRINT(_EG_RESTORENOTESANDSOURCE): options SOURCE;
5 %_eg_hidenotesandsource;
MPRINT(_EG_HIDENOTESANDSOURCE): options nonotes;
MPRINT(_EG_HIDENOTESANDSOURCE): options nosource;
MPRINT(_EG_RESTORENOTESANDSOURCE): options NOTES;
MPRINT(_EG_RESTORENOTESANDSOURCE): options SOURCE;
28
29
30 options mprint;
31 %macro Test ( InputDS = L1DWP.CUSTOMER_DIM_&LAST_MONTH_YYYYMM.
32 OutptDS = CUSTOMER_DIM_&LAST_MONTH_YYYYMM.);
33
34 data &OutptDS.;
35 set &InputDS. (obs=10);
36 run;
37
38 %mend;
39
40 %Test;
WARNING: Apparent symbolic reference OUTPTDS not resolved.
NOTE: Line generated by the invoked macro "TEST".
40 data &OutptDS.;
_
22
200
MPRINT(TEST): data &OutptDS.;
MPRINT(TEST): set L1DWP.CUSTOMER_DIM_201808 OutptDS = CUSTOMER_DIM_201808 (obs=10);
MPRINT(TEST): run;
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, /, ;, _DATA_, _LAST_, _NULL_.
ERROR 200-322: The symbol is not recognized and will be ignored.
NOTE: Compression was disabled for data set WORK.DATA22 because compression overhead would increase the size of the data set.
NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.DATA22 may be incomplete. When this step was stopped there were 0 observations and 0 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
user cpu time 0.00 seconds
system cpu time 0.00 seconds
memory 285.65k
OS Memory 19028.00k
Timestamp 10/09/2018 01:13:27 PM
Step Count 95 Switch Count 48
NOTE: Line generated by the macro variable "INPUTDS".
40 L1DWP.CUSTOMER_DIM_&LAST_MONTH_YYYYMM. OutptDS = CUSTOMER_DIM_&LAST_MONTH_YYYYMM.
_
22
76
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, (, -, :, ;, CUROBS, END, INDSNAME, KEY,
KEYRESET, KEYS, NOBS, OPEN, POINT, _DATA_, _LAST_, _NULL_.
2 The SAS System 10:36 Tuesday, October 9, 2018
ERROR 76-322: Syntax error, statement will be ignored.
41
42 %_eg_hidenotesandsource;
MPRINT(_EG_HIDENOTESANDSOURCE): options nonotes;
MPRINT(_EG_HIDENOTESANDSOURCE): options nosource;
MPRINT(_EG_RESTORENOTESANDSOURCE): options NOTES;
MPRINT(_EG_RESTORENOTESANDSOURCE): options SOURCE;
54
55
56 %_eg_hidenotesandsource;
MPRINT(_EG_HIDENOTESANDSOURCE): options nonotes;
MPRINT(_EG_HIDENOTESANDSOURCE): options nosource;
MPRINT(_EG_RESTORENOTESANDSOURCE): options NOTES;
MPRINT(_EG_RESTORENOTESANDSOURCE): options SOURCE;
59
As stated by @SASKiwi, your code is missing a comma. Please fix that, then run the code again and paste the SASLOG into the {i} window.
Thanks. All good now.
That's why I always align code. You would have seen the issue right away if you were used to writing:
%macro Test ( InputDS = L1DWP.CUSTOMER_DIM_&LAST_MONTH_YYYYMM.
, OutptDS = CUSTOMER_DIM_&LAST_MONTH_YYYYMM. );
data &OutptDS.;
set &InputDS. (obs=10);
run;
%mend;
%Test;
Same for proc sql: commas first.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.