Учебники

Rexx — Сигналы

В Rexx инструкция сигнала обычно используется для двух целей:

  • Одним из них является передача управления в другую часть программы. Обычно это похоже на метку перехода, которая используется в других языках программирования.

  • Другой — перейти к определенной метке ловушки.

Одним из них является передача управления в другую часть программы. Обычно это похоже на метку перехода, которая используется в других языках программирования.

Другой — перейти к определенной метке ловушки.

Если команда сигнала используется в любой из следующих команд команд, ожидающие управляющие структуры будут автоматически деактивированы.

  • если … тогда … еще …

  • сделать … конец

  • do i = 1 до n … end [и подобные циклы do]

  • выберите, когда … тогда … … и т. д. иначе … конец

если … тогда … еще …

сделать … конец

do i = 1 до n … end [и подобные циклы do]

выберите, когда … тогда … … и т. д. иначе … конец

Общий синтаксис оператора сигнала показан следующим образом:

Синтаксис

signal labelName  
   
signal [ VALUE ] labelExpression 

Давайте рассмотрим пример использования оператора сигнала.

пример

Live Demo

/* 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 на целое число, как показано в следующей программе —

Live Demo

/* 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

Можно также перейти к значению метки, как показано в следующей программе —

Live Demo

/* 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' 

В приведенном выше примере мы сначала включаем сигналы ошибки. Затем мы добавляем утверждение, которое приведет к ошибке. Затем у нас есть метка ошибки, отображающая пользовательское сообщение об ошибке.

Вывод вышеуказанной программы будет таким, как показано ниже: