Неявная конвертация input параметров

Обсуждение вопросов по разработке программ в среде продуктов копорации "Progress Software"
Urachins
Старожил
Сообщения: 37
Зарегистрирован: 26 дек 2006, 17:21
Откуда: Москва

Неявная конвертация input параметров

Сообщение Urachins » 16 ноя 2012, 10:59

Оказалось, что Прогресс не выдает ошибку если типы передаваемых параметров не соответствуют их описанию и просто их конвертит:

run TestSum(1, 2). /* Shows 12 */

PROCEDURE TestSum:
def input param sNum1 as char.
def input param sNum2 as char.

message "SUM = " (sNum1 + sNum2). .

end procedure.

Не нашел описание этого в документации, надо ли менять такие ошибки в коде (добавлять явную конверсию), вдруг в следующей версии это вылетит?

Спасибо

Аватара пользователя
dmi
Старожил
Сообщения: 1523
Зарегистрирован: 27 сен 2001, 03:00
Откуда: Москва

Re: Неявная конвертация input параметров

Сообщение dmi » 16 ноя 2012, 13:44

В документации на RUN написано:

Parameters must be defined in the called procedure. (See the DEFINE PARAMETER statement reference entry.) They must be passed in the same order as they are defined, and they must have compatible data types. The AVM attempts to convert values for data types that do not match. If the AVM cannot convert the value for a mismatched data type, the RUN statement fails with an error condition.
/dmi

http://pro4gl.ru - 4gl блог

Urachins
Старожил
Сообщения: 37
Зарегистрирован: 26 дек 2006, 17:21
Откуда: Москва

Re: Неявная конвертация input параметров

Сообщение Urachins » 16 ноя 2012, 14:31

Спасибо! Я до этого смотрел документацию на define parameter )

Аватара пользователя
dmitri
Старожил
Сообщения: 1016
Зарегистрирован: 04 авг 2005, 16:19
Откуда: Pennsylvania, USA

Re: Неявная конвертация input параметров

Сообщение dmitri » 16 ноя 2012, 21:37

Оракл тоже конвертит по возможности все.
Dmitri Levin and