Presentations:ArtCarpenter Papers and Presentations

From sasCommunity
Jump to: navigation, search

Papers and presentations by Art Carpenter
Contact Art at his discussion page.

QR Code for this page
  ArtCarpenter Papers and Presentations QR Code.png

Macro Language Presentations

  1. Are You a Control Freak? Control Your Programs – Don’t Let Them Control You!
    Categories: ArtCarpenter Papers and Presentations, Macro Language, Otterm1 Papers and Presentations, SAS Global Forum 2015, WUSS 2014
    You know that you want to control the process flow of your program. When your program is executed multiple times, with slight variations, you will need to control the changes from iteration to iteration, the timing of the execution, and the maintenance of output and LOGS. Unfortunately in order ..→
  2. Before You Get Started: A Macro Language Preview in Three Parts
    Categories: ArtCarpenter Papers and Presentations, Macro Language, Macro Language Papers, Presentations, SAS Global Forum 2014
    Using the macro language adds a layer of complexity to SAS® programming that many programmers are reluctant to tackle. The macro language is not intuitive, and some of its syntax and logic runs counter to similar operations in the DATA step. This makes the transfer of DATA step and PROC ..→
  3. Building Intelligent Macros: Driving a Variable Parameter System with Metadata
    Categories: ArtCarpenter Papers and Presentations, EXECUTE Routine, MWSUG 2017, Macro Language, Presentations, WUSS 2017
    When faced with generating a series of reports, graphs, and charts; we will often use the macro language to simplify the process. Commonly we will write a series of generalized macros, each with the capability of creating a variety of outputs that depend the macro parameter inputs. For large ..→
  4. Building Intelligent Macros: Using Metadata Functions with the SAS Macro Language
    Categories: %SYSFUNC Function, ArtCarpenter Papers and Presentations, MWSUG 2017, Macro Language, PharmaSUG 2017, SAS Global Forum 2017, WUSS 2017
    The SAS macro language gives us the power to create tools that to a large extent can think for themselves. How often have you used a macro that required your input and you thought to yourself "Why do I need to provide this information when SAS already knows it?" SAS may well already ..→
  5. Building and Using Macro Libraries
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2001, Macro Language, PNWSUG 2005, SUGI 2002, WUSS 2001
    While many users take advantage of the SAS® Macro Language, few take full advantage of its capabilities to build and maintain libraries of macros. Management of large numbers of macros can be problematic. Names and locations must be remembered, changes must be managed, duplication and ..→
  6. Clinical Data Management: Building a Dynamic Application
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2000, WUSS 2000
    You have written a series of interesting and often complex SAS® programs that perform a variety of data entry operations, data checks, exception reporting, statistical analyses, and summary reporting. Since the next study is somewhat similar to the last one, you are planning to build another set ..→
  7. Data Management: Using Macros to Build a Dynamic Application
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2003, Macro Language, PNWSUG 2000, PharmaSUG 2000, WUSS 2000, WUSS 2002
    You have written a series of interesting and often complex SAS® programs that perform a variety of data entry operations, data checks, exception reporting, statistical analyses, and summary reporting. Since the next study is somewhat similar to the last one, you are planning to build another ..→
  8. Five Ways to Create Macro Variables: A Short Introduction to the Macro Language
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2005, Macro Language, PNWSUG 2009, PharmaSUG 2004, PharmaSUG 2017, Presentations, SAS Global Forum 2017, SESUG 2005, WUSS 2004, WUSS 2009
    The macro language is both powerful and flexible. With this power, however comes complexity, and this complexity often makes the language more difficult to learn and use. Fortunately one of the key elements of the macro language is its use of macro variables, and these are easy to learn and ..→
  9. Is the legend in your SAS/GRAPH output telling the right story?
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2004, SAS/GRAPH, SUGI 2004, WUSS 2003
    When generating plots using the GPLOT procedure, a third variable, such as a treatment or dose group, is often used as a grouping variable. GPLOT automatically uses the values of this variable in the LEGEND, but very often the designers of the plots will want particular symbols, line types, and/or ..→
  10. I’ve Got to Hand It to You; Portable Programming Techniques
    Categories: %SYSFUNC Function, %SYSGET Function, ArtCarpenter Papers and Presentations, Autoexec File, Automation, DCREATE Function, Environmental Variables, GETOPTION Function, MWSUG 2016, Macro Language, Otterm1 Papers and Presentations, PATHNAME Function, PharmaSUG 2017, SAS Global Forum 2017, WUSS 2017
    As technology expands, we have the need to create programs that can be handed off – to clients, to regulatory agencies, to parent companies, or to other projects, and handed off with little or no modification by the recipient. Minimizing modification by the recipient often requires the program ..→
  11. Job Security: Using the SAS® Macro Language to Full Advantage
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2005, Presentations, WUSS 2005
    As has been discussed in other papers on the topic of Job Security, those working in the field as Job Security Specialists must always be ready to take advantage of all types of programming techniques. Fortunately the SAS® Macro Language contains many hidden gems that can provide many ..→
  12. Library and File Management: Building a Dynamic Application
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2001, SUGI 2002, WUSS 2001
    In order for a SAS® application to be dynamic, it must be able to automatically find the programs that make it work and the data that it is to work against. It must know where to write its output and where to store any new data sets that it creates. More importantly it must do these things ..→
  13. List Processing Basics Creating and Using Lists of Macro Variables
    Categories: ArtCarpenter Papers and Presentations, List Processing Papers, List Processing by Ron Fehd, Macro Design Issues, Macro Language, Macro Language Papers, Macros by Ron Fehd, Papers by Ron Fehd, Presentations, Programming, SAS Global Forum 2007, SysMaxLong, Testing Papers
  14. Macro Functions: How to Make Them - How to Use Them
    Categories: ArtCarpenter Papers and Presentations, Functions and CALL Routines, MWSUG 2005, Macro Language, PharmaSUG 2002, SUGI 2002
    The SAS® macro language includes a number of macro functions, such as %UPCASE, %QSCAN, and %SUBSTR. In addition a number of Autocall macros, such as %LEFT, %TRIM, and %VERIFY, are also supplied that act like macro functions. Macro functions are especially useful as programming tools, because ..→
  15. Macro Programming Best Practices: Styles, Guidelines and Conventions Including the Rationale Behind Them
    Categories: ArtCarpenter Papers and Presentations, Best Practices, Donh Papers and Presentations, Macro Language, Macro Language Papers, PharmaSUG 2015, Presentations, SAS Global Forum 2012
    Coding in the SAS Macro Language can be a rich and rewarding experience. The complexity of the language allows for multiple solutions to many programming situations. But which solution is best, is there even a best solution, and how do you decide? Should you choose a technique based on ..→
  16. Macro Quoting Functions, Other Special Character Masking Tools, and How to Use Them
    Categories: ArtCarpenter Papers and Presentations, Macro Language, Macro Quoting, NESUG 1999, SUGI 1999, WUSS 1998
    Quoting functions allow the user to pass macro arguments while selectively removing the special meaning from characters such as &, %, ;, ', and ". Most of these functions are not commonly used and are even less commonly understood. Although they are powerful and can even be necessary, ..→
  17. Macro Quoting to the Rescue: Passing Special Characters
    Categories: ArtCarpenter Papers and Presentations, Best Paper Award Winner, Macro Language, Macro Language Papers, Macro Quoting, Otterm1 Papers and Presentations, Presentations, SAS Global Forum 2013
    We know that we should always try to avoid storing special characters in macro variables. We know that there are just too many ways that special characters can cause problems when the macro variable is resolved. Sometimes, however, we just do not have a choice. Sometimes the characters must be ..→
  18. Make ‘em %LOCAL: Avoiding Macro Variable Collisions
    Categories: %GLOBAL Statement, %LOCAL Statement, ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2005, Presentations, WUSS 2005
    Have you ever run a macro, perhaps someone else’s, and found that it inadvertently changed the value of a totally unrelated macro variable in some other seemingly unrelated macro symbol table? You may have experienced a macro variable collision It is not unusual to use the Global macro symbol ..→
  19. Manual to Automatic: Changing Your Program’s Transmission
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2010, Presentations, WUSS 2009
    You have successfully created a SAS® program that processes data and generates reports for a series items in the data. The program itself works fine, but the problem is that each time the program is executed, it must be manually modified specifically for that run. Perhaps the analysis variable ..→
  20. Placing Dates in Your Titles: Do It Dynamically
    Categories: %SYSFUNC Function, ArtCarpenter Papers and Presentations, Dates Times Datetimes, Macro Language, SUGI 2000, WUSS 1999
    Suppose you want your SAS® output to contain a date/time stamp. By default each output procedure places this information in the upper right corner on each page, this is a good start and is often 'good enough', but it has limitations. These limitations include; no choice in date format, no ..→
  21. Protecting Macros and Macro Variables: It Is All About Control
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2011, Macro Language, Macro Language Papers, PharmaSUG 2011, Presentations, SCSUG 2011, WUSS 2011
    In a regulated environment it is crucially important that we are able to control, which version of a macro, and which version of a macro variable, is being used at any given time. As crucial as this is, in the SAS® macro language this is not something that is easily accomplished. We can write ..→
  22. Quotes within Quotes: When Single (‘) and Double (“) Quotes are not Enough
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2017, Macro Language, Macro Quoting, PharmaSUG 2014, Presentations, SAS Global Forum 2015, WIILSU, WUSS 2015
    Although it does not happen every day, it is not unusual to need to place a quoted string within another quoted string. Fortunately SAS® recognizes both single and double quote marks and either can be used to within the other. This gives us the ability to have two deep quoting. There are ..→
  23. Resolving and Using &&var&i Macro Variables
    Categories: ArtCarpenter Papers and Presentations, Macro Language, SUGI 1997
    One of the most important aspects of the Macro Language within the SAS System is its ability to create code dynamically. This allows the developer to write code that will do a series of operations without knowing exactly what those operations will be at execution time.
    This presentation ..→
  24. SAS Macro: Symbols of Frustration? %Let us help! A Guide to Debugging Macros
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2005, MWSUG 2009, Macro Language, SUGI 2004
    Are you just learning to write MACROS? Are you baffled by when to use single quotes and double quotes - or one inside the other? Are you confused by when to use statements such as DO versus %DO? Want to know the difference between a GLOBAL and LOCAL Macro variable? Do you have macros that don't ..→
  25. Secret Sequel: Keeping Your Password Away from the LOG
    Categories: %SUPERQ Function, ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2007, Presentations, SAS Global Forum 2009, SQL Procedure, SYMGET Function, WUSS 2007
    Passwords are things not to be shared. As good SAS® programmers we don't hard-code our passwords in our programs, but keep them in separate files or macro variables. However this is not enough! Unfortunately the casual (or malicious) user can "turn on" macro debugging utilities like MPRINT, ..→
  26. Storing and Using a List of Values in a Macro Variable
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2005, SUGI 2005, WUSS 2004
    When using the macro language it is not at all unusual to need to manipulate a list of values. These may be a list of variables in a data set or even a list of data set names. Macro variables are often used to hold this list and there are a couple of storage options. Either each word of the ..→
  27. Subsetting Data into Groups for Complete Processing Within Each Group
    Categories: ArtCarpenter Papers and Presentations, Macro Language, Presentations, SUGI 1988
    It is often difficult to follow the results for a particular BY group, when a series of SAS@procedures with a common set of BY variables is processed. The output from a series of SAS procedures and data steps are often used to "tell a story", and while the results of any given procedure may be easy ..→
  28. Taking Control and Keeping It: Creating and Using Conditionally Executable SAS Code
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Macro Language, STOP Statement, SUGI 2000
    Have you ever wanted to selectively execute chunks of program code? Do you want to leave debugging statements in your program for future debugging sessions while preventing their execution without commenting them manually? Would you like your program to automatically start at a specified time or ..→
  29. The Path, The Whole Path, Nothing Except the Path, So Help Me Windows
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Display Manager, Macro Language, Presentations, SAS Global Forum 2008
    Have you ever needed to determine a directory path dynamically? Have you needed to know the name of the currently executing program and where it resides? There are a number of tools available to the SAS programmer that can be used to determine path and location information. These tools ..→
  30. Using ANNOTATE Macros as Shortcuts
    Categories: Annotate Facility, ArtCarpenter Papers and Presentations, Macro Language, NESUG 1999, SAS/GRAPH, SUGI 1999, WUSS 1999
    ANNOTATE macros can provide a shortcut when creating an ANNOTATE data set using assignment statements. To be used properly you need to understand how they work and what they will do for you. They will not abrogate your need to understand how the process of creating the data set works. Indeed ..→
  31. Using Macro Functions
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2005, Macro Language, SUGI 2000
    Many macro functions are very analogous to those of the DATA step. The differences are in how they are used and applied. While DATA step functions are applied to values on the Program Data Vector, PDV, macro functions are used to create, modify, and work with text strings. Initially ..→


