Иногда для полноценной отладки не обойтись без DEBUG в рутине, но при этом надо предупредить своих коллег, что версию/запрос нельзя запускать из под Desktop/Browser. Иногда всех заинтересованных лице известить не получается, да и к тому же надо сначала предупредить, что DEBUG есть, а потом — что его уже нет. Чтобы упросить себе и другим жизнь, давайте обратимся к документу «Programming Standards.pdf»:
There are «standard» methods for determining whether an application or subroutine is running in any specified environment:
- For OFS the common variable GTSACTIVE will be set.
- For GUI the common variable TTYPE will contain the text GUI.
- For Browser the common variable GTSACTIVE will be set.
Получается, что для того, чтобы не портить жизнь своим коллегам, работающим под Desktop, достаточно написать:
IF NOT(INDEX(TTYPE,'GUI',1)) THEN DEBUG
Для того, чтобы экранировать DEBUG для пользователей Browser и OFS-обработки, понадобится следующая конструкция:
$INSERT I_GTS.COMMON
IF NOT(GTSACTIVE) THEN DEBUG
Можно заранее заготовить кусок кода, объединив оба примера, и вставлять его вместо DEBUG:
$INSERT I_GTS.COMMON
IF NOT(INDEX(TTYPE,'GUI',1) OR GTSACTIVE) THEN DEBUG
Такая конструкция потребует чуть больше усилий от разработчика, чем написание одной команды, но зато Ваши коллеги не будут лишний раз вспоминать Вас недобрым словом.
P.S. Спасибо моему коллеге SIA за идею.