ຄຳສັ່ງ GoSub...Return

ເອີ້ນໃຊ້ຊັບຣູທີນ (subroutine) ທີ່ກຳນົດໂດຍປ້າຍຊື່ (label) ພາຍໃນ Sub ຫຼື Function. ຄຳສັ່ງທີ່ຕາມຫຼັງປ້າຍຊື່ຈະຖືກປະມວນຜົນຈົນກວ່າຈະຮອດຄຳສັ່ງ Return ຖັດໄປ. ຫຼັງຈາກນັ້ນ, ໂປຣແກຣມຈະດຳເນີນການຕໍ່ດ້ວຍຄຳສັ່ງທີ່ຕາມຫຼັງຄຳສັ່ງ GoSub.

ໄວຍາກອນ:


GoSub label[:]

ພາຣາມິເຕີ:

ປ້າຍຊື່ (label): ຕົວລະບຸແຖວທີ່ບອກວ່າຈະດຳເນີນການຕໍ່ຢູ່ໃສ. ຂອບເຂດຂອງປ້າຍຊື່ຈະຢູ່ພາຍໃນຣູທີນ (routine) ທີ່ມັນສັງກັດຢູ່.

ຄຳສັ່ງ GoSub ຈະເອີ້ນໃຊ້ຊັບຣູທີນພາຍໃນທີ່ກຳນົດໂດຍປ້າຍຊື່ຈາກພາຍໃນຊັບຣູທີນ ຫຼື ຟັງຊັນ. ຊື່ຂອງປ້າຍຊື່ຕ້ອງລົງທ້າຍດ້ວຍເຄື່ອງໝາຍຈ້ຳສອງເມັດ (":").


  Sub/Function foo
      ' ຄຳສັ່ງຕ່າງໆ
      GoSub label
      ' ຄຳສັ່ງຕ່າງໆ
      Exit Sub/Function
  label:
      ' ຄຳສັ່ງຕ່າງໆ
      Return
  End Sub/Function
ໄອຄອນ ຄຳເຕືອນ

ຖ້າໂປຣແກຣມພົບຄຳສັ່ງ Return ທີ່ບໍ່ໄດ້ຕາມຫຼັງ GoSub, LibreOffice Basic ຈະສະແດງຂໍ້ຄວາມຜິດພາດ. ໃຊ້ Exit Sub ຫຼື Exit Function ເພື່ອຮັບປະກັນວ່າໂປຣແກຣມຈະອອກຈາກ Sub ຫຼື Function ກ່ອນທີ່ຈະໄປຮອດຄຳສັ່ງ Return ຖັດໄປ.


ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນການໃຊ້ GoSub ແລະ Return. ໂດຍການປະມວນຜົນສ່ວນຂອງໂປຣແກຣມສອງຄັ້ງ, ໂປຣແກຣມຈະຄິດໄລ່ຮາກຂັ້ນສອງຂອງສອງຕົວເລກທີ່ຜູ້ໃຊ້ປ້ອນເຂົ້າ.

ຕົວຢ່າງ:


Sub ExampleGoSub
Dim iInputa As Single
Dim iInputb As Single
Dim iInputc As Single
    iInputa = Int(InputBox("ປ້ອນຕົວເລກທຳອິດ: ","NumberInput"))
    iInputb = Int(InputBox("ປ້ອນຕົວເລກທີສອງ: ","NumberInput"))
    iInputc=iInputa
    GoSub SquareRoot
    Print "ຮາກຂັ້ນສອງຂອງ";iInputa;" ແມ່ນ";iInputc
    iInputc=iInputb
    GoSub SquareRoot
    Print "ຮາກຂັ້ນສອງຂອງ";iInputb;" ແມ່ນ";iInputc
    Exit Sub
SquareRoot:
    iInputc=sqr(iInputc)
    Return
End Sub
ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!