Für Programmstrukturen gibt's kaum allgemein und immer gültige regeln.
Mal einfach vor mich hingeplappert:
Jedes SMS braucht 3 Steps, die man als Sub ausführen kann:
1) SMS-Init /Header etc.
Das sind hauptsächlich feste werte, wie TelNr etc.
2) SMS-Nutzdaten
Das ist die eigentliche Nachricht, bestehend aus Festwerten und Variablen.
3) SMS-Close & Abschicken

1) u. 3) können vermutl. mit GOSUB ausgeführt werden, das sie kaum durch Argumente variierbar sind (denk' ich)

Am unterschiedlichsten wird die Sache wohl bei 2) sein
Glaube aber, dass es ein durchaus überschaubares Repertoire an "message-Typen" gibt, die weitgehend, auch ohne viel parameter, wissen, was sie brauchen. Die könnte man als SUB ausführen
z.B "SEND_STANDORTWECHSEL:"
könnte mir vorstellen, dass bestenfalls die latitude-werte selbst als Parameter benötigt werden, die Texte wüsste die Funktion wohl selbst. Und wenn diese PositionsWerte eigentlich im Programm als "globale" werte geDIMt sind, wären auch die nicht wirklich notwendig.


Zusammenfassend:
Im Hauptprogramm könnten immer 3 gogubs stehen:
GOSUB SMS_HEADER
GOSUB SEND_STANDORTWECHSEL
GOSUB SMS_SEND
oder z.B.
GOSUB SMS_HEADER
GOSUB SEND_UHRZEIT
GOSUB SMS_SEND

Mal so dahingeschwätzt