Structurer ses travaux SAS à l'aide de pages HTML Joël Rivest, Ph.D. Analyste au Centre de développement du porc du Québec inc. Québec Juin 2010
Québec Juin 2010 Deux utilisations du HTML 1. ODS de SAS Résultats en HTML et présentation structurée 2. Automation OLE et HTML gestion des programmes SAS
Québec Juin 2010 –Facilite le partage des résultats avec le client et aide à s'y retrouver soi-même plus facilement Résultats en HTML
Québec Juin 2010 Résultats en HTML - Exemple –Exemple de site
Québec Juin 2010 Peut être intéressant si : –on est susceptible de revenir souvent aux résultats, ou après une longue période de temps; –les résultats sont nombreux; –plusieurs personnes sont susceptible de consulter les résultats; –des mises à jours de résultats sont probables. Vaut-il la peine de produire un site?
Québec Juin 2010 –Accéder en écriture un endroit accessible par les « clients » Serveur web de la Cie (gestion des accès sécurisés) Serveur intranet (clients internes) Un ordinateur quelconque (le sien) connecté au réseau (clients internes ou simplement pour soi) Résultats en HTML - Pré-requis
Québec Juin 2010 Être capable de créer des pages web de menu permettant d’accéder aux résultats SAS –Préférence personnelle pour coder directement le code HTML –Sinon peut utiliser un logiciel wysiwyg –Autre alternative : utiliser un wiki maison, (avec moteur tel dokuwiki, mediawiki, etc.) Requiert moins de codification que le HTML Résultats en HTML - Pré-requis
Québec Juin 2010 Quelques macros (pour SAS PC) facilitant l’écriture des résultats SAS dans des pages web %VERSHTML(répertoire,sous-répertoire); code… %FINHTML; Résultats en HTML - Pré-requis
Québec Juin 2010 Paramètres de la macro %VERSHTML –Répertoire : Obligatoire –Sous-répertoire : Optionnel Crée un sous-répertoire du nom donné Utile pour générer série de résultats similaires pour différentes variables –ex : 1 sous-répertoire par variable analysée (analyse de variance) Macro %VERSHTML
%MACRO VERSHTML(chemin,nom); /*Option qui permet de fermer automatiquement la fenêtre DOS lorsque la tâche est complétée*/ OPTION NOXWAIT; /*Change le répertoire courant selon le chemni spécifié*/ %SYSEXEC CD &CHEMIN/; /*Si un nom est indiqué, un sous-répertoire est ajouté au chemin*/ %IF &NOM NE %THEN %DO; %SYSEXEC MD &NOM; %SYSEXEC CD &NOM; %LET NOMREP=&NOM/; %END; %ELSE %DO; %LET NOMREP=; %END; /*Efface les fichier GIF et HTML déjà présents dans le répertoire*/ /*S'ASSURER D'AVOIR LE BON RÉPERTOIRE !!! */ %SYSEXEC DEL *.GIF; %SYSEXEC DEL *.HTML; /*Ferme la sortie vers l'écran*/ ods listing close; /*Ajuste les paramètres graphiques pour la sortie HTML*/ goptions device=gif notransparency hsize=16.75cm vsize=10.2cm ftitle='Arial' ftext='Arial' htext=2 htitle=3; /*Définit les paramètres pour la sortie HTML*/ ODS HTML PATH="&CHEMIN/&NOMREP" (url=none) /*Chemin des pages HTML*/ NEWFILE=proc /*Crée une nouvelle page html à chaque procédure*/ FRAME='result.html' /*Nom de la première page*/ PAGE='page.html' /*Cadre de gauche ou table des matières*/ BODY='body.html' /*Nom de base pour les pages de résultats : incrémentation automatique*/ %IF &NOM NE %THEN %DO; HEADTEXT=" &NOM "/*Si un nom est passé, titre les pages html avec ce nom*/ %END; ;quit; %MEND;
%MACRO FERMEHTML; quit; /*Ferme la sortie HTML*/ ODS HTML CLOSE; /*Rétablit la sortie vers l'écran*/ ODS LISTING; /*Ajuste les paramètres graphiques pour l'écran*/ goptions device=win notransparency hsize=16.75cm vsize=10.2cm ftitle='Arial' ftext='Arial' htitle=1.5 htext=.8; %MEND;
Québec Juin 2010 Exemple fictif, création de résultats dans un seul répertoire Résultats en HTML - exemple
/*Création d'un set de données fictives de 4 variables*/ data donnees; do i=1 to 100; x=normal(464654); y=1+.5*x+normal(464654)*2; v=-4-7*x+normal(464654)*.5; z=normal(654654); output; end; run;
/*Met des résultats globaux dans un sous répertoire – accessibles par le fichier “result.html”*/ %VERSHTML(CHEMIN=C:\TESTHTML,nom=global); %let title="Statistiques descriptives"; title h=.4cm &title;; ods proclabel &title; proc tabulate data=donnees; var x y v z; table x y v z,n mean min max std p5 p95; run; %let title="Corrélations"; title h=.4cm &title;; ods proclabel &title; proc corr data=donnees nosimple; var x y v z; run; %FERMEHTML;
Québec Juin 2010 Exemple fictif, création de résultats dans plusieurs répertoires, un par variable analysée Résultats en HTML - exemple
/*Génération de résultats pour une liste de variables données - lien entre x et une autre variable*/ %MACRO RESULTAT; %let listevar=y v z; %do compte=1 %to 3; %do %while (%scan(&listevar,&compte) ne ); %let var=%scan(&listevar,&compte); %VERSHTML(CHEMIN=C:\TESTHTML,nom=&var._vs_x); %let title="Analyse de régression, &var f(x)"; title h=.4cm &title;; ods proclabel &title; proc reg data=donnees; model &var=x; plot &var*x; output out=sortie r=res; run; %let title="Distribution des résidus de la relation de &var f(x)"; title h=.4cm &title;; ods proclabel &title; proc univariate data=sortie normal plot;var res;run; %FERMEHTML; %let compte=%eval(&compte+1); %end; %mend; %RESULTAT;
Québec Juin 2010 Permet de créer des menus très variés pour accéder à ses programmes SAS. –Pour SAS PC. –SAS enterprise ? Doit rouvrir SAS si on fait des changements au menu Gestion des programmes SAS
Québec Juin 2010 Gestion des programmes SAS - exemple Un clique sur un lien ouvre le fichier de code dans SAS
Québec Juin 2010 Exemple de code d’une page HTML permettant d’ouvrir dans SAS le fichier « autoexec.sas » Gestion des programmes SAS
on error resume next Set OleSAS = GetObject(,"SAS.Automation") if err then Set OleSAS = CreateObject("SAS.Application") on error goto 0 else on error goto 0 msgbox "like this will ever happen..." end if olesas.visible=true sub runsas(cmd) OleSAS.Top test="wedit '"+cmd+"';" OleSAS.command (test) window.event.returnValue = false end sub Autoexec
Merci Joël Rivest, Ph.D. Analyste au Centre de développement du porc du Québec inc. Québec Juin 2010