/*-----------------------------------------------------------------
            S A S   S A M P L E   L I B R A R Y                   
                                                                  
      NAME: TEMPLEX6                                              
     TITLE: Documentation Example 6 for Template Modification     
   PRODUCT: STAT                                                  
    SYSTEM: ALL                                                   
      KEYS: graphics, ods                                         
     PROCS:                                                       
      DATA:                                                       
                                                                  
   SUPPORT: saswfk                UPDATE: July 25, 2011           
       REF: ods graphics                                          
      MISC:                                                       
     NOTES: This sample provides the DATA step and PROC code      
     from the chapter "ODS Graphics Template Modification."  It   
     does not provide most of the ODS statements and style        
     changes that are in the chapter.  Rather, this sample        
     provides code that can be run in one large batch to make     
     all of the graphs in the chapter.  If destinations were      
     repeatedly opened and closed, as in the chapter, then        
     output would be lost and rewritten.  Note that you should    
     not specify destination style changes without first          
     closing a destination.  Changing the style of the output     
     without first closing the destination will not work          
     as you might expect.  Do not do the following:               
                                                                  
        ODS HTML STYLE=STATISTICAL;                               
        . . . code . . .                                          
        ODS HTML STYLE=DEFAULT;                                   
        . . . code . . .                                          
        ODS HTML STYLE=ANALYSIS;                                  
        . . . code . . .                                          
                                                                  
     Instead, do the following:                                   
                                                                  
        ODS HTML STYLE=STATISTICAL;                               
        . . . code . . .                                          
        ODS HTML CLOSE;                                           
        ODS HTML STYLE=DEFAULT;                                   
        . . . code . . .                                          
        ODS HTML CLOSE;                                           
        ODS HTML STYLE=ANALYSIS;                                  
        . . . code . . .                                          
        ODS HTML CLOSE;                                           
                                                                  
     Note that several steps are commented out in this sample,    
     because they create large volumes of output.  To run those   
     steps, remove the comments.                                  
-----------------------------------------------------------------*/

data x;
   input x y;
   label x = 'Normal(0, 4)' y = 'Normal(0, 1)';
   datalines;
-4  0
 4  0
 0 -2
 0  2
;

data y(drop=i);
   do i = 1 to 2500;
      r1 = normal( 104 );
      r2 = normal( 104 ) * 2;
      output;
   end;
run;

data all;
   merge x y;
run;

proc template;
   define statgraph Plot;
      begingraph;
         entrytitle 'Statement Order and the PRIMARY= Option';
         layout overlayequated / equatetype=fit;
            ellipseparm semimajor=eval(sqrt(4)) semiminor=1
                        slope=0 xorigin=0 yorigin=0 /
                        outlineattrs=GraphData2(pattern=solid thickness=5);
            ellipseparm semimajor=eval(2 * sqrt(4)) semiminor=2
                        slope=0 xorigin=0 yorigin=0 /
                        outlineattrs=GraphData5(pattern=solid thickness=5);
            vectorplot  y=y x=x xorigin=0 yorigin=0 /
                        arrowheads=false lineattrs=GraphFit(thickness=5);
            scatterplot y=r1 x=r2 /
                        markerattrs=(symbol=circlefilled size=3);
            referenceline x=0 / lineattrs=(thickness=3);
            referenceline y=0 / lineattrs=(thickness=3);
         endlayout;
      endgraph;
   end;
run;

*
ods listing style=listing;

proc sgrender data=all template=plot;
run;

proc template;
   define statgraph Plot;
      begingraph;
         entrytitle 'Statement Order and the PRIMARY= Option';
         layout overlayequated / equatetype=fit;
            referenceline x=0 / lineattrs=(thickness=3);
            referenceline y=0 / lineattrs=(thickness=3);
            scatterplot y=r1 x=r2 /
                        markerattrs=(symbol=circlefilled size=3);
            vectorplot  y=y x=x xorigin=0 yorigin=0 /
                        arrowheads=false lineattrs=GraphFit(thickness=5);
            ellipseparm semimajor=eval(sqrt(4)) semiminor=1
                        slope=0 xorigin=0 yorigin=0 /
                        outlineattrs=GraphData2(pattern=solid thickness=5);
            ellipseparm semimajor=eval(2 * sqrt(4)) semiminor=2
                        slope=0 xorigin=0 yorigin=0 /
                        outlineattrs=GraphData5(pattern=solid thickness=5);
         endlayout;
      endgraph;
   end;
run;

*
ods listing style=listing;

proc sgrender data=all template=plot;
run;

proc template;
   define statgraph Plot;
      begingraph;
         entrytitle 'Statement Order and the PRIMARY= Option';
         layout overlayequated / equatetype=fit;
            referenceline x=0;
            referenceline y=0;
            scatterplot y=r1 x=r2 / markerattrs=(symbol=circlefilled size=3);

            vectorplot  y=y x=x xorigin=0 yorigin=0 / primary=true
                        arrowheads=false lineattrs=GraphFit;

            ellipseparm semimajor=eval(sqrt(4)) semiminor=1
                        slope=0 xorigin=0 yorigin=0 /
                        outlineattrs=GraphData2(pattern=solid);
            ellipseparm semimajor=eval(2 * sqrt(4)) semiminor=2
                        slope=0 xorigin=0 yorigin=0 /
                        outlineattrs=GraphData5(pattern=solid);
         endlayout;
      endgraph;
   end;
run;

*
ods listing style=listing;

proc sgrender data=all template=plot;
run;