The RndUniN type is a unique random type, because you can also use it inside transactions. The advantage of using the RndUniN random type within a transaction rather than in the random variables section is that you can specify variable boundaries for the random values instead of constant boundaries.
RndFunc = "RndUniN" "(" Expr ".." Expr ")".
dcltrans transaction TMain var I, j: number init -2; begin I := RndUniN(j..j*I); /* RndUniN(-2..4) */ end TMain;