Annonce

Bienvenue sur le site support de mes ouvrages d'introduction à SAS

La 4ème édition de mon ouvrage est disponible depuis le 11 avril 2019 !

Où trouver cet ouvrage ?


#1 11-01-2014 16:54:23

SAS-SR
Administrateur
Lieu: Université d'Orléans
Date d'inscription: 01-09-2008
Site web

[archive] le cadeau 2014 pour féter la nouvelle année est ici !

Bonjour

et bonne année à tous

comme chaque année les utilisateurs inscrits sur le site support de mon ouvrage ont reçu pour la nouvelle année un petit cadeau

http://www.sas-sr.com/calendrier2014.pdf

Bon, j'avais déjà offert un calendrier l'année dernière mais je n'ai pas eu beaucoup de temps pour proposer une autre surprise... maintenant, je ne pourrai pas vous refaire le coup du calendrier l'année prochaine... modifier la valeur de la macro-variable annee en 2015 et vous disposerez dès maintenant d'un calendrier 2015...

Chaque calendrier créé par ce programme est différent - Pour exécuter ce programme, vous devez disposer au minimum de SAS 9.2. Le calendrier que vous pouvez téléchargé ici a été construit avec SAS 9.4.

Sébastien Ringuedé

Code:

ODS GRAPHICS / reset=all noborder height=480px width=710px ;
options nodate nonumber center leftmargin=0.001in rightmargin=0.001in topmargin=0.001in bottommargin=0.001in papersize=A4;
title;footnote;
ods listing close;
ods html close;
ODS ESCAPECHAR="^";

*****************************************************;
*****************************************************;
*****************************************************;
%let annee=2014 ;
*****************************************************;
*****************************************************;
*****************************************************;

** macro de construction de la table pour le graphique ;

%macro datagraphic ;
data test;
   array x{16};
   array y{16};
   do i=1 to 16;
      do j=1 to ceil(1+floor(ranuni(-454)*10));
         x(i)=ranuni(-5858);
         y(i)=ranuni(-4475);
         output;
         x(i)=.;
         y(i)=.;
      end;
   end;
run;

data _null_;
   do i=1 to 16;
      size=cat(put(abs(10+rannor(-545)*20),2.),"pt");
      trsp=(1+ceil(ranuni(-454)*7))/10;
      call symput(compress("size"||i),size);
      call symput(compress("trs"||i),left(put(trsp,3.1)));
   end;
run;
%mend ;

** construction du template SGRENDER pour la contruction du graphique ;

proc template;
define statgraph calendar;
MVAR trs1 trs2 trs3 trs4 trs5 trs6 trs7 trs8 trs9 trs10 trs11 trs12 trs13 trs14 trs15 trs16
     size1 size2 size3 size4 size5 size6 size7 size8 size9 size10 size11 size12 size13 size14 size15 size16;
