Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

@SORT - Sortieren von Zeilenbereichen

&pagelevel(3)&pagelevel

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
Zeilenbereich angegeben, werden alle Datensätze der aktuellen Arbeitsdatei
sortiert.

cols

Spaltenbereich, dessen Zeichen zur Sortierung berücksichtigt werden
sollen. Im Folgenden wird dieser Spaltenbereich als Sortierfeld bezeichnet.

Wird nur eine Spaltennummer angegeben, werden die Zeichen ab dieser
Spalte bis zum Ende der Zeile zur Sortierung berücksichtigt. Ist die erste
Spaltenangabe größer als die Zeilenlänge, wird diese Zeile so behandelt,
als ob sie ein leeres Sortierfeld enthielte.

Die Sortierfelder zweier Zeilen werden zeichenweise von links nach rechts
verglichen. Wird dabei das Ende eines Sortierfeldes (z.B. wegen Zeilenendes)
erreicht (ohne Differenz), so gilt die Zeile mit dem kürzeren Sortierfeld
als kleiner.

Wird kein Spaltenbereich angegeben, umfasst das Sortierfeld die gesamte
Zeile.

cols*

Spaltenbereich ausgehend vom Satzende. Die Zählung vom Satzende
Richtung Satzanfang bestimmt nur, welche Zeichen zum Sortierfeld
gehören. Innerhalb des Sortierfeldes wird trotzdem von links nach rechts
verglichen. Die Angabe 1-10 bedeutet also z.B. die letzten zehn Zeichen
jeder Zeile.

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.