LES BRANCHEMENTS ET LA GESTION DES ERREURS
Sauts et subroutines
Pas de surprise ici, les commandes GOTO
, GOSUB
, ON...GOTO
et ON...GOSUB
sont bien présentes. Une particularité intéressante cependant ; les numéros de lignes peuvent être contenus dans des variables. Ceci permet d’améliorer la lisibilité du code et de le rendre plus évolutif.
Dans l’exemple suivant, la sous-routine d’effacement de l’écran est placée à la ligne 10000
, et cette valeur est mémorisée dans une variable CLS
. L’appel à la sous-routine se fait par GOSUB CLS
.
10 CLS=10000 100 GOSUB CLS 110 PRINT "DEBUT DE L'AVENTURE" 150 END 9999 REM --- EFFACE ECRAN --- 10000 PRINT CHR$(125) 10010 RETURN
Si par la suite vous déplacez cette sous-routine à la ligne 20000
, les modifications nécessaires se limiteront à la variable CLS
. L’impact sur le code est donc mieux maîtrisé.
Gestion des erreurs
Il est possible de traiter les exceptions grâce à la commande TRAP
. En cas d’erreur, l’exécution du programme est déroutée vers la ligne spécifiée après TRAP
.
10 TRAP 10000 : REM En cas d'erreur, saute à la ligne 10000 ... ... ... 10000 REM Traitement des erreurs 10010 ERR = PEEK(195) : REM numéro d'erreur 10020 ERL = PEEK(187)*256+ PEEK(186) : REM ligne de l'erreur ...
Le numéro d’erreur est récupéré par PEEK(195)
, tandis que le numéro de ligne où s’est produite l’erreur est obtenu par PEEK(187)*256+ PEEK(186)
. Il est ensuite possible de procéder au traitement spécifique de l’erreur.
TRAP
reste valide jusqu’à ce qu’une erreur apparaisse. Il faudra donc penser à redéclarer une instruction TRAP
avant de reprendre le cours normal du programme (si ceci est nécessaire).
Enfin, spécifier un numéro de ligne supérieur à 32767
après TRAP
permet de désactiver la commande.