Le programme

proc contents data=sashelp._all_
              out=toto
              noprint short;
run;
 
proc sql noprint;
   select distinct memname
          into :mem1-:mem999 from toto
          where memtype='VIEW';
   %let nbmem=&sqlobs;
quit;
 
ods listing close;
%macro zopi;
ods html close;
filename odsout "c:/intro_sas/atelier";
ods html PATH=ODSOUT(URL=none)
         BODY="inutile.html"
         page='atelier_contenu.html'
         FRAME='atelier_cadre.html';
;
options nonotes nosource nosource2 errors=0;
 
data _null_;
   set sashelp.vdctnry;
   call symputx(memname, memlabel);
run;
 
proc sql;
   describe view sashelp.vtable;
quit;
 
%do i=1 %to &nbmem;
 
ods html BODY="atelier_body&i..html" NEWFILE=none;
 
 
Title "Description de la vue SASHELP &&mem&i";
 
proc printto new LOG="c:/intro_sas/atelier/poubelle/j&i..log";
 
proc sql;
   describe view sashelp.&&mem&i;
quit;
proc printto;
run;
 
data _null_;
   infile "c:/intro_sas/atelier/poubelle/j&i..log" dlm=",;";
   input @ 'from' source :$40.;
   call symputx(compress('source'||_n_),scan(source,2,'.'));
   call symputx("nsources",_n_);
run;
 
ods proclabel "Vue &&mem&i";
data _null_;
   infile "c:/intro_sas/atelier/poubelle/j&i..log" truncover;
   input text $200.;
   if missing(text)=1 then delete;
   file print;
   put text;
run;
 
ods escapechar="";
 
%if &nsources=1 %then %do;
ods html text='
 systemtitle Cette vue a pour origine la table dictionnaire &source1 : &&&source1
'; %end;   %if &nsources=2 %then %do; ods html text='^{style systemtitle Cette vue a pour origine deux tables dictionnaire
- &source1 : &&&source1
- &source2 :&nb sp;&&&source2}'; %end;   Title "les variables de la vue &&mem&i"; ods proclabel "Variables vue &&mem&i"; ods select position; proc contents data=SASHELP.&&mem&i position;run;   Proc sql noprint;    select count(*) as nobs into :nobs    from sashelp.&&mem&i; quit;   %if &nobs=0 %then %do;   ods html text='
 systemtitle zero observation à présenter pour la vue &&mem&i
'; %end;   %else %do;   Title "Voici quelques observations obtenues en consultant la vue &&mem&i";   ods proclabel "Extrait vue &&mem&i";   proc print data=sashelp.&&mem&i (obs=5) noobs;   run; %end;     %end; ods html close; options notes source source2 errors=20; %mend;   title; %zopi   ** on refait la table des matières;   ** création d'une copie du fichier atelier_contenu;   data _null_;    infile "c:/intro_sas/atelier/atelier_contenu.html" truncover;    input code $2500.;    file "c:/intro_sas/atelier/atelier_contenu-copie.html";    put code; run;   ** et on part de la copie pour refaire le fichier contenu;   data _null_;    infile "c:/intro_sas/atelier/atelier_contenu-copie.html" truncover;    input code $2500.;    file "c:/intro_sas/atelier/atelier_contenu.html";    retain out 0;    if code='<span class="pagestitle">Table of Pages' then       code='<span class="pagestitle"><a href="inutile.html" target="body">Le programme</a>';    if code="</ol>" then out=0;    if out=0 then put code;    if code="</span><ol>" then do;       out=1;       do i=1 to &nbmem;          code='<li class="contentproclabel">Vue <a href="atelier_body'||cats(i)||'.html" target="body">'||strip(symget(compress("mem"||i)))||"</a></li><br/>";          put code;       end;    end; run;   ** et on va centrer les textes non centrés, pour faire plus joli !;   %macro centrage;    %do i=1 %to &nbmem;    /* on duplique les fichiers body*/;    data _null_;       infile "c:/intro_sas/atelier/atelier_body&i..html" truncover;       input code $2500.;       file "c:/intro_sas/atelier/copie&i..html";       put code;    run;    /* on et on bricole... */;    data _null_;       infile "c:/intro_sas/atelier/copie&i..html" truncover;       input code $2500.;       if substr(code,1,23)='<td class="l usertext">' then          code=tranwrd(code,'<td class="l usertext">','<td class="c usertext">');       file "c:/intro_sas/atelier/atelier_body&i..html";       put code;    run;    %end; %Mend;   %centrage   ** et il ne reste plus qu'à présenter le programme dans le fichier inutile.html;   ods html PATH=ODSOUT(URL=none)          BODY="inutile.html"; option pagesize=500 linesize=256;; title "Le programme"; data _null_;    infile "c:/intro_sas/atelier/pgt.sas" truncover;    input code $char25000.;    code=tranwrd(trim(code)," "," ");    file print;    put code :$char25000.; run;   ods html close;   data _null_;    infile "c:/intro_sas/atelier/inutile.html" truncover;    input code $25000.;    file "c:/intro_sas/atelier/inutile_copie.html";    put code; run;   data _null_;   infile "c:/intro_sas/atelier/inutile_copie.html" truncover;   input code $25000.;   code=tranwrd(code,"&amp;nbsp;","&nbsp");   file "c:/intro_sas/atelier/inutile.html";   put code; run;