Du hast Recht. Mein Beispielprogramm kommt auch immer nur auf ca. 32000 unterschiedliche Zahlen.

Code:
dcl-s zahlen packed(8) dim(100000);
dcl-s zahl packed(8);
dcl-s elem packed(8);
dcl-s i packed(8);

clear zahlen;

for i=1 to 200000;

   exec sql set :zahl = (int(Rand() * 9999999 ) + 1);
   if %lookup(zahl : zahlen) = 0;
      elem += 1;
      zahlen(elem) = zahl;
   endif;

endfor;

dsply %char(elem);

*inlr = *on