Hi:
I think a macro approach would not be required, when PROC REPORT can do this easily for reporting purposes.
As far as the data set descriptor goes, the same format has to be applied to the same numeric column -- unless you turn the numeric variable into a character variable using the PUT function and different formats.
cynthia
[pre]
ods listing;
options nodate nonumber;
proc report data=sashelp.class nowd;
column name age height;
define name / order;
define age / f=8.0;
define height / f=8.0;
compute age;
if name = 'Barbara' then do;
call define (_col_,'format','8.3');
end;
else if name = 'John' then do;
call define (_col_,'format','8.5');
end;
endcomp;
compute height;
if name = 'Barbara' then do;
call define (_col_,'format','8.3');
end;
else if name = 'John' then do;
call define (_col_,'format','8.5');
end;
endcomp;
run;
[/pre]