Unterprogramm

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Ein Unterprogramm oder eine Subroutine dient dazu, einen häufig gebrauchten Programmabschnitt erneut zu nutzen. Die Vorteile hierbei sind, dass Arbeitsspeicher eingespart wird, der Programmierer nicht immer die gleichen Befehlsfolgen wiederholt eingeben muss. Das Programm wird dadurch in der Struktur modularer und übersichtlicher.
Es können auch mehrere Unterprogramme miteinander verknüpft oder verschachtelt werden. Allerdings erfolgt bei Verknüpfung (per GOTO), wo etwa der Programmteil eines anderen Unterprogramms genutzt wird, der Rücksprung aus diesem Unterprogrammteil auch immer an die Stelle des ursprünglichen, also letzten Unterprogrammaufrufs.

Unterprogramme in CBM-BASIC haben keine sprachliche Unterstützung für eine Parameterübergabe und kennen auch keinen lokalen Variablenkontext, wie dies bei anderen Sprachen gängig ist oder in manch fortgeschrittenen BASIC-Dialekten angeboten wird. Eine Argumentenübergabe muss man somit gegebenenfalls über Variablen abwickeln.

Durch ein nicht richtig beendetes Unterprogramm oder einer zu tief verschachtelten Aufrufabfolge kann es zu einem Stapelüberlauf kommen und somit zu der BASIC-Fehlermeldung ?OUT OF MEMORY ERROR.

Beim BASIC des C64 wird hierzu der Befehl GOSUB genutzt. Ein Unterprogramm wird im CBM-BASIC mit dem Befehl RETURN beendet. Die bei manchen BASIC-Dialekten angebotene Möglichkeit, gewisse Verschachtelungstiefen durch Angabe eines Parameters beim RETURN-Befehl zu übergehen, gibt es bei der CBM-BASIC-Linie nicht (wenn man von gewissen BASIC-Erweiterungen absieht).

In Assembler der 6502-Familie lautet der entsprechende Mnemonik zum Aufruf JSR und das Gegenstück für den Rücksprung heißt RTS.