REPORT Procedure Presentations

  1. Advanced PROC REPORT: Doing More in the Compute Block
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2007, Presentations, REPORT Procedure, SAS Global Forum 2007, WUSS 2007
    One of the unique features of the REPORT procedure is the Compute Block. This PROC step tool allows the use of most DATA step statements, logic, and functions, and through the use of the compute block you can modify existing columns, create new columns, write text, and more! This ..→
  2. Advanced PROC REPORT: Getting Your Tables Connected Using Links
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2008, Output Delivery System, PNWSUG 2009, PharmaSUG 2007, REPORT Procedure, SCSUG 2009, SESUG 2009, WUSS 2007, WUSS 2009
    Gone are the days of strictly paper reports. Increasingly we are being asked to render our tables and reports using a variety of electronic file types that can be browsed and read using our computers. Besides the cost savings associated with the purchase of paper, paperless reports also minimize ..→
  3. Advanced PROC REPORT: Traffic Lighting - Controlling Cell Attributes With Your Data
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, PharmaSUG 2007, REPORT Procedure, WUSS 2006
    Color or shading is often used in a report table to attract the reader's eye to specific locations or items. The color can be fixed or it can be data dependent. Of course when the color or shading is dependent on the value presented in a given cell, manual construction of the table can be very ..→
  4. Color, Rank, Count, Name; Controlling it all in PROC REPORT
    Categories: ArtCarpenter Papers and Presentations, EXCELXP Tagset, MWSUG 2015, Output Delivery System, PharmaSUG 2016, REPORT Procedure, SAS Global Forum 2016, WUSS 2016
    Managing and coordinating various aspects of a report can be challenging. This is especially true when the structure and composition of the report is data driven. For complex reports the inclusion of attributes such as color, labeling, and the ordering of items complicates the coding process. ..→
  5. Controlling Colors by Name; Selecting, Ordering, and Using Colors for Your Viewing Pleasure
    Categories: ArtCarpenter Papers and Presentations, FORMAT Procedure, MWSUG 2015, Output Delivery System, PharmaSUG 2016, REGISTRY Procedure, REPORT Procedure, SAS Global Forum 2016, WUSS 2016
    Within SAS® literally millions of colors are available for use in our charts, graphs, and reports. We can name these colors using techniques which include color wheels, RGB (Red, Green, Blue) HEX codes, and HLS (Hue, Lightness, Saturation) HEX codes. But sometimes I just want to use a color ..→
  6. In The Compute Block: Issues Associated with Using and Naming Variables
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2007, Presentations, REPORT Procedure, SAS Global Forum 2007, WUSS 2006
    In the compute block of the PROC REPORT step variables can be both created and used. They may be on the incoming data table, they may be computed in the REPORT step, they can be statistical summaries, and they may even be artificially created by the REPORT process. In the DATA step each variable ..→
  7. PROC REPORT: Compute Block Basics
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2008, PharmaSUG 2016, Presentations, REPORT Procedure, SAS Global Forum 2008, WUSS 2008
    One of the unique features of the REPORT procedure is the Compute Block. Unlike most other SAS® procedures, PROC REPORT has the ability to modify values within a column, to insert lines of text into the report, to create columns, and to control the content of a column. Through compute blocks it ..→
  8. PROC REPORT Basics: Getting Started with the Primary Statements
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2005, Presentations, REPORT Procedure, SAS Global Forum 2012, WUSS 2005
    The presentation of data is an essential part of virtually every study and there are a number of tools within SAS® that allow the user to create a large variety of charts, reports, and data summaries. PROC REPORT is a particularly powerful and valuable procedure that can be used in this process. ..→


