Functions and CALL Routines 
Category:  Combinatorial 
Syntax  
Arguments  
Details  
Using CALL RANPERK with Macros  
Examples  
Example 1: Using CALL RANPERK in a DATA Step  
Example 2: Using CALL RANPERK with a Macro  
See Also 
Syntax 
CALL RANPERK(seed, k, variable1<, variable2, ...>); 
is a numeric variable that contains the random number seed. For more information about seeds, see Seed Values.
is the number of values that you want to have in the random permutation.
specifies all numeric variables, or all character variables that have the same length. K values of these variables are randomly permuted.
Details 
You can call the RANPERK routine when you use the %SYSCALL macro. In this case, the variable arguments are not required to be the same type or length. If %SYSCALL identifies an argument as numeric, then %SYSCALL reformats the returned value.
If an error occurs during the execution of the CALL RANPERK routine, then both of the following values are set:
&SYSERR is assigned a value that is greater than 4.
&SYSINFO is assigned a value that is less than 100.
If there are no errors, then &SYSERR and &SYSINFO are set to zero.
Examples 
The following example shows how to generate random permutations of given values by using the CALL RANPERK routine.
data _null_; array x x1x5 (1 2 3 4 5); seed = 1234567890123; do n=1 to 10; call ranperk(seed, 3, of x1x5); put seed= @20 ' x= ' x1x3; end; run;
Log Output from Using the CALL RANPERK Routine in a DATA Step
seed=1332351321 x= 5 4 2 seed=829042065 x= 4 1 3 seed=767738639 x= 5 1 2 seed=1280236105 x= 3 2 5 seed=670350431 x= 4 3 5 seed=1956939964 x= 3 1 2 seed=353939815 x= 4 2 1 seed=1996660805 x= 3 4 5 seed=1835940555 x= 5 1 4 seed=910897519 x= 5 1 2
The following is an example of the CALL RANPERK routine that is used with macros.
%macro test; %let x1=ant; %let x2=.1234; %let x3=1e10; %let x4=hippopotamus; %let x5=zebra; %let k=3; %let seed = 12345; %do j=1 %to 10; %syscall ranperk(seed, k, x1, x2, x3, x4, x5); %put j=&j &x1 &x2 &x3; %end; %mend; %test;
Output from Using the CALL RANPERK Routine with a Macro
j=1 0.1234 hippopotamus zebra j=2 hippopotamus 0.1234 10000000000 j=3 hippopotamus ant zebra j=4 0.1234 zebra ant j=5 0.1234 ant hippopotamus j=6 10000000000 hippopotamus ant j=7 10000000000 hippopotamus ant j=8 ant 10000000000 0.1234 j=9 zebra 0.1234 10000000000 j=10 zebra hippopotamus 10000000000
See Also 

Copyright © 2011 by SAS Institute Inc., Cary, NC, USA. All rights reserved.