I nedd to write a PROC FORMAT
and PROC FCMP
in my SAS programm to convert values in horsepower to watts. Watts should have the following format: XXXXX,XX Watt.
proc fcmp outlib=work.functions.fun;
function hptow(c) $;
n = cats(c*745.7, ' Watts');
return (n);
endsub;
run;
options cmplib=work.functions;
proc format;
value hptow other=[hptow()];
run;
data my_cars;
set sashelp.cars;
format horsepower hptow.;
run;
But results look something like that:
197610.
201339W
How do i change this mistake and have needed output format for formated column?
Set a LENGTH for the variable you are calculating in the function. If you want the space in front of the W then don't remove it by using the CATS() function.
length n $14;
n = put(c*745.7,commax8.2) || ' Watts' ;
Set a default width for the format.
value hptow (default=14) other=[hptow()];
But why not just use a PICTURE format?
proc format ;
picture hptow
low-high = '00009,99 Watt' (mult=74570)
;
run;
Results:
410 data test;
411 do hp=1,2,5,12 ;
412 w=hp*745.7 ;
413 put hp= w= @20 hp hptow.;
414 end;
415 run;
hp=1 w=745.7 745,70 Watt
hp=2 w=1491.4 1491,40 Watt
hp=5 w=3728.5 3728,50 Watt
hp=12 w=8948.4 8948,40 Watt