begingraph;
layout overlay / cycleattrs=true xaxisopts=( display=none type=linear ) yaxisopts=( display=none type=linear ) walldisplay=none;
   ScatterPlot X=x1 Y=y1 / primary=true Markerattrs=( Symbol=CIRCLEFILLED Size=size1) DataTransparency=trs1 LegendLabel="y1" NAME="SCATTER";
   ScatterPlot X=x2 Y=y2 /   Markerattrs=( Symbol=CIRCLEFILLED Size=size2)  DataTransparency=trs2 LegendLabel="y2" NAME="SCATTER1";
   ScatterPlot X=x3 Y=y3 /   Markerattrs=( Symbol=CIRCLEFILLED Size=size3)  DataTransparency=trs3 LegendLabel="y3" NAME="SCATTER2";
   ScatterPlot X=x4 Y=y4 /   Markerattrs=( Symbol=CIRCLEFILLED Size=size4)  DataTransparency=trs4 LegendLabel="y4" NAME="SCATTER3";
   ScatterPlot X=x5 Y=y5 /   Markerattrs=( Symbol=CIRCLEFILLED Size=size5)  DataTransparency=trs5 LegendLabel="y5" NAME="SCATTER4";
   ScatterPlot X=x6 Y=y6 /   Markerattrs=( Symbol=CIRCLEFILLED Size=size6)  DataTransparency=trs6 LegendLabel="y6" NAME="SCATTER5";
   ScatterPlot X=x7 Y=y7 /   Markerattrs=( Symbol=CIRCLEFILLED Size=size7)  DataTransparency=trs7 LegendLabel="y7" NAME="SCATTER6";
   ScatterPlot X=x8 Y=y8 /   Markerattrs=( Symbol=CIRCLEFILLED Size=size8)  DataTransparency=trs8 LegendLabel="y8" NAME="SCATTER7";
   ScatterPlot X=x9 Y=y9 /   Markerattrs=( Symbol=CIRCLEFILLED Size=size9)  DataTransparency=trs9 LegendLabel="y9" NAME="SCATTER8";
   ScatterPlot X=x10 Y=y10 / Markerattrs=( Symbol=CIRCLEFILLED Size=size10) DataTransparency=trs10 LegendLabel="y10" NAME="SCATTER9";
   ScatterPlot X=x11 Y=y11 / Markerattrs=( Symbol=CIRCLEFILLED Size=size11) DataTransparency=trs11 LegendLabel="y11" NAME="SCATTER10";
   ScatterPlot X=x12 Y=y12 / Markerattrs=( Symbol=CIRCLEFILLED Size=size12) DataTransparency=trs12 LegendLabel="y12" NAME="SCATTER11";
   ScatterPlot X=x13 Y=y13 / Markerattrs=( Symbol=CIRCLEFILLED Size=size13) DataTransparency=trs13 LegendLabel="y13" NAME="SCATTER12";
   ScatterPlot X=x14 Y=y14 / Markerattrs=( Symbol=CIRCLEFILLED Size=size14) DataTransparency=trs14 LegendLabel="y14" NAME="SCATTER13";
   ScatterPlot X=x15 Y=y15 / Markerattrs=( Symbol=CIRCLEFILLED Size=size15) DataTransparency=trs15 LegendLabel="y15" NAME="SCATTER14";
   ScatterPlot X=x16 Y=y16 / Markerattrs=( Symbol=CIRCLEFILLED Size=size16) DataTransparency=trs16 LegendLabel="y16" NAME="SCATTER15";
endlayout;
endgraph;
end;
run;

*** construction des données du calendrier *** ;

data calendrier ;
   do date="01jan&annee"d to "31dec&annee"d;
      mois=month(date);
      jour=weekday(date)-1;
      if jour=0 then jour=7;
      output;
   end;
run;

data calendrier2;
   set calendrier;
   retain sem ;
   by mois;
   if first.mois then sem=1;
   else if jour=1 then sem+1;
run;

** construction des FORMAT ;

filename donnees url "http://www.very-utile.com/calendrier-&annee.-premier-semestre.php" ;

data formatcal1;
   infile donnees dlm="<";
   input @'class="jourNumero' jourfete $8. @1 @'">' num @'class="jourSaint' @'"thickbox">' saint :$21. ;
run;

filename donnees url "http://www.very-utile.com/calendrier-&annee.-deuxieme-semestre.php" ;

data formatcal2;
   infile donnees dlm="<";
   input @'class="jourNumero' jourfete $8. @1 @'">' num @'class="jourSaint' @'"thickbox">' saint :$21. ;
run;

data formatcal;
   set formatcal1 formatcal2;
run;

data formatcala;
   merge calendrier formatcal;
   verif=(day(date)=num);
   if jourfete NE "jourDeF" then jourfete="";
   saint=tranwrd(saint,"&acirc;","â");
   saint=tranwrd(saint,"&ocirc;","ô");
   if date="30may2014"d then do ;
      jourfete="superfe";
      saint="Mail de S. Ringuedé !";
   end;
run;

data format1;
   set formatcala;
   tt=left(put(day(date),2.));
   tt2="^{style[just=l font_size=5]"||tt||"}^{newline}"||left(saint);
   label=tt2;
   fmtname="saint";
   type="N";
   start=date;
   keep label fmtname type start;
run;

proc format cntlin=format1;
run;

data format2;
   set formatcala;
   if jour in(6,7) then label="cx668099";
   if jourfete="jourDeF" then label="cxDAB6B6" ;
   if jourfete="superfe" then label="cx1CD61C" ;
   fmtname="jdf";
   type="N" ;
   start=date;
   if jourfete in ("jourDeF","superfe") or jour in(6,7);
run;

proc format cntlin=format2;
run;

** macro de construction des 12 tables mois ;

%macro tabmois;
%do i=1 %to 12 ;
%global titrem&i ;
data cal&i;
set calendrier2(where=(mois=&i));
   by mois ;
   retain x1-X7;
   array XX(7) x1-X7;
   xx(jour)=date ;
   if jour=7 or last.mois then do ;
      output;
      do i=1 to 7;
         xx(i)=.;
      end;
   end;
   call symput(compress("titrem"||&i),propcase(compress(put(date,nldatemn.))));
run;
%end;
%mend;

