procedure main() bases := [5,5.] numbers := [0,2,2.,-1,3] every write("expon(",b := !bases,", ",x := !numbers,")=",(expon(b,x) | "failed") \ 1) end procedure expon(base,power) local op,res base := numeric(base) | runerror(102,base) power := power = integer(power) | runerr(101,power) if power = 0 then return 1 else op := if power < 1 then (base := real(base)) & "/" # force real base else "*" res := 1 every 1 to abs(power) do res := op(res,base) return res end