34 lines
1.1 KiB
RPGLE
34 lines
1.1 KiB
RPGLE
**free
|
|
//==============================================================
|
|
//=== SRV_RANDOM service program contains convenience prodcedures
|
|
// for generating pseudo random numbers.
|
|
//==============================================================
|
|
ctl-opt nomain option(*nodebugio: *srcstmt);
|
|
// ------------------------------------------------------------
|
|
// RAND_INT - function to returns a pseudo randon integer
|
|
// such that the value is >= p_Low and <= p_High.
|
|
// ------------------------------------------------------------
|
|
|
|
// No validity checking on the parameters.
|
|
|
|
// Testing shows that a fairly even distribution is
|
|
// produced, but p_High is much less frequently returned.
|
|
// The underlying SQL function returns a number that is
|
|
// >= .0 and <= .1, but it rarely returns .1.
|
|
|
|
// CRTSRVPGM SRVPGM(LENNONS1/SRV_RAND) MODULE(Rand_Int) EXPORT(*ALL)
|
|
|
|
dcl-proc Rand_Int export;
|
|
dcl-pi Rand_Int int(10);
|
|
p_Low int(10) value;
|
|
p_High int(10) value;
|
|
end-pi;
|
|
|
|
dcl-s rf float(8);
|
|
dcl-s wk int(10);
|
|
|
|
exec sql set :rf = random();
|
|
wk = %int( (rf *(p_High - p_Low) + p_Low) );
|
|
return wk;
|
|
end-proc;
|