das du lieber BugFix um verschachtelte funktionsaufrufe herumkommst, ist für mich schwer vorstellbar.
Es ist schon klar, dass verschachtelte Aufrufe ihre Notwendigkeit haben. Und natürlich lagere ich auch viel Code in Sub-Routinen aus. Mir ging es bei meiner Bemerkung eher um die Verschachtelungstiefe - also nicht ein Aufruf, der dann das ganze Programm in 30 hintereinandergelagerten Subs abarbeitet. Ich gruppiere da i.A. thematisch.
Übrigens, um auf die Startfrage zurückzukommen, kannst du ja über den Returnwert einen Rücksprung in die Main veranlassen, bzw. die weitere Abarbeitung verhindern:
Spoiler anzeigen
_1()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _1()
_1_1()
MsgBox(0, '', "wieder in _1()")
EndFunc
Func _1_1()
Switch _1_2()
Case 1
Return
Case 2
_1_3()
EndSwitch
EndFunc
Func _1_2()
If MsgBox(36, '', 'zurück zur Main') = 6 Then Return 1
Return 2
EndFunc
Func _1_3()
MsgBox(0, '', 'Func _1_3')
EndFunc