As explained in a previous thread, some Base SAS functions such as RANPERM expect a list of arguments instead of a vector of arguments. See the thread
http://support.sas.com/forums/thread.jspa?threadID=7763&tstart=0
If you know that you have three objects to permute, you can use RANPERM like this:
proc iml;
x1=1; x2=2; x3=3;
seed=12; /* or use 0 for random seed */
call ranperm(seed,x1, x2, x3);
print x1, x2, x3;
However, there is an easy way to create a permutation of a vector of an arbitrary size: generate random uniform numbers and then compute the RANK of those numbers to use as an index vector. For example:
x = {1,2,3};
call randseed(12);
u = j(nrow(x),1); /* allocate vector */
do i = 1 to 5;
call randgen(u, "uniform"); /* fill u with random uniform */
perm = x[ rank(u) ]; /* use RANK(u) to permute data */
print i perm;
end;