Muy sencillo; vemos el programa y posteriormente lo transformamos en una macro de SAS:

data aleat;
  do i = 1 to 100;
    aleatorio = ranuni(8) * 1000;
    largo_decimal = length(scan(put(aleatorio, best32.), 2, "."));
    output;
  end;
run;

Sencillo: pasamos de número a carácter con PUT y buscamos el punto con SCAN, extraemos la segunda parte del carácter separado por punto y vemos su longitud con LENGTH. Esto pasado a una macro:

%macro largo_decimal(num);
  length(scan(put(&num., best32.), 2, "."))
%mend;

data aleat;
  do i = 1 to 100;
    aleatorio = ranuni(8) * 1000;
    largo_decimal = %largo_decimal(aleatorio);
    output;
  end;
run;

Sencillo; a mí hoy me ha sido útil. Saludos.