Zie ook:   GOSUB, RETURN, GOTO, Functions and Subroutines, Function, Sub

Branch Labels (aftak etiketten )
Liberty BASIC zal regelnummers (getallen) als aftak etiketten goedkeuren.  
Dit is nuttig bij het gebruik van  oude code van BASIC.  De regelnummers (getallen) 
veranderen de volgorde van de code niet, omdat het labels zijn en geen regelnummers.  
De volgende twee korte programma's zijn hoofdzakelijk het zelfde:

10 REM count to ten
20 for x = 1 to 10
30 print x
40 next x
50 end

20 REM count to ten
40 for x = 1 to 10

10 print x
30 next x
50 end

In plaats van numerieke branch labels te gebruiken, is het beter om alfanumerieke 
labels te gebruiken, omdat zij beschrijvend zijn en de programmeur helpen herinneren 
wat er in een blok van code gebeurt.  In Liberty BASIC, worden om de alfanumerieke 
branch labels (aftak etiketten) vierkante haakjes geplaatst:  [myBranchLabel] 
Spaties en cijfers worden niet toegestaan als deel van de namen van branch labels, 
en de namen mogen niet met een cijfer beginnen.

Hier zijn enkele toegestane labels:  [mainMenu]  [enterLimits]  [repeatHere]
Hier zijn enkele NIET toegestane labels:  [enter limits]  mainMenu  [1moreTime]

In QBASIC, eindigen branch labels op een dubbelpunt en zien er zo uit:  myBranchLabel:

Het bovengenoemde programma heeft eigenlijk geen etiketten (regelnummers) nodig.
Zo ziet het er zonder uit:

  'count to ten
  for x = 1 to 10
    print x
  next x
  end

Een programma om te tellen zonder een FOR/NEXT loop ziet er als volgt uit:

  'count to ten
[startLoop]
  x = x + 1
  print x
  if x < 10 then [startLoop]
  end

Ter vergelijking, in QBASIC ziet het er als volgt uit: 

  'count to ten
startLoop:
  x = x + 1
  print x
  if x < 10 then goto startLoop
  end

NOTEER: Branch labels binnen functies en subroutines zijn niet zichtbaar voor 
programma code buiten die functies en subroutines. 
Eveneens, kunnen de functies en de subroutines geen labels gebruiken 
die buiten hun werkingsgebied staan.

GOTO


Om de uitvoering van een  programma op een specifiek punt verder te laten gaan, 
gebruikt men een GOTO commando.  See GOTO.

    GOTO [startLoop]

Gebruik GOTO niet om een  FOR/NEXT of WHILE/WEND loop voortijdig uit te verlaten.

GOSUB

Om de uitvoering van een  programma op een specifiek punt verder te laten gaan, 
gebruikt men een GOSUB commando. De GOSUB subroutine eindigd met 
een RETURN statement dat de verdere uitvoering van het programma start 
op de regel met code die volgt op het GOSUB commando.  See GOSUB, RETURN.

GOSUB [initialize]

GOTO LABEL

Beschrijving:
GOTO zorgt ervoor dat Liberty BASIC de uitvoering verder gaat bij de code na het label,
als de vorm 'GOTO label' werd gebruikt. Het label mag of een traditioneel 
regelnummer zijn of een branch label in het formaat [branchLabel]
waarbij de branch label naam elke gewenste hoofd/kleine letter tekst combinatie 
mag zijn die u wilt. Spaties en cijfers zijn echter niet toegestaan.


Hier zijn enkele toegestane labels:  [mainMenu]  [enterLimits]  [repeatHere]
Hier zijn enkele NIET toegestane labels:  [enter limits]  mainMenu  [1moreTime]

Gebruik:

  .
  .
[repeat]
  .
  .
[askAgain]
  print "Make your selection (m, r, x)."
  input selection$
  if selection$ = "M" then goto [menu]
  if selection$ = "R" then goto [repeat]
  if selection$ = "X" then goto [exit]
  goto [askAgain]
  .
  .
[menu]
  print "Here is the main menu."
  .
  .
[exit]
  print "Okay, bye."
  end

Notes:

In de regels IF . . . THEN GOTO, is de GOTO optioneel.

  De uitdrukking IF . . . THEN [menu]  is net zo geldig als

  IF . . . THEN GOTO [menu].  Maar in de regel GOTO [askAgain],
is de GOTO vereist.

  See also GOSUB

GOSUB LABEL

Description:
GOSUB zorgt ervoor dat de programma uitvoering verder gaat bij de code na het label, 
als de vorm 'GOSUB label' werd gebruikt. Het label mag of een traditioneel regelnummer
zijn of een branch label naam omsloten door rechte haakjes als: [branchLabel]
Spaties en cijfers zijn echter niet toegestaan als deel van de label naam.

Hier zijn enkele geldige labels:  [mainMenu]  [enterLimits]  [repeatHere]
Hier zijn enkele ongeldige labels:  [enter limits]  mainMenu  [1moreTime]

Nadat de uitvoering is overgebracht naar het punt van het label (aftaketiket), 
zal elke statement normaal worden uitgevoerd totdat een RETURN statement wordt aangetroffen.
Wanneer dit gebeurt, wordt de uitvoering teruggezet naar het statement dat volgt
onmiddellijk na GOSUB.  De sectie van code tussen een GOSUB en zijn RETURN staat 
bekend als een "subroutine."  Één doel van een subroutine is geheugen te besparen 
door het hebben van slechts één exemplaar van code dat vaak door een programma wordt gebruikt.

Gebruik:

  print "Do you want to continue?"
  gosub [yesOrNo]
  if answer$ = "N" then [quit]
  print "Would you like to repeat the last sequence?"
  gosub [yesOrNo]
  if answer$ = "Y" then [repeat]
  goto [generateNew]

[yesOrNo]
  input answer$
  answer$ = left$(answer$, 1)
  if answer$ = "y" then answer$ = "Y"
  if answer$ = "n" then answer$ = "N"
  if answer$ = "Y" or answer$ = "N" then return
  print "Please answer Y or N."
  goto [yesOrNo]

Door in dit geval GOSUB [yesOrNo]  te  gebruiken besparen we vele regels aan code. 
De  subroutine [yesOrNo] zou gemakkelijk meerdere malen in dergelijke hypothetisch 
programma kunnen worden gebruikt, waardoor geheugen typewerk en inspanning worden bespaard.

Dit verkleint de kans op fouten en vergroot de productiviteit.
 
Note: see also GOTO

RETURN

Description:
Dit statement zorgt ervoor dat de programma uitvoering direct na het 
laatst gebruikte GOSUB statement verder gaat.  
RETURN is het laatste statement in een blok met programma code dat door 
het commando GOSUB wordt aangeroepen.

See  GOSUB