В Rexx инструкция сигнала обычно используется для двух целей:
-
Одним из них является передача управления в другую часть программы. Обычно это похоже на метку перехода, которая используется в других языках программирования.
-
Другой — перейти к определенной метке ловушки.
Одним из них является передача управления в другую часть программы. Обычно это похоже на метку перехода, которая используется в других языках программирования.
Другой — перейти к определенной метке ловушки.
Если команда сигнала используется в любой из следующих команд команд, ожидающие управляющие структуры будут автоматически деактивированы.
-
если … тогда … еще …
-
сделать … конец
-
do i = 1 до n … end [и подобные циклы do]
-
выберите, когда … тогда … … и т. д. иначе … конец
если … тогда … еще …
сделать … конец
do i = 1 до n … end [и подобные циклы do]
выберите, когда … тогда … … и т. д. иначе … конец
Общий синтаксис оператора сигнала показан следующим образом:
Синтаксис
signal labelName signal [ VALUE ] labelExpression
Давайте рассмотрим пример использования оператора сигнала.
пример
/* Main program */ n = 100.45 if \ datatype( n, wholenumber ) then signal msg say 'This is a whole number' return 0 msg : say 'This is an incorrect number'
Вывод вышеуказанной программы будет таким, как показано ниже.
Выход
This is an incorrect number.
Если вы измените значение переменной n на целое число, как показано в следующей программе —
/* Main program */ n = 100 if \ datatype( n, wholenumber ) then signal msg say ' This is a whole number ' return 0 msg : say ' This is an incorrect number '
Вы получите следующий вывод —
This is a whole number
Можно также перейти к значению метки, как показано в следующей программе —
/* Main program */ n = 1 if \ datatype( n, wholenumber ) then signal msg if n < 1 | n > 3 then signal msg signal value n 3 : say 'This is the number 3' 2 : say ' This is the number 2' 1 : say ' This is the number 1' return n msg : say ' This is an incorrect number ' exit 99
Вывод вышеуказанной программы будет показан следующим образом:
This is the number 1
Активация / деактивация переноса метки-ловушки
Как мы упоминали ранее, инструкция сигнала также может использоваться для передачи управления метке прерывания.
Общий синтаксис передачи меток Trap дан следующим образом:
Синтаксис
signal ON conditionName [ NAME Label ] signal OFF conditionName
Куда,
-
conditionName — это условие, для которого сигнал должен быть либо включен, либо выключен.
-
Метка — дополнительная метка, на которую следует перенаправить программу.
conditionName — это условие, для которого сигнал должен быть либо включен, либо выключен.
Метка — дополнительная метка, на которую следует перенаправить программу.
Давайте посмотрим пример использования переноса метки ловушки.
пример
/* Main program */ signal on error signal on failure signal on syntax signal on novalue beep(1) signal off error signal off failure signal off syntax signal off novalue exit 0 error: failure: syntax: novalue: say 'An error has occured'
В приведенном выше примере мы сначала включаем сигналы ошибки. Затем мы добавляем утверждение, которое приведет к ошибке. Затем у нас есть метка ошибки, отображающая пользовательское сообщение об ошибке.
Вывод вышеуказанной программы будет таким, как показано ниже: