# Generate all permutations of elements in SAS

**Permutation:** Permutation can simply be defined as the several ways of arranging few or all members within a specific order. It is the process of legibly arranging from chaos. This is what is termed a Permutation.

To Generate all permutations of elements in SAS, use the `FACT`

function then determines the permutation using the `CALL ALLPERM`

.

`CALL ALLPERM `

and `CATS`

function are new in SAS 9.0.

data ex1; drop i perms x1-x3; array x (3) $3 ('a' 'b' 'c'); length perm $3; perms=fact(3); do i=1 to perms; call allperm(i, of x(*)); perm=cats(of x(*)); output; end; run; |

**Output:**

**Combination: **The combination is a process of selecting the objects or items from a set or the collection of objects, such that (unlike permutations) the order of selection of objects does not matter. It refers to the combination of N things taken from a group of K at a time without repetition.

data test(drop=x1-x3 h1-h3); array x[3] $3 ('a' 'b' 'c'); array h[3] $3; n=dim(x); do k = 1 to 3; ncomb=comb(n,k); call sortc(of x(*)); call missing(of h(*)); do j=1 to ncomb; rc=allcomb(j,k,of x[*]); if rc<0 then leave; do i= 1 to k; h[i]=x[i]; end; allcombns=cats(of h(*)); output; end; end; drop i j k n ncomb rc; run; |

**Output:**