Rexx - Sinyal

Di Rexx, instruksi sinyal digunakan secara umum untuk dua tujuan, yaitu -

  • Salah satunya adalah mentransfer kontrol ke bagian lain dari program. Ini biasanya seperti label masuk yang digunakan dalam bahasa pemrograman lain.

  • Yang lainnya adalah pergi ke label perangkap tertentu.

Jika perintah sinyal digunakan dalam salah satu dari perintah instruksi berikut, struktur kontrol yang tertunda akan secara otomatis dinonaktifkan.

  • jika ... lalu ... lain ...

  • lakukan ... akhiri

  • do i = 1 to n ... end [dan serupa do loop]

  • pilih kapan ... lalu ... ... dll. jika tidak ... berakhir

Sintaks umum dari pernyataan sinyal ditampilkan sebagai berikut -

Sintaksis

signal labelName  
   
signal [ VALUE ] labelExpression

Mari kita lihat contoh bagaimana menggunakan pernyataan sinyal.

Contoh

/* 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'

Output dari program di atas akan seperti gambar di bawah ini.

Keluaran

This is an incorrect number.

Jika Anda mengubah nilai variabel n menjadi bilangan bulat seperti yang ditunjukkan pada program berikut -

/* 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 '

Anda akan mendapatkan output berikut -

This is a whole number

Seseorang juga dapat mentransfer ke nilai label seperti yang ditunjukkan pada program berikut -

/* 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

Output dari program di atas akan ditampilkan sebagai berikut -

This is the number 1

Aktivasi / Deaktivasi Trap Label Transfer

Seperti yang telah kami sebutkan sebelumnya, instruksi sinyal juga dapat digunakan untuk mentransfer kontrol ke label perangkap.

Sintaks umum dari transfer label Trap diberikan sebagai berikut -

Sintaksis

signal ON conditionName [ NAME Label ] 
  
signal OFF conditionName

Dimana,

  • conditionName - Ini adalah kondisi di mana sinyal harus dinyalakan atau dimatikan.

  • Label - Label opsional tempat program harus dialihkan.

Mari kita lihat contoh penggunaan transfer label jebakan.

Contoh

/* 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'

Dalam contoh di atas, pertama-tama kita mengaktifkan sinyal kesalahan. Kami kemudian menambahkan pernyataan yang akan menghasilkan kesalahan. Kami kemudian memiliki label perangkap kesalahan untuk menampilkan pesan kesalahan khusus.

Output dari program di atas adalah sebagai berikut -

An error has occurred.