Data Cleaning : Maîtrisez la logique de transformation textuelle complexe

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Confirmé
Publié le :
Simon

Le Conseil de l'Expert

Simon
Expert SAS et fondateur.

Pour optimiser votre macro revrs et eviter que la resolution du texte n echoue si la chaine contient des caracteres speciaux comme des virgules ou des parentheses, utilisez systematiquement la fonction %qsubstr au lieu de %substr et assurez-vous de placer &nstring a l exterieur de la boucle do pour ne retourner que le resultat final au lieu de chaque etape de construction dans la log.

Le code définit une macro nommée 'revrs' qui utilise une boucle itérative pour inverser l'ordre des caractères d'une chaîne d'entrée. Il définit également une macro 'test' pour fournir une chaîne d'exemple. Le script exécute ensuite des commandes %PUT pour afficher le résultat de l'inversion ainsi que la concaténation de deux variables globales définies dans le script.
Analyse des données

Type : CREATION_INTERNE


Le script ne manipule aucune table de données SAS. Il opère uniquement sur des variables macro et des chaînes de caractères.

1 Bloc de code
MACRO DEFINITION
Explication :
Définition de la macro 'revrs'. Elle parcourt la chaîne d'entrée de la fin vers le début pour construire 'nstring'. Note : La présence de '&nstring' dans la boucle provoque l'affichage de la variable à chaque itération.
Copié !
1%macro revrs(string);
2 %local nstring;
3 %DO i=%LENGTH(&string) %to 1 %BY -1;
4 %let nstring=&nstring%qsubstr(&string,&i,1);
5 &nstring
6 %END;
7 *&nstring;
8%mend revrs;
2 Bloc de code
MACRO DEFINITION
Explication :
Définition d'une macro utilitaire 'test' qui renvoie simplement la chaîne 'Two words'.
Copié !
1%macro test;
2 Two words
3%mend test;
3 Bloc de code
%PUT
Explication :
Exécution de la macro d'inversion sur le résultat de la macro 'test' concaténée à elle-même, et affichage du résultat dans la log.
Copié !
1%put %nrstr(%test%test) - %revrs(%test%test);
4 Bloc de code
%LET / %PUT
Explication :
Initialisation de deux variables macro globales (wbh et ldh) et affichage de leur concaténation directe.
Copié !
1%let wbh=A;
2%let ldh=B;
3 
4%put &wbh&ldh;
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.