Rexx - สัญญาณ

ใน Rexx คำสั่งสัญญาณโดยทั่วไปจะใช้เพื่อวัตถุประสงค์สองประการคือ -

  • หนึ่งคือการถ่ายโอนการควบคุมไปยังส่วนอื่นของโปรแกรม โดยปกติจะเหมือนกับป้ายกำกับการเดินทางซึ่งใช้ในภาษาโปรแกรมอื่น ๆ

  • อีกอันคือไปที่ป้ายกำกับกับดักเฉพาะ

หากคำสั่งสัญญาณถูกใช้ในคำสั่งคำสั่งใด ๆ ต่อไปนี้โครงสร้างการควบคุมที่รอดำเนินการจะถูกปิดใช้งานโดยอัตโนมัติ

  • ถ้า ... แล้ว ... อื่น ...

  • ทำ ... จบ

  • ทำ i = 1 ถึง n ... 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

Trap Label Transfer การเปิดใช้งาน / การปิดใช้งาน

ดังที่เราได้กล่าวไว้ก่อนหน้านี้คำสั่งสัญญาณยังสามารถใช้เพื่อถ่ายโอนการควบคุมไปยังป้ายกำกับกับดัก

ไวยากรณ์ทั่วไปของการถ่ายโอนเลเบลกับดักมีให้ดังนี้ -

ไวยากรณ์

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.