В ряде случаев функция возвращает значение которое, вообще говоря, опционально. То есть вызывающему это значение может быть нужно, а может быть не нужно (то есть там не лежит флаг о успешности операции, а основной профит от функции это её побочный эффект-действие, плюс, возможно, какое-то количество возвращаемых параметров через аргументы).
Как это культурней организовать в Обероне? Оберон не позволяет вызов такой функции оформлять в виде statement'a, только в виде expression'a. А expression у нас будет либо в assignment, либо в IF либо в CASE либо в WHILE. Что не здорово.
Просто городить две версии этой функции с разными названиями? Типа FooProc, FooFunc?