Manuel de référence PICBASIC
GOSUB...RETURN
ligne , RETURN
GOSUB
Appel d'une sous-routine
Ligne est l'endroit où le programme doit poursuivre son exécution
EXPLICATION
Cette instruction permet depuis un ou plusieurs endroits de votre programme, d'exécuter un "bout" d'un autre programme (encore
appelé sous routine) puis de revenir à l'endroit initial pour continuer le déroulement du programme principal. L'instruction "GOSUB
Ligne" génère le "saut" à la sous routine, tandis que "RETURN" provoque le retour au programme initial. Comme pour l'instruction
"GOTO", il est possible de remplacer un N° de ligne par un "nom" plus explicite à condition que ce dernier soit collé complètement à
gauche de l'écran et terminé par ":" (voit description de "GOTO").
EXEMPLE 1:
10
CONST BUZZER = 5
20
BEEP BUZZER
30
GOSUB 100
40
BEEP BUZZER
50
GOSUB 100
60
GOTO
20
100
DELAY
255
110
RETURN
INFORMATIONS ADDITIONELLES
A noter qu'il est également possible imbriquer plusieurs sous-routines les unes dans les autres jusqu'à concurrence de 6 max.
(cette limitation étant due à la réservation nécessaire de mémoire RAM de la part du 'PICBASIC' pour mémoriser l'adresse de
retour au programme principal). Le nombre de sous-routines pouvant être imbriquées les unes dans les autres peut donc être plus
limité suivant l'occupation de la RAM par le PICBASIC. Il est donc impératif de faire des essais successifs en cas d'imbrications
multiples afin de vérifier que le PICBASIC n'est pas en dépassement sans quoi ce dernier pourra être amené à faire des actions
incohérentes et aléatoires.
EXEMPLE 2:
10
CONST BUZZER = 5
20
GOSUB
100
30
GOTO
20
100
BEEP BUZZER
110
GOSUB 200
120
RETURN
200
DELAY 255
210
RETURN
Il est également impératif de vérifier que chaque instruction GOSUB est bien relayée par l'instruction RETURN associée, sans quoi
des erreurs dans la gestion de la pile de retour des GOSUB interviendront (sans que ceci ne vous soit annoncé lors de la
compilation du programme). Ceci aura pour conséquence de générer des actions incohérentes et aléatoires de la part du
PICBASIC.
' Exemple de gestion correct
GOSUB 1000
:
1000
I = I + 1
' Sous-Routine
RETURN
COMFILE Technology (traduction Française Lextronic)
' Exemple de gestion non correct (le GOSUB n'est pas relayé par RETURN)
GOSUB 1000
2000
:
1000
I = I + 1
' Sous-Routine
GOTO 2000
76