ASORT( )-Funktion

Sortiert Elemente in aufsteigender oder absteigender Reihenfolge.

ASORT(ArrayName [, nStartElement [, nNumberSorted [, nSortOrder [, nFlags]]])

Rückgabewerte

Numerisch

Parameter

  • ArrayName
    Gibt den Namen des zu sortierenden Arrays an.

  • nStartElement
    Gibt das Startelement des Sortiervorgangs an. Wird nStartElement nicht angegeben, startet der Sortiervorgang des Arrays standardmäßig mit dem ersten Element. Bei einem eindimensionalen Array beginnt der Sortiervorgang mit nStartElement. Bei einem zweidimensionalen Array legt nStartElement sowohl die Zeile fest, in der der Sortiervorgang beginnt, als auch die Spalte, die die Sortierreihenfolge der Zeilen bestimmt.

    Anmerkung   Auf ein Element eines zweidimensionalen Arrays können Sie auf zwei Arten Bezug nehmen. Im ersten Fall dienen zwei Indizes dazu, die Zeilen- und die Spaltenposition des jeweiligen Elements im Array anzugeben, bei der zweiten Möglichkeit wird eine Elementnummer verwendet. Diese Funktion benötigt ebenso wie andere, mit denen zweidimensionale Arrays bearbeitet werden, Elementnummern (in ASORT( ) nStartElement und nNumberSorted). Mit AELEMENT( ) können Sie für ein Element eines zweidimensionalen Arrays mit Hilfe des Zeilen- und des Spaltenindexes ermitteln, welche Nummer das Element hat.

    Im folgenden Beispiel wird gezeigt, dass das Startelement nStartElement bestimmt, wie die Zeilen in einem zweidimensionalen Array sortiert werden. Ein kleines Array namens gaArray wird erstellt und zweimal sortiert. Die erste Sortierung beginnt mit dem ersten Element von gaArray. Die Zeilen werden nach den Werten in der ersten Spalte des Arrays sortiert. Die zweite Sortierung beginnt mit dem vierten Element von gaArray. Die Zeilen werden nach den Werten in der zweiten Spalte sortiert.

    Der erste Sortiervorgang beginnt mit der ersten Zeile. Der zweite Sortiervorgang beginnt mit der zweiten Zeile. Mit Hilfe von DISPLAY MEMORY können Sie den Inhalt des Arrays anzeigen; in den nachfolgenden Beispielen werden Tabellen verwendet, um die Ergebnisse der Sortiervorgänge grafisch darzustellen.

    Durch diese Befehle wird das Array gaArray erstellt:

    DIMENSION gaArray(3,2)
    gaArray(1) = 'G'
    gaArray(2) = 'A'
    gaArray(3) = 'C'
    gaArray(4) = 'Z'
    gaArray(5) = 'B'
    gaArray(6) = 'N'
    

    gaArray sieht wie folgt aus:

      Spalte 1 Spalte 2
    Zeile 1 G A
    Zeile 2 C Z
    Zeile 3 B N

    Das Array wird nun mit ASORT( ) beginnend mit dem ersten Element (1,1) im Array sortiert. Die Elemente in der ersten Spalte werden in aufsteigender Reihenfolge sortiert, indem die Zeilen des Arrays neu angeordnet werden.

    =ASORT(gaArray,1)
    

    Beachten Sie die neue Reihenfolge der Zeilen:

      Spalte 1 Spalte 2
    Zeile 1 B N
    Zeile 2 C Z
    Zeile 3 G A

    Das Array wird nun beginnend mit dem vierten Element (2,2) im Array sortiert. Die Elemente in der zweiten Spalte werden sortiert, indem die Zeilen des Arrays neu angeordnet werden.

    =ASORT(gaArray,4)
    

    Beachten Sie den Unterschied in der Reihenfolge der Zeilen:

      Spalte 1 Spalte 2
    Zeile 1 B N
    Zeile 2 G A
    Zeile 3 C Z
  • nNumberSorted
    Legt die Anzahl der Elemente fest, die in einem eindimensionalen Array sortiert werden, oder die Anzahl der Zeilen, die in einem zweidimensionalen Array sortiert werden. Ist das Array z. B. eindimensional und ist der für nStartElement angegebene Wert 2, um festzulegen, dass der Sortiervorgang mit dem zweiten Arrayelement beginnen soll, und ist nNumberSorted gleich 3, um festzulegen, dass der Sortiervorgang drei Elemente umfassen soll, dann werden das zweite, dritte und vierte Arrayelement sortiert. Ist nNumberSorted gleich -1 oder wird dieses Argument nicht angegeben, werden alle Arrayelemente vom Startelement nStartElement bis zum letzten Element im Array sortiert.

    Ist das Array zweidimensional, bezeichnet nNumberSorted die Anzahl der zu sortierenden Zeilen, und zwar beginnend mit der Zeile, die das Startelement nStartElement enthält. Ist nStartElement z. B. 2 und nNumberSorted gleich 3, werden die Zeile, die das zweite Array enthält und die darauf folgenden zwei Zeilen sortiert. Ist nNumberSorted gleich -1 oder wird dieses Argument nicht angegeben, werden alle Arrayzeilen beginnend mit der Zeile, die das Startelement nStartElement enthält, bis zur letzten Arrayzeile sortiert.

  • nSortOrder
    Legt die Sortierreihenfolge (aufsteigend oder absteigend) für die Elemente im Array fest. Standardmäßig werden Arrayelemente in aufsteigender Reihenfolge sortiert. Ist nSortOrder gleich 0 oder wird dieses Argument nicht angegeben, werden die Arrayelemente in aufsteigender Reihenfolge sortiert. Ist nSortOrder gleich einem beliebigen positiven Wert, werden die Arrayelemente in absteigender Reihenfolge sortiert.

  • nFlags
    Gibt fallspezifische Suchkriterien an, die für die Sortierfunktion angewendet werden. Gültige Werte lauten 0 (der Standardwert) und 1. ASORT( ) verwendet die aktuelle Sortierfolge (siehe SET COLLATE) zum Ermitteln der Sortierreihenfolge. Bei bestimmten Sortierfolgen (wie z. B. GENERAL) wird die Groß-/Kleinschreibung nicht berücksichtigt und bei Angabe von nFlags = 0 erfolgt keine Sortierung unter Berücksichtigung der Groß-/Kleinschreibung.

    Der nFlags-Parameter ist nur sinnvoll, wenn bei der aktuellen Sortierfolge die Groß-/Kleinschreibung berücksichtigt wird (wie z. B. MACHINE) und Sie eine Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung durchführen möchten.

    Die Zahl, die in nFlags angegeben wird, liefert einen Bitwert, über den für eine Sortierung festgelegt wird, ob die Groß-/Kleinschreibung berücksichtigt wird, und zwar entsprechend der folgenden Tabelle:

    nFlag Bit Beschreibung
    0 000 Sortierung unter Berücksichtigung der Groß-/Kleinschreibung
    1 001 Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung

Anmerkung   Wenn Sie nFlags festlegen, können Sie die anderen Parameter weglassen, indem Sie diese mit dem Wert -1 übergeben.

Hinweise

Alle in den Sortiervorgang eingeschlossenen Elemente müssen vom gleichen Datentyp sein. Eindimensionale Arrays werden nach Elementen sortiert, zweidimensionale Arrays nach Zeilen. Wird ein zweidimensionales Array sortiert, wird die Reihenfolge der Zeilen im Array umgestellt, so dass die Elemente in einer Spalte des Arrays in aufsteigender oder absteigender Reihenfolge vorliegen.

Wurde der Sortiervorgang erfolgreich abgeschlossen, wird 1 zurückgegeben, andernfalls -1.

Beispiel

Im folgenden Beispiel wird das Feld contact aus der Tabelle customer in ein Array namens gaContact kopiert. Die ersten 20 Ansprechpartner im Array werden angezeigt, das Array wird sortiert, und die Ansprechpartner werden anschließend in sortierter Form erneut angezeigt.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer  && Open customer table

COUNT TO gnCount  && Number of contacts
DIMENSION gaContact(gnCount,1)  && Create a contact array
COPY TO ARRAY gaContact FIELD contact     && Fill the array

CLEAR
? 'Contact names:'
?
FOR nCount = 1 TO 20
   ? gaContact(nCount)  && Display first 20 contacts
ENDFOR
= ASORT(gaContact)     && Sort the array

?
? 'Sorted Contact names:'
?
FOR nCount = 1 TO 20
   ? gaContact(nCount)  && Display first 20 contacts, sorted
ENDFOR

Siehe auch

ACOPY( ) | ADEL( ) | ADIR( ) | AELEMENT( ) | AFIELDS( ) | AINS( ) | ALEN( ) | ASCAN( )