Thanks! I tried it out with a little example and the create-data-for-suffix-step was exactly what I was looking for.
Data Costs;
Do Source=1 To 10;
Do Plant=1 To 20;
Costs=Rannor(1)*4+19;
Output;
End;
End;
Run;
Data Demand;
Do Plant=1 To 20;
Qty=Rannor(1)*20+200;
Output;
End;
Run;
Data Supply;
Do Source=1 To 10;
Qty=Rannor(1)*15+375;
Output;
End;
Run;
Proc Optmodel;
Set <Num,Num> q_w;
Num Costs{q_w};
Read Data Costs Into q_w=[Source Plant] Costs=Costs;
Set Sources=Setof{<q,w> in q_w} q;
Set Plants=Setof{<q,w> in q_w} w;
Num Demand{Plants};
Num Supply{Sources};
Read Data Demand Into [Plants=Plant] Demand=Qty;
Read Data Supply Into [Sources=Source] Supply=Qty;
Var X{Sources,Plants}>=0;
Con Cns1{q in Sources}:Sum{w in Plants}X[q,w]<=Supply;
Con Cns2{w in Plants}:Sum{q in Sources}X[q,w]>=Demand;
Min Obj=Sum{q in Sources,w in Plants}X[q,w]*Costs[q,w];
Solve with LP/Solver=Dual /*Algorithm=Network*/ IIS=On;
create data var_status_data from [Source Plant] name=X.name status=X.status;
create data con_status_data from [Plant] name=Cns1.name status=Cns1.status;
Create Data Con_Status_data_2 From [Source] name=Cns2.name status=Cns2.status;
Run;