ເນື້ອໃນ

# ຄຳສັ່ງ 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

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ຄຳສັ່ງ GoTo

ຄຳສັ່ງ On...GoSub; ຄຳສັ່ງ On...GoTo