goptions reset=all device=activex; ods html close; ods rtf path="C:\" file="vehicles.rtf" style=statistical; title "Types of Vehicles Produced Worldwide (Details)"; proc gchart data=sashelp.cars; pie type / detail=drivetrain detail_percent=best detail_value=none detail_slice=best detail_threshold=2 legend; run; quit; ods rtf close; ods html;
/* Change the following line to specify your output file. */
filename odsout "states.htm" ;
/* If your site has already installed the map data sets and */
/* defined the MAPS libref, then you can delete the LIBNAME */
/* statement below and the sample code should work. */
/* If not, contact your on-site SAS support personnel */
/* to determine how to define the MAPS libref. */
*libname maps 'SAS-MAPS-library';
/* Create a data set that contains the US states. */
proc sql;
create table work.mydata as
select unique state from maps.us;
quit;
/* Add state abbreviations to the new data set. */
data work.mydata;
length Statename $2;
set work.mydata;
Statename=trim(left(upcase(fipstate(state))));
run;
/* Specify the ACTIVEX device. */
goptions reset=all device=activex;
/* Close the current ODS HTML destination. */
ods html close;
/* Open ODS HTML and specify the HTML output file, the Script */
/* drill-down mode, and the callback method. */
ods html file=odsout
parameters=("DRILLDOWNMODE"="Script"
"EXTERNALNAME"="GIDX"
"DRILLTARGET"="_self"
"DRILLFUNC"="MapDrill")
attributes=("NAME"="GIDX");
/* Specify a map title and generate the map. */
title "State Abbreviations";
proc gmap map=maps.us data=work.mydata all;
id state;
choro statename / nolegend;
run;
quit;
/* Close ODS HTML to close the output file, and then reopen ODS HTML. */
ods html close;
ods html;
/* Create the MapDrill script that is specified on */
/* the ODS HTML statement's DRILLFUNC parameter. */
/* Write the script to the same file that contains */
/* the HTML output from the GMAP procedure. */
data _null_ ;
file odsout mod; /* modify rather than replace file */
put " " ;
put "<SCRIPT LANGUAGE='JavaScript'>" ;
put "function MapDrill( appletref )" ;
put "{" ;
put " " ;
put "/* Open an alert box to show the abbreviated state name. */" ;
put "for(i = 2; i < MapDrill.arguments.length; i += 2 )" ;
put " {" ;
put " if (MapDrill.arguments[i] == 'G_DEPV,f' ) " ;
put " alert(MapDrill.arguments[i+1]);" ;
put " }" ;
put " " ;
put "}" ;
put "</SCRIPT>";
run ; /* Change the following line to specify your output file. */
%let odsout html-output-file2.htm;
goptions reset=all device=activex;
data stores;
length stateabbrev $ 2;
input state closedstore stateabbrev $ @@;
datalines;
1 1 AL 2 0 AK 3 0 -- 4 0 AZ 5 0 AR 6 0 CA
7 0 -- 8 0 CO 9 0 CT 10 0 DE 11 0 DC 12 1 FL
13 0 GA 14 0 -- 15 0 HI 16 0 ID 17 0 IL 18 0 IN
19 0 IA 20 0 KS 21 0 KY 22 0 LA 23 0 ME 24 0 MD
25 0 MA 26 0 MI 27 0 MN 28 0 MS 29 0 MO 30 0 MT
31 0 NE 32 0 NV 33 0 NH 34 1 NJ 35 0 NM 36 1 NY
37 0 NC 38 0 ND 39 1 OH 39 1 OH 40 0 OK 41 0 OR
42 0 PA 43 0 -- 44 0 RI 45 1 SC 46 0 SD 47 1 TN
48 0 TX 49 0 UT 50 0 VT 51 1 VA 52 0 -- 53 0 WA
54 0 WV 55 0 WI 56 0 WY 57 0 -- 58 0 -- 59 0 --
60 0 AS 61 0 PQ 62 0 EQ 63 0 -- 64 0 FM 65 0 --
66 0 GU 67 0 JQ 68 0 MH 69 0 MP 70 0 PW 71 0 MQ
72 0 PR
;
run;
/* create own custom maps dataset where id is 2 letter state
abbreviation(statecode) not state fips number(state) */
data cus_map;
length stateabbrev $2;
set maps.us;
stateabbrev=fipstate(state);
run;
/* close the current ODS HTML destination */
ods html close;
/* specify the ODS HTML output filename, parameters, and attributes */
ods html body="&odsout" nogtitle
parameters=("DRILLDOWNMODE"="Script"
"EXTERNALNAME"="GIDX"
"DRILLTARGET"="_self"
"DRILLFUNC"="MapDrill")
attributes=("NAME"="GIDX");
/* generate the map */
proc gmap map=cus_map(where=(state ^in(2, 15))) data=stores;
id stateabbrev;
choro closedstore / discrete statistic=first missing
cempty=cx2254C2 coutline=black
legend=legend1;
legend1 label=("Closed Stores")
value=(t=1 j=l 'No' t=2 j=l 'Yes') frame;
pattern1 c=cx08804A v=solid;
pattern2 c=cxEB0018 v=solid;
run;
quit;
/* close ODS HTML to close the output file, then reopen ODS HTML */
ods html close;
ods html;
/* add the MapDrill JavaScript function to the HTML output file */
data _null_ ;
file "&odsout" mod;
put "<SCRIPT LANGUAGE='JavaScript'>" ;
put " var isclosed = null; ";
put " var newWin; ";
put " var stateabbrev; ";
put " stateabbrev = ''; ";
put "function MapDrill( appletref )" ;
put "{" ;
put " " ;
put "/* Open an alert box to show the abbreviated state name. */";
put " for(i = 2; i < MapDrill.arguments.length; i += 2 )";
put " { ";
put " if (MapDrill.arguments[i] == 'G_DEPV,f' )
{isclosed=MapDrill.arguments[i+1]; }";
put " if (MapDrill.arguments[i] == 'G_LABELV,f')
{stateabbrev =MapDrill.arguments[i+1] + ' '; }";
put " } ";
put " if (isclosed == 1.000000){ alert(stateabbrev) }";
put "}";
put "</SCRIPT>";
run;