📜  Rexx-信号

📅  最后修改于: 2020-11-02 04:04:07             🧑  作者: Mango


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

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

  • 另一种是转到特定的陷阱标签。

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

  • 如果…那么…否则…

  • 做…结束

  • i = 1到n …结束[和类似的do循环]

  • 选择何时……然后……等等。否则…结束

signal语句的一般语法如下所示-

句法

signal labelName  
   
signal [ VALUE ] labelExpression 

让我们看一下如何使用signal语句的示例。

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

陷阱标签转移激活/停用

如前所述,信号指令还可用于将控制权转移到陷阱标签。

陷阱标签传输的一般语法如下:

句法

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.