HIVER 2008
TECHNOS-CONSEILS
Profil d'un utilisateur : Marje Fecht
À lire
Profil du service de la Formation : Stephen Keelan
À lire
Informez-vous facilement sur toutes les nouveautés de SAS 9.1, des nouveaux produits aux mises à jour et améliorations.

Cliquez sur le lien SAS 9 à partir de notre site Web support.sas.com.
Pour des détails sur tous les produits et solutions de SAS, cliquez ici.
Le blogue sascom : http://blogs.sas.com/sascom/
SAS Canada
APPLICATION DE DÉTECTION DES ANOMALIES
Par Bryan K. Beverly

BAE Systems Information Technology

Le but de cette application est de déceler les chaînes de texte associées aux anomalies générées durant l'exécution d'une tâche SAS. Cette application est particulièrement utile pour la recherche de mots clés (tels que ERROR, WARNING, FAILURE, etc.) dans des SASLOG qui ont été écrits dans des fichiers externes. Lorsque des centaines de lignes de texte sont réparties dans des centaines de SASLOG, cette application permet d'épargner du temps et de l'énergie, et n'est pas sujette à l'erreur humaine.

Pour utiliser cette application, il faut indiquer l'emplacement du fichier texte et le terme visé. À l'aide de la commande UNIX « GREP », l'application recherche l'emplacement indiqué, énumère les fichiers qui contiennent le terme visé et transmet les résultats sous forme de courriel.

Cette application permet également de rechercher des chaînes de texte dans des programmes SAS, par exemple, si vous voulez savoir quels programmes dans un répertoire donné contiennent des instructions SIGNON. Si cette approche fonctionne pour n'importe quel type de recherche de chaîne textuelle, elle est particulièrement efficace pour rechercher des aiguilles anormales dans les bottes de foin des SASLOG.

%macro detect(dir=,type=,keyword=);
options symbolgen;

/* CRÉER UNE MACRO QUI COMPTE LES OBSERVATIONS */
%macro metadata (ds);
%global dset nvars nobs;
%let dset = &ds;
%let dsid = %sysfunc(open(&dset));
%let nobs = %sysfunc(attrn(&dsid,NOBS));
%let nvars = %sysfunc(attrn(&dsid,NVARS));
%let rc = %sysfunc(close(&dsid));
%mend metadata;

/* ACTUALISER UN FICHIER TEXTE QUI SAISIT LES RÉSULTATS D'UNE RECHERCHE GREP */
x "cd /home/your_directory";
x "rm my.log";
x "cd &dir.&type";
x "grep &keyword * > /home/your_directory/my.log";

/* PRÉVOIR AU MOINS CINQ SECONDES POUR L'EXÉCUTION DE LA COMMANDE GREP */
data _null_;
snooze=sleep(5000);
run;

/* UTILISER LE FICHIER TEXTE COMME ENTRÉE À DES FINS DE TRAITEMENT */
/* ENREGISTRER LES RÉSULTATS DANS UNE VARIABLE MACRO */
filename test "/home/your_directory/my.log" lrecl=256;
data one;
infile test pad missover;
input @1 var1 $char256.;
call symput('text',var1);
run;

/* COMPTER LES OBSERVATIONS */
%metadata(one);

/* SI DES ANOMALIES SONT DÉCELÉES, ENVOYER LES RÉSULTATS SOUS FORME DE COURRIEL */
%if &nobs>0 %then %do;
data _null_;
filename outbox email "QUELQU_UN@EMAIL.NET" ;
file outbox
subject="ATTENTION !!!: Possibilité d'anomalies de traitement ( &keyword ) détectées dans &dir.&type !";
put "La chaîne ( &keyword ) a été repérée dans au moins un fichier du répertoire &dir.&type";
put " ";
put "&text";
run;
%end;

%mend detect;

/* EXÉCUTER L'APPLICATION POUR CHAQUE TERME VISÉ */
%detect(dir=%str(/TOP_DIRECTORY),type=%str(/SUBDIRECTORY),keyword=%str(failure));
%detect(dir=%str(/TOP_DIRECTORY),type=%str(/SUBDIRECTORY),keyword=%str(ERROR:));
%detect(dir=%str(/TOP_DIRECTORY),type=%str(/SUBDIRECTORY),keyword=%str(stopped));

 
SAS et tous les autres noms de produits ou services de SAS Institute Inc. sont des marques de commerce déposées de SAS Institute Inc. aux États-Unis et dans les autres pays. MD indique une homologation aux É.-U. Les autres noms de marque ou de produit sont des marques de commerce déposées ou des marques de commerce de leurs entreprises respectives. Copyright © 2007, SAS Institute Inc. Tous droits réservés.