I have the follwing macro. It does not show any error but is not executed either. Please help me fix it. Thanks.
%macro surv(filenm, str=, fin=);
%let k=&str; l=&fin; %let name=&filename;
%let var1=a_cmb; %let var2=a_ip; %let var3=a_er;
%let var4=d_cmb; %let var5=d_ip; %let var6=d_er;
%do i=&k %to &l;
var=&&var&i; *(' tried "&&var&i" also );
title "PD_file-&name, event-&var";
proc phreg data=event_pd_&name;
model &var_time*&var_event(0)= age cci pd / ties=efron;
array pd_a(*) pd_q1-pd_q8;
t=ceil(&var_time/90); pd=pd_a
run;
title;
%end;
%mend;
%surv(min, str=4, fin=5);
Hi,
I have not read through your code, but one thing pop out instantly: You did not define &filename in your macro (unless you did it somewhere else, and then 'filenm' was defined but never called), yet you call for it. My guess is that you typo parameter "filenm" with 'filename'. Not sure if this is the cause, but it just does not seem right.
Haikuo
Hi,
I have not read through your code, but one thing pop out instantly: You did not define &filename in your macro (unless you did it somewhere else, and then 'filenm' was defined but never called), yet you call for it. My guess is that you typo parameter "filenm" with 'filename'. Not sure if this is the cause, but it just does not seem right.
Haikuo
@Hai-Kuo; thanks, smart catch, but it is typo here. It was ok in the original one but problem is still there.
options mlogic mprint symbolgen;
Then post the log, or maybe you can then figure it out yourself.
Haikuo
update: from your code,
1. "var" was not defined as macro variable, so '&var' should not be resolved. add '%let' to 'var=&&var&i;'
2. &var_time, &var_event was not defined. What you want maybe: &var._time, &var._event
At a minimum, start with:
The word %LET is missing from I=&fin.
What is the purpose of: var=&&var&i;
It generates a DATA step assignment statement, without the rest of the DATA step.
Also note that you have unmatched single quotes in the comment line that you added. It's not clear if that's really part of the code you ran or not but get rid of unmatched quotes.
And of course, whatever the results, show us the earlier pieces of the code. Some of these macro variables are coming out of nowhere.
Good luck.
Lots of thanks to both of you!!! Yes, code ran.
@ Haikuo: Enabling Options, comments 1 & 2 were of great help.
@ Astounding: adding %let worked. &&var&i added to pick and assign values selectively.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.