In general it's possible to have `in`, `out` and `in out` parameters - I don't think we should skip the out and inout ones: these are part of procedure`s interface.

Similar applies to function return value. Let's say you have a 'function foo(x number) returnin int` how do you distinguish it from `procedure foo(number)`?