Publié le :
Macro SASHELP

Création dynamique de liste macro variable horizontale

Ce code est également disponible en : Deutsch English Español
Ce script illustre comment créer une liste horizontale de valeurs stockée dans une variable macro lors de l'exécution d'une étape DATA. Il utilise la table SASHELP.CLASS pour concaténer tous les noms d'élèves, séparés par un tilde, et stocke également le nombre total d'élèves.
Analyse des données

Type : SASHELP


Les données proviennent de la table standard SASHELP.CLASS.

1 Bloc de code
DATA STEP
Explication :
Cette étape DATA _NULL_ parcourt la table SASHELP.CLASS. L'instruction RETAIN et la fonction CATX permettent d'accumuler les noms dans la variable 'student_list'. À la dernière observation (eof), CALL SYMPUTX assigne la liste complète et le nombre d'observations (_n_) à des variables macro.
Copié !
1DATA _null_;
2 SET sashelp.class END=eof;
3 LENGTH student_list $200;
4 retain student_list;
5 student_list = catx('~',student_list,name);
6 IF eof THEN DO;
7 call symputx('STUDENT_LIST',student_list);
8 call symputx('NUM_STUDENTS',_n_);
9 END;
10RUN;
2 Bloc de code
SAS MACRO LANGUAGE
Explication :
Affiche le contenu des variables macro créées (&NUM_STUDENTS et &STUDENT_LIST) dans le journal SAS pour vérification. L'option 'nosource' est utilisée pour nettoyer la sortie du journal.
Copié !
1options nosource;
2%put ======================;
3%put Number of Students: &NUM_STUDENTS;
4%put Student List: &STUDENT_LIST;
5%put ======================;
6options SOURCE;
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.
Informations de Copyright : Instructor : Josh Horstman


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« La création de listes de variables macro au sein d'une étape DATA est une technique fondamentale pour piloter des processus itératifs ou générer des rapports dynamiques. L'utilisation de la fonction CATX est ici exemplaire : elle gère intelligemment la concaténation en supprimant les blancs superflus et en n'insérant le délimiteur (ici le tilde ~) qu'entre les valeurs, évitant ainsi un séparateur parasite au début de votre liste. En couplant cela avec l'option END=eof et CALL SYMPUTX, vous garantissez que la variable macro n'est créée qu'une seule fois à la fin du traitement, optimisant ainsi les ressources du système et la propreté de votre table de symboles. »