Pour faire simple, on peut dire que:
SUB permet de définir une COMMANDE personnelle, un peu comme FILE_OPEN_READ. On l'utilise exactement comme une commande: un mot-clé qui est le nom du SUB, suivi éventuellement de paramètres - entourés de parenthèses, il est vrai. Mais c'est la seule différence par rapport aux commandes.
FUNCTION (lorsque ce sera implémenté) permet de définit une FONCTION personnelle, un peu comme BIN_AND. Une fonction retourne une valeur et pourra être utilisée dans une expression arithmétisue ou de chaînes de caractères.