TRACE
Альтернативная форма:
Инструкция TRACE используется для отладки. Она управляет трассировкой событий (т.е. выводом процесса их выполнения), имеющих место при работе программы REXX. Синтаксис инструкции TRACE более сжатый и конкретный, в отличие от других инструкций языка REXX. Немногочисленность ключевых слов, используемых в данной инструкции, особенно удобна, так как TRACE обычно вводится вручную в процессе диалоговой отладки.
Число представляет собой целое число.
Результатом вычисления строки или выражения может быть:
- Число
- Один из действительных префиксов, алфавитных режимов (слов), либо и то, и другое, как показано на данной панели.
- Ноль.
Символ является константой и может представлять собой:
- Число
- Один из действительных префиксов, алфавитных режимов (слов), либо и то, и другое, как показано на данной панели.
Действие трассировки определяется указанным режимом инструкции TRACE или результатом вычисления выражения. При наличии выражения можно опустить вложенное ключевое слово VALUE, если выражение начинается со специального символа или оператора (во избежание ошибок для символа или строки).
Алфавитные режимы (слова)
Несмотря на то, что режим можно задать полным словом, значащей является только первая прописная буква; остальные буквы игнорируются. Поэтому эти режимы и называются алфавитными.
Ниже приведено соответствие алфавитных режимов и действий, выполняемых при этом инструкцией TRACE:
All | Трассируются (выводятся) все предложения перед их выполнением. |
Commands | Трассируются все команды операционной системы перед их выполнением и выводятся все коды возврата. |
Error | Трассируется после своего выполнения любая команда операционной системы, завершившаяся с ненулевым кодом возврата. |
Failure | Трассируется после своего выполнения любая команда операционной системы, завершившаяся аварийно. Этот режим аналогичен режиму Normal. |
Intermediates | Трассируются все предложения перед их выполнением. Трассируются также промежуточные результаты вычисления выражений и имена, полученные после подстановки. |
Labels | Трассируются метки, встретившиеся в процессе выполнения. Использование этого режима особенно полезно при отладке, когда языковый процессор делает остановку после каждой метки. Пользователю также удобно отмечать при этом все вызовы подпрограмм. |
Normal | Трассируется после своего выполнения любая команда операционной системы, завершившаяся аварийно. Этот режим принимается по умолчанию.
Для стандартного командного процессора операционной системы OS/2 попытка выполнить несуществующую команду приводит к формированию условия FAILURE. Попытка направить команду на выполнение в несуществующую среду подкоманд также приводит к формированию условия FAILURE; в этом случае переменная RC принимает значение 2, что соответствует коду возврата для сообщения "Файл не найден" операционной системы OS/2. |
Off | Трассировка не выполняется. Все действия, выполнявшиеся ранее по указанным префиксам режимов (см. выше), завершаются. |
Results | Трассируются все предложения перед их выполнением. Трассируются конечные результаты вычисления выражений (в противоположность Intermediates). Также выводятся значения, присвоенные переменным при выполнении инструкций PULL, ARG и PARSE. Указанный режим рекомендуется использовать для общей отладки. |
Префиксный режим
Префикс ? может быть указан либо сам по себе, либо вместе с одним из алфавитных режимов. При желании можно указывать префикс несколько раз. Каждое указание префикса в инструкции приводит к выполнению действия, определенного предыдущим префиксом. Префикс следует указывать непосредственно перед режимом (без разделяющих пробелов).
Префикс ? изменяет трассировку и выполнение. Он используется для управления режимом диалоговой отладки. В процессе нормального выполнения инструкция TRACE, введенная с префиксом ?, приводит к включению режима диалоговой отладки.
Если режим диалоговой отладки активен, то Вы можете выключить его, используя инструкцию TRACE с префиксом ?. Таким образом, повторное использование префикса ? приводит к поочередному включению и выключению режима диалоговой отладки. Режим диалоговой отладки можно выключить в любое время, выполнив инструкцию TRACE O или TRACE без режимов.
Числовые режимы
Если диалоговая отладка активна и указанный режим представляет собой целое положительное число (или выражение, значение которого - целое положительное число), то это число определяет количество отладочных остановок, которые требуется пропустить. Однако если указанный режим представляет собой целое отрицательное число (или выражение, значение которого - целое отрицательное число), то вся трассировка, включая отладочные остановки, будет временно подавляться для указанного числа предложений.
Если диалоговая отладка неактивна, то числовые режимы игнорируются.
Формат вывода инструкции TRACE
Каждое трассируемое предложение будет выведено с автоматическим форматированием (отступом) в соответствии с глубиной его логической вложенности и т.д. Результаты (если они требуются) выводятся с отступом в два пробела и заключаются в двойные кавычки так, что обнаруживаются обрамляющие пробелы.
Все строки, выводимые в процессе трассировки, имеют трехсимвольный префикс для идентификации типа трассируемых данных. Префиксы и их определения перечислены ниже:
"*-*" | Определяет одно исходное предложение, т.е. данные, фактически указанные в программе. |
"+++" | Определяет сообщение трассировки. Это может быть ненулевой код возврата из команды, приглашающее сообщение, выдаваемое в режиме диалоговой отладки, индикация синтаксической ошибки в режиме диалоговой отладки или протрассированные предложения после синтаксической ошибки в программе. |
">>>" | Определяет результат выражения (для TRACE R), значение, присвоенное переменной в процессе разбора, или значение, возвращенное из подпрограммы после ее выполнения. |
">.>" | Определяет значение, присвоенное в процессе разбора метке-заполнителю. |