DATA Step Presentations

  1. A Walk through Time: Growing Your SAS Career
    Categories: ArtCarpenter Papers and Presentations, DATA Step, INTCK Function, INTNX Function, MWSUG 2017, PharmaSUG 2017, PharmaSUG China 2013, Presentations, YRDIF Function
    The measurement of time is an integral component of most of our data sets. We note the date of the patient’s visit and both the date and the time of the administration of a test. The accurate calculation of time intervals, such as the time between drug delivery and onset of an adverse ..→
  2. Are You Missing Out? Working with Missing Values to Make the Most of What is not There
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Missing Values, Presentations, WIILSU
    Everyone uses and works with missing values, however many SAS® programmers are unaware of the variety of tools, options, and techniques associated with using missing values. Did you know that there are 28 types of numeric missing values? Did you know that the numeric missing value (.) is ..→
  3. DATA Step Merging Techniques: From Basic to Innovative
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Fuzzy Merge, MERGE Statement, Presentations, SAS Global Forum 2014, WIILSU
    Merging or joining data sets is an integral part of the data consolidation process. Within SAS there are numerous methods and techniques that can be used to combine two or more data sets. We commonly think that within the DATA step the MERGE statement is the only way to join these data ..→
  4. Functioning with Data Step Functions
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Functions and CALL Routines, SUGI 2000, WUSS 1999
    Functions provide access to powerful tools and routines that make our everyday programming life easier. However since there are so many functions, some programmers are unaware of potentially valuable tools. To make matters worse many functions have been added to the SAS System since the Version ..→
  5. Importing CSV Data to All Character Variables
    Categories: ArtCarpenter Papers and Presentations, DATA Step, IMPORT Procedure, Importing Data, MWSUG 2016, PharmaSUG 2017, WUSS 2017
    Have you ever needed to import data from a CSV file and found that some of the variables have been incorrectly assigned to be numeric? When this happens to us we may lose information and our data may be incomplete. When using PROC IMPORT on an EXCEL file we can avoid this problem by specifying ..→
  6. Innovative Techniques: Doing More with Loops and Arrays
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2012, PharmaSUG 2012, Presentations, WUSS 2012
    DO loops and ARRAY statements are common tools in the DATA step. Together they allow us to iteratively process large amounts of data with a minimum amount of code. You have used loops and arrays dozens of times, but do you use them effectively? Do you take advantage of their full potential? ..→
  7. Looking for a Date? A Tutorial on Using SAS® Dates and Times
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Dates Times Datetimes, PharmaSUG 2005, SESUG 2005, SUGI 2005, WUSS 2004
    What are SAS date and time values? How are they used and why do we care? What are some of the more important of the many functions, formats, and tools that have been developed that work with these crucial elements of the SAS System? This tutorial will answer these questions and many more. ..→
  8. Name that Function: Punny Function Names with Multiple MEANings and Why You Do Not Want to be MISSING Out
    Categories: Alaska SAS Users Group, ArtCarpenter Papers and Presentations, DATA Step, Functions and CALL Routines, MWSUG 2016, PharmaSUG 2016, Presentations, SAS Global Forum 2017
    The SAS® DATA step is one of the best (if not the best) data manipulators in the programming world. One of the areas that gives the DATA step its flexibility and power is the wealth of functions that are available to it. With over 450 functions in the DATA step it is difficult to ..→
  9. Not All Equals are Created Equal: Nonstandard Statement Structures in the DATA Step
    Categories: ArtCarpenter Papers and Presentations, DATA Step, PharmaSUG 2013, Presentations
    The expression is a standard building block of logical comparisons and assignment statements. Most of us use them so commonly that we do not give them a second thought. But in fact they definitely do deserve that second thought. A more complete understanding of their construction and execution ..→
  10. Programming for Job Security: Maximize Your Indispensability - Become a Specialist
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2008, MWSUG 2010, MWSUG 2017, Programming, SAS Global Forum 2008
    A great deal has been said about programming techniques designed for the efficiency and maintainability of SAS® programs. We are taught to write code that minimizes machine and programmer resources. Unfortunately, easily maintained code requires fewer programmers, and fewer programmers ..→
  11. Quotes within Quotes: When Single (‘) and Double (“) Quotes are not Enough
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2017, Macro Language, Macro Quoting, PharmaSUG 2014, Presentations, SAS Global Forum 2015, WIILSU, WUSS 2015
    Although it does not happen every day, it is not unusual to need to place a quoted string within another quoted string. Fortunately SAS® recognizes both single and double quote marks and either can be used to within the other. This gives us the ability to have two deep quoting. There are ..→
  12. Reading and Writing RTF Documents as Data: Automatic Completion of CONSORT Flow Diagrams
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2013, ODS RTF Statement, Output Delivery System, PharmaSUG 2012, Presentations, WUSS 2011
    Whenever the results of a randomized clinical trial are reported in scientific journals, the published paper must adhere to the CONSORT (CONsolidated Standards Of Reporting Trials) statement. The statement includes a flow diagram, and the generation of these CONSORT flow diagrams is always ..→
  13. Table Lookup Techniques: From the Basics to the Innovative
    Categories: ArtCarpenter Papers and Presentations, DATA Step, PharmaSUG 2014, Presentations, SAS Global Forum 2015, Table Lookup, WIILSU
    One of the more commonly needed operations within SAS® programming is to determine the value of one variable based on the value of another. A series of techniques and tools have evolved over the years to make the matching of these values go faster, smoother, and easier. A majority of these ..→
  14. Table Lookups: From IF-THEN to Key-Indexing
    Categories: ARRAY Statement, ArtCarpenter Papers and Presentations, DATA Step, MERGE Statement, PNWSUG 2005, SUGI 2001, WUSS 2001
    One of the more commonly needed operations within SAS® programming is to determine the value of one variable based on the value of another. A series of techniques and tools have evolved over the years to make the matching of these values go faster, smoother, and easier. A majority of these ..→
  15. Taking Control and Keeping It: Creating and Using Conditionally Executable SAS Code
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Macro Language, STOP Statement, SUGI 2000
    Have you ever wanted to selectively execute chunks of program code? Do you want to leave debugging statements in your program for future debugging sessions while preventing their execution without commenting them manually? Would you like your program to automatically start at a specified time or ..→
  16. The Path, The Whole Path, Nothing Except the Path, So Help Me Windows
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Display Manager, Macro Language, Presentations, SAS Global Forum 2008
    Have you ever needed to determine a directory path dynamically? Have you needed to know the name of the currently executing program and where it resides? There are a number of tools available to the SAS programmer that can be used to determine path and location information. These tools ..→
  17. Using Arrays to Quickly Perform Fuzzy Merge Look-ups Case Studies in Efficiency
    Categories: ARRAY Statement, ArtCarpenter Papers and Presentations, DATA Step, Fuzzy Merge, Hashing, MWSUG 2014
    Merging two data sets when a primary key is not available can be difficult. The MERGE statement cannot be used when BY values do not align, and data set expansion to force BY value alignment can be resource intensive. The use of DATA step arrays, as well as other techniques such as hash tables, ..→
  18. Your Age In People Years: Not All Formulas Are the Same
    Categories: ArtCarpenter Papers and Presentations, DATA Step, INTCK Function, MWSUG 2011, PharmaSUG 2011, Presentations, WUSS 2010, YRDIF Function
    The calculation of an individual’s age can be problematic. SAS® dates are generally measured in terms of days (or seconds if a datetime value is used), so we have to convert the value to years. To some extent, how we calculate age will depend on how we intend to use the value. The ..→
  19. “How Do I . . .?” There is more than one way to solve that problem; Why continuing to learn is so important
    Categories: ArtCarpenter Papers and Presentations, DATA Step, PharmaSUG 2013, Presentations, SAS Global Forum 2013, WHICHC Function, WUSS 2013
    In the SAS® forums questions are often posted that start with “How do I . . . ?”. Generally there are multiple solutions to the posted problem, and often these solutions vary from simple to complex. In many of the responses the simple solution is often ..→


MEANS Procedure Presentations

  1. Deciphering the TYPE Variable in MEANS and SUMMARY Output Data Sets
    Categories: ArtCarpenter Papers and Presentations, MEANS Procedure, SUGI 1998, SUMMARY Procedure
    Output data sets generated using the procedures MEANS and SUMMARY automatically contain the variable _TYPE_. This variable can prove to be very valuable when creating or working with subsets of the summary data set, but knowing what values of _TYPE_ to select for is difficult if you do not know ..→
  2. Programming With CLASS: Keeping Your Options Open
    Categories: ArtCarpenter Papers and Presentations, MEANS Procedure, MWSUG 2012, PharmaSUG 2012, Presentations, SAS Global Forum 2014, SUMMARY Procedure, TABULATE Procedure, UNIVARIATE Procedure, WUSS 2012
    Many SAS® procedures utilize classification variables when they are processing the data. These variables control how the procedure forms groupings, summarizations, and analysis elements. For statistics procedures they are often used in the formation of the statistical model that is being ..→
  3. The MEANS/SUMMARY Procedure: Getting Started and Doing More
    Categories: ArtCarpenter Papers and Presentations, MEANS Procedure, PharmaSUG 2009, Presentations, SAS Global Forum 2010, SUMMARY Procedure, WUSS 2008
    The MEANS/SUMMARY procedure is a workhorse for most data analysts. It is used to create tables of summary statistics as well as complex summary data sets. The user has a great many options which can be used to customize what the procedure is to produce. Unfortunately most analysts rely on only ..→


TABULATE Procedure Presentations

  1. PROC TABULATE: Getting Started and Doing More
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2011, PharmaSUG 2010, Presentations, SAS Global Forum 2011, SCSUG 2011, SESUG 2010, TABULATE Procedure, WUSS 2010
    Although PROC TABULATE has been a part of Base SAS® for a very long time, this powerful analytical and reporting procedure is very under utilized. TABULATE is different; it's step statement structure is unlike any other procedure. Because the programmer who wishes to learn the procedure ..→
  2. Programming With CLASS: Keeping Your Options Open
    Categories: ArtCarpenter Papers and Presentations, MEANS Procedure, MWSUG 2012, PharmaSUG 2012, Presentations, SAS Global Forum 2014, SUMMARY Procedure, TABULATE Procedure, UNIVARIATE Procedure, WUSS 2012
    Many SAS® procedures utilize classification variables when they are processing the data. These variables control how the procedure forms groupings, summarizations, and analysis elements. For statistics procedures they are often used in the formation of the statistical model that is being ..→


