*抛块砖头,不考虑PROC LP出错或者算不出的情况,结果保存到gml;
data dea;
input _row_ $ x1-x3 _type_ $ _rhs_;
cards;
object 1 1 1 min .
inpu1 . 2 3 <= 20
inpu2 5 4 1 >= 10
;
%macro doit(out=, a=1);
proc sql;
update dea set x1=&a where _row_='inpu1';
quit;
proc lp data=dea printlevel=-2 primalout=xxx(keep=_var_ _value_);
run;
proc transpose data=xxx out=yyy(keep=x1-x3 inpu1 inpu2 object);
id _var_;
var _value_;
run;
data zzz;
a = &a;
set yyy;
proc append base=&out data=zzz;
proc datasets nolist;
delete xxx yyy zzz;
quit;
%mend;
%doit;
proc datasets nolist;
delete gml;
quit;
data a;
input a;
call execute(cats('%doit(out=gml, a=', a, ')'));
datalines;
0
1
2
3
5
10
20
100
;
run;
*狗R的几次才贴得上!;
[此贴子已经被作者于2009-6-4 13:38:36编辑过]