Je ne peux pas écrire un article sur le tri sans tester SORTA, l’opcode de tri intégré de RPG. Avant la V5R3, il était difficile d’utiliser SORTA parce que, entre autres, il triait toujours toute la matrice au lieu de ne trier que les éléments non vierges. Cela a été
Parlons de SORTA

corrigé en V5R3 par l’introduction de la fonction intégrée (BIF, built-in function) %SUBARR. Comme j’utilise la V5R3 sur mon système, j’ai utilisé %SUBARR dans mes tests pour que les résultats soient les plus rapides possibles.
SORTA a pour autre inconvénient de ne pas agir sur une matrice de structure de données. Donc, pour trier une structure de données multichamp, il faut créer une matrice à l’intérieur d’une structure de données puis utiliser OVERLAY pour recouvrir chaque champ. Le renvoi A de la figure 3 montre une structure de données ainsi définie. On peut voir en B de cette même figure que cela facilite le tri sur un champ particulier dans la matrice.
Malheureusement, cette technique pose un gros problème: une structure de données nommée ne peut pas dépasser 65 535 octets. Comme mes données ont une longueur de 69 octets, je ne peux avoir que 949 éléments dans une matrice ainsi déclarée. Si je veux tester des matrices de 1000 ou 10 000 éléments, cette méthode ne conviendra pas !
Une structure de données non nommée permettrait de plus grandes matrices, mais elle ne fonctionnera pas non plus dans ce cas parce que j’utilise un pointeur pour recouvrir la matrice de structure de données, et des structures de données non nommées ne peuvent pas être basées sur un pointeur.
Heureusement, il existe un plan B: je peux créer une matrice « plate » (c’est-à-dire, une matrice ne contenant aucun champ) et placer le champ Sort By au début. Comme je n’ai plus besoin de faire tenir le résultat dans une structure de données, je peux fournir une plus grande matrice à l’opcode SORTA.
Mais il me faudra copier les données dans la matrice à chaque fois (parce que les données clé peuvent être différentes à chaque tri), donc cette méthode de tri de mon sous-fichier ne fonctionnera pas aussi bien.
SORTA présente deux gros avantages : elle est intégrée en RPG et est simple d’emploi. Son point faible est son manque de souplesse. Elle est meilleure qu’en RPG III ou même qu’en V5R2, mais c’est encore l’une des méthodes les plus rigides qui soient. On ne peut pas l’utiliser sur une matrice de structure de données. Elle est difficile à utiliser sur un espace utilisateur ou sur de la mémoire allouée à partir du tas. Il est difficile d’effectuer un tri insensible à la casse (majuscules/minuscules). Cela dit, mes résultats de test, sur lesquels je reviendrai plus en détail dans la suite de cet article, montrent toute son efficacité pour trier une petite matrice.
Téléchargez cette ressource

Démocratiser l’adoption de l’IA par la maîtrise de ses données
Saviez-vous que 80% du temps de vos projets IA portent sur l’analyse de vos données ? explorez tous les outils nécessaires pour entreprendre une gestion performante de vos flux de données et optimiser votre architecture afin de réussir vos projets d’Intelligence Artificielle. découvrez le guide des experts Blueway.
Les articles les plus consultés
- Et si les clients n’avaient plus le choix ?
- Activer la mise en veille prolongée dans Windows 10
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Afficher les icônes cachées dans la barre de notification
- Cybersécurité Active Directory et les attaques de nouvelle génération