Похоже, что вы используете настольный поле ввода в вашей функции? Вы должны изменить его в локальную переменную вместо этого и затем вызвать его с помощью записи:
FUNCTION WeekNumber RETURNS INTEGER (INPUT pdaDate as DATE):
DEFINE VAR vDay AS INTEGER NO-UNDO.
vDay = pdaDate - DATE(1, 1, YEAR(pdaDate)) + 1 .
RETURN INTEGER(TRUNCATE(vDay/7, 0)) + (IF vDay MOD 7 <> 0 THEN 1 ELSE 0) .
END FUNCTION.
MESSAGE WeekNumber(OrderRel.ReqDate) VIEW-AS ALERT-BOX.
Это делает функцию компиляции и запуска!
Другое дело, что в зависимости от того, какие цифры в неделю вы вычисляете, это может быть неправильно.
MESSAGE WeekNumber(DATE("2016-09-02")) VIEW-AS ALERT-BOX.
Это, пожалуй, правильно в вашей системе, но по крайней мере не в Швеции, которая с использованием нумерации недель по ISO8601 стандарта. По этим стандартам сентября второй +2016 в неделю 35 ...
Week numbering on Wikipedia
ISO week date
Пожалуйста отправьте сообщение об ошибке. Кроме того, я замечаю, что вы не используете "." как ваш символ окончания строки. Вы должны использовать "." в конце каждого утверждения. – Austin