Examples From The Gallery of ODS Samples

HTML Output

options nocenter;

ods html style=barrettsblue; 
title;
data;
   input region $ citysize $ pop product $ saletype $
        quantity amount;
   datalines;
   Brazil S   25000 A100 R 150   3750.00
   Canada S   37000 A100 R 200   5000.00
   France S   48000 A100 R 410  10250.00
   Mexico S   32000 A100 R 180   4500.00
   Brazil M  125000 A100 R 350   8750.00
   Canada M  237000 A100 R 600  15000.00
   France M  348000 A100 R 710  17750.00
   Mexico M  432000 A100 R 780  19500.00
   Canada L  837000 A100 R 800  20000.00
   France L  748000 A100 R 760  19000.00
   Mexico L  932000 A100 R 880  22000.00
   Brazil S   25000 A100 W 150   3000.00
   Canada S   37000 A100 W 200   4000.00
   Mexico S   32000 A100 W 180   3600.00
   Brazil M  125000 A100 W 350   7000.00
   Canada M  237000 A100 W 600  12000.00
   France M  348000 A100 W 710  14200.00
   Mexico M  432000 A100 W 780  15600.00
   Brazil L  625000 A100 W 750  15000.00
   Canada L  837000 A100 W 800  16000.00
   France L  748000 A100 W 760  15200.00
   Mexico L  932000 A100 W 880  17600.00
   Brazil S   25000 A200 R 165   4125.00
   Canada S   37000 A200 R 215   5375.00
   France S   48000 A200 R 425  10425.00
   Mexico S   32000 A200 R 195   4875.00
   Brazil M  125000 A200 R 365   9125.00
   Canada M  237000 A200 R 615  15375.00
   France M  348000 A200 R 725  19125.00
   Mexico M  432000 A200 R 795  19875.00
   Canada L  837000 A200 R 815  20375.00
   France L  748000 A200 R 775  19375.00
   Mexico L  932000 A200 R 895  22375.00
   Brazil S   25000 A200 W 165   3300.00
   Canada S   37000 A200 W 215   4300.00
   Mexico S   32000 A200 W 195   3900.00
   Brazil M  125000 A200 W 365   7300.00
   Canada M  237000 A200 W 615  12300.00
   France M  348000 A200 W 725  14500.00
   Mexico M  432000 A200 W 795  15900.00
   Brazil L  625000 A200 W 765  15300.00
   Canada L  837000 A200 W 815  16300.00
   France L  748000 A200 W 775  15500.00
   Mexico L  932000 A200 W 895  17900.00
   Brazil S   25000 A300 R 157   3925.00
   Canada S   37000 A300 R 208   5200.00
   France S   48000 A300 R 419  10475.00
   Mexico S   32000 A300 R 186   4650.00
   Brazil M  125000 A300 R 351   8725.00
   Canada M  237000 A300 R 610  15250.00
   France M  348000 A300 R 714  17850.00
   Mexico M  432000 A300 R 785  19625.00
   Canada L  837000 A300 R 806  20150.00
   France L  748000 A300 R 768  19200.00
   Mexico L  932000 A300 R 880  22000.00
   Brazil S   25000 A300 W 157   3140.00
   Canada S   37000 A300 W 208   4160.00
   Mexico S   32000 A300 W 186   3720.00
   Brazil M  125000 A300 W 351   7020.00
   Canada M  237000 A300 W 610  12200.00
   France M  348000 A300 W 714  14280.00
   Mexico M  432000 A300 W 785  15700.00
   Brazil L  625000 A300 W 757  15140.00
   Canada L  837000 A300 W 806  16120.00
   France L  748000 A300 W 768  15360.00
   Mexico L  932000 A300 W 880  17600.00

proc format;
    value $salefmt 'R'='Retail'
                  'W'='Wholesale';

