proc iml; n = 594; p = .01; c = {"n(sig.)" "p(n(sig))" "p(n>=n(sig))"}; comb = j((n+1),1,1); prob = comb; cum_p = prob; r_val = prob; results = j((n+1),3,1); do r = 0 to n; q = 1 - p; max = max((n-r),r); min = min((n-r),r); easy = n - max; rest = n - max - min; so_far = 1; do i = 1 to easy; num = max+i; den = i; so_far = so_far * num / den; end; do i = 1 to rest; so_far = so_far * (max + min + 1); end; r_val[r+1] = r; comb[r+1] = so_far; results[r+1,2] = (q**(n-r))*(p**r) * so_far; results[r+1,1] = r; end; cum_pr = 0; do i = n+1 to 1 by -1; j = n +2 - i; cum_pr = cum_pr + results[i,2]; cum_p[i] = cum_pr; results[i,3] = cum_pr; end; print p; print results[colname=c]; do i = 1 to n+1 while (results[i,3] > p); end; i = i - 1; print "Number of significant results needed for overall alpha < p"; print i;