Syntaxe

Saute à une étiquette. Un saut en arrière répète du code ; un saut en avant en saute et peut sortir des boucles.

GOTO <label>
IF <condition> THEN GOTO <label> [ELSE GOTO <label>]
<label>:

S’écrit aussi : label

Les éléments

<label>Un nom suivi de :, seul en début de ligne. Lettres, chiffres et _ ; la casse est sans importance.
<condition>Le test d'un IF sur une ligne qui garde le saut.

À savoir

  • Permis : un saut en arrière vers une étiquette du même niveau de bloc, un saut en avant vers une étiquette plus loin dans le même bloc ou dans un bloc englobant, et un saut depuis un sous-programme vers une étiquette du programme principal, qui repart de là.
  • Refusé : un saut dans un bloc (IF, FOR, WHILE…) depuis l'extérieur, ou en arrière depuis un bloc vers une étiquette hors de lui : "GOTO … jumps across block boundaries".
  • Non détecté par le compilateur, et cassé à l'exécution : deux sauts en avant vers deux étiquettes différentes dans le même bloc (y compris IF c THEN GOTO a ELSE GOTO b), un saut de redémarrage écrit sur une ligne dans un sous-programme, et un GOTO dans le code après LOOP.
  • Une étiquette ne peut pas porter le nom d'une commande du catalogue : Second: est refusé. Deux étiquettes de même nom sont une erreur de compilation : "Duplicate BASIC label".
  • Un : juste après le premier mot d'une ligne déclare toujours une étiquette. start: x = 1 est l'étiquette start avec x = 1 pour corps.
  • Les numéros de ligne et ON … GOTO ne sont pas pris en charge. Préférez les boucles, EXIT et CONTINUE : GOTO est la construction la plus limitée.

Exemple

FOR i = 1 TO 10  IF i * 3 > 7 THEN GOTO foundNEXTConsole("not found")found:Console("found " + Str(i))   ' found 3
Dans le manuel : Contrôle du flux

Voir aussi