& THROW_PUBLIC не является ключевым словом Progress ABL или любой стандартной функцией на всех. Скорее всего, это нечто специфическое для Epicor.
Для лучшего понимания проблемы, возможно, вам следует разместить больше кода!
Однако: начало с амперсанда может быть ключом к его препроцессору. Препроцессор может быть определен с помощью GLOBAL-DEFINE
или SCOPED-DEFINE
- найдите это в своем коде.
Когда программа скомпилирована любые ссылки на препроцессора (написана как {&name-of-preprocesor}
будет заменен на это определение. Некоторые ограниченные проверки может быть сделано (как, например, какая операционная система используется для компиляции).
Вот пример . два препроцессоров определяются и используются
&GLOBAL-DEFINE THROW_PUBLIC1 MESSAGE "HELLO 1".
&SCOPED-DEFINE THROW_PUBLIC2 MESSAGE "HELLO 2".
{&THROW_PUBLIC1}
{&THROW_PUBLIC2}
После прекомпилятор программа будет просто выглядеть следующим образом:
MESSAGE "HELLO 1".
MESSAGE "HELLO 2".
Часть THROW
может указывать на какую-то обработку ошибок, используемую как THROW-CATCH
-исполнитель или аналогичный. Они написаны что-то вроде этого:
BLOCK-LEVEL ON ERROR UNDO, THROW.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
ASSIGN
i = INTEGER("hello").
CATCH err AS Progress.Lang.Error:
MESSAGE "Error is caught here" VIEW-AS ALERT-BOX.
END.
FINALLY:
MESSAGE "This is run in the end" VIEW-AS ALERT-BOX.
END.
Возможно, вы захотите объяснить, что делает '& THROW_PUBLIC'. –
Это мой вопрос. Я не знаю, является ли это распространенным в ABL или зарезервированным словом в ABL. – Arcadian