Your code looks correct to me, but you can do it a little more simply by omitting the SAVE QPS statement and the WITH QP clause and by including the bounds in the VAR statement:
proc optmodel;
var x{1..3} >= 0 <= 5;
minimize f = x[1] - 2*x[2] + 4*x[3] + x[1]**2 + 2*x[2]**2 + 3*x[3]**2 + x[1]*x[2];
con r1: 3*x[1] + 4*x[2] -2*x[3] <= 10;
con r2: -3*x[1] + 2*x[2] + x[3] >= 2;
con r3: 2*x[1] + 3*x[2] + 4*x[3] =5;
solve;
print x;
quit;
By using the EXPAND / SOLVE statement, you can see that both versions pass the same formulation to the solver.