Rexx - Segnali
In Rexx, l'istruzione di segnale viene utilizzata generalmente per due scopi, che sono:
Uno è trasferire il controllo a un'altra parte del programma. Normalmente è come l'etichetta di riferimento che viene utilizzata in altri linguaggi di programmazione.
L'altro è andare a una specifica etichetta trap.
Se il comando del segnale viene utilizzato in uno dei seguenti comandi di istruzione, le strutture di controllo in sospeso verranno automaticamente disattivate.
se ... allora ... altro ...
fare ... finire
do i = 1 to n ... end [e simili cicli do]
selezionare quando ... poi ... ... ecc. altrimenti ... fine
La sintassi generale dell'istruzione signal è mostrata come segue:
Sintassi
signal labelName
signal [ VALUE ] labelExpression
Diamo un'occhiata a un esempio di come utilizzare la dichiarazione di segnale.
Esempio
/* 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'
L'output del programma di cui sopra sarà come mostrato di seguito.
Produzione
This is an incorrect number.
Se si modifica il valore della variabile n in un numero intero come mostrato nel programma seguente:
/* 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 '
Otterrai il seguente output:
This is a whole number
Si può anche trasferire al valore dell'etichetta come mostrato nel seguente programma:
/* 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
L'output del programma sopra sarà mostrato come segue:
This is the number 1
Attivazione / disattivazione trasferimento etichetta trap
Come accennato in precedenza, l'istruzione del segnale può essere utilizzata anche per trasferire il controllo a un'etichetta trap.
La sintassi generale del trasferimento dell'etichetta Trap è fornita come segue:
Sintassi
signal ON conditionName [ NAME Label ]
signal OFF conditionName
Dove,
conditionName - Questa è la condizione per la quale il segnale deve essere attivato o disattivato.
Label - L'etichetta opzionale alla quale deviare il programma.
Vediamo un esempio di utilizzo di un trasferimento di etichette trap.
Esempio
/* 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'
Nell'esempio precedente, per prima cosa attiviamo i segnali di errore. Aggiungiamo quindi una dichiarazione che risulterà in un errore. Abbiamo quindi l'etichetta di trap di errore per visualizzare un messaggio di errore personalizzato.
L'output del programma di cui sopra sarà il seguente:
An error has occurred.