SAS/GRAPH Presentations

  1. Connecting Your Output: Using Drill-down Techniques to Link Reports, Graphics, and Tables
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, SAS/GRAPH, WUSS 2004
    When displaying the output from your SAS® programs, it is no longer necessary to force your readers to go through a stack of output linearly from front to back. Using the Output Delivery System, ODS, and drill-down techniques allow you to produce reports, graphics, tables and other forms of ..→
  2. Controlling Graph Size: Building Thumbnails and GIF Files Using SAS/GRAPH
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2004, SAS/GRAPH, SUGI 2004, WUSS 2003
    GIF is one of the primary file forms used for graphs that are to be displayed on the web. However because of differences in browsers and the need to control the size of the graphic display, the standard GIF device that is defined with SAS/GRAPH is not always appropriate. This paper discusses ..→
  3. Controlling Graph Size: Building Thumbnails and GIF Files Using SAS/GRAPH®
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2004, SAS/GRAPH, SUGI 2004, WUSS 2003
    GIF is one of the primary file forms used for graphs that are to be displayed on the web. However because of differences in browsers and the need to control the size of the graphic display, the standard GIF device that is defined with SAS/GRAPH is not always appropriate. This paper discusses ..→
  4. Data Driven Annotations: An Introduction to SAS/GRAPH’s Annotate Facility
    Categories: Annotate Facility, ArtCarpenter Papers and Presentations, PharmaSUG 2006, SAS/GRAPH, SUGI 2006, WUSS 2006
    When SAS/GRAPH was first introduced, it was the 'only game in town' for the generation of business graphics. In the current computing environment we have lots of graphics options, and it is not unusual for programmers new to SAS/GRAPH to ask why they should bother learning the command and ..→
  5. Extreme Graphics Make Over: Using SAS/GRAPH to get the Graphical Output You Need
    Categories: ArtCarpenter Papers and Presentations, GPLOT Procedure, SAS/GRAPH, SUGI 2005
    Back in the days of the mainframe, creating presentation quality graphs was a challenge, but with the current versions of SAS/GRAPH® customizing your graphical output can be quite easy. Easy that is, once you know which of the many graphical statements and options to use. This workshop will ..→
  6. GIS Capabilities in Old vs. New SAS Software
    Categories: ArtCarpenter Papers and Presentations, GIS Procedure, Presentations, SAS/GRAPH, WUSS 2003
    Fifteen years ago, the authors came up with methods to determine if kelp bed sampling points were located within the boundaries of substrate boundaries. The data were then analyzed and plotted on a map of the study areas. Mapping and the ability to determine relationships between data and ..→
  7. Is the legend in your SAS/GRAPH output telling the right story?
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2004, SAS/GRAPH, SUGI 2004, WUSS 2003
    When generating plots using the GPLOT procedure, a third variable, such as a treatment or dose group, is often used as a grouping variable. GPLOT automatically uses the values of this variable in the LEGEND, but very often the designers of the plots will want particular symbols, line types, and/or ..→
  8. Is your picture worth a thousand words? Creating Effective Presentations with SAS/GRAPH
    Categories: ArtCarpenter Papers and Presentations, Presentations, SAS/GRAPH, WUSS 2004
    SAS/GRAPH® contains an abundance of procedures and options that can be used to create any number of types of graphical output. And if that is not enough, with the capabilities of the Annotate facility, the sky and your imagination may be the only limits to your graphical creations. The problem ..→
  9. ODS and Web Enabled Device Drivers: Displaying and Controlling Large Numbers of Graphs
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, PharmaSUG 2003, Presentations, SAS/GRAPH, WUSS 2002
    With the advent of the Output Delivery System, ODS, it has become much easier to generate graphs that can be displayed online. ODS works with web enabled device drivers such as GIF, HTML, and WEBFRAME to create graphs that can be browsed and even interactively modified by the user. Coordination ..→
  10. SAS/GRAPH Elements You Should Know –Even If You Don’t Use SAS/GRAPH
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, PharmaSUG 2011, Presentations, SAS/GRAPH, SAS Global Forum 2010, SESUG 2010, WUSS 2010
    We no longer live or work in a line printer - green bar paper environment. Indeed many of today’s programmers do not even know what a line printer is or what green bar paper looks like. Our work environment expects reports which utilize various fonts, with control over point size and color, ..→
  11. The Axis Statement: Your Ally for Controlling Graphic Text
    Categories: AXIS Statement, ArtCarpenter Papers and Presentations, SAS/GRAPH, SUGI 1995
    One of the strengths of SAS/GRAPH that you can easily take advantage of is the control that is available for the presentation of lettering and symbols in the titles and labels associated with a plot's axis. The AXIS statement is especially useful when precise control is needed. The AXIS ..→
  12. The Lost Art of ANNOTATE
    Categories: Annotate Facility, ArtCarpenter Papers and Presentations, SAS/GRAPH, SUGI 2000, WUSS 1999
    The ANNOTATE facility is a useful tool that adds to the capabilities of SAS/GRAPH and related procedures. We will briefly examine some of the common uses and expound on some of the more advanced uses of annotate.
  13. Using ANNOTATE Macros as Shortcuts
    Categories: Annotate Facility, ArtCarpenter Papers and Presentations, Macro Language, NESUG 1999, SAS/GRAPH, SUGI 1999, WUSS 1999
    ANNOTATE macros can provide a shortcut when creating an ANNOTATE data set using assignment statements. To be used properly you need to understand how they work and what they will do for you. They will not abrogate your need to understand how the process of creating the data set works. Indeed ..→


FORMAT Procedure Presentations

  1. Building and Using User Defined Formats
    Categories: ArtCarpenter Papers and Presentations, FORMAT Procedure, MWSUG 2005, PharmaSUG 2016, SAS Global Forum 2016, SUGI 2004, WUSS 2004, WUSS 2008, WUSS 2015, WUSS 2016
    Formats are powerful tools within the SAS System. They can be used to change how information is brought into SAS, how it is displayed, and can even be used to reshape the data itself. The Base SAS product comes with a great many predefined formats and it is even possible for you to create your ..→
  2. Controlling Colors by Name; Selecting, Ordering, and Using Colors for Your Viewing Pleasure
    Categories: ArtCarpenter Papers and Presentations, FORMAT Procedure, MWSUG 2015, Output Delivery System, PharmaSUG 2016, REGISTRY Procedure, REPORT Procedure, SAS Global Forum 2016, WUSS 2016
    Within SAS® literally millions of colors are available for use in our charts, graphs, and reports. We can name these colors using techniques which include color wheels, RGB (Red, Green, Blue) HEX codes, and HLS (Hue, Lightness, Saturation) HEX codes. But sometimes I just want to use a color ..→


Functions and CALL Routines Presentations

  1. Functioning with Data Step Functions
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Functions and CALL Routines, SUGI 2000, WUSS 1999
    Functions provide access to powerful tools and routines that make our everyday programming life easier. However since there are so many functions, some programmers are unaware of potentially valuable tools. To make matters worse many functions have been added to the SAS System since the Version ..→
  2. Macro Functions: How to Make Them - How to Use Them
    Categories: ArtCarpenter Papers and Presentations, Functions and CALL Routines, MWSUG 2005, Macro Language, PharmaSUG 2002, SUGI 2002
    The SAS® macro language includes a number of macro functions, such as %UPCASE, %QSCAN, and %SUBSTR. In addition a number of Autocall macros, such as %LEFT, %TRIM, and %VERIFY, are also supplied that act like macro functions. Macro functions are especially useful as programming tools, because ..→
  3. Name that Function: Punny Function Names with Multiple MEANings and Why You Do Not Want to be MISSING Out
    Categories: Alaska SAS Users Group, ArtCarpenter Papers and Presentations, DATA Step, Functions and CALL Routines, MWSUG 2016, PharmaSUG 2016, Presentations, SAS Global Forum 2017
    The SAS® DATA step is one of the best (if not the best) data manipulators in the programming world. One of the areas that gives the DATA step its flexibility and power is the wealth of functions that are available to it. With over 450 functions in the DATA step it is difficult to ..→
  4. Using PROC FCMP to the Fullest: Getting Started and Doing More
    Categories: ArtCarpenter Papers and Presentations, FCMP Procedure, Functions and CALL Routines, PharmaSUG 2013, Presentations, SAS Global Forum 2013, WUSS 2013
    The FCMP procedure is used to create user defined functions. Many users have yet to tackle this fairly new procedure, while others have only attempted to use only its simplest options. Like many tools within SAS®, the true value of this procedure is only appreciated after the user has ..→


Display Manager Presentations

  1. Creating Display Manager Abbreviations and Keyboard Macros for the Enhanced Editor
    Categories: ArtCarpenter Papers and Presentations, Display Manager, Enhanced Editor, PharmaSUG 2004, SUGI 2003
    The boss wants all of your SAS® programs to have a header section of comments. She wants this section to be uniform across all of your programs, she wants it to have lots of stuff in it, and you don't like to type. How can you automatically insert uniform blocks of text into your ..→
  2. Doing More with the Display Manager: From Editor to ViewTable – Options and Tools You Should Know
    Categories: ArtCarpenter Papers and Presentations, Display Manager, Enhanced Editor, MWSUG 2012, PharmaSUG 2012, Presentations, SAS Global Forum 2012, WUSS 2012
    If you have used the interactive interface for SAS® you have most likely used the Display Manager. As it ships, the Display Manager is very powerful and yet fairly easy to use with a minimal learning curve for the new user. Because it is functional ‘right out of the box’, most users do very ..→
  3. The Path, The Whole Path, Nothing Except the Path, So Help Me Windows
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Display Manager, Macro Language, Presentations, SAS Global Forum 2008
    Have you ever needed to determine a directory path dynamically? Have you needed to know the name of the currently executing program and where it resides? There are a number of tools available to the SAS programmer that can be used to determine path and location information. These tools ..→


Output Delivery System Presentations

  1. Advanced PROC REPORT: Getting Your Tables Connected Using Links
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2008, Output Delivery System, PNWSUG 2009, PharmaSUG 2007, REPORT Procedure, SCSUG 2009, SESUG 2009, WUSS 2007, WUSS 2009
    Gone are the days of strictly paper reports. Increasingly we are being asked to render our tables and reports using a variety of electronic file types that can be browsed and read using our computers. Besides the cost savings associated with the purchase of paper, paperless reports also minimize ..→
  2. Advanced PROC REPORT: Traffic Lighting - Controlling Cell Attributes With Your Data
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, PharmaSUG 2007, REPORT Procedure, WUSS 2006
    Color or shading is often used in a report table to attract the reader's eye to specific locations or items. The color can be fixed or it can be data dependent. Of course when the color or shading is dependent on the value presented in a given cell, manual construction of the table can be very ..→
  3. Color, Rank, Count, Name; Controlling it all in PROC REPORT
    Categories: ArtCarpenter Papers and Presentations, EXCELXP Tagset, MWSUG 2015, Output Delivery System, PharmaSUG 2016, REPORT Procedure, SAS Global Forum 2016, WUSS 2016
    Managing and coordinating various aspects of a report can be challenging. This is especially true when the structure and composition of the report is data driven. For complex reports the inclusion of attributes such as color, labeling, and the ordering of items complicates the coding process. ..→
  4. Connecting Your Output: Using Drill-down Techniques to Link Reports, Graphics, and Tables
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, SAS/GRAPH, WUSS 2004
    When displaying the output from your SAS® programs, it is no longer necessary to force your readers to go through a stack of output linearly from front to back. Using the Output Delivery System, ODS, and drill-down techniques allow you to produce reports, graphics, tables and other forms of ..→
  5. Controlling Colors by Name; Selecting, Ordering, and Using Colors for Your Viewing Pleasure
    Categories: ArtCarpenter Papers and Presentations, FORMAT Procedure, MWSUG 2015, Output Delivery System, PharmaSUG 2016, REGISTRY Procedure, REPORT Procedure, SAS Global Forum 2016, WUSS 2016
    Within SAS® literally millions of colors are available for use in our charts, graphs, and reports. We can name these colors using techniques which include color wheels, RGB (Red, Green, Blue) HEX codes, and HLS (Hue, Lightness, Saturation) HEX codes. But sometimes I just want to use a color ..→
  6. ODS and Web Enabled Device Drivers: Displaying and Controlling Large Numbers of Graphs
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, PharmaSUG 2003, Presentations, SAS/GRAPH, WUSS 2002
    With the advent of the Output Delivery System, ODS, it has become much easier to generate graphs that can be displayed online. ODS works with web enabled device drivers such as GIF, HTML, and WEBFRAME to create graphs that can be browsed and even interactively modified by the user. Coordination ..→
  7. Reading and Writing RTF Documents as Data: Automatic Completion of CONSORT Flow Diagrams
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2013, ODS RTF Statement, Output Delivery System, PharmaSUG 2012, Presentations, WUSS 2011
    Whenever the results of a randomized clinical trial are reported in scientific journals, the published paper must adhere to the CONSORT (CONsolidated Standards Of Reporting Trials) statement. The statement includes a flow diagram, and the generation of these CONSORT flow diagrams is always ..→
  8. SAS/GRAPH Elements You Should Know –Even If You Don’t Use SAS/GRAPH
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, PharmaSUG 2011, Presentations, SAS/GRAPH, SAS Global Forum 2010, SESUG 2010, WUSS 2010
    We no longer live or work in a line printer - green bar paper environment. Indeed many of today’s programmers do not even know what a line printer is or what green bar paper looks like. Our work environment expects reports which utilize various fonts, with control over point size and color, ..→


