How about these?

Method 1: Using data step
data two; set one;
MinValue=min(of a--e);
run;

Method 2: Using proc sql
proc sql;
create table three as
select *, min(a,b,c,d,e) as MinValue
from one;
quit;

If variable names are required programatically, proc contents could be used:
proc contents data=work.one out=one_c noprint; run;

DICTIONARY.COLUMNS could also be used to get variable names. However, that might increase the processing time if your library is having a large number of tables.

Now use an array variable to get the variable names in the desired format and use that in the data or the proc sql methods given above.

So, Method 1 will now be:

proc sql noprint;
select strip(NAME) into :VarNameString2
separated by '--'
from one_c
having VarNum =Min(VarNum) or VarNum =Max(VarNum)
order by VarNum;
quit;

data two_macro; set one;
MinValue=min(of &VarNameString2);
run;

And Method 2 will be:

proc sql noprint;
select strip(NAME) into :VarNameString
separated by ','
from one_c
order by VarNum;

create table three_macro as
select *, min(&VarNameString) as MinValue
from one;
quit;