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.