Sorta permet de trier des tableaux de variables, mono-dimensionnés.
Sorta [ rep ] liste_nom_var [ Order By liste_expr ]
Elément | Description | Restrictions |
rep | Expression numérique entière du nombre d'éléments à trier. Par défaut, il s'agit du nombre d'éléments du premier tableau de la liste. | rep ne doit pas dépasser le nombre d'éléments du plus petit tableau. |
liste_nom_var | Liste de nom_var séparées par le caractère ','. | Aucune. |
nom_var | nom_de_variable désignant le tableau dans lequel s'effectue le tri. Dans le cas d'un tableau déroulant, il s'agit de la variable de bas de tableau. | Aucune. |
liste_expr | Liste de expr séparées par le caractère ','. | Aucune. |
expr | Expression de type quelconque. | Aucune. |
# Tri des lignes d'un tableau déroulant selon le nom puis le prénom.
# NLI est le nom de la variable de bas de tableau, elle contient donc
# le nombre d'éléments du tableau.
Sorta [M]NLI [M]NLI Order By NOM([S]indice), PRENOM([S]indice)
# On dispose de 3 tableaux d'éléments NUM, CAR et NOM obtenus à partir
# d'un jeu de libellés. NUM est un tableau d'entiers (numéros de
# libellés), CAR un tableau de caractères (associés aux libellés) et
# NOM un tableau de chaînes de caractères (intitulés) :
NUM | 1 | 2 | 3 | 4 | 5 | 6 |
CAR | A | H | I | V | V | A |
NOM | at386 | hp | ibm3151 | vt220 | vt200 | ansi (1) |
# Tri des 3 tableaux dans l'ordre des caractères, puis à égalité de 2
# caractères dans l'ordre des libellés puis des valeurs de NUM
Sorta CAR, NOM, NUM
# Le résultat du tri est le suivant :
NUM | 6 | 1 | 2 | 3 | 5 | 4 |
CAR | A | A | H | I | V | V |
NOM | ansi | at386 | hp | ibm3151 | vt200 | vt220 |
# En repartant de la situation (1), tri des 3 tableaux dans l'ordre
# des caractères
Sorta CAR, NOM, NUM Order By CAR(indice)
# Le résultat du tri est le suivant (par exemple, car l'ordre des
# valeurs des tableaux NUM et NOM pour les indices 0 et 1 d'une part,
# 4 et 5 d'autre part peut être différent le tri étant non conservatif
NUM | 1 | 6 | 2 | 3 | 4 | 5 |
CAR | A | A | H | I | V | V |
NOM | at386 | ansi | hp | ibm3151 | vt220 | vt200 |
L'instruction Sorta permet de trier des tableaux d'éléments à une dimension. Si le nombre d'éléments à trier n'est pas précisé, le tri se fait sur tous les éléments des tableaux.
Le sens du tri est ascendant. Toutefois, il est possible de trier un tableau sur un champ numéro selon un tri décroissant en multipliant ce champ par -1.
Lorsqu'il n'y a pas de clause Order By, le tri s'effectue dans l'ordre du premier tableau. En cas d'égalité d'éléments de ce tableau, il s'effectue dans l'ordre du deuxième tableau... et ainsi de suite pour l'ensemble des tableaux à trier.
Si un ordre est donné (les expressions étant construites à partir de la variable système indice), le tri s'effectue selon la valeur de la première expression, puis en cas d'égalité selon la valeur de la deuxième et ainsi de suite pour les suivantes.
Dans le cas d'un tableau déroulant, il est nécessaire de préciser le nombre d'éléments à trier ainsi que l'ordre du tri. D'autre part, le nom de variable à indiquer est celui de la variable de bas de tableau ; elle désigne alors l'ensemble des variables du tableau déroulant.
Précisons que le tri est non conservatif. Ceci signifie qu'en cas d'égalité d'éléments d'un tableau, on ne peut savoir dans quel ordre ces éléments égaux apparaîtront dans le résultat pour les autres tableaux (à moins d'avoir donné d'autres critères).
On peut trier des tableaux comportant des nombres d'éléments différents. Dans ce cas, il faut donner une valeur au paramètre rep au plus égale à la plus petite taille des tableaux.