Помощ за LibreOffice 24.8
Извиква подпрограма, зададена с етикет във вътрешността на блок Sub или Function. Операторите, следващи етикета, се изпълняват до следващия оператор Return. След това изпълнението продължава с оператора, следващ GoSub.
GoSub label[:]
label: идентификатор на ред, който показва къде да се продължи изпълнението. Обхватът на етикета съвпада с този на подпрограмата, към която принадлежи.
Операторът GoSub извиква локална подпрограма, зададена с етикет в рамките на процедура или функция. Името на етикета трябва да завършва с двоеточие (":").
Sub/Function foo
' оператори
GoSub label
' оператори
Exit Sub/Function
label:
' оператори
Return
End Sub/Function
Ако изпълнението стигне до оператор Return, който не е предшестван от GoSub, LibreOffice Basic показва съобщение за грешка. Използвайте Exit Sub или Exit Function, за да гарантирате, че изпълнението ще напусне процедурата или функцията преди следващия оператор Return.
Следващият пример илюстрира употребата на GoSub и Return. Чрез двукратно изпълняване на част от кода програмата изчислява квадратния корен на две числа, въведени от потребителя.
Sub ExampleGoSub
Dim iInputa As Single
Dim iInputb As Single
Dim iInputc As Single
iInputa = Int(InputBox("Въведете първото число: ", "Въвеждане"))
iInputb = Int(InputBox("Въведете второто число: ", "Въвеждане"))
iInputc=iInputa
GoSub SquareRoot
Print "Квадратният корен на"; iInputa; " е "; iInputc
iInputc=iInputb
GoSub SquareRoot
Print "Квадратният корен на "; iInputb; " е "; iInputc
Exit Sub
SquareRoot:
iInputc=sqr(iInputc)
Return
End Sub