Les données d'entrée proviennent du jeu de données interne SASHELP.CLASS, disponible par défaut dans SAS.
1 Bloc de code
DATA STEP
Explication : Cette étape DATA _NULL_ parcourt le jeu de données SASHELP.CLASS. Pour chaque observation, CALL SYMPUTX est utilisée pour créer une variable macro nommée 'STUDENT' suivie du numéro d'observation (_n_) et lui attribuer la valeur de la variable 'name'. Lorsque la fin du fichier est atteinte (end=eof), une variable macro 'NUM_STUDENTS' est créée et contient le nombre total d'observations traitées.
Copié !
data _null_;
set sashelp.class end=eof;
call symputx(cats('STUDENT',_n_),name);
if eof then call symputx('NUM_STUDENTS',_n_);
run;
1
DATA _null_;
2
SET sashelp.class END=eof;
3
call symputx(cats('STUDENT',_n_),name);
4
IF eof THEN call symputx('NUM_STUDENTS',_n_);
5
RUN;
2 Bloc de code
MACRO STATEMENT
Explication : Ce bloc utilise l'instruction %PUT pour afficher les valeurs des variables macro créées précédemment (NUM_STUDENTS et les variables STUDENTx) directement dans le log SAS. Les options NOSOURCE et SOURCE sont utilisées pour masquer ou afficher le code SAS lui-même dans le log, respectivement, permettant de mettre en évidence les résultats des %PUT.
Copié !
* Verify the contents of the new macro variables by printing to the SAS log.;
options nosource;
%put ======================;
%put Number of Students: &NUM_STUDENTS;
%put;
%put Student 1: &STUDENT1;
%put Student 2: &STUDENT2;
%put Student 3: &STUDENT3;
%put ...;
%put Student 17: &STUDENT17;
%put Student 18: &STUDENT18;
%put Student 19: &STUDENT19;
%put ======================;
options source;
1
* Verify the contents of the new macro variables by printing to the SAS log.;
2
options nosource;
3
%put ======================;
4
%put Number of Students: &NUM_STUDENTS;
5
%put;
6
%put Student 1: &STUDENT1;
7
%put Student 2: &STUDENT2;
8
%put Student 3: &STUDENT3;
9
%put ...;
10
%put Student 17: &STUDENT17;
11
%put Student 18: &STUDENT18;
12
%put Student 19: &STUDENT19;
13
%put ======================;
14
options 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 : HANDS-ON WORKSHOP, Title: Using SAS Macro Variable Lists to Create Dynamic Data-Driven Programs, Instructor: Josh Horstman
« La génération de variables macro "verticales" est une technique de programmation pilotée par les données (data-driven) qui permet de transformer chaque ligne d'une table en une instruction potentielle. L'astuce réside dans l'utilisation de CALL SYMPUTX combinée à la fonction CATS : en associant un préfixe textuel au compteur automatique _N_, vous créez une série de jetons uniques (STUDENT1, STUDENT2, etc.) directement exploitables par des boucles macro. Cette méthode est bien plus flexible qu'une liste codée en dur, car elle s'adapte instantanément si votre table source évolue, sans aucune modification manuelle du code. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.