REDUCIBLE indicates that a procedure or entry need not be invoked multiple times if the argument(s) stays unchanged, and that the invocation of the procedure has no side effects.
For example, a user-written function that computes a result based on unchanging data should be declared REDUCIBLE. A function that computes a result based on changing data, such as a random number or time of day, should be declared IRREDUCIBLE.
In the following example, f is invoked only once since REDUCIBLE is part of the declaration. If IRREDUCIBLE had been used in the declaration, f would be invoked twice.
dcl (f) entry options( reducible ) returns( fixed bin ); select; when( f(x) < 0 ) . . . when( f(x) > 0 ) . . . otherwise . . . end;