%tabmois

*** et construction du calendrier ;

%MACRO calendrier;

/* récupération des styles ODS disponibles sur la machine qui exécute le programme */
/* et sélecton de 12 styles au hasard */

ODS OUTPUT Stats=Temp1;
PROC TEMPLATE;
   list;
RUN;
ODS OUTPUT CLOSE;

DATA temp1 ;
   SET temp1(WHERE=(type="Style" AND substr(path,1,6)="Styles"));
   gogo=RANUNI(-233423);
   /* exclusion d'un certain nombre de styles "problématiques"...*/
   IF path ^IN("Styles.PowerPointDark","Styles.Journal3a","Styles.Journal2a","Styles.GrayscalePrinter","Styles.Journal1a","Styles.PowerPointLight","Styles.Brown","Styles.Banker","Styles.Sketch","Styles.Minimal","Styles.monochromePrinter","Styles.Journal3","Styles.grayscalePrinter","Styles.Journal2","Styles.Journal");
RUN;

PROC SORT DATA=temp1;
   BY gogo;
RUN;

DATA _null_;
   SET temp1;
   IF _n_<=12 THEN DO ;
      CALL SYMPUT(COMPRESS("ssss"||_n_),COMPRESS(SCAN(path,2,".")));
   END;
RUN;

/* construction de la première page */

DATA text2;
   x='^S={just=center preimage="http://www.sas-sr.com/couverture2large.JPG"}';
   LABEL x='^S={just=center fontweight=bold FONTSIZE=18pt color=blue}www.sas-sr.com';
RUN;

ODS PDF NOTOC STARTPAGE=NEVER STYLE=JOURNAL FILE="calendrier&annee..pdf"
   AUTHOR = "Sébastien Ringuedé"
   SUBJECT = 'www.sas-sr.com'
   TITLE = "Le calendrier &annee de www.sas-sr.com";
;
ODS PDF TEXT="^{newline 3}" ;
PROC PRINT DATA=text2 NOOBS LABEL;
RUN;
ODS PDF TEXT="^{newline 4}" ;
ODS PDF TEXT="^{style[font=('arial',24pt) just=center]Et si vous profitiez de &annee.}";
ODS PDF TEXT="^{style[font=('arial',24pt) just=center]pour améliorer vos connaissances}";
ODS PDF TEXT="^{style[font=('arial',24pt) just=center]quant au fonctionnement de SAS ?}";
ODS PDF TEXT="^{newline 2}" ;
ODS PDF TEXT="^{style[font=('arial',16pt) just=center]Retrouvez sur ^{STYLE[color=blue] www.sas-sr.com }^{STYLE[color=black] le programme SAS qui permet}}";
ODS PDF TEXT="^{style[font=('arial',16pt) just=center]la réalisation de ce calendrier}";
ODS PDF TEXT="^{style[font=('arial',16pt) just=center]et produisez vous même votre propre calendrier}";
ODS PDF TEXT="^{style[font=('arial',16pt) just=center]forcément différent de celui présenté ici...}";

ODS PDF STARTPAGE=NOW ;

/* construction des 12 pages suivantes - une par mois... */

%DO i=1 %TO 12;

%datagraphic ;

ODS PDF STYLE=&&ssss&i;

PROC SGRENDER DATA=test TEMPLATE=calendar;
RUN;

ODS PDF TEXT="^{STYLE[font_size=18pt JUST=center]&&titrem&i &annee.}";

PROC PRINT DATA=cal&i LABEL STYLE(data)=[CELLHEIGHT=21mm CELLWIDTH=26mm]
                            STYLE(header)=[CELLHEIGHT=10mm CELLWIDTH=26mm VJUST=c JUST=C FONT_SIZE=11pt]  NOOBS;
   VAR x1-x7 /STYLE(DATA)=[BACKGROUND=jdf.];
   FORMAT x1-x7 saint.;
   LABEL X1="Lundi" X2='Mardi' X3='Mercredi' X4="Jeudi" X5="Vendredi" X6="Samedi" X7="Dimanche";
RUN;
ODS PDF TEXT="^{STYLE[just=center]www.sas-sr.com}";
ODS PDF TEXT="^{STYLE[just=right]&&ssss&i}";
ODS PDF STARTPAGE=NOW;
%END;

ODS PDF CLOSE;

%MEND;

%calendrier ;

* et on remet tout à "zéro" ;

ods listing;
ods graphics / reset=all ;
options leftmargin=0.25in rightmargin=0.25in topmargin=0.25in bottommargin=0.25in papersize=letter ;

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr
Flux RSS