Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03096.jsonl.gz/569

Der Code und die typisierten Konstanten (nur Zeichenketten) müssen innerhalb eines Moduls im Bereich von 32K liegen. Die Gesamtgrösse eines Programms, d.h. eines vollständig gelinkten Moduls, ist allerdings nicht eingeschränkt.
Ein Programm darf aus beliebig vielen Moduln bestehen, vorausgesetzt, jedes Modul importiert höchstens 64 weitere Moduln.
Jeder neue Typ (Aufzählungstypen, Verbunde, Felder, Unterbereiche) bildet eine neue Struktur. Es spielt dabei keine Rolle, wie oft eine Struktur auftritt. Entscheidend ist einzig die Deklaration. Das strikte Einführen von Typnamen reduziert die Anzahl der Strukturen.
Die Einschränkung pro Gültigkeitsbereich bedeutet, dass in einem Modul mit einem Variablenbedarf von 2 GByte auch jede Prozedur wiederum Variablen bis zur Grösse von 2 GByte deklarieren kann, wobei dann eine entsprechende Stackgrösse gesetzt sein muss, da lokale Variablen auf dem Stack angelegt werden.
Wenn das Modul im -Modus kompiliert wird, sind alle globalen Variablen diese Moduls auch . Falls dies nicht ausreichen sollte, muss ein kleiner Effizienzverlust in Kauf genommen und das Modul im -Modus kompiliert werden, oder man weicht auf Zeiger aus und alloziert die Variablen zur Laufzeit.
Die Überschreitung dieses Wertes kann nur der Linker feststellen. Falls der Fehler auftritt, sollten einzelne Moduln im -Modus kompiliert werden.
Der Compiler kann bis zu 16 unbearbeitete EXIT-Anweisungen handhaben. Eine EXIT-Anweisung gilt dann als unbearbeitet, wenn die zur LOOP-Anweisung gehörige END-Anweisung noch nicht erreicht wurde.
Oftmals kann die Anzahl von Fallunterscheidungen reduziert werden. Die
Marke ,,
1..5:`` entspricht nämlich einem Fall, während die
Marke ,,
1,2,3:`` drei Fällen entspricht.