CHAIN |
Chaine |
---|---|
GWBASIC |
Syntaxe
CHAIN [MERGE] nomfich[,[numéro de ligne][,ALL][,DELETE limites]] |
Paramètres
Nom | Description |
---|---|
MERGE | Ce paramètre permet d'indiquer que le programme en cours sera fusionné avec le programme allant prendre le contrôle d'exécution |
nomfich | Ce paramètre permet d'indiquer le nom de fichier de code source Basic devant prendre le contrôle d'exécution |
numéro de ligne | Ce paramètre permet d'indiquer le numéro de ligne à lequel le fichier de code source Basic devant prendre le contrôle d'exécution |
ALL | Ce paramètre permet d'indiquer que tous le contenu des variables doit être transmis à programme prenant la relève de l'exécution |
limites | Ce paramètre permet d'indiquer une partie du code source à ne pas charger en mémoire |
Description
Cette commande permet de transférer l'exécution à un autre programme de code source Basic.
Algorithme
MODULE CHAIN(nom_fichier, ligne_cible=None) SI nom_fichier n'existe pas ALORS Afficher une erreur "Fichier introuvable" RETOURNE FIN SI Sauvegarder les variables communes en mémoire (si elles sont définies avec COMMON SHARED) Arrêter le programme en cours Charger le programme nommé nom_fichier en mémoire SI ligne_cible est spécifiée ALORS Démarrer l'exécution à la ligne ligne_cible SINON Démarrer l'exécution à partir de la première ligne du programme FIN SI |
Remarques
- Lorsque vous utilisez le paramètre MERGE, le sous-programme est fusionné au programme BASIC en tant que segment de recouvrement. Par conséquent, une opération MERGE implique le programme courant et le programme appelé.
- Le programme appelé doit être en format ASCII si vous utilisez le paramètre MERGE car sinon vous aurez un message d'erreur «Bad File Mode» ou «Mauvais type de fichiers». Vous pouvez sauvegarder en mode ASCII en utilisant le paramètre A de la commande SAVE.
- Si vous utilisez un segment de recouvrement, il est préférable de supprimer afin de pouvoir en appeler un autre, vous pourrez utiliser la commande DELETE pour effectuer cette opération.
Exemples
Le numéro de ligne est un numéro de ligne ou une expression correspondant à un numéro de ligne dans le programme appelé. C'est le point de départ de l'exécution du programme appelé. Par exemple, ce qui suit commence l'exécution de PROG1.BAS à la ligne 1000 :
- 10 CHAIN "PROG1", 1000
Si numéro de ligne est omis, l'exécution commence à la première ligne. Le numéro de ligne n'est pas affectée par une commande RENUM. Cependant, les numéros de ligne dans l'intervalle spécifiée sont affectés par une commande RENUM. Par exemple, ALL spécifie que chaque variable du programme courant est chaînée au programme appelé :
- 20 CHAIN "PROG1", 1000, ALL
Si l'option ALL est omise, le programme en cours doit contenir une instruction COMMON pour répertorier les variables transmises.
CHAIN exécute un RESTORE avant d'exécuter le programme auquel il doit être chaîné. L'instruction READ obtient alors le premier élément de l'instruction DATA. La lecture ne reprendra pas là où elle s'était arrêtée dans le programme enchaîné.
Une fois qu'une superposition est exécutée et utilisée dans un but spécifique, il est généralement souhaitable de la supprimer afin qu'une nouvelle superposition puisse être introduite. Pour ce faire, utilisez la commande DELETE.
L'instruction CHAIN avec la commande MERGE laisse les fichiers ouverts et conserve le paramètre de base de l'option en cours.
Si la commande MERGE est omise, le paramètre OPTION BASE est conservé et CHAIN ne conserve aucun type de variable ou fonction définie par l'utilisateur à utiliser par le programme chaîné. Autrement dit, toute instruction DEFINT, DEFSNG, DEFDBL, DEFSTR ou DEF FN contenant des variables partagées doit être reformulée dans le programme chaîné.
Lors de l'utilisation de la commande MERGE, placez les fonctions définies par l'utilisateur avant toute instruction CHAIN MERGE dans le programme. Sinon, ils seront indéfinis une fois la fusion terminée.