Statistics Presentations

  1. Extending the Use of PROC PHREG in Survival Analysis
    Categories: ArtCarpenter Papers and Presentations, PHREG Procedure, Presentations, Statistics, WUSS 2003
    Proc PHREG is a powerful SAS® tool for conducting proportional hazards regression. Its utility, however, can be greatly extended by auxiliary SAS code. We describe our adaptation of a group of existing public domain SAS survival analysis macros, as well as our development of additional control, ..→
  2. Simple Tests of Hypotheses for the Non-statistician: What They Are and Why They Can Go Bad
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2006, SUGI 2006, Statistics, WUSS 2005
    Hypothesis testing is a central component of most statistical analyses. The focal point of these tests is often the significance level, but what does this value really mean and how can we effectively use it? And perhaps more importantly, what are the pitfalls and dangers in its interpretation? ..→
  3. Survival Analysis with PHREG: Using MI and MIANALYZE to Accommodate Missing Data
    Categories: ArtCarpenter Papers and Presentations, MIANALYZE Procedure, MI Procedure, PHREG Procedure, Statistics, WUSS 2002, WUSS 2012
    Survival analyses based on a data collection process which the researcher has little control over are often plagued by problems of missing data. Deleting cases with any missing data will result in information loss and usually results in bias, while many analytic procedures that retain this ..→


Importing Data Presentations

  1. Importing CSV Data to All Character Variables
    Categories: ArtCarpenter Papers and Presentations, DATA Step, IMPORT Procedure, Importing Data, MWSUG 2016, PharmaSUG 2017, WUSS 2017
    Have you ever needed to import data from a CSV file and found that some of the variables have been incorrectly assigned to be numeric? When this happens to us we may lose information and our data may be incomplete. When using PROC IMPORT on an EXCEL file we can avoid this problem by specifying ..→


SasCommunity Presentations

  1. Taking Full Advantage of sasCommunity.org: Your SAS® Site
    Categories: ArtCarpenter Papers and Presentations, Donh Papers and Presentations, MWSUG 2012, Presentations, SAS Global Forum 2012, SAS Global Forum 2013, SasCommunity, WUSS 2013
    sasCommunity.org is becoming a hub or clearinghouse for technical information related to the use of SAS software. The site is managed and run by SAS users for SAS users. It is free and open to all SAS users to browse. Any SAS user can contribute to the site - just create an ID in order to ..→


