First, thank you for posting the code in a text box - MUCH easier on my eyes - and it preserves the fixed pitch font in the SAS log - which is occasionally important.
I have checked on my previous comment
I presume the rand('gamma',&NOBs.,1) returns a continuous result in the (0,100] interval - i.e. greater than zero and up through 100.
I should have done this before, because the SAS Functions and Call Routines documentation for the GAMMA distribution just says the the RAND('GAMMA'... function will produce a positive number. There is no upper limit, so you may very well be generating numbers greater than 100, which could cause the error message you report.
So if you have a strategy of a fixed number (100 in your case) of buckets selected based on the RAND('GAMMA' function, you will have to decide whether 100 buckets (i.e. macrovar NOBS=100) is enough, and what to do about results from RAND('GAMMA' that exceed &NOBS. You could replace the single statement
R[rand('gamma', &Nobs.,1)] + (diff>0);
with
J=ceil(rand('gamma', &Nobs.,1));
and then decide whether to add
R[J] + (diff>0);
depending on the value of J.
Of course, it's not at all clear what your goal is, so you may need to take another strategy.
... View more