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èsLOOP. - 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 = 1est l'étiquettestartavecx = 1pour corps. - Les numéros de ligne et
ON … GOTOne sont pas pris en charge. Préférez les boucles,EXITetCONTINUE: 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 3Dans le manuel : Contrôle du flux