All Presentations

  1. A Walk through Time: Growing Your SAS Career
    Categories: ArtCarpenter Papers and Presentations, DATA Step, INTCK Function, INTNX Function, MWSUG 2017, PharmaSUG 2017, PharmaSUG China 2013, Presentations, YRDIF Function
    The measurement of time is an integral component of most of our data sets. We note the date of the patient’s visit and both the date and the time of the administration of a test. The accurate calculation of time intervals, such as the time between drug delivery and onset of an adverse ..→
  2. Advanced PROC REPORT: Doing More in the Compute Block
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2007, Presentations, REPORT Procedure, SAS Global Forum 2007, WUSS 2007
    One of the unique features of the REPORT procedure is the Compute Block. This PROC step tool allows the use of most DATA step statements, logic, and functions, and through the use of the compute block you can modify existing columns, create new columns, write text, and more! This ..→
  3. Advanced PROC REPORT: Getting Your Tables Connected Using Links
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2008, Output Delivery System, PNWSUG 2009, PharmaSUG 2007, REPORT Procedure, SCSUG 2009, SESUG 2009, WUSS 2007, WUSS 2009
    Gone are the days of strictly paper reports. Increasingly we are being asked to render our tables and reports using a variety of electronic file types that can be browsed and read using our computers. Besides the cost savings associated with the purchase of paper, paperless reports also minimize ..→
  4. Advanced PROC REPORT: Traffic Lighting - Controlling Cell Attributes With Your Data
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, PharmaSUG 2007, REPORT Procedure, WUSS 2006
    Color or shading is often used in a report table to attract the reader's eye to specific locations or items. The color can be fixed or it can be data dependent. Of course when the color or shading is dependent on the value presented in a given cell, manual construction of the table can be very ..→
  5. Are You Missing Out? Working with Missing Values to Make the Most of What is not There
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Missing Values, Presentations, WIILSU
    Everyone uses and works with missing values, however many SAS® programmers are unaware of the variety of tools, options, and techniques associated with using missing values. Did you know that there are 28 types of numeric missing values? Did you know that the numeric missing value (.) is ..→
  6. Are You a Control Freak? Control Your Programs – Don’t Let Them Control You!
    Categories: ArtCarpenter Papers and Presentations, Macro Language, Otterm1 Papers and Presentations, SAS Global Forum 2015, WUSS 2014
    You know that you want to control the process flow of your program. When your program is executed multiple times, with slight variations, you will need to control the changes from iteration to iteration, the timing of the execution, and the maintenance of output and LOGS. Unfortunately in order ..→
  7. Before You Get Started: A Macro Language Preview in Three Parts
    Categories: ArtCarpenter Papers and Presentations, Macro Language, Macro Language Papers, Presentations, SAS Global Forum 2014
    Using the macro language adds a layer of complexity to SAS® programming that many programmers are reluctant to tackle. The macro language is not intuitive, and some of its syntax and logic runs counter to similar operations in the DATA step. This makes the transfer of DATA step and PROC ..→
  8. Building Intelligent Macros: Driving a Variable Parameter System with Metadata
    Categories: ArtCarpenter Papers and Presentations, EXECUTE Routine, MWSUG 2017, Macro Language, Presentations, WUSS 2017
    When faced with generating a series of reports, graphs, and charts; we will often use the macro language to simplify the process. Commonly we will write a series of generalized macros, each with the capability of creating a variety of outputs that depend the macro parameter inputs. For large ..→
  9. Building Intelligent Macros: Using Metadata Functions with the SAS Macro Language
    Categories: %SYSFUNC Function, ArtCarpenter Papers and Presentations, MWSUG 2017, Macro Language, PharmaSUG 2017, SAS Global Forum 2017, WUSS 2017
    The SAS macro language gives us the power to create tools that to a large extent can think for themselves. How often have you used a macro that required your input and you thought to yourself "Why do I need to provide this information when SAS already knows it?" SAS may well already ..→
  10. Building and Using Macro Libraries
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2001, Macro Language, PNWSUG 2005, SUGI 2002, WUSS 2001
    While many users take advantage of the SAS® Macro Language, few take full advantage of its capabilities to build and maintain libraries of macros. Management of large numbers of macros can be problematic. Names and locations must be remembered, changes must be managed, duplication and ..→
  11. Building and Using User Defined Formats
    Categories: ArtCarpenter Papers and Presentations, FORMAT Procedure, MWSUG 2005, PharmaSUG 2016, SAS Global Forum 2016, SUGI 2004, WUSS 2004, WUSS 2008, WUSS 2015, WUSS 2016
    Formats are powerful tools within the SAS System. They can be used to change how information is brought into SAS, how it is displayed, and can even be used to reshape the data itself. The Base SAS product comes with a great many predefined formats and it is even possible for you to create your ..→
  12. Clinical Data Management: Building a Dynamic Application
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2000, WUSS 2000
    You have written a series of interesting and often complex SAS® programs that perform a variety of data entry operations, data checks, exception reporting, statistical analyses, and summary reporting. Since the next study is somewhat similar to the last one, you are planning to build another set ..→
  13. Color, Rank, Count, Name; Controlling it all in PROC REPORT
    Categories: ArtCarpenter Papers and Presentations, EXCELXP Tagset, MWSUG 2015, Output Delivery System, PharmaSUG 2016, REPORT Procedure, SAS Global Forum 2016, WUSS 2016
    Managing and coordinating various aspects of a report can be challenging. This is especially true when the structure and composition of the report is data driven. For complex reports the inclusion of attributes such as color, labeling, and the ordering of items complicates the coding process. ..→
  14. Connecting Your Output: Using Drill-down Techniques to Link Reports, Graphics, and Tables
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, SAS/GRAPH, WUSS 2004
    When displaying the output from your SAS® programs, it is no longer necessary to force your readers to go through a stack of output linearly from front to back. Using the Output Delivery System, ODS, and drill-down techniques allow you to produce reports, graphics, tables and other forms of ..→
  15. Controlling Colors by Name; Selecting, Ordering, and Using Colors for Your Viewing Pleasure
    Categories: ArtCarpenter Papers and Presentations, FORMAT Procedure, MWSUG 2015, Output Delivery System, PharmaSUG 2016, REGISTRY Procedure, REPORT Procedure, SAS Global Forum 2016, WUSS 2016
    Within SAS® literally millions of colors are available for use in our charts, graphs, and reports. We can name these colors using techniques which include color wheels, RGB (Red, Green, Blue) HEX codes, and HLS (Hue, Lightness, Saturation) HEX codes. But sometimes I just want to use a color ..→
  16. Controlling Graph Size: Building Thumbnails and GIF Files Using SAS/GRAPH
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2004, SAS/GRAPH, SUGI 2004, WUSS 2003
    GIF is one of the primary file forms used for graphs that are to be displayed on the web. However because of differences in browsers and the need to control the size of the graphic display, the standard GIF device that is defined with SAS/GRAPH is not always appropriate. This paper discusses ..→
  17. Controlling Graph Size: Building Thumbnails and GIF Files Using SAS/GRAPH®
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2004, SAS/GRAPH, SUGI 2004, WUSS 2003
    GIF is one of the primary file forms used for graphs that are to be displayed on the web. However because of differences in browsers and the need to control the size of the graphic display, the standard GIF device that is defined with SAS/GRAPH is not always appropriate. This paper discusses ..→
  18. Creating Display Manager Abbreviations and Keyboard Macros for the Enhanced Editor
    Categories: ArtCarpenter Papers and Presentations, Display Manager, Enhanced Editor, PharmaSUG 2004, SUGI 2003
    The boss wants all of your SAS® programs to have a header section of comments. She wants this section to be uniform across all of your programs, she wants it to have lots of stuff in it, and you don't like to type. How can you automatically insert uniform blocks of text into your ..→
  19. DATA Step Merging Techniques: From Basic to Innovative
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Fuzzy Merge, MERGE Statement, Presentations, SAS Global Forum 2014, WIILSU
    Merging or joining data sets is an integral part of the data consolidation process. Within SAS there are numerous methods and techniques that can be used to combine two or more data sets. We commonly think that within the DATA step the MERGE statement is the only way to join these data ..→
  20. Data Driven Annotations: An Introduction to SAS/GRAPH’s Annotate Facility
    Categories: Annotate Facility, ArtCarpenter Papers and Presentations, PharmaSUG 2006, SAS/GRAPH, SUGI 2006, WUSS 2006
    When SAS/GRAPH was first introduced, it was the 'only game in town' for the generation of business graphics. In the current computing environment we have lots of graphics options, and it is not unusual for programmers new to SAS/GRAPH to ask why they should bother learning the command and ..→
  21. Data Management: Using Macros to Build a Dynamic Application
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2003, Macro Language, PNWSUG 2000, PharmaSUG 2000, WUSS 2000, WUSS 2002
    You have written a series of interesting and often complex SAS® programs that perform a variety of data entry operations, data checks, exception reporting, statistical analyses, and summary reporting. Since the next study is somewhat similar to the last one, you are planning to build another ..→
  22. Deciphering the TYPE Variable in MEANS and SUMMARY Output Data Sets
    Categories: ArtCarpenter Papers and Presentations, MEANS Procedure, SUGI 1998, SUMMARY Procedure
    Output data sets generated using the procedures MEANS and SUMMARY automatically contain the variable _TYPE_. This variable can prove to be very valuable when creating or working with subsets of the summary data set, but knowing what values of _TYPE_ to select for is difficult if you do not know ..→
  23. Doing More with the Display Manager: From Editor to ViewTable – Options and Tools You Should Know
    Categories: ArtCarpenter Papers and Presentations, Display Manager, Enhanced Editor, MWSUG 2012, PharmaSUG 2012, Presentations, SAS Global Forum 2012, WUSS 2012
    If you have used the interactive interface for SAS® you have most likely used the Display Manager. As it ships, the Display Manager is very powerful and yet fairly easy to use with a minimal learning curve for the new user. Because it is functional ‘right out of the box’, most users do very ..→
  24. Extending the Use of PROC PHREG in Survival Analysis
    Categories: ArtCarpenter Papers and Presentations, PHREG Procedure, Presentations, Statistics, WUSS 2003
    Proc PHREG is a powerful SAS® tool for conducting proportional hazards regression. Its utility, however, can be greatly extended by auxiliary SAS code. We describe our adaptation of a group of existing public domain SAS survival analysis macros, as well as our development of additional control, ..→
  25. Extreme Graphics Make Over: Using SAS/GRAPH to get the Graphical Output You Need
    Categories: ArtCarpenter Papers and Presentations, GPLOT Procedure, SAS/GRAPH, SUGI 2005
    Back in the days of the mainframe, creating presentation quality graphs was a challenge, but with the current versions of SAS/GRAPH® customizing your graphical output can be quite easy. Easy that is, once you know which of the many graphical statements and options to use. This workshop will ..→
  26. Five Ways to Create Macro Variables: A Short Introduction to the Macro Language
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2005, Macro Language, PNWSUG 2009, PharmaSUG 2004, PharmaSUG 2017, Presentations, SAS Global Forum 2017, SESUG 2005, WUSS 2004, WUSS 2009
    The macro language is both powerful and flexible. With this power, however comes complexity, and this complexity often makes the language more difficult to learn and use. Fortunately one of the key elements of the macro language is its use of macro variables, and these are easy to learn and ..→
  27. Functioning with Data Step Functions
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Functions and CALL Routines, SUGI 2000, WUSS 1999
    Functions provide access to powerful tools and routines that make our everyday programming life easier. However since there are so many functions, some programmers are unaware of potentially valuable tools. To make matters worse many functions have been added to the SAS System since the Version ..→
  28. GIS Capabilities in Old vs. New SAS Software
    Categories: ArtCarpenter Papers and Presentations, GIS Procedure, Presentations, SAS/GRAPH, WUSS 2003
    Fifteen years ago, the authors came up with methods to determine if kelp bed sampling points were located within the boundaries of substrate boundaries. The data were then analyzed and plotted on a map of the study areas. Mapping and the ability to determine relationships between data and ..→
  29. Getting More For Less: A Few SAS ® Programming Efficiency Issues
    Categories: ArtCarpenter Papers and Presentations, NESUG 1999, Presentations
    The old saying goes “If there is one way to do it in SAS® , there are three ways to do it.” Inevitably, when this is said in a group, there will be someone (probably a Quality Partner) who will chime in with “And I will show you a fourth way.” It is of course wonderful to be working with ..→
  30. Importing CSV Data to All Character Variables
    Categories: ArtCarpenter Papers and Presentations, DATA Step, IMPORT Procedure, Importing Data, MWSUG 2016, PharmaSUG 2017, WUSS 2017
    Have you ever needed to import data from a CSV file and found that some of the variables have been incorrectly assigned to be numeric? When this happens to us we may lose information and our data may be incomplete. When using PROC IMPORT on an EXCEL file we can avoid this problem by specifying ..→
  31. In The Compute Block: Issues Associated with Using and Naming Variables
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2007, Presentations, REPORT Procedure, SAS Global Forum 2007, WUSS 2006
    In the compute block of the PROC REPORT step variables can be both created and used. They may be on the incoming data table, they may be computed in the REPORT step, they can be statistical summaries, and they may even be artificially created by the REPORT process. In the DATA step each variable ..→
  32. Innovative Techniques: Doing More with Loops and Arrays
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2012, PharmaSUG 2012, Presentations, WUSS 2012
    DO loops and ARRAY statements are common tools in the DATA step. Together they allow us to iteratively process large amounts of data with a minimum amount of code. You have used loops and arrays dozens of times, but do you use them effectively? Do you take advantage of their full potential? ..→
  33. Is the legend in your SAS/GRAPH output telling the right story?
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2004, SAS/GRAPH, SUGI 2004, WUSS 2003
    When generating plots using the GPLOT procedure, a third variable, such as a treatment or dose group, is often used as a grouping variable. GPLOT automatically uses the values of this variable in the LEGEND, but very often the designers of the plots will want particular symbols, line types, and/or ..→
  34. Is your picture worth a thousand words? Creating Effective Presentations with SAS/GRAPH
    Categories: ArtCarpenter Papers and Presentations, Presentations, SAS/GRAPH, WUSS 2004
    SAS/GRAPH® contains an abundance of procedures and options that can be used to create any number of types of graphical output. And if that is not enough, with the capabilities of the Annotate facility, the sky and your imagination may be the only limits to your graphical creations. The problem ..→
  35. I’ve Got to Hand It to You; Portable Programming Techniques
    Categories: %SYSFUNC Function, %SYSGET Function, ArtCarpenter Papers and Presentations, Autoexec File, Automation, DCREATE Function, Environmental Variables, GETOPTION Function, MWSUG 2016, Macro Language, Otterm1 Papers and Presentations, PATHNAME Function, PharmaSUG 2017, SAS Global Forum 2017, WUSS 2017
    As technology expands, we have the need to create programs that can be handed off – to clients, to regulatory agencies, to parent companies, or to other projects, and handed off with little or no modification by the recipient. Minimizing modification by the recipient often requires the program ..→
  36. Job Security: Using the SAS® Macro Language to Full Advantage
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2005, Presentations, WUSS 2005
    As has been discussed in other papers on the topic of Job Security, those working in the field as Job Security Specialists must always be ready to take advantage of all types of programming techniques. Fortunately the SAS® Macro Language contains many hidden gems that can provide many ..→
  37. Library and File Management: Building a Dynamic Application
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2001, SUGI 2002, WUSS 2001
    In order for a SAS® application to be dynamic, it must be able to automatically find the programs that make it work and the data that it is to work against. It must know where to write its output and where to store any new data sets that it creates. More importantly it must do these things ..→
  38. List Processing Basics Creating and Using Lists of Macro Variables
    Categories: ArtCarpenter Papers and Presentations, List Processing Papers, List Processing by Ron Fehd, Macro Design Issues, Macro Language, Macro Language Papers, Macros by Ron Fehd, Papers by Ron Fehd, Presentations, Programming, SAS Global Forum 2007, SysMaxLong, Testing Papers
  39. Looking for a Date? A Tutorial on Using SAS® Dates and Times
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Dates Times Datetimes, PharmaSUG 2005, SESUG 2005, SUGI 2005, WUSS 2004
    What are SAS date and time values? How are they used and why do we care? What are some of the more important of the many functions, formats, and tools that have been developed that work with these crucial elements of the SAS System? This tutorial will answer these questions and many more. ..→
  40. Macro Functions: How to Make Them - How to Use Them
    Categories: ArtCarpenter Papers and Presentations, Functions and CALL Routines, MWSUG 2005, Macro Language, PharmaSUG 2002, SUGI 2002
    The SAS® macro language includes a number of macro functions, such as %UPCASE, %QSCAN, and %SUBSTR. In addition a number of Autocall macros, such as %LEFT, %TRIM, and %VERIFY, are also supplied that act like macro functions. Macro functions are especially useful as programming tools, because ..→
  41. Macro Programming Best Practices: Styles, Guidelines and Conventions Including the Rationale Behind Them
    Categories: ArtCarpenter Papers and Presentations, Best Practices, Donh Papers and Presentations, Macro Language, Macro Language Papers, PharmaSUG 2015, Presentations, SAS Global Forum 2012
    Coding in the SAS Macro Language can be a rich and rewarding experience. The complexity of the language allows for multiple solutions to many programming situations. But which solution is best, is there even a best solution, and how do you decide? Should you choose a technique based on ..→
  42. Macro Quoting Functions, Other Special Character Masking Tools, and How to Use Them
    Categories: ArtCarpenter Papers and Presentations, Macro Language, Macro Quoting, NESUG 1999, SUGI 1999, WUSS 1998
    Quoting functions allow the user to pass macro arguments while selectively removing the special meaning from characters such as &, %, ;, ', and ". Most of these functions are not commonly used and are even less commonly understood. Although they are powerful and can even be necessary, ..→
  43. Macro Quoting to the Rescue: Passing Special Characters
    Categories: ArtCarpenter Papers and Presentations, Best Paper Award Winner, Macro Language, Macro Language Papers, Macro Quoting, Otterm1 Papers and Presentations, Presentations, SAS Global Forum 2013
    We know that we should always try to avoid storing special characters in macro variables. We know that there are just too many ways that special characters can cause problems when the macro variable is resolved. Sometimes, however, we just do not have a choice. Sometimes the characters must be ..→
  44. Make ‘em %LOCAL: Avoiding Macro Variable Collisions
    Categories: %GLOBAL Statement, %LOCAL Statement, ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2005, Presentations, WUSS 2005
    Have you ever run a macro, perhaps someone else’s, and found that it inadvertently changed the value of a totally unrelated macro variable in some other seemingly unrelated macro symbol table? You may have experienced a macro variable collision It is not unusual to use the Global macro symbol ..→
  45. Manual to Automatic: Changing Your Program’s Transmission
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2010, Presentations, WUSS 2009
    You have successfully created a SAS® program that processes data and generates reports for a series items in the data. The program itself works fine, but the problem is that each time the program is executed, it must be manually modified specifically for that run. Perhaps the analysis variable ..→
  46. Name that Function: Punny Function Names with Multiple MEANings and Why You Do Not Want to be MISSING Out
    Categories: Alaska SAS Users Group, ArtCarpenter Papers and Presentations, DATA Step, Functions and CALL Routines, MWSUG 2016, PharmaSUG 2016, Presentations, SAS Global Forum 2017
    The SAS® DATA step is one of the best (if not the best) data manipulators in the programming world. One of the areas that gives the DATA step its flexibility and power is the wealth of functions that are available to it. With over 450 functions in the DATA step it is difficult to ..→
  47. Not All Equals are Created Equal: Nonstandard Statement Structures in the DATA Step
    Categories: ArtCarpenter Papers and Presentations, DATA Step, PharmaSUG 2013, Presentations
    The expression is a standard building block of logical comparisons and assignment statements. Most of us use them so commonly that we do not give them a second thought. But in fact they definitely do deserve that second thought. A more complete understanding of their construction and execution ..→
  48. ODS and Web Enabled Device Drivers: Displaying and Controlling Large Numbers of Graphs
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, PharmaSUG 2003, Presentations, SAS/GRAPH, WUSS 2002
    With the advent of the Output Delivery System, ODS, it has become much easier to generate graphs that can be displayed online. ODS works with web enabled device drivers such as GIF, HTML, and WEBFRAME to create graphs that can be browsed and even interactively modified by the user. Coordination ..→
  49. PROC REPORT: Compute Block Basics
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2008, PharmaSUG 2016, Presentations, REPORT Procedure, SAS Global Forum 2008, WUSS 2008
    One of the unique features of the REPORT procedure is the Compute Block. Unlike most other SAS® procedures, PROC REPORT has the ability to modify values within a column, to insert lines of text into the report, to create columns, and to control the content of a column. Through compute blocks it ..→
  50. PROC REPORT Basics: Getting Started with the Primary Statements
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2005, Presentations, REPORT Procedure, SAS Global Forum 2012, WUSS 2005
    The presentation of data is an essential part of virtually every study and there are a number of tools within SAS® that allow the user to create a large variety of charts, reports, and data summaries. PROC REPORT is a particularly powerful and valuable procedure that can be used in this process. ..→
  51. PROC TABULATE: Getting Started and Doing More
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2011, PharmaSUG 2010, Presentations, SAS Global Forum 2011, SCSUG 2011, SESUG 2010, TABULATE Procedure, WUSS 2010
    Although PROC TABULATE has been a part of Base SAS® for a very long time, this powerful analytical and reporting procedure is very under utilized. TABULATE is different; it's step statement structure is unlike any other procedure. Because the programmer who wishes to learn the procedure ..→
  52. Placing Dates in Your Titles: Do It Dynamically
    Categories: %SYSFUNC Function, ArtCarpenter Papers and Presentations, Dates Times Datetimes, Macro Language, SUGI 2000, WUSS 1999
    Suppose you want your SAS® output to contain a date/time stamp. By default each output procedure places this information in the upper right corner on each page, this is a good start and is often 'good enough', but it has limitations. These limitations include; no choice in date format, no ..→
  53. Programming With CLASS: Keeping Your Options Open
    Categories: ArtCarpenter Papers and Presentations, MEANS Procedure, MWSUG 2012, PharmaSUG 2012, Presentations, SAS Global Forum 2014, SUMMARY Procedure, TABULATE Procedure, UNIVARIATE Procedure, WUSS 2012
    Many SAS® procedures utilize classification variables when they are processing the data. These variables control how the procedure forms groupings, summarizations, and analysis elements. For statistics procedures they are often used in the formation of the statistical model that is being ..→
  54. Programming for Job Security: Maximize Your Indispensability - Become a Specialist
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2008, MWSUG 2010, MWSUG 2017, Programming, SAS Global Forum 2008
    A great deal has been said about programming techniques designed for the efficiency and maintainability of SAS® programs. We are taught to write code that minimizes machine and programmer resources. Unfortunately, easily maintained code requires fewer programmers, and fewer programmers ..→
  55. Protecting Macros and Macro Variables: It Is All About Control
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2011, Macro Language, Macro Language Papers, PharmaSUG 2011, Presentations, SCSUG 2011, WUSS 2011
    In a regulated environment it is crucially important that we are able to control, which version of a macro, and which version of a macro variable, is being used at any given time. As crucial as this is, in the SAS® macro language this is not something that is easily accomplished. We can write ..→
  56. Quotes within Quotes: When Single (‘) and Double (“) Quotes are not Enough
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2017, Macro Language, Macro Quoting, PharmaSUG 2014, Presentations, SAS Global Forum 2015, WIILSU, WUSS 2015
    Although it does not happen every day, it is not unusual to need to place a quoted string within another quoted string. Fortunately SAS® recognizes both single and double quote marks and either can be used to within the other. This gives us the ability to have two deep quoting. There are ..→
  57. Reading and Writing RTF Documents as Data: Automatic Completion of CONSORT Flow Diagrams
    Categories: ArtCarpenter Papers and Presentations, DATA Step, MWSUG 2013, ODS RTF Statement, Output Delivery System, PharmaSUG 2012, Presentations, WUSS 2011
    Whenever the results of a randomized clinical trial are reported in scientific journals, the published paper must adhere to the CONSORT (CONsolidated Standards Of Reporting Trials) statement. The statement includes a flow diagram, and the generation of these CONSORT flow diagrams is always ..→
  58. Resolving and Using &&var&i Macro Variables
    Categories: ArtCarpenter Papers and Presentations, Macro Language, SUGI 1997
    One of the most important aspects of the Macro Language within the SAS System is its ability to create code dynamically. This allows the developer to write code that will do a series of operations without knowing exactly what those operations will be at execution time.
    This presentation ..→
  59. SAS/GRAPH Elements You Should Know –Even If You Don’t Use SAS/GRAPH
    Categories: ArtCarpenter Papers and Presentations, Output Delivery System, PharmaSUG 2011, Presentations, SAS/GRAPH, SAS Global Forum 2010, SESUG 2010, WUSS 2010
    We no longer live or work in a line printer - green bar paper environment. Indeed many of today’s programmers do not even know what a line printer is or what green bar paper looks like. Our work environment expects reports which utilize various fonts, with control over point size and color, ..→
  60. SAS Macro: Symbols of Frustration? %Let us help! A Guide to Debugging Macros
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2005, MWSUG 2009, Macro Language, SUGI 2004
    Are you just learning to write MACROS? Are you baffled by when to use single quotes and double quotes - or one inside the other? Are you confused by when to use statements such as DO versus %DO? Want to know the difference between a GLOBAL and LOCAL Macro variable? Do you have macros that don't ..→
  61. SasCommunity.org - Your SAS® Site: What it is and How to Get Started
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2010, Presentations, SCSUG 2009, SESUG 2009, WUSS 2009
    From around the world, the community of SAS users, programmers, developers, as well as others interested in the broader application of SAS software, are increasingly making use of the sasCommunity.org wiki site. Fast becoming the clearing house for all information that is related to SAS, ..→
  62. Secret Sequel: Keeping Your Password Away from the LOG
    Categories: %SUPERQ Function, ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2007, Presentations, SAS Global Forum 2009, SQL Procedure, SYMGET Function, WUSS 2007
    Passwords are things not to be shared. As good SAS® programmers we don't hard-code our passwords in our programs, but keep them in separate files or macro variables. However this is not enough! Unfortunately the casual (or malicious) user can "turn on" macro debugging utilities like MPRINT, ..→
  63. Simple Tests of Hypotheses for the Non-statistician: What They Are and Why They Can Go Bad
    Categories: ArtCarpenter Papers and Presentations, PharmaSUG 2006, SUGI 2006, Statistics, WUSS 2005
    Hypothesis testing is a central component of most statistical analyses. The focal point of these tests is often the significance level, but what does this value really mean and how can we effectively use it? And perhaps more importantly, what are the pitfalls and dangers in its interpretation? ..→
  64. Storing and Using a List of Values in a Macro Variable
    Categories: ArtCarpenter Papers and Presentations, Macro Language, PharmaSUG 2005, SUGI 2005, WUSS 2004
    When using the macro language it is not at all unusual to need to manipulate a list of values. These may be a list of variables in a data set or even a list of data set names. Macro variables are often used to hold this list and there are a couple of storage options. Either each word of the ..→
  65. Subsetting Data into Groups for Complete Processing Within Each Group
    Categories: ArtCarpenter Papers and Presentations, Macro Language, Presentations, SUGI 1988
    It is often difficult to follow the results for a particular BY group, when a series of SAS@procedures with a common set of BY variables is processed. The output from a series of SAS procedures and data steps are often used to "tell a story", and while the results of any given procedure may be easy ..→
  66. Survival Analysis with PHREG: Using MI and MIANALYZE to Accommodate Missing Data
    Categories: ArtCarpenter Papers and Presentations, MIANALYZE Procedure, MI Procedure, PHREG Procedure, Statistics, WUSS 2002, WUSS 2012
    Survival analyses based on a data collection process which the researcher has little control over are often plagued by problems of missing data. Deleting cases with any missing data will result in information loss and usually results in bias, while many analytic procedures that retain this ..→
  67. Table Lookup Techniques: From the Basics to the Innovative
    Categories: ArtCarpenter Papers and Presentations, DATA Step, PharmaSUG 2014, Presentations, SAS Global Forum 2015, Table Lookup, WIILSU
    One of the more commonly needed operations within SAS® programming is to determine the value of one variable based on the value of another. A series of techniques and tools have evolved over the years to make the matching of these values go faster, smoother, and easier. A majority of these ..→
  68. Table Lookups: From IF-THEN to Key-Indexing
    Categories: ARRAY Statement, ArtCarpenter Papers and Presentations, DATA Step, MERGE Statement, PNWSUG 2005, SUGI 2001, WUSS 2001
    One of the more commonly needed operations within SAS® programming is to determine the value of one variable based on the value of another. A series of techniques and tools have evolved over the years to make the matching of these values go faster, smoother, and easier. A majority of these ..→
  69. Taking Control and Keeping It: Creating and Using Conditionally Executable SAS Code
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Macro Language, STOP Statement, SUGI 2000
    Have you ever wanted to selectively execute chunks of program code? Do you want to leave debugging statements in your program for future debugging sessions while preventing their execution without commenting them manually? Would you like your program to automatically start at a specified time or ..→
  70. Taking Full Advantage of sasCommunity.org: Your SAS® Site
    Categories: ArtCarpenter Papers and Presentations, Donh Papers and Presentations, MWSUG 2012, Presentations, SAS Global Forum 2012, SAS Global Forum 2013, SasCommunity, WUSS 2013
    sasCommunity.org is becoming a hub or clearinghouse for technical information related to the use of SAS software. The site is managed and run by SAS users for SAS users. It is free and open to all SAS users to browse. Any SAS user can contribute to the site - just create an ID in order to ..→
  71. The Axis Statement: Your Ally for Controlling Graphic Text
    Categories: AXIS Statement, ArtCarpenter Papers and Presentations, SAS/GRAPH, SUGI 1995
    One of the strengths of SAS/GRAPH that you can easily take advantage of is the control that is available for the presentation of lettering and symbols in the titles and labels associated with a plot's axis. The AXIS statement is especially useful when precise control is needed. The AXIS ..→
  72. The Lost Art of ANNOTATE
    Categories: Annotate Facility, ArtCarpenter Papers and Presentations, SAS/GRAPH, SUGI 2000, WUSS 1999
    The ANNOTATE facility is a useful tool that adds to the capabilities of SAS/GRAPH and related procedures. We will briefly examine some of the common uses and expound on some of the more advanced uses of annotate.
  73. The MEANS/SUMMARY Procedure: Getting Started and Doing More
    Categories: ArtCarpenter Papers and Presentations, MEANS Procedure, PharmaSUG 2009, Presentations, SAS Global Forum 2010, SUMMARY Procedure, WUSS 2008
    The MEANS/SUMMARY procedure is a workhorse for most data analysts. It is used to create tables of summary statistics as well as complex summary data sets. The user has a great many options which can be used to customize what the procedure is to produce. Unfortunately most analysts rely on only ..→
  74. The Path, The Whole Path, Nothing Except the Path, So Help Me Windows
    Categories: ArtCarpenter Papers and Presentations, DATA Step, Display Manager, Macro Language, Presentations, SAS Global Forum 2008
    Have you ever needed to determine a directory path dynamically? Have you needed to know the name of the currently executing program and where it resides? There are a number of tools available to the SAS programmer that can be used to determine path and location information. These tools ..→
  75. Using ANNOTATE Macros as Shortcuts
    Categories: Annotate Facility, ArtCarpenter Papers and Presentations, Macro Language, NESUG 1999, SAS/GRAPH, SUGI 1999, WUSS 1999
    ANNOTATE macros can provide a shortcut when creating an ANNOTATE data set using assignment statements. To be used properly you need to understand how they work and what they will do for you. They will not abrogate your need to understand how the process of creating the data set works. Indeed ..→
  76. Using Arrays to Quickly Perform Fuzzy Merge Look-ups Case Studies in Efficiency
    Categories: ARRAY Statement, ArtCarpenter Papers and Presentations, DATA Step, Fuzzy Merge, Hashing, MWSUG 2014
    Merging two data sets when a primary key is not available can be difficult. The MERGE statement cannot be used when BY values do not align, and data set expansion to force BY value alignment can be resource intensive. The use of DATA step arrays, as well as other techniques such as hash tables, ..→
  77. Using Macro Functions
    Categories: ArtCarpenter Papers and Presentations, MWSUG 2005, Macro Language, SUGI 2000
    Many macro functions are very analogous to those of the DATA step. The differences are in how they are used and applied. While DATA step functions are applied to values on the Program Data Vector, PDV, macro functions are used to create, modify, and work with text strings. Initially ..→
  78. Using PROC FCMP to the Fullest: Getting Started and Doing More
    Categories: ArtCarpenter Papers and Presentations, FCMP Procedure, Functions and CALL Routines, PharmaSUG 2013, Presentations, SAS Global Forum 2013, WUSS 2013
    The FCMP procedure is used to create user defined functions. Many users have yet to tackle this fairly new procedure, while others have only attempted to use only its simplest options. Like many tools within SAS®, the true value of this procedure is only appreciated after the user has ..→
  79. Your Age In People Years: Not All Formulas Are the Same
    Categories: ArtCarpenter Papers and Presentations, DATA Step, INTCK Function, MWSUG 2011, PharmaSUG 2011, Presentations, WUSS 2010, YRDIF Function
    The calculation of an individual’s age can be problematic. SAS® dates are generally measured in terms of days (or seconds if a datetime value is used), so we have to convert the value to years. To some extent, how we calculate age will depend on how we intend to use the value. The ..→
  80. “How Do I . . .?” There is more than one way to solve that problem; Why continuing to learn is so important
    Categories: ArtCarpenter Papers and Presentations, DATA Step, PharmaSUG 2013, Presentations, SAS Global Forum 2013, WHICHC Function, WUSS 2013
    In the SAS® forums questions are often posted that start with “How do I . . . ?”. Generally there are multiple solutions to the posted problem, and often these solutions vary from simple to complex. In many of the responses the simple solution is often ..→