Im Compiler sind vier Sonderregister für die Kommunikation zwischen dem Programmierer und der SORT-Steuerroutine vorgesehen. Jedes dieser Register ist ein vier Byte langer binärer Datenbereich mit festem Namen; jedes Register wird mit PICTURE S9(8) USAGE IS COMPUTATIONAL beschrieben. Die Datenerklärungen für die Register werden automatisch vom Compiler erzeugt und dürfen vom Programmierer nicht angegeben werden.
SORT-FILE-SIZE-Sonderregister
Der Programmierer kann als Inhalt von SORT-FILE-SIZE die ungefähre Anzahl von Datensätzen angeben, die beim nächsten Sortiervorgang verarbeitet werden sollen. Dies muss vor Ausführung der SORT-Anweisung geschehen. Mit Hilfe dieser Information berechnet SORT den benötigten Speicherplatz für interne Arbeitsdateien. SORT-FILE-SIZE wird vom Compiler auf den Anfangswert Null gesetzt.
Falls der Inhalt des Sonderregisters zur Anfangszeit des Sortiervorgangs immer noch Null ist, nimmt SORT die Speicherzuweisung auf Grund eines angenommenen Wertes vor. Deshalb braucht der Programmierer in das Sonderregister keinen Wert für die Dateigröße einzutragen, obwohl die Angabe dieser Information zur Effektivität des Sortiervorganges beiträgt.
Der Wert, den der Benutzer in das Sonderregister eingetragen hat, z.B. MOVE 25 TO SORT-FILE-SIZE, wird der Steuerroutine übergeben.
SORT-CORE-SIZE-Sonderregister
Der Programmierer kann als Inhalt von SORT-CORE-SIZE die Anzahl von Bytes des Internspeichers angeben, die SORT zur Verfügung stehen sollen. Dies muss vor Ausführung der SORT-Anweisung geschehen.
SORT-MODE-SIZE-Sonderregister
SORT-MODE-SIZE kann gesetzt werden, wenn Datensätze variabler Länge sortiert werden sollen.
Der Programmierer kann in dieses Sonderregister die am häufigsten auftretende Satzlänge der zu sortierenden Sätze eintragen. Der Wert darf nicht kleiner als die kleinste und nicht größer als die größte Angabe in der Sortierdateierklärung sein. Der ungefähre Wert muss vor Ausführung der SORT-Anweisung in SORT-MODE-SIZE eingetragen werden. Der Compiler setzt das Register auf den Anfangswert Null. Falls der Programmierer vor Ausführung der SORT-Anweisung keinen anderen Wert angegeben hat, wird die maximale Satzlänge als die am häufigsten auftretende Satzlänge angenommen.
SORT-RETURN-Sonderregister
Nachdem eine SORT-Anweisung bzw. RELEASE/RETURN-Anweisung ausgeführt ist, enthält SORT-RETURN einen Wert, der angibt, ob der Sortiervorgang erfolgreich durchgeführt wurde. Der Wert Null bedeutet, dass der Sortiervorgang erfolgreich durchgeführt wurde. Ein Wert ungleich Null bedeutet, dass der Sortiervorgang nicht ordnungsgemäß abgeschlossen werden konnte.
Zusammenfassung
Der Wert der Sonderregister (außer SORT-RETURN) wird durch Ausführung der SORT-Anweisung nicht zurückgesetzt oder auf Null gesetzt. Falls ein Programm mehrere Sortierläufe enthält, muss der Programmierer vor Ausführung eines jeden Sortiervorgangs einen ungefähren Wert in SORT-FILE-SIZE, SORT-CORE-SIZE und SORT-MODE-SIZE eintragen.
Man beachte, dass die Sonderregister nicht als direkte Operanden einer ACCEPT-Anweisung angegeben werden können, da sie binäre Felder sind.
Beispiel 12-8
ACCEPT MODE-SIZE FROM EINGABE.
MOVE MODE-SIZE TO SORT-MODE-SIZE.
Da die ACCEPT-Anweisung Eingabedaten vom Terminal ohne Konvertierung überträgt, wird die MOVE-Anweisung für die Konvertierung nach COMPUTATIONAL verwendet.