As featured in: Data Management Solutions Using SAS Hash Table Operations: A Business Intelligence Case Study , and built from this github repository.
Chapter 8 Percentiles.sas
1 /* "Chapter 8 Percentiles.sas" from the SAS Press book
2  Data Management Solutions Using SAS Hash Table Operations:
3  A Business Intelligence Case Study
4 */
5 
6 data Percentiles;
7  keep Percentile Distance;
8  format Percentile percent5.;
9  dcl hash ptiles(dataset:"dw.AtBats (where=(Distance gt .))"
10  ,multidata:"Y",ordered:"A");
11  ptiles.defineKey("Distance");
12  ptiles.defineDone();
13  dcl hiter iterP("ptiles");
14  array _ptiles(6) _temporary_ (.5 .05 .1 .25 .75 .95);
15  call sortn(of _ptiles(*));
16  num_items = ptiles.num_items;
17  do i = 1 to dim(_ptiles);
18  Percentile = _ptiles(i);
19  do while (Counter lt Percentile*num_items);
20  Counter + 1;
21  iterP.next();
22  end;
23  /* could add logic here to read
24  next value to interpolate */
25  output;
26  end;
27  stop;
28  set dw.AtBats;
29 run;