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,"&nbsp;"," ");
  file "c:/intro_sas/atelier/inutile.html";
  put code;
run;
|