Le script ne lit ni ne crée de jeux de données SAS conventionnels. Il interagit directement avec le log SAS pour en extraire du texte et l'écrire dans un fichier externe au format texte.
1 Bloc de code
MACRO DÉFINITION
Explication : Ce bloc définit la macro `%cliplog`. Elle est conçue pour capturer une section du log SAS en utilisant les commandes Display Manager (`dm`). La macro désactive temporairement l'option `mprint` pour éviter l'inclusion de ses propres instructions dans le log capturé. Elle localise une chaîne (`marker1` concaténé avec `marker2`), marque cette position, puis marque la fin du log. Le contenu entre ces deux points est copié dans le presse-papiers SAS, puis écrit dans le fichier spécifié par le paramètre `file`. Enfin, la commande `x "notepad &file"` est utilisée pour ouvrir le fichier généré dans Notepad, et l'option `mprint` est restaurée.
Copié !
%macro cliplog(marker1,marker2,pos=last,file=c:\test.txt) ;
* note: split search text in half so we dont go and find it in our macro call ;
* note: save mprint option since we want mprint turned off for the macro run, otherwise
we get our search text written to the log and we will find it ;
%let o=%sysfunc(getoption(mprint)) ;
options nomprint ;
/* log;
find '&marker1&marker2' &pos;
rfind;
mark;
bottom;
mark;
store;
unmark;
notepad;
clear;
paste;
file '&file';
end
*/
dm "log;find '&marker1&marker2' &pos;mark;bottom;mark;store;unmark;notepad;clear;paste;file '&file';end" ;
* view the file in windows notepad ;
x "notepad &file" ;
options &o ;
%mend cliplog ;
Explication : Ce bloc illustre l'utilisation de la macro `%cliplog`. La ligne `***BEGIN***;` est une instruction SAS qui écrit un marqueur dans le log. Le commentaire `/* now run all the SAS code you would like to capture */` indique où insérer le code dont on veut capturer le log. L'appel `%cliplog(***BEGIN,***);` exécute la macro pour capturer le log. La macro recherchera la première occurrence de `***BEGIN***` (en recherchant à rebours si `pos=last`), marquera cette position, puis la fin du log, et copiera le texte entre ces deux points.
Copié !
***BEGIN***; /* this marks where to start the copying from the log */
/* now run all the SAS code you would like to capture */
%cliplog(***BEGIN,***) ; /* finally we call the macro which captures the log from the point we previously marked */
1
***BEGIN***;
2
/* this marks where to start the copying from the log */
3
/* now
4
run all the SAS code you would like to capture */
5
%cliplog(***BEGIN,***) ;
6
/* finally we call the macro which captures the log from the point we previously marked */
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.
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.