Exemple d'utilisation de %smile_replace_in_text_files
En attente de validation
Le script initialise d'abord la variable macro `root` pour pointer vers le répertoire des macros SMILE. Il définit ensuite deux macros utilitaires : `%create_text_file` pour générer un fichier texte temporaire avec des marqueurs, et `%print_text_file` pour afficher le contenu de ce fichier dans le log. Deux exemples d'utilisation de `%smile_replace_in_text_files` sont présentés. Le premier remplace un marqueur `<path>` par un chemin de fichier Windows, et le second remplace un marqueur `{todayDate}` par la date système actuelle. L'objectif est de montrer comment manipuler le contenu textuel de fichiers de manière programmatique.
Analyse des données
Type : CREATION_INTERNE
Les données traitées (le fichier `example.sas`) sont créées dynamiquement par le script lui-même (`%create_text_file` macro) et ne proviennent pas de sources externes ou de bibliothèques SAS existantes comme SASHELP. Le script manipule et affiche ce fichier interne.
1 Bloc de code
Initialisation/OPTIONS
Explication : Ce bloc initialise la variable macro `root` qui pointe vers le répertoire de la bibliothèque de macros SMILE. Il configure ensuite les options `SASAUTOS` pour inclure ce chemin, permettant à SAS de trouver les macros. L'option `NONOTES` supprime les notes du log.
Explication : Définit une macro nommée `create_text_file`. Lorsque cette macro est appelée, elle utilise un DATA Step `_NULL_` pour créer un fichier texte (`example.sas`) dans un sous-répertoire temporaire. Ce fichier contient des commentaires et deux marqueurs de remplacement : `{todayDate}` et `<path>`.
Copié !
%MACRO create_text_file();
DATA _NULL_;
FILE "&root/results/temp/example.sas";
PUT "* This is a file created by a program to demonstrate text replacements";
PUT "* Created: {todayDate}";
PUT '%%LET path = <path>;';
RUN;
%MEND;
1
%MACRO create_text_file();
2
DATA _NULL_;
3
FILE "&root/results/temp/example.sas";
4
PUT "* This is a file created by a program to demonstrate text replacements";
5
PUT "* Created: {todayDate}";
6
PUT '%%LET path = <path>;';
7
RUN;
8
%MEND;
3 Bloc de code
DATA STEP
Explication : Définit une macro nommée `print_text_file`. Cette macro utilise un DATA Step `_NULL_` pour lire le contenu du fichier `example.sas` ligne par ligne et l'afficher directement dans le log SAS via l'instruction `PUT _INFILE_`.
Copié !
%MACRO print_text_file();
DATA _NULL_;
INFILE "&root/results/temp/example.sas";
INPUT;
PUT _INFILE_;
RUN;
%MEND;
1
%MACRO print_text_file();
2
DATA _NULL_;
3
INFILE"&root/results/temp/example.sas";
4
INPUT;
5
PUT _INFILE_;
6
RUN;
7
%MEND;
4 Bloc de code
Appel Macro (%create_text_file) Data
Explication : Appel de la macro `create_text_file` pour générer le fichier `example.sas` avec son contenu initial. Ce fichier servira de cible pour les opérations de remplacement de texte.
Copié !
%create_text_file();
1
%create_text_file();
5 Bloc de code
Appel Macro (%print_text_file)
Explication : Appel de la macro `print_text_file` pour afficher le contenu initial du fichier `example.sas` dans le log, avant toute modification. Cela permet de vérifier le point de départ.
Copié !
%print_text_file();
1
%print_text_file();
6 Bloc de code
Appel Macro (%smile_replace_in_text_files)
Explication : Appel de la macro `%smile_replace_in_text_files`. Cette macro recherche le marqueur '<path>' dans tous les fichiers SAS du répertoire spécifié par `inpath` (`&root/results/temp`) et le remplace par la chaîne 'c:\temp\myPath'. Le fichier modifié est écrit dans `outpath`.
Explication : Appel de la macro `print_text_file` pour afficher le contenu du fichier `example.sas` après le premier remplacement, permettant de vérifier que '<path>' a bien été substitué par 'c:\temp\myPath'.
Copié !
%print_text_file();
1
%print_text_file();
8 Bloc de code
Appel Macro (%create_text_file) Data
Explication : Pour le deuxième exemple, le fichier `example.sas` est recréé avec son contenu initial (incluant le marqueur `{todayDate}`), annulant les modifications précédentes.
Copié !
%create_text_file();
1
%create_text_file();
9 Bloc de code
Appel Macro (%print_text_file)
Explication : Affichage du contenu réinitialisé du fichier `example.sas` dans le log, avant le deuxième remplacement.
Copié !
%print_text_file();
1
%print_text_file();
10 Bloc de code
Appel Macro (%smile_replace_in_text_files)
Explication : Deuxième appel de `%smile_replace_in_text_files`. Cette fois, le marqueur '{todayDate}' est recherché et remplacé par la date système actuelle, obtenue via la fonction macro `%SYSFUNC(date(),date9.)` qui formate la date sur 9 caractères (ex: '22DEC2025').
Explication : Affichage final du contenu du fichier `example.sas` après le remplacement de '{todayDate}', confirmant que la date a été insérée correctement.
Copié !
%print_text_file();
1
%print_text_file();
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 : Project : SMILE - SAS Macros, Intuitive Library Extension
Purpose : Example program for macro calls of %smile_replace_in_text_files
Author : Katja Glass
Creation : 2021-02-15
SAS Version: SAS 9.4
License : MIT
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.