Rexx-signals
提供:Dev Guides
Rexx-シグナル
Rexxでは、信号命令は一般的に2つの目的のために使用されます-
- 1つは、プログラムの別の部分に制御を移すことです。 これは通常、他のプログラミング言語で使用されるgo-toラベルのようなものです。
- もう1つは、特定のトラップラベルに移動することです。
signalコマンドが次の命令コマンドのいずれかで使用されている場合、保留中の制御構造は自動的に無効になります。
- もし… それで… それ以外の場合
- 行う … end
- i = 1からn … end [および同様のdoループ]
- いつ選択するか… それで… …等。 さもないと … end
信号文の一般的な構文は次のように示されています-
構文
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
トラップラベル転送の有効化/無効化
前述したように、シグナル命令を使用して、制御をトラップラベルに転送することもできます。
トラップラベル転送の一般的な構文は次のとおりです-
構文
signal ON conditionName [ NAME Label ]
signal OFF conditionName
どこで、
- conditionName -これは、信号をオンまたはオフにする条件です。
- Label -プログラムの宛先となるオプションのラベル。
トラップラベル転送の使用例を見てみましょう。
例
/*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.