Name
GOSUB

Syntax
GOSUB sprungziel
[...]
END

sprungmarke:
[...]
RETURN

Aufklappen Wertebereiche
sprungziel>0 numerischer Ausdruck, Typ Integer
sprungmarke>0 Zahlenwert, Typ Integer, gefolgt von einem Doppelpunkt

oder (ab ArchiCAD® 10):
sprungziel Ausdruck oder Variable, Typ Text
sprungmarke Klartext zwischen Anführungszeichen, gefolgt von einem Doppelpunkt

Aufklappen Erläuterung
GOSUB ruft ein Unterprogramm auf, dessen Befehle innerhalb des aktuellen Skriptes nach der sprungmarke stehen und dessen Ende mit dem Befehl RETURN erreicht wird. Nach RETURN setzt die Ausführung des Skriptes unmittelbar nach dem GOSUB-Befehl und der Sprungzielangabe fort.

So können Programmteile mehrfach und von unterschiedlichen Stellen im Skript aus aufgerufen werden.

Das Ergebnis des Ausdrucks sprungziel muss eine vorhandene sprungmarke ergeben, sonst erfolgt eine Fehlermeldung. Die sprungmarken müssen im kompletten Skriptdurchlauf eindeutig sein. Dabei werden die Marken im Masterskript mit berücksichtigt. Reihenfolge und Intervalle sind beliebig. Siehe auch Themenüberschrift "Programmablauf".

Unterprogramme stehen sinnvollerweise am Skriptende.

Die Ausführung des Befehles RETURN ohne, dass ein Unterprogramm aufgerufen wurde führt zu einer Fehlermeldung. Daher muss vor den Unterprogrammen die Ausführung mit END beendet werden.

Aufklappen Beispiel
GOSUB 300
ADD2 0.95,0.00 : GOSUB 300 : DEL 1
ADD2 0.95,0.95 : GOSUB 300 : DEL 1
ADD2 0.00,0.95 : GOSUB 300 : DEL 1
END

300: ! ### Unterprogramm
RECT2 0,0,0.05,0.05
RETURN

Aufklappen Besonderheiten
Das sprungziel kann auch als Ausdruck oder Variable angegeben werden. ArchiCAD kann dieses aber erst zur Laufzeit des Skriptes ermitteln. Daher können die betreffenen Befehl nicht vorcompiliert werden, was Performanceeinbußen des Objektes bewirkt. Es sollten also möglichst absolute, eindeutige sprungziele verwendet werden.

Ist im Masterskript ein Unterprogramm nötig müssen diese mit GOTO übersprungen werden, denn die Ausführung kann im Master-Skript nicht mit END unterbrochen werden:

! ### Master Skript
typ=2
GOSUB 100+typ
GOTO 200

! Unterprogramme
100:
breite=5.6
return

101:
breite=0.25
return

102:
breite=3.2
return

200:

Aufklappen Tipps und Tricks
Bedingte Unterprogrammaufrufe können auch mit dem IF...GOSUB-Befehl erfolgen.

Unterprogramme außerhalb des aktuellen Skriptes in separatren Dateien nennt man Makros und werden mit CALL aufgerufen.