I have the following code:
%MACRO DATAPREP(DATA);
%DO i = 1 %TO 1;
PROC SORT DATA = FIMR.Sleep_Logistic;
BY Case_ID__;
RUN;
PROC SORT DATA = FIMR.%SCAN(&DATA,&i);
BY Case_Number;
RUN;
DATA %SCAN(&DATA,&i);
MERGE FIMR.Sleep_Logistic (IN = A KEEP = Case_ID__ RENAME = (Case_ID__ = Case_Number)) FIMR.%SCAN(&DATA,&i) (IN = B);
BY Case_Number;
IF A and B;
RUN;
PROC CONTENTS DATA = %SCAN(&DATA,&i) NOPRINT OUT = Contents_%SCAN(&DATA,&i);
RUN;
DATA Contents_%SCAN(&DATA,&i);
SET Contents_%SCAN(&DATA,&i);
IF Length NE 1 THEN DELETE;
IF Name = 'Fetal__F__Infant__I_' THEN DELETE;
KEEP Name VarNum;
RUN;
PROC SQL;
SELECT DISTINCT Name
INTO :List_%SCAN(&DATA,&i) SEPARATED BY ' '
FROM Contents_%SCAN(&DATA,&i)
ORDER BY VarNum;
QUIT;
%END;
%MEND;
%DATAPREP(DATA = Environment);
When I then type the following:
%PUT &List_Environment;
I get an error that states that the symbolic reference List_Environment is not resolved. Please HELP.
Hi @Katie,
Please add the following statement to your macro (e.g. before the PROC SQL step).
%GLOBAL List_%SCAN(&DATA,&i);
Edit: %GLOBAL List_Environment; would work only for this specific macro variable, but in your case the name is dynamic.
Hi @Katie,
Please add the following statement to your macro (e.g. before the PROC SQL step).
%GLOBAL List_%SCAN(&DATA,&i);
Edit: %GLOBAL List_Environment; would work only for this specific macro variable, but in your case the name is dynamic.
THANK YOU!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.