Rexx - 信号指令
在Rexx中,信号指令一般有两个用途,分别是 −
一是将控制权转移到程序的另一部分。 这通常类似于其他编程语言中使用的转到标签。
另一个是转到特定的陷阱标签。
如果在以下任何指令命令中使用信号命令,则挂起的控制结构将自动停用。
if ... then ... else ...
do ... end
do i = 1 to n ... end [and similar do loops]
select when ... then ... ...etc. otherwise ... end
信号语句的一般语法如下所示 −
语法
signal labelName signal [ VALUE ] labelExpression
让我们看一个如何使用信号语句的示例。
示例
/* 主程序 */ 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 的值更改为整数,如以下程序所示 −
/* 主程序 */ 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
还可以传递标签的值,如下面的程序所示 −
/* 主程序 */ 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 − 这是应打开或关闭信号的条件。
Label − 程序应转向的可选标签。
让我们看一个使用陷阱标签传输的示例。
示例
/* 主程序 */ 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.