Rexx - 信号


在 Rexx 中,信号指令通常用于两个目的,分别是 -

  • 一种是将控制权转移到程序的另一部分。这通常类似于其他编程语言中使用的转到标签。

  • 另一种是前往特定的陷阱标签。

如果在以下任何指令命令中使用信号命令,则挂起的控制结构将自动停用。

  • 如果……那么……否则……

  • 做...结束

  • 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 - 这是应打开或关闭信号的条件。

  • 标签- 程序应转向的可选标签。

让我们看一个使用陷阱标签传输的示例。

例子

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

在上面的例子中,我们首先打开错误信号。然后我们添加一条会导致错误的语句。然后,我们使用错误陷阱标签来显示自定义错误消息。

上述程序的输出如下所示 -

An error has occurred.