goptions htext=4 pct ftext=swiss rotate=landscape;          

   /* Read in raw data and assign values to the SHAPE     */
   /* variable. Include dummy observations for 1990       */
   /* to push the bars to the center of the TYPE axis.    */
data revenue;                                               
   input year dollars type;                                 
   if type=1 or type=2 then shape='prism';                  
      else shape='point';                                   
   cards;                                                   
1986 100 1                                                  
1986 150 2                                                  
1987 200 1                                                  
1987 250 2                                                  
1988 300 1                                                  
1988 350 2                                                  
1989 325 1                                                  
1989 375 2                                                  
1990 350 1                                                  
1990 400 2                                                  
1990 0   0                                                  
1990 0   3                                                  
;                                                           

   /* Create the TYPEFMT. format to assign labels to      */
   /* TYPE values and blank out tick labels for           */
   /* dummy points.                                       */
proc format;                                                
   value typefmt                                            
   1='Projected'                                            
   2='Actual'                                               
   0,3=' ';                                                 
run;                                                        

   /* Use the PROC G3D SCATTER statement to produce       */
   /* the graph.                                          */
proc g3d data=revenue;                                      
   scatter type*year=dollars /                              
           xticknum=5   /* number of ticks on YEAR axis   */
           yticknum=4   /* number of ticks on TYPE axis   */
           zticknum=5   /* number of ticks on             */
                        /* DOLLARS axis                   */
           zmin=0       /* minimum DOLLARS axis value     */
           zmax=400     /* maximum DOLLARS axis value     */
           rotate=60    /* rotation around DOLLARS axis   */
           size=3       /* width of blocks                */
           grid         /* reference lines on all axes    */
           shape=shape; /* SHAPE variable dictates        */
                        /* the shape                      */

   /* Assign formats to tickmark labels.                  */
format type typefmt. dollars dollar5.;                      

   /* Use LABEL statements to suppress axis labels.       */
label type='00'x year='00'x dollars='00'x;                  

title1 height=8 pct font=swissb 'YEARLY REVENUES';          
title2 height=5 pct font=swissb '(In millions of dollars'); 
run;