declare exp generic (iexp when (fixed, fixed), fexp when (float, fixed) ); iexp: procedure (m, n) returns (fixed binary (31)); declare (m, n) fixed binary (31) nonassignable; declare exp fixed binary (31) initial (m), i fixed binary; if m = 0 & n = 0 then signal error; if n = 0 then return (1); do i = 2 to n; exp = exp * m; end; return (exp); end iexp; fexp: procedure (a, n) returns (float (15)); declare (a float, n fixed binary (31)) nonassignable; declare exp float initial (a), i fixed binary; if a = 0 & n = 0 then signal error; if n = 0 then return (1); do i = 2 to n; exp = exp * a; end; return (exp); end fexp;