Rexx - Signaux
Dans Rexx, l'instruction de signal est généralement utilisée à deux fins, qui sont -
La première consiste à transférer le contrôle vers une autre partie du programme. C'est normalement comme l'étiquette de référence qui est utilisée dans d'autres langages de programmation.
L'autre consiste à accéder à une étiquette de piège spécifique.
Si la commande de signal est utilisée dans l'une des commandes d'instruction suivantes, les structures de commande en attente seront automatiquement désactivées.
si ... alors ... sinon ...
faire ... finir
do i = 1 to n ... end [et faire des boucles similaires]
sélectionnez quand ... alors ... ... etc. sinon ... fin
La syntaxe générale de l'instruction de signal est indiquée comme suit -
Syntaxe
signal labelName
signal [ VALUE ] labelExpression
Regardons un exemple d'utilisation de l'instruction signal.
Exemple
/* 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'
La sortie du programme ci-dessus sera comme indiqué ci-dessous.
Production
This is an incorrect number.
Si vous changez la valeur de la variable n en un nombre entier comme indiqué dans le programme suivant -
/* 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 '
Vous obtiendrez la sortie suivante -
This is a whole number
On peut également transférer à la valeur de l'étiquette comme indiqué dans le programme suivant -
/* 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
La sortie du programme ci-dessus sera affichée comme suit -
This is the number 1
Activation / désactivation du transfert d'étiquettes de piège
Comme nous l'avons mentionné précédemment, l'instruction de signal peut également être utilisée pour transférer le contrôle vers une étiquette d'interruption.
La syntaxe générale du transfert d'étiquette Trap est donnée comme suit -
Syntaxe
signal ON conditionName [ NAME Label ]
signal OFF conditionName
Où,
conditionName - C'est la condition pour laquelle le signal doit être activé ou désactivé.
Label - L'étiquette facultative vers laquelle le programme doit être détourné.
Voyons un exemple d'utilisation d'un transfert d'étiquettes d'interruption.
Exemple
/* 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'
Dans l'exemple ci-dessus, nous activons d'abord les signaux d'erreur. Nous ajoutons ensuite une instruction qui entraînera une erreur. Nous avons alors l'étiquette de trappe d'erreur pour afficher un message d'erreur personnalisé.
La sortie du programme ci-dessus sera comme indiqué ci-dessous -
An error has occurred.