In a similar trend to DN and Tom, Had I been asked this question in an interview with my current knowledge of SAS, my answer would be straight forward: I will assume this is a trick question. Whether this can be achieved or not through macros is irrelevant, there are significantly better and more efficient tools for this task than macros and in particular, any macro strict solution for this task should be avoided. As for a bad answer to a trick question for the sole sake of showing skills with SAS macros, %macro really(); proc sql; select distinct subject into :subj1-:subj999999 from t ; quit; %let nbyvar=&sqlobs; data _null_; set t; call symput(cats('visit', '_', subject, '_', visit), '0'); /* the actual value put in the macro var is irrelevant we only need it to exist. */ run; proc sql; select visit into :v1-:v999999 from r ; quit; %let nvisit=&sqlobs; data want; %do i=1 %to &nbyvar; %do j=1 %to &nvisit; %if %symexist(visit_&i._&j.) %then %do; subject="&i."; visit=&j.; missingvisit=.; output; %end; %else %do; subject="&i."; visit=.; missingvisit=&j.; output; %end; %end; %end; run; %mend; %really(); Don't get me wrong, it's rarely the best choice to talk against a question but if the rationale as to why macros shouldn't be used to solve this is accompanied by something like "but I assume this is merely for the sake of seeing if I am comfortable with handling macro variable and logic", then here's an example solution that uses right about as much macros as can be. It is probably wiser to demonstrate to the interviewer that not only do you know macro wells but also know when not to macro at the same time~ Vince
... View more