Альтернативная форма:
Инструкция 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 R), значение, присвоенное переменной в процессе разбора, или значение, возвращенное из подпрограммы после ее выполнения. |
">.>" | Определяет значение, присвоенное в процессе разбора метке-заполнителю. |
">C>" | Трассируемые данные представляют собой имя составной переменной, выводимое после подстановки и перед использованием, при условии, что это имя имело значение переменной, подставленной в него. |
">F>" | Трассируемые данные представляют собой результат вызова функции. |
">L>" | Трассируемые данные являются литералом (строкой, проинициализированной переменной или постоянным символом). |
">O>" | Трассируемые данные являются результатом выполнения операции над двумя элементами. |
">P>" | Трассируемые данные являются результатом выполнения префиксной операции. |
">V>" | Трассируемые данные представляют собой содержимое переменной. |