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!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.