proc tabulate s={foreground=green background=white};
    class region citysize saletype            / s={foreground=black};
    classlev region citysize saletype         / s={foreground=cxe8edd5};
    var quantity amount                       / s={foreground=black};
    keyword all sum                           / s={foreground=white };
    format saletype $salefmt.;
    label region="Region" citysize="Citysize" saletype="Saletype";
    label quantity="Quantity" amount="Amount";
    keylabel all="Total";

   
    table all={label = "All Products" s={foreground=orange font_weight=bold}},
         (region all )*(citysize all*{s={foreground=CX002288 font_weight=bold}}),
         (saletype all)*(quantity*f=COMMA6. amount*f=dollar10.) /
    s={background=red}
    misstext={label="Missing" s={foreground=brown font_weight=bold }}
    box={label="Region by Citysize by Saletype" 
    s={foreground=brown background=cxebdded}};
run;
ods html close;  

PostScript Output

/*Code for Output*/


data grocery;
   input Sector $ Manager $ Department $ Sales @@;
   datalines;
se 1 np1 50    se 1 p1 100   se 1 np2 120   se 1 p2 80
se 2 np1 40    se 2 p1 300   se 2 np2 220   se 2 p2 70
nw 3 np1 60    nw 3 p1 600   nw 3 np2 420   nw 3 p2 30
nw 4 np1 45    nw 4 p1 250   nw 4 np2 230   nw 4 p2 73
nw 9 np1 45    nw 9 p1 205   nw 9 np2 420   nw 9 p2 76
sw 5 np1 53    sw 5 p1 130   sw 5 np2 120   sw 5 p2 50
sw 6 np1 40    sw 6 p1 350   sw 6 np2 225   sw 6 p2 80
ne 7 np1 90    ne 7 p1 190   ne 7 np2 420   ne 7 p2 86
ne 8 np1 200   ne 8 p1 300   ne 8 np2 420   ne 8 p2 125
;
proc format;
   value $sctrfmt 'se' = 'Southeast'
                  'ne' = 'Northeast'
                  'nw' = 'Northwest'
                  'sw' = 'Southwest';

   value $mgrfmt '1' = 'Malik'   '2' = 'Chang'
                 '3' = 'Reveiz'  '4' = 'Brown'
                 '5' = 'Taylor'  '6' = 'Adams'
                 '7' = 'Alomar'  '8' = 'Andrews'
                 '9' = 'Pelfrey';

   value $deptfmt 'np1' = 'Paper'
                  'np2' = 'Canned'
                  'p1'  = 'Meat/Dairy'
                  'p2'  = 'Produce';
run;


libname proclib 'SAS-library';
 
  options nodate pageno=1 fmtsearch=(proclib);
 
  ods html body='external-HTML-file.html';
ods ps file='sales-ps-file.ps';

 
  proc report data=grocery nowd headline headskip
 
  style(report)=[cellspacing=5 borderwidth=10 bordercolor=blue]
 
  
  style(column)=[foreground=moderate brown  fontweight=bold
               fontface=helvetica fontsize=4]
 
  style(lines)=[foreground=white background=black
              fontstyle=italic fontweight=bold fontsize=5]
 
  style(summary)=[foreground=white background=cxaeadd9 
                fontstyle=bold fontface=helvetica fontsize=3 just=r];
 
     column manager department sales;
 
     define manager / order
                    order=formatted
                    format=$mgrfmt.
                    'Manager'
 
                      style(header)=[foreground=cyan
                                   background=black];
 
     define department / order
                       order=internal
                       format=$deptfmt.
                       'Department'
 
                         style(column)=[fontstyle=italic];
 
     break after manager / summarize;
 
     compute after manager
           / style=[fontstyle=roman fontsize=3 fontweight=bold
             background=white foreground=black];
 
        line 'Subtotal for ' manager $mgrfmt. 'is ' 
            sales.sum dollar7.2 '.';
   endcomp;
 
     compute sales;
      if sales.sum>100 and _break_=' ' then
      call define(_col_, "style", 
                  "style=[background=#CCFF00 
                          fontface=helvetica 
                          fontweight=bold]");
   endcomp;
 
     compute after;
       line 'Total for all departments: '
            sales.sum dollar7.2 '.';
   endcomp;
 
     where sector='se';
 
     title 'Sales for Malik and Chang';
run;
 
  ods html close;
ods ps close;

PDF Output

ods pdf body="b.pdf" style=barrettsblue; 


title1 'TABULATE With Custom ODS Styles';


options center nodate;

data tabulate;
   input dept acct qtr mon expense @@;
cards;
1 1345 1 1 12980  1 1674 1 3 13135  3 4138 1 1 29930
1 1345 1 1 9475   1 1674 1 3 21672  3 4138 1 2 22530
1 1345 1 1 15633  1 1674 1 3 3847   3 4138 1 2 16446
1 1345 1 2 14009  1 1674 1 3 2808   3 4138 1 2 27135
1 1345 1 2 10226  1 1674 1 3 4633   3 4138 1 3 24399
1 1345 1 2 16872  2 2134 1 1 34520  3 4138 1 3 17811
1 1345 1 2 17800  2 2134 1 1 25199  3 4138 1 3 29388
1 1345 1 2 12994  2 2134 1 1 41578  3 4138 1 3 16592
1 1345 1 2 21440  2 2134 1 2 26560  3 4138 1 3 12112
1 1345 1 3 35300  2 2134 1 2 19388  3 4138 1 3 19984
1 1345 1 3 25769  2 2134 1 2 31990  3 4279 1 1 9984
1 1345 1 3 42518  2 2134 1 3 24399  3 4279 1 1 7288
1 1578 1 1 8000   2 2134 1 3 17811  3 4279 1 1 12025
1 1578 1 1 5840   2 2134 1 3 29388  3 4279 1 2 14209
1 1578 1 1 9636   2 2403 1 1 25464  3 4279 1 2 10372
1 1578 1 2 7900   2 2403 1 1 18588  3 4279 1 2 17113
1 1578 1 2 5767   2 2403 1 1 30670  3 4279 1 3 13500
1 1578 1 2 9515   2 2403 1 2 15494  3 4279 1 3 9855
1 1578 1 3 4500   2 2403 1 2 11310  3 4279 1 3 16260
1 1578 1 3 3285   2 2403 1 2 18661  3 4290 1 1 10948
1 1578 1 3 5420   2 2403 1 2 1482   3 4290 1 1 7992
1 1674 1 1 11950  2 2403 1 2 1081   3 4290 1 1 13186
1 1674 1 1 8723   2 2403 1 2 1783   3 4290 1 2 14539
1 1674 1 1 14392  2 2403 1 3 10009  3 4290 1 2 10613
1 1674 1 2 13534  2 2403 1 3 7306   3 4290 1 2 17511
1 1674 1 2 9879   2 2403 1 3 12054  3 4290 1 3 11459
1 1674 1 2 16300  3 4138 1 1 24850  3 4290 1 3 8365
1 1674 1 3 17994  3 4138 1 1 18140  3 4290 1 3 13802
;

proc format;
   value qtrfmt 1 = 'FIRST QUARTER'
                2 = 'SECOND QUARTER'
                3 = 'THIRD QUARTER'
                4 = 'FOURTH QUARTER';

   value monfmt 1 = 'January'
                2 = 'February'
                3 = 'March'
                4 = 'April'
                5 = 'May'
                6 = 'June'
                7 = 'July'
                8 = 'August'
                9 = 'September'
               10 = 'October'
               11 = 'November'
               12 = 'December';

   value dept   1 = 'Accounting'
                2 = 'Human Resources'
                3 = 'Systems';

   
proc tabulate format=dollar11.2;

   class mon qtr acct dept;

 
   classlev mon qtr acct dept  / style={fontstyle=italic color=yellow};
   var   expense;

   format qtr qtrfmt.;
   format mon monfmt.;
   format dept dept.;
   label expense = "Expenses" dept = "Department";
   
   table dept (all="All Departments"

   /* Highlight row totals with a red background and white font. */

              *{style={background=red color=white}}),

         (mon=' ' (all="First Quarter"

   /* Highlight column totals with a red background and white font. */

              *{style={background=red color=white}}))

              *expense*sum=' ' /

   

         style={background=CX9aadc7
}

   /* Display a graphic image in the box above the row headings. */

         box={style={backgroundimage="your image"}};
run;

ods pdf close;