Self Serve Census Data for Neighborhoods and other Custom Aggregations A SAS/IntrNet Applicaton Larry Hoyle Policy Research Institute University of Kansas LarryHoyle@ku.edu The home page Define a new area – top down Links to Tract and Block Maps Census Bureau Tract Maps Johnson County Tracts - Zoom Census Bureau Block Maps Pick Part of Johnson County Pick 2 Tracts Johnson County – 2 tracts Naming the area with 2 tracts Email sent announcing creation The definition has been stored A printable profile A profile with a larger font A population pyramid Defining an area from an address Choosing a block, width, and height The rectangle can be modified or saved Recalling or Using a Previous Defined Area SF1 Profile for the custom area Displaying defined geography A few techniques • Thousands of potential macro variables • Email the area name • HTML with pagination for legacy code Areas - HTML form Radio buttons require a separate name for each geographic unit. <td> <input type="radio" name="G20001" value="K"></td> <td> <input type="radio" name="G20001" value="S"></td> <td> <input type="radio" name="G20001" value="D" CHECKED></td> <td >Allen County <A href="http: Areas - HTML form details Geocode values won’t work as macro variable names. so recode GEOCODE to FORMVAL which can be a macro variable name. formval G20045_0005X02_2 G20045_0005X02_3001 G20045_0005X02_3002 G20045_0005X02_3003 GeoCode 20045-0005.02-2 20045-0005.02-3001 20045-0005.02-3002 20045-0005.02-3003 Areas - Thousands of Macro Variables How do you deal with thousands of potential macro variable names? proc sql; create table mvars as select name,value from sashelp.vmacro where scope='GLOBAL' and upcase(substr(name,1,1))="G"; One alternative: begin names with a unique letter and extract from sashelp.vmacro Email a notice - code filename mymail email "pri@ku.edu" subject="new custom area"; data _null_; file mymail; set areas.areaPWs; where areaNum=&newAnum ; put areaNum= / customArea= / created= / keepdays= / creatorIP=/ email=; run; Email a notice - message areaNum=49 customArea=KCSAS2tracts created=04JAN2002:15:13:46 keepdays=180 creatorip=129.237.xxx.xxx email=LarryHoyle@ku.edu Legacy printer output to HTML - template ods path work.template(update) sashelp.tmplmst(read); proc template; define style Styles.myHtm; parent = styles.default; Legacy printer output to HTML - fonts replace fonts "Fonts used in my HTML style" / 'TitleFont2' = ("Arial, Helvetica, Helv",4,Bold Italic) 'TitleFont' = ("Arial, Helvetica, Helv",5,Bold Italic) 'StrongFont' = ("Arial, Helvetica, Helv",4,Bold) 'EmphasisFont' = ("Arial, Helvetica, Helv",3,Italic) 'FixedEmphasisFont' = ("Courier",&fontSize.,Italic) 'FixedStrongFont' = ("Courier",&fontSize.,Bold) 'FixedHeadingFont' = ("Courier",&fontSize.) 'BatchFixedFont' = ("Courier",&fontSize.) 'FixedFont' = ("Courier",&fontSize.) 'headingEmphasisFont' = ("Arial, Helvetica, Helv",4,Bold Italic) 'headingFont' = ("Arial, Helvetica, Helv",4,Bold) 'docFont' = ("Arial, Helvetica, Helv",3); FontSize macro variable fs=upcase(symget("fontSize")); select (fs); when('M') call symput("fontSize","10.0pt"); when('L') call symput("fontSize","14.0pt"); otherwise call symput("fontSize","6.7pt"); end; Legacy printer output to HTML - batch replace Batch from Output "Controls batch mode output." / font = fonts('BatchFixedFont') cellheight=8.5pt cellpadding = .5pt cellspacing = 0.25pt frame=void rules = NONE foreground = colors('batchfg') background = colors('batchbg'); Legacy printer output to HTML - ODS ods html file=_webout( NO_Bottom_Matter title="Custom Area SF1 Profile &areaNum") style=myHtm CSS ; ods listing close; ods noproctitle; These slides can be found at http://www.ku.edu/pri/ksdata/sashttp/sugi27. Larry Hoyle LarryHoyle@ku.edu (785) 864-9110 Policy Research Institute The University of Kansas 1541 Lilac Lane, Suite 607 Lawrence, Kansas 66044 http://www.ku.edu/pri