Mit der Anweisung @SORT kann man zusammenhängende Zeilenbereiche in der aktuellen Arbeitsdatei aufsteigend oder absteigend sortieren. Durch die Angabe eines Spaltenbereichs kann der für die Sortierung relevante Teil des Satzes eingeschränkt werden.
Operation | Operanden | F-Modus, L-Modus |
@SORT | [lines] [ {:cols[:] | :R (cols*) } ] [ {A | D} ] |
lines | Zeilenbereich, dessen Daten sortiert werden sollen. Wird kein |
cols | Spaltenbereich, dessen Zeichen zur Sortierung berücksichtigt werden Wird nur eine Spaltennummer angegeben, werden die Zeichen ab dieser Die Sortierfelder zweier Zeilen werden zeichenweise von links nach rechts Wird kein Spaltenbereich angegeben, umfasst das Sortierfeld die gesamte |
cols* | Spaltenbereich ausgehend vom Satzende. Die Zählung vom Satzende |
A D | Es wird aufsteigend sortiert (ascending). Es wird absteigend sortiert (descending). |
Zeilen mit gleichem Sortierfeld behalten ihre ursprüngliche Reihenfolge in der Arbeitsdatei.
Wenn der Arbeitsdatei ein 7-Bit- oder 8-Bit-Zeichensatz zugeordnet ist, wird die Reihenfolge der einzelnen Zeichen durch ihren als Binärzahl aufgefassten Bytecode bestimmt. Wenn der Arbeitsdatei ein Unicode-Zeichensatz zugeordnet ist, wird die Reihenfolge der einzelnen Zeichen durch den als Binärzahl aufgefassten UTF16
-Code des Zeichens bestimmt. Das von XHCS verwaltete Sortiergewicht für die einzelnen Zeichen wird nicht berücksichtigt. Die Sortierreihenfolge bei Sortierung mit dem EDT kann also von der Sortierreihenfolge bei Sortierung mit dem Programm SORT abweichen.
Die Anweisung @SORT verwendet eine Kombination von Quicksort und Bubblesort.
Die Anweisung @SORT kann nicht für eine durch die Anweisung @OPEN (Format 2) real geöffnete Datei gegeben werden.
Wird die Anweisung mit [K2] unterbrochen und der EDT-Lauf mit /INFORM-PROGRAM
fortgesetzt, so wird die Bearbeitung der Anweisung abgebrochen und die Meldung EDT5501
ausgegeben.
Beispiele
@SORT :1-15
sortiert alle Sätze der aktuellen Arbeitsdatei aufsteigend nach dem Inhalt der Spalten 1 bis
@SORT &:1-15
sortiert alle Sätze des durch das Bereichssymbol &
definierten Bereichs (siehe @RANGE-Anweisung) in der aktuellen Arbeitsdatei aufsteigend nach dem Inhalt der Spalten 1 bis
@SORT %-.%+19L :R(1-8) D
sortiert die ersten 20 Sätze der aktuellen Arbeitsdatei absteigend nach dem Inhalt der letzten 8 Spalten.
@SORT 20-.$:#I1-#I2
sortiert die Sätze von Zeilennummer 20 bis zum Ende der aktuellen Arbeitsdatei aufsteigend. Der die Sortierung bestimmende Spaltenbereich wird durch die Ganzzahlvariablen #I1
und #I2
angegeben.