Publié le :
Macro CREATION_INTERNE

Macro utilitaire pour trier une liste d'éléments

Cette macro, nommée `utl_sortn`, utilise l'option `parmbuff` pour accepter un nombre variable d'arguments. Elle compte le nombre d'éléments fournis, puis utilise un DATA step exécuté via `%dosubl` pour effectuer le tri. Dans ce DATA step, un tableau temporaire est créé avec les éléments d'entrée. La routine `CALL SORTN` est appliquée sur ce tableau pour le trier en place. Enfin, `CALL SYMPUTX` est utilisé pour créer une macro-variable (`_sessref_`) contenant les éléments triés et concaténés avec un espace. La macro se résout ensuite en cette nouvelle macro-variable, affichant de fait la liste triée.
Analyse des données

Type : CREATION_INTERNE


La macro ne lit aucune donnée externe ou de la librairie SASHELP. Les 'données' à traiter sont les paramètres fournis lors de l'appel de la macro, capturés par la variable automatique &SYSPBUFF grâce à l'option PARMBUFF.

1 Bloc de code
DATA STEP
Explication :
Le code définit une macro `%utl_sortn` qui accepte une liste de paramètres (`parmbuff`). Elle utilise la fonction `%dosubl` pour exécuter un DATA step de manière isolée. Ce DATA step charge les paramètres dans un tableau temporaire, le trie avec `CALL SORTN`, puis stocke le résultat trié dans une macro-variable `_sessref_`. La dernière ligne de la macro, `&_sessref_`, résout cette variable, retournant ainsi la liste triée à l'appelant.
Copié !
1%macro utl_sortn() / parmbuff;
2 %local n rc buff;
3 
4 %let n=%sysfunc(countw(&syspbuff,( , )));
5 
6 %dosubl(%sysfunc(dequote("
7 data _null_;
8 array x [&n] _temporary_ &syspbuff;
9 call sortn(of x[*]);
10 call symputx('_sessref_',catx(' ',of x[*]));
11 run;
12 ")))
13 
14 &_sessref_
15 
16%mend utl_sortn;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.