Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03380.jsonl.gz/3313

Das Modul Call dient dazu, von jedem Ort, aus jeder Prozedur an einen bestimmten Ort zurückkehren zu können. Falls ein Modul aus einer Hauptschleife besteht, in die immer wieder zurückgekehrt werden soll, so ruft man in dieser Hauptschleife die eigentliche Prozedur mittels Call(Proc) auf. Proc kann nun beliebig tief verschachtelte andere Prozeduren (normal) aufrufen. Im Ausnahmefall sollte das Programm hier nicht durch die Prozedur Arts.Terminate abgebrochen, oder ein Fehlerparameter durch sämtliche Prozeduren zurückgereicht werden. Stattdessen reicht ein einfaches Return, und man befindet sich wieder in der Hauptschleife. Dies ist zwar eine ,,unsaubere`` Art der Programmierung, aber dann angebracht, wenn beispielsweise jederzeit auf asynchrone Ereignisse reagiert werden muss.
Dieser Mechanismus kann bis zu acht Levels verwalten. Ein weiteres Call führt zu einem Laufzeitfehler. Ein Return ohne vorheriges Call() beendet einfach das Programm.