Publié le :
Macro CREATION_INTERNE

Manipulation de chaînes de caractères avec macro %SCAN

Ce code est également disponible en : Deutsch English Español
Le code définit une macro nommée `name` qui accepte un paramètre `fullname`. À l'intérieur de la macro, la fonction macro `%SCAN` est utilisée pour extraire les différentes parties du nom. Le deuxième mot (supposé être le prénom) est extrait en premier, suivi du premier mot (supposé être le nom de famille), en utilisant la virgule comme délimiteur implicite par défaut (ou le deuxième délimiteur si la virgule est explicitement dans la liste des délimiteurs par défaut de %SCAN si elle n'est pas masquée). Les parties extraites sont ensuite concaténées dans l'ordre 'prénom nom de famille' dans une nouvelle variable macro `newname`, qui est ensuite affichée dans le log SAS© via `%PUT`. L'appel de la macro utilise la fonction `%str` pour masquer la virgule présente dans la chaîne 'O'Malley, George', garantissant ainsi que la chaîne est traitée comme un seul argument par la macro.
Analyse des données

Type : CREATION_INTERNE


Le code source ne manipule pas de données issues de tables SAS ou de fichiers externes. Il opère uniquement sur une chaîne de caractères littérale passée en argument à une macro. Par conséquent, il n'y a pas de dépendances de données SASHELP ou de données externes non gérées.

1 Bloc de code
MACRO DEFINITION
Explication :
Ce bloc définit la macro `name`. Elle prend un argument `fullname`. À l'intérieur, elle utilise `%SCAN` pour extraire la deuxième et la première partie de la chaîne `fullname` (correspondant respectivement au prénom et au nom si le format est 'Nom, Prénom'). Ensuite, elle assemble ces parties dans l'ordre 'prénom nom' et stocke le résultat dans la variable macro `newname`. Enfin, la valeur de `newname` est écrite dans le log SAS.
Copié !
1%macro name(fullname);
2 %let first=%scan(&fullname,2);
3 %let last=%scan(&fullname,1);
4 %let newname=&first &last;
5 %put &newname;
6%mend name;
2 Bloc de code
MACRO CALL
Explication :
Ce bloc appelle la macro `name` définie précédemment. La chaîne 'O'Malley, George' est passée comme argument `fullname`. L'utilisation de `%str()` est cruciale ici pour masquer la virgule et l'apostrophe, afin qu'elles soient traitées comme des caractères littéraux de la chaîne plutôt que comme des délimiteurs de paramètres macro ou des caractères spéciaux par le préprocesseur macro SAS. Le résultat affiché dans le log sera 'George O'Malley'.
Copié !
1%name(%str(O%'Malley, George))
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.