Donnez-moi un seul exemple où on ne peut pas employer SUB à la place de GOSUB et je m’inclinerais devant ce théorème.
Il y a toujours une méthode plus élégante pour remplacer GOSUB, mais l’élégance peut se discuter.
Je dirais même plus : SUB peut toujours remplacer GOSUB, alors que la réciproque n’est pas vraie : GOSUB ne peut pas toujours remplacer SUB, au mois pour le passage des paramètres formels.
A part le langage BASIC, citez-moi un autre langage qui emploierait GOSUB ou une commande du même genre s’il dispose de SUB.
Le mélange SUB, GOSUB, GOTO ne peut produire qu’un code peu clair où il est difficile de déterminer le qui, le quoi et le comment.
C’est ce qu’on appelle « la programmation spaghetti ». Voir ce que c’est sur Wikipédia.
Pour ma part, la seule et unique raison pour utiliser un sous-programme désigné par un LABEL est due (en Panoramic) à la structure :
ON_ACTIVATE, ON_CHANGE, ON_CLICK, et la suite de ON_xxx qui exige un LABEL à partir duquel le programme s’exécutera à chaque fois où l’événement arrive.
Panoramic, en permettant la définition et l’utilisation des SUB, n’a pas poursuivi son évolution pour accepter les procédures SUB dans les commandes ON_XXX.
Le jour où l’on pourrait écrire par exemple
ON_CLICK N,Traiter_Click() où Traiter_Click est une SUB, il n’y aura plus de raison d’être pour un LABEL.
Chacun est libre de coder comme il veut, mais personnellement je ne découpe pas mon steak avec un tournevis quand je dispose d'un couteau aiguisé.
Je mets un point final à ce sujet et je me tais.