Posters. Paper
|
|
- Jasmin Gardner
- 5 years ago
- Views:
Transcription
1 Paper Using SAS/AF to Create a SAS Program File Explorer Rob Nelson, Centers for Disease Control and Prevention, Atlanta, GA Janet Royalty, Centers for Disease Control and Prevention, Atlanta, GA Ernie Lewis, Greenville, SC ABSTRACT The SAS version 8 application presented in this poster combines the interactive features of SAS/AF with a methodology for documenting SAS programs to create a descriptive index of SAS program files within a given Windows directory. File name, creation date, and program header description are captured and displayed in an easy-to-browse data table. This application also includes a search tool function that can locate programs containing a specified string of SAS code. While the methods presented in this paper apply to intermediate SAS programmers, they can also be modified for use by more advanced programmers. INTRODUCTION Most SAS programmers find it useful to adapt previously written code to new projects. Normally, efficient maintenance of a SAS program file directory depends on internal program code documentation, explaining the intricacies of specific code, and external file documentation, explaining the overall purpose of the program and summarizing any innovative code. The prototype SAS Program File Explorer application illustrated in this article was developed in SAS version 8 on the Windows NT platform. It modifies Mr. Gary Cunningham s technique for creating an index of SAS programs to enable display of program file summary information in table format, searching directories for specific SAS program code, and submitting and viewing selected SAS programs. The application is presented in three parts. First, the base SAS code for creating a SAS program file indexing program is presented. Second, the SAS/AF techniques for developing the frame, frame objects, and SCL are explored. Third, additional base SAS code is given which can be used to create a search mechanism for the application. In reading this paper, please consider the following. Directory information read into SAS using the pipe varies across operating system and operating system version. Section 2 of programs.sas and section 1 of search.sas might need to be changed to reflect this. In addition, this program was creating using SAS files with short file extensions. As a result, this application will include SAS version 8.0 data sets and catalogs with long file extensions in the SAS program file listing unless the application is modified. Finally, some familiarity with SAS/AF is assumed. CREATING A BASE SAS INDEXING PROGRAM Below, the file programs.sas, a modification of Mr. Cunningham s program, is reviewed. This file, which obtains information on SAS program files within a specified directory, is divided into 4 sections that are explained separately. SECTION 1 Descriptive headers are the backbone of this application, since this information is captured and displayed on the program directory frame. In order to fully take advantage of the application, all SAS program files should have a header. Otherwise, only file name and file modification date will be displayed. Additionally, the header structure should remain uniform across programs. Note that the programming techniques below can be used to add additional header categories /******************************************** * Program Name: programs.sas * Description: SAS program dir, mod. of * Date: 06/13/2000 * Modified: 08/02/2000; 1/9/2001 * Author: Rob Nelson * Comments: All pgm hdrs should use format! ********************************************/ SECTION 2 In this section, the macro %progindx is created. This macro is ed from the SAS program file explorer application each time a new directory is opened. The directory is fed to the macro using the parameter &dir. An unnamed pipe is used to create a SAS data set, named pgmdat, containing file name and file creation date for all files in the directory with the extension.sas. %macro progindx(dir=); options nodate nocenter number; /******************************************** Index function - which searches source for string - could be used to make sure that path passed in is correct: if index(dir,'(default)') then endsas; Use a pipe to create list of all SAS programs ********************************************/ /* Clear old data sets */ proc datasets; delete pgmdat allpgm pgmdes sasprogs; /* Unnamed pipe obtains file info. &dir given in SCL */ filename fileinfo pipe "dir &dir.\*.sas"; data pgmdat (KEEP=PGM DATE); infile fileinfo length=l; line $varying200. l; pgm=substr(line,40,50); pgm = upcase(pgm); date=substr(line,1,8); if substr(date,3,1)='/' and pgm NE ' '; filename fileinfo clear; SECTION 3 Next, the first 10 lines of each SAS program file identified in the previous step are parsed for a description. This information is stored in the data set pgmdes. If the header convention shown in step 1 is not used, description data will be not included. The dataset pgmdes is then merged with the data set from section 2, pgmdat to create sasprogs. /* Determine num of SAS pgms*/ set pgmdat end=eof; if eof then symput ('total',left(_n_)); /** Retrieve program SAS pgm file descrip **/ %if &total NE 0 %then %do i=1 %to &total; %let pgm=;
2 set pgmdat; if _n_=&i; symput('pgm',trim(pgm)); symput('dat',trim(date)); filename saspgm "&dir.\&pgm"; data pgmdes (keep=program descript date); length program $ 200; infile saspgm missover lrecl=200 pad obs=10 end=eof; line $200.; retain gotdesc 0; drop colon i; program="&pgm"; date="&dat"; if index(upcase(line),'description:') > 0 THEN DO; colon=index(line,':'); do i=1 to colon+1; substr(line,i,1)=' '; gotdesc=1; descript=left(line); output; if eof and gotdesc=0 then do; descript=' '; output; set sasprogs pgmdes; if _n_=1 and program=' ' then delete; filename saspgm clear; % /* If no SAS pgm files, create blank ds */ %else %do; data sasprogs(keep=program descript date); attrib program length=$25 descript length=$100; % SECTION 4 In the final step, macro variables are created which will be used to supply column width to the AF application. The data set is also sorted for display, and the macro definition ended. /* Create str len macro vars to */ /* dynamiy control col width in SCL */ /* (labeled sections update & btnsearch) */ set sasprogs end=last; attrib pgmlenc deslenc length=$8; retain pgmlen 15 deslen 15; label program='program' descript='description' date='date'; if length(trim(pgm)) > pgmlen then pgmlen=length(trim(pgm)); if length(trim(descript)) > deslen then deslen=length(trim(descript)); if last=1 then do; pgmlenc=pgmlen; deslenc=deslen; symput('pgmlen',pgmlenc); symput('deslen',deslenc); proc sort data=sasprogs; by program; %mend progindx; CREATING THE SAS/AF INTERFACE The application s frame layout is illustrated below in Figure 1. The frame is named programs. Table 1 lists object name and type. Object text and labels are shown in the figure. Note that the text entry object is used for all text, including labels. This allows more flexibility, particularly with background color. However, the following object attributes must be ste to use text entry objects in place of text labels: borderstyle= None, editable= No. Also, the commandonclick property of btnexit should be set to End. Finally, the use object name as id in scl box should be checked in the property box of the object tblprogs. Figure 1 - Frame Layout Table 1 Object List No. Name Object type 1 lbltitle Text entry control 2 tblprogs Data table 3 ntndir Push button 4 lbldirlabel Text entry control 5 lbldirdisplay Text entry control 6 containerbox1 Container box 7 entsearch Text entry control 8 btnsearch Push button control 9 lblsearch Text entry control 10 btnopen Push button control 11 btnexit Push button control 12 lbltotobs Text entry control 13 lblnumfiles Text entry control 14 lblnumfound Text entry control 15 lblfound Text entry control PROGRAMS.SCL After creating the frame and all objects, add the following frame SCL. This code allows the user to select a program file directory, search for a string of code within the SAS program files in that directory. Several features of this code deserve mention. Submit blocks are used to run the Base SAS programs programs.sas and search.sas. These programs should be tested before starting frame development. The filedialog function is used to a directory dialog box. This is used both at application start-up, and when the user changes directory. Column width in the data table is controlled using the _setcolumnattributes method. init: _frame_=_frame_; length dat1 8 direct progg program $50; declare object expid datable, num pgmvar desvar codvar X Y, char string1 pgmbox findcnt; /* Position form */ _frame_=_frame_; dcl num col row scol srow; col=round((winfo('maxcol')),1); row=round((winfo('maxrow')),1); 2
3 _frame_._setwindowsize(1,1,row,col); _frame_._get_widget_('tblprogs',datable); symput('pgmlen',' '); symput('deslen',' '); symput('dirtex',' '); * select directory dialog box; rc=filedialog('aggregate',director,'','','*.s as','','','','','','','','','','','choose SAS Program File Directory', '','','','','','','','','',''); if rc NE 0 then goto errdir; else do; lbldirdisplay.text=director; goto update; update: direct=trim(lbldirdisplay.text); symput('direct1',direct); %include 't:\serodata\sasapps\dev\sugi\programs.sas'; %progindx(dir=&direct1); DATA _null_; CALL SYMPUT('totobs',numobs); STOP; SET work.sasprogs NOBS=numobs; RUN; rc=open('work.sasprogs','u'); dat1=dsid('work.sasprogs','u'); datable._setdataset('work.sasprogs'); datable._displaycolumnlabel('program','date', 'descript'); datable._setdisplayedcolumns('program','descr ipt','date'); pgmvar=((symget('pgmlen') + 1) * 5); *BECAUSE UPCASE; X=(SYMGET('DESLEN')); If X < 4 then X=4; Y=(SYMGET('CODLEN')); If Y < 4 then Y=4; desvar=(x - 1) * 4.5; codvar=(y - 1) * 4.5; datable._setcolumnattribute('program','column _WIDTH',pgmvar); datable._setcolumnattribute('descript','colum N_WIDTH',desvar); * HOLD COLUMN 1; heldcol=makelist(); heldcol=insertn(heldcol,1,1); tblprogs._set_held_columns_(heldcol,heldcol); heldcol=dellist(heldcol); lbltotobs.text=trim(left(symget('totobs'))); lblfound.visible='no'; lblnumfound.visible='no'; btnopen: datable._getcolumntext('program',progg); execcmd('wedit "' trim(direct) '\' trim(progg) '" Use'); btndir: *start in previously selected directory; prevdir=director "\*.sas "; rc=filedialog('aggregate',director,'','',prev dir, '','','','','','','','','','','Choose SAS Program File Directory', '','','','','','','','','',''); lbldirdisplay.text=director; datable._setdataset(' '); rc=close(dat1); goto update; btnsearch: if lbltotobs.text='0' then goto errsearch1; string1=entsearch.text; if string1='' then goto errsearch2; datable._setdataset(' '); rc=close(dat1); symput('search',string1); symput('findcnt',' '); %include 't:\serodata\sasapps\dev\sugi\search.sas'; %strfind(&search,dir=&direct1); entsearch.text=''; rc=open('work.sasprogs','u'); dat1=dsid('work.sasprogs','u'); datable._setdataset('work.sasprogs'); datable._displaycolumnlabel('program','date', 'descript'); datable._setdisplayedcolumns('program','descr ipt','date','finds'); pgmvar=((symget('pgmlen') + 1) * 5); *BECAUSE UPCASE; X=(SYMGET('DESLEN')); If X < 4 then X=4; Y=(SYMGET('CODLEN')); If Y < 4 then Y=4; desvar=(x - 1) * 4.5; codvar=(y - 1) * 4.5; datable._setcolumnattribute('program','column _WIDTH',pgmvar); datable._setcolumnattribute('descript','colum N_WIDTH',desvar); datable._hidecolumn('finds'); * HOLD COLUMN 1; heldcol1=makelist(); heldcol1=insertn(heldcol1,1,1); datable._set_held_columns_(heldcol1,heldcol1) ; heldcol1=dellist(heldcol1); * DISPLAY NUMBER FOUND; lblfound.visible='yes'; lblnumfound.text=trim(left(symget('findcnt')) ); lblnumfound.visible='yes'; errsearch1: warnlist=insertc(warnlist,'no SAS programs in dir'); errsearch2: warnlist=insertc(warnlist,'please enter string'); 3
4 errdir: *********************************** use dsid function to see if data set work.programs exists (see above); ***********************************; data sasprogs(keep=program descript date); attrib program length=$25 descript length=$100; warnlist=insertc(warnlist,'you must select a directory'); Once the frame SCL has been added, include the following SCL for the data table object TBLPROGS. Remember to compile the data table SCL before compiling the frame SCL. This is done by selecting the data table object in the frame build environment, left mouse clicking, and selecting Table and Compile SCL from the resulting menus. init: dcl object datable, char finds; _viewer_=_viewer_; if finds='y' then do; send(_viewer_,'_setviewerattribute','program','bcolor','yellow'); send(_viewer_,'_setviewerattribute','descript ','bcolor','yellow'); send(_viewer_,'_setviewerattribute','date','b color','yellow'); CREATING A BASE SAS SEARCH PROGRAM The Base SAS program search.sas, is a modification of programs.sas. It searches SAS program files in the chosen directory for a specified string of code. The search feature of the application does not have to be included for the application to work. To exclude this feature, remove the objects btnsearch, entsearch, lblsearch, lblnumfound, lblfound and the SCL code blocks btnsearch, errsearch1, and errsearch2. SECTION 1 This section begins the macro %strfind. A data set nalled flmns is created, containing file name for each of the files in the directory. /************************************** * Program Name: search.sas * Description: Searches SAS program directory program for string, mod. of SAS SUGI * Author: Rob Nelson ***************************************/ %macro strfind(str,dir=); options nodate nocenter number pageno=1 ps=50 ls=100; proc datasets; delete flnms str1 pgmstr search; filename fls pipe "dir/b &dir.\*.sas"; data flnms; infile fls length=l; length filename $200; filename $varying200. l; filename = upcase(filename); filename fls clear; *determine num of SAS pgms & get pgm descript for each; set flnms end=eof; if eof then symput ('total',left(_n_)); data search; SECTION 2 In this section, the first 10 lines of each SAS program file in the directory are searched for header information. %if &total NE 0 %then %do i=1 %to &total; %let pgm=; set flnms; if _n_=&i; symput('pgm',trim(filename)); filename pgm "&dir.\&pgm"; data pgmstr (keep=program finds findstr string); infile pgm missover lrecl=200 pad end=eof; attrib find length=$3. program format=$varying200.; line $200.; retain findstr 0; program="&pgm"; string=upcase("&str"); if index(upcase(line),string) > 0 THEN findstr=1; if findstr=1 then finds='y'; if eof then output; data search; set search pgmstr; if program='' then delete; filename pgm clear; % SECTION 3 Finally, results from the search are combined with the existing data set containing information on SAS program files. PROC freq is used to provide the number of files encountered to the SAS/AF application. data work.search; set work.search; attrib indxvar length=$200; indxvar=program; data work.sasprogs(keep=indxvar program descript code date); set work.sasprogs; attrib indxvar length=$200; indxvar=program; proc sort data=work.search; 4
5 proc sort data=work.sasprogs; data sasprogs(drop=indxvar); merge search sasprogs; proc freq data=work.sasprogs; tables finds / NOPRINT out=findcoun; data work.findcoun; set work.findcoun; symput('findcnt','0'); if finds='y'; symput('findcnt',count); proc sort data=sasprogs; by program; %mend strfind; CONCLUSION This application illustrates the usefulness of combining the interactive features of SAS/AF with the flexibility of Base SAS. The authors hope that use of this application will encourage documentation of Base SAS programs and consistent selection of storage location. Additional features for this application might include a tree display of the directory structure, allowing users to select and submit SAS programs without opening, and predesignation of user start directory. REFERENCES Cunningham, Gary An Automated Method to Create a Descriptive Index for a Directory of SAS Programs, SAS Institute Proceedings of the Twenty-Fifth Annual SAS Users Group International Conference, Cary, NC: SAS institute Inc. SAS Institute Inc. (1999), SAS OnlineDoc Version 8., SAS Institute Inc., Cary, NC: SAS Institute Inc. CONTACT INFORMATION Contact the author at: Rob Nelson Centers for Disease Control & Prevention Mailstop E Clifton Road Atlanta, GA RXN1@CDC.GOV 5
A SAS Macro Utility to Modify and Validate RTF Outputs for Regional Analyses Jagan Mohan Achi, PPD, Austin, TX Joshua N. Winters, PPD, Rochester, NY
PharmaSUG 2014 - Paper BB14 A SAS Macro Utility to Modify and Validate RTF Outputs for Regional Analyses Jagan Mohan Achi, PPD, Austin, TX Joshua N. Winters, PPD, Rochester, NY ABSTRACT Clinical Study
More informationA Macro To Generate a Study Report Hany Aboutaleb, Biogen Idec, Cambridge, MA
Paper PO26 A Macro To Generate a Study Report Hany Aboutaleb, Biogen Idec, Cambridge, MA Abstract: Imagine that you are working on a study (project) and you would like to generate a report for the status
More informationArthur L. Carpenter California Occidental Consultants, Oceanside, California
Paper 028-30 Storing and Using a List of Values in a Macro Variable Arthur L. Carpenter California Occidental Consultants, Oceanside, California ABSTRACT When using the macro language it is not at all
More informationCreating Macro Calls using Proc Freq
Creating Macro Calls using Proc Freq, Educational Testing Service, Princeton, NJ ABSTRACT Imagine you were asked to get a series of statistics/tables for each country in the world. You have the data, but
More informationPhotos with Text Reports on the Same SAS/AF Screen
Photos with Text Reports on the Same SAS/AF Screen Michael Shreve, American Honda Motor Company, Torrance, California Abstract The day of the digital media has arrived! Our field reps are armed with digital
More informationHow to Implement the One-Time Methodology Mark Tabladillo, Ph.D., Atlanta, GA
How to Implement the One-Time Methodology Mark Tabladillo, Ph.D., Atlanta, GA ABSTRACT This tutorial will demonstrate how to implement the One-Time Methodology, a way to manage, validate, and process survey
More informationHow to Implement the One-Time Methodology Mark Tabladillo, Ph.D., MarkTab Consulting, Atlanta, GA Associate Faculty, University of Phoenix
Paper PO-09 How to Implement the One-Time Methodology Mark Tabladillo, Ph.D., MarkTab Consulting, Atlanta, GA Associate Faculty, University of Phoenix ABSTRACT This paper demonstrates how to implement
More informationMake Your Life a Little Easier: A Collection of SAS Macro Utilities. Pete Lund, Northwest Crime and Social Research, Olympia, WA
Make Your Life a Little Easier: A Collection of SAS Macro Utilities Pete Lund, Northwest Crime and Social Research, Olympia, WA ABSTRACT SAS Macros are used in a variety of ways: to automate the generation
More informationUsing an ICPSR set-up file to create a SAS dataset
Using an ICPSR set-up file to create a SAS dataset Name library and raw data files. From the Start menu, launch SAS, and in the Editor program, write the codes to create and name a folder in the SAS permanent
More informatione. That's accomplished with:
Make Your Life a Little Easier: A Collection of SAs Macro Utilities Pete Lund, Northwest Crime and Social Research, Olympia, WA ABSTRACT SAs Macros are used in a variety of ways: to automate the generation
More informationUsing Unnamed and Named Pipes
227 CHAPTER 12 Using Unnamed and Named Pipes Overview of Pipes 227 Using Unnamed Pipes 228 Unnamed Pipe Syntax 228 Using Redirection Sequences 229 Unnamed Pipe Example 229 Using Named Pipes 230 Named Pipe
More informationHAVE YOU EVER WISHED THAT YOU DO NOT NEED TO TYPE OR CHANGE REPORT NUMBERS AND TITLES IN YOUR SAS PROGRAMS?
HAVE YOU EVER WISHED THAT YOU DO NOT NEED TO TYPE OR CHANGE REPORT NUMBERS AND TITLES IN YOUR SAS PROGRAMS? Aileen L. Yam, PharmaNet, Inc., Princeton, NJ ABSTRACT In clinical research, the table of contents
More informationUsing PROC REPORT to Cross-Tabulate Multiple Response Items Patrick Thornton, SRI International, Menlo Park, CA
Using PROC REPORT to Cross-Tabulate Multiple Response Items Patrick Thornton, SRI International, Menlo Park, CA ABSTRACT This paper describes for an intermediate SAS user the use of PROC REPORT to create
More information3. Almost always use system options options compress =yes nocenter; /* mostly use */ options ps=9999 ls=200;
Randy s SAS hints, updated Feb 6, 2014 1. Always begin your programs with internal documentation. * ***************** * Program =test1, Randy Ellis, first version: March 8, 2013 ***************; 2. Don
More informationBase and Advance SAS
Base and Advance SAS BASE SAS INTRODUCTION An Overview of the SAS System SAS Tasks Output produced by the SAS System SAS Tools (SAS Program - Data step and Proc step) A sample SAS program Exploring SAS
More informationThe Output Bundle: A Solution for a Fully Documented Program Run
Paper AD05 The Output Bundle: A Solution for a Fully Documented Program Run Carl Herremans, MSD (Europe), Inc., Brussels, Belgium ABSTRACT Within a biostatistics department, it is required that each statistical
More informationImplementing external file processing with no record delimiter via a metadata-driven approach
Paper 2643-2018 Implementing external file processing with no record delimiter via a metadata-driven approach Princewill Benga, F&P Consulting, Saint-Maur, France ABSTRACT Most of the time, we process
More informationPDF Multi-Level Bookmarks via SAS
Paper TS04 PDF Multi-Level Bookmarks via SAS Steve Griffiths, GlaxoSmithKline, Stockley Park, UK ABSTRACT Within the GlaxoSmithKline Oncology team we recently experienced an issue within our patient profile
More informationUsing SAS Macro to Include Statistics Output in Clinical Trial Summary Table
Using SAS Macro to Include Statistics Output in Clinical Trial Summary Table Amy C. Young, Ischemia Research and Education Foundation, San Francisco, CA Sharon X. Zhou, Ischemia Research and Education
More informationSAS/AF FRAME Entries: A Hands-on Introduction
SAS/AF FRAME Entries: A Hands-on Introduction Vincent L. Timbers The Pennsylvania State University, University Park, Pa. ABSTRACT Frame entries in SAS/AF use graphic display devices that enable application
More informationHOW TO DEVELOP A SAS/AF APPLICATION
PS001 Creating Effective Graphical User Interfaces Using Version 8 SAS/AF Anders Longthorne, National Highway Traffic Safety Administration, Washington, DC ABSTRACT Improving access to an organization
More informationMACROS TO REPORT MISSING DATA: AN HTML DATA COLLECTION GUIDE Patrick Thornton, University of California San Francisco
MACROS TO REPORT MISSING DATA: AN HTML DATA COLLECTION GUIDE Patrick Thornton, University of California San Francisco ABSTRACT This paper presents SAS macros to produce missing data reports in HTML. The
More informationProcedure for Stamping Source File Information on SAS Output Elizabeth Molloy & Breda O'Connor, ICON Clinical Research
Procedure for Stamping Source File Information on SAS Output Elizabeth Molloy & Breda O'Connor, ICON Clinical Research ABSTRACT In the course of producing a report for a clinical trial numerous drafts
More informationProgram Validation: Logging the Log
Program Validation: Logging the Log Adel Fahmy, Symbiance Inc., Princeton, NJ ABSTRACT Program Validation includes checking both program Log and Logic. The program Log should be clear of any system Error/Warning
More informationSAS 101. Based on Learning SAS by Example: A Programmer s Guide Chapter 21, 22, & 23. By Tasha Chapman, Oregon Health Authority
SAS 101 Based on Learning SAS by Example: A Programmer s Guide Chapter 21, 22, & 23 By Tasha Chapman, Oregon Health Authority Topics covered All the leftovers! Infile options Missover LRECL=/Pad/Truncover
More informationUsing SAS to Control the Post Processing of Microsoft Documents Nat Wooding, J. Sargeant Reynolds Community College, Richmond, VA
Using SAS to Control the Post Processing of Microsoft Documents Nat Wooding, J. Sargeant Reynolds Community College, Richmond, VA Chen, SUGI 31, showed how to use SAS and VBA to automate the post processing
More informationA Cross-national Comparison Using Stacked Data
A Cross-national Comparison Using Stacked Data Goal In this exercise, we combine household- and person-level files across countries to run a regression estimating the usual hours of the working-aged civilian
More informationMatt Downs and Heidi Christ-Schmidt Statistics Collaborative, Inc., Washington, D.C.
Paper 82-25 Dynamic data set selection and project management using SAS 6.12 and the Windows NT 4.0 file system Matt Downs and Heidi Christ-Schmidt Statistics Collaborative, Inc., Washington, D.C. ABSTRACT
More informationThe Dataset Attribute Family of Classes Mark Tabladillo, Ph.D., Atlanta, GA
The Dataset Attribute Family of Classes Mark Tabladillo, Ph.D., Atlanta, GA ABSTRACT This presentation will specifically present the dataset attribute family, an abstract parent and its twenty-five children.
More informationSAS Macro Dynamics - From Simple Basics to Powerful Invocations Rick Andrews, Office of the Actuary, CMS, Baltimore, MD
Paper BB-7 SAS Macro Dynamics - From Simple Basics to Powerful Invocations Rick Andrews, Office of the Actuary, CMS, Baltimore, MD ABSTRACT The SAS Macro Facility offers a mechanism for expanding and customizing
More informationINTRODUCTION TO SAS HOW SAS WORKS READING RAW DATA INTO SAS
TO SAS NEED FOR SAS WHO USES SAS WHAT IS SAS? OVERVIEW OF BASE SAS SOFTWARE DATA MANAGEMENT FACILITY STRUCTURE OF SAS DATASET SAS PROGRAM PROGRAMMING LANGUAGE ELEMENTS OF THE SAS LANGUAGE RULES FOR SAS
More informationJennifer Clegg and Carol Rigsbee, SAS Institute Inc., Cary, NC
OLE and the SAS System for Windows Release 6.12 Jennifer Clegg and Carol Rigsbee, SAS Institute Inc., Cary, NC ABSTRACT This paper describes the OLE support within the SAS System for Windows Release 6.12.
More informationUse SAS/AF, SCL and MACRO to Build User-friendly Applications on UNIX
Use SAS/AF, SCL and MACRO to Build User-friendly Applications on UNIX Minghui Yang, Ph.D, Boeing Logistics Market Research O. Introduction In the business application environment, many business analysts
More informationA Macro that can Search and Replace String in your SAS Programs
ABSTRACT MWSUG 2016 - Paper BB27 A Macro that can Search and Replace String in your SAS Programs Ting Sa, Cincinnati Children s Hospital Medical Center, Cincinnati, OH In this paper, a SAS macro is introduced
More informationLST in Comparison Sanket Kale, Parexel International Inc., Durham, NC Sajin Johnny, Parexel International Inc., Durham, NC
ABSTRACT PharmaSUG 2013 - Paper PO01 LST in Comparison Sanket Kale, Parexel International Inc., Durham, NC Sajin Johnny, Parexel International Inc., Durham, NC The need for producing error free programming
More informationYour Own SAS Macros Are as Powerful as You Are Ingenious
Paper CC166 Your Own SAS Macros Are as Powerful as You Are Ingenious Yinghua Shi, Department Of Treasury, Washington, DC ABSTRACT This article proposes, for user-written SAS macros, separate definitions
More informationUSING DATA TO SET MACRO PARAMETERS
USING DATA TO SET MACRO PARAMETERS UPDATE A PREVIOUS EXAMPLE %macro report(regs=); %let r=1; %let region=%scan(®s,&r); %do %until(®ion eq ); options nodate pageno=1; ods pdf file="®ion..pdf";
More informationA Useful Macro for Converting SAS Data sets into SAS Transport Files in Electronic Submissions
Paper FC07 A Useful Macro for Converting SAS Data sets into SAS Transport Files in Electronic Submissions Xingshu Zhu and Shuping Zhang Merck Research Laboratories, Merck & Co., Inc., Blue Bell, PA 19422
More informationChanges and Enhancements
ix Introduction This section describes the features of SAS Component Language that have been implemented or enhanced since Release 6.12. Information about changes and enhancements that were implemented
More informationChristopher Louden University of Texas Health Science Center at San Antonio
Christopher Louden University of Texas Health Science Center at San Antonio Overview of Macro Language Report Writing The REPORT procedure The Output Delivery System (ODS) Macro Examples Utility Macros
More informationUsing SAS/SCL to Create Flexible Programs... A Super-Sized Macro Ellen Michaliszyn, College of American Pathologists, Northfield, IL
Using SAS/SCL to Create Flexible Programs... A Super-Sized Macro Ellen Michaliszyn, College of American Pathologists, Northfield, IL ABSTRACT SAS is a powerful programming language. When you find yourself
More informationABSTRACT. Paper CC-031
Paper CC-031 Using Functions SYSFUNC and IFC to Conditionally Execute Statements in Open Code Ronald J. Fehd, Centers for Disease Control and Prevention, Atlanta, GA, USA ABSTRACT Audience Keywords Information
More informationTemplate Versatility Using SAS Macro Language to Generate Dynamic RTF Reports Patrick Leon, MPH
Versatility Using SAS Macro Language to Generate Dynamic RTF Reports Versatility Using SAS Macro Language to Generate Dynamic RTF Reports ABSTRACT SAS Macro Language can be used to enhance many report-generating
More informationSo Much Data, So Little Time: Splitting Datasets For More Efficient Run Times and Meeting FDA Submission Guidelines
Paper TT13 So Much Data, So Little Time: Splitting Datasets For More Efficient Run Times and Meeting FDA Submission Guidelines Anthony Harris, PPD, Wilmington, NC Robby Diseker, PPD, Wilmington, NC ABSTRACT
More informationUsing DDE with Microsoft Excel and SAS to Collect Data from Hundreds of Users
Using DDE with Microsoft Excel and SAS to Collect Data from Hundreds of Users Russell Denslow and Yan Li Sodexho Marriott Services, Orlando, FL ABSTRACT A process is demonstrated in this paper to automatically
More informationHow a Code-Checking Algorithm Can Prevent Errors
How a Code-Checking Algorithm Can Prevent Errors SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries.
More informationMISSOVER, TRUNCOVER, and PAD, OH MY!! or Making Sense of the INFILE and INPUT Statements. Randall Cates, MPH, Technical Training Specialist
MISSOVER, TRUNCOVER, and PAD, OH MY!! or Making Sense of the INFILE and INPUT Statements. Randall Cates, MPH, Technical Training Specialist ABSTRACT The SAS System has many powerful tools to store, analyze
More informationThe Proc Transpose Cookbook
ABSTRACT PharmaSUG 2017 - Paper TT13 The Proc Transpose Cookbook Douglas Zirbel, Wells Fargo and Co. Proc TRANSPOSE rearranges columns and rows of SAS datasets, but its documentation and behavior can be
More informationBIOMETRICS INFORMATION
BIOMETRICS INFORMATION (You re 95% likely to need this information) PAMPHLET NO. # 24 DATE: February 9, 1990 SUBJECT: Reading WATFILE files into SAS WATFILE is a useful package for data entry because it
More informationA Tool to Compare Different Data Transfers Jun Wang, FMD K&L, Inc., Nanjing, China
PharmaSUG China 2018 Paper 64 A Tool to Compare Different Data Transfers Jun Wang, FMD K&L, Inc., Nanjing, China ABSTRACT For an ongoing study, especially for middle-large size studies, regular or irregular
More informationIdentifying Duplicate Variables in a SAS Data Set
Paper 1654-2018 Identifying Duplicate Variables in a SAS Data Set Bruce Gilsen, Federal Reserve Board, Washington, DC ABSTRACT In the big data era, removing duplicate data from a data set can reduce disk
More informationGetting Up to Speed with PROC REPORT Kimberly LeBouton, K.J.L. Computing, Rossmoor, CA
SESUG 2012 Paper HW-01 Getting Up to Speed with PROC REPORT Kimberly LeBouton, K.J.L. Computing, Rossmoor, CA ABSTRACT Learning the basics of PROC REPORT can help the new SAS user avoid hours of headaches.
More informationGenerating a Detailed Table of Contents for Web-Served Output
Paper 089-29 Generating a Detailed Table of Contents for Web-Served Output Derek Morgan, Washington University Medical School, St. Louis, MO Steve Hoffner, Washington University Medical School, St. Louis,
More informationEpidemiology Principles of Biostatistics Chapter 3. Introduction to SAS. John Koval
Epidemiology 9509 Principles of Biostatistics Chapter 3 John Koval Department of Epidemiology and Biostatistics University of Western Ontario What we will do today We will learn to use use SAS to 1. read
More informationAn Introduction to SAS Macros
An Introduction to SAS Macros Expanded token SAS Program (Input Stack) SAS Wordscanner (Tokenization) Non-Macro (Tokens) SAS Compiler % and & Triggers Macro Facility Steven First, President 2997 Yarmouth
More informationPosters. Workarounds for SASWare Ballot Items Jack Hamilton, First Health, West Sacramento, California USA. Paper
Paper 223-25 Workarounds for SASWare Ballot Items Jack Hamilton, First Health, West Sacramento, California USA ABSTRACT As part of its effort to insure that SAS Software is useful to its users, SAS Institute
More informationMacro Architecture in Pictures Mark Tabladillo PhD, marktab Consulting, Atlanta, GA Associate Faculty, University of Phoenix
Paper PS16_05 Macro Architecture in Pictures Mark Tabladillo PhD, marktab Consulting, Atlanta, GA Associate Faculty, University of Phoenix ABSTRACT The qualities which SAS macros share with object-oriented
More informationUsing SAS software to fulfil an FDA request for database documentation
Using SAS software to fulfil an FDA request for database documentation Introduction Pantaleo Nacci, Adam Crisp Glaxo Wellcome R&D, UK Historically, a regulatory submission to seek approval for a new drug
More informationCHAPTER 7 Using Other SAS Software Products
77 CHAPTER 7 Using Other SAS Software Products Introduction 77 Using SAS DATA Step Features in SCL 78 Statements 78 Functions 79 Variables 79 Numeric Variables 79 Character Variables 79 Expressions 80
More informationUsing GSUBMIT command to customize the interface in SAS Xin Wang, Fountain Medical Technology Co., ltd, Nanjing, China
PharmaSUG China 2015 - Paper PO71 Using GSUBMIT command to customize the interface in SAS Xin Wang, Fountain Medical Technology Co., ltd, Nanjing, China One of the reasons that SAS is widely used as the
More informationTaming a Spreadsheet Importation Monster
SESUG 2013 Paper BtB-10 Taming a Spreadsheet Importation Monster Nat Wooding, J. Sargeant Reynolds Community College ABSTRACT As many programmers have learned to their chagrin, it can be easy to read Excel
More information2. Don t forget semicolons and RUN statements The two most common programming errors.
Randy s SAS hints March 7, 2013 1. Always begin your programs with internal documentation. * ***************** * Program =test1, Randy Ellis, March 8, 2013 ***************; 2. Don t forget semicolons and
More informationSAS CURRICULUM. BASE SAS Introduction
SAS CURRICULUM BASE SAS Introduction Data Warehousing Concepts What is a Data Warehouse? What is a Data Mart? What is the difference between Relational Databases and the Data in Data Warehouse (OLTP versus
More informationElectricity Forecasting Full Circle
Electricity Forecasting Full Circle o Database Creation o Libname Functionality with Excel o VBA Interfacing Allows analysts to develop procedural prototypes By: Kyle Carmichael Disclaimer The entire presentation
More informationPaper An Automated Reporting Macro to Create Cell Index An Enhanced Revisit. Shi-Tao Yeh, GlaxoSmithKline, King of Prussia, PA
ABSTRACT Paper 236-28 An Automated Reporting Macro to Create Cell Index An Enhanced Revisit When generating tables from SAS PROC TABULATE or PROC REPORT to summarize data, sometimes it is necessary to
More informationUsing a HASH Table to Reference Variables in an Array by Name. John Henry King, Hopper, Arkansas
PharmaSUG 2011 - Paper TT04 Using a HASH Table to Reference Variables in an Array by Name John Henry King, Hopper, Arkansas ABSTRACT Array elements are referenced by their index value using a constant,
More information\WSS95. Applications Development. Managing Longitudinal Panel Surveys Using Interactive Applications Created by SAS!Af and SASJFsp with SCL
Managing Longitudinal Panel Surveys Using Interactive Applications Created by SAS!Af and SASJFsp with SCL Miriam Cistemas, Technology Assessment Group, San Francisco, California ABSTRACT Social science
More informationBecause We Can: Using SAS System Tools to Help Our Less Fortunate Brethren John Cohen, Advanced Data Concepts, LLC, Newark, DE
SESUG 2015 CC145 Because We Can: Using SAS System Tools to Help Our Less Fortunate Brethren John Cohen, Advanced Data Concepts, LLC, Newark, DE ABSTRACT We may be called upon to provide data to developers
More informationData Tables: Highlighting Techniques Christopher A. Roper, Qualex Consulting Services, Inc.
Data Tables: Highlighting Techniques Christopher A. Roper, Qualex Consulting Services, Inc. Abstract Data tables are arguably one of the best looking widgets in SAS. This makes them a popular choice for
More informationAn Introduction to SAS/SHARE, By Example
Paper AD01 An Introduction to SAS/SHARE, By Example Larry Altmayer, U.S. Census Bureau, Washington, DC ABSTRACT SAS/SHARE software is a useful tool for allowing several users to access and edit the same
More informationEssential ODS Techniques for Creating Reports in PDF Patrick Thornton, SRI International, Menlo Park, CA
Thornton, S. P. (2006). Essential ODS techniques for creating reports in PDF. Paper presented at the Fourteenth Annual Western Users of the SAS Software Conference, Irvine, CA. Essential ODS Techniques
More informationAbstract. Background. Summary of method. Using SAS to determine file and space usage in UNIX. Title: Mike Montgomery [MIS Manager, MTN (South Africa)]
Title: Author: Using SAS to determine file and space usage in UNIX Mike Montgomery [MIS Manager, MTN (South Africa)] Abstract The paper will show tools developed to manage a proliferation of SAS files
More informationTLF Management Tools: SAS programs to help in managing large number of TLFs. Eduard Joseph Siquioco, PPD, Manila, Philippines
PharmaSUG China 2018 Paper AD-58 TLF Management Tools: SAS programs to help in managing large number of TLFs ABSTRACT Eduard Joseph Siquioco, PPD, Manila, Philippines Managing countless Tables, Listings,
More informationPaper AP14 Modifying The LogParse PassInfo Macro to Provide a Link between Product Usage in Rtrace Log and Time Used in Job Log
Paper AP14 Modifying The LogParse PassInfo Macro to Provide a Link between Product Usage in Rtrace Log and Time Used in Job Log Ronald J. Fehd, Centers for Disease Control and ention, Atlanta, GA, USA
More informationSD10 A SAS MACRO FOR PERFORMING BACKWARD SELECTION IN PROC SURVEYREG
Paper SD10 A SAS MACRO FOR PERFORMING BACKWARD SELECTION IN PROC SURVEYREG Qixuan Chen, University of Michigan, Ann Arbor, MI Brenda Gillespie, University of Michigan, Ann Arbor, MI ABSTRACT This paper
More informationPaper SE04 Dynamic SAS Programming Techniques, or How NOT to Create Job Security Steven Beakley and Suzanne McCoy
Introduction Paper SE04 Dynamic SAS Programming Techniques, or How NOT to Create Job Security Steven Beakley and Suzanne McCoy Many SAS programmers, particularly consultants, joke about creating job security
More informationDemystifying Inherited Programs
Demystifying Inherited Programs Have you ever inherited a program that leaves you scratching your head trying to figure it out? If you have not, chances are that some time in the future you will. While
More informationDeveloping Data-Driven SAS Programs Using Proc Contents
Developing Data-Driven SAS Programs Using Proc Contents Robert W. Graebner, Quintiles, Inc., Kansas City, MO ABSTRACT It is often desirable to write SAS programs that adapt to different data set structures
More informationTales from the Help Desk 6: Solutions to Common SAS Tasks
SESUG 2015 ABSTRACT Paper BB-72 Tales from the Help Desk 6: Solutions to Common SAS Tasks Bruce Gilsen, Federal Reserve Board, Washington, DC In 30 years as a SAS consultant at the Federal Reserve Board,
More informationA Macro to Keep Titles and Footnotes in One Place
CC25 ABSTRACT A Macro to Keep Titles and Footnotes in One Place John Morrill, Quintiles, Inc., Kansas City, MO A large project with titles and footnotes in each separate program can be cumbersome to maintain.
More informationUsing a Control Dataset to Manage Production Compiled Macro Library Curtis E. Reid, Bureau of Labor Statistics, Washington, DC
AP06 Using a Control Dataset to Manage Production Compiled Macro Library Curtis E. Reid, Bureau of Labor Statistics, Washington, DC ABSTRACT By default, SAS compiles and stores all macros into the WORK
More informationGoing Under the Hood: How Does the Macro Processor Really Work?
Going Under the Hood: How Does the Really Work? ABSTRACT Lisa Lyons, PPD, Inc Hamilton, NJ Did you ever wonder what really goes on behind the scenes of the macro processor, or how it works with other parts
More informationA Quick and Gentle Introduction to PROC SQL
ABSTRACT Paper B2B 9 A Quick and Gentle Introduction to PROC SQL Shane Rosanbalm, Rho, Inc. Sam Gillett, Rho, Inc. If you are afraid of SQL, it is most likely because you haven t been properly introduced.
More informationOpen Problem for SUAVe User Group Meeting, November 26, 2013 (UVic)
Open Problem for SUAVe User Group Meeting, November 26, 2013 (UVic) Background The data in a SAS dataset is organized into variables and observations, which equate to rows and columns. While the order
More informationA Generic Solution to Running the SAS System on the Web Without SAS/Intrnet David L. Ward, InterNext, Inc., Somerset, NJ
A Generic Solution to Running the SAS System on the Web Without SAS/Intrnet David L. Ward, InterNext, Inc., Somerset, NJ ABSTRACT Many organizations are not able to afford SAS/IntrNet but desperately need
More informationWorking the System: Our Best SAS Options Patrick Thornton, SRI International, Menlo Park, CA Iuliana Barbalau, Adecco, Pleasanton, CA
ABSTRACT Working the System: Our Best SAS Options Patrick Thornton, SRI International, Menlo Park, CA Iuliana Barbalau, Adecco, Pleasanton, CA This paper provides an overview of SAS system options, and
More information%Addval: A SAS Macro Which Completes the Cartesian Product of Dataset Observations for All Values of a Selected Set of Variables
%Addval: A SAS Macro Which Completes the Cartesian Product of Dataset Observations for All Values of a Selected Set of Variables Rich Schiefelbein, PRA International, Lenexa, KS ABSTRACT It is often useful
More informationSAS Data Integration Studio Take Control with Conditional & Looping Transformations
Paper 1179-2017 SAS Data Integration Studio Take Control with Conditional & Looping Transformations Harry Droogendyk, Stratia Consulting Inc. ABSTRACT SAS Data Integration Studio jobs are not always linear.
More informationSAS Drug Development Program Portability
PharmaSUG2011 Paper SAS-AD03 SAS Drug Development Program Portability Ben Bocchicchio, SAS Institute, Cary NC, US Nancy Cole, SAS Institute, Cary NC, US ABSTRACT A Roadmap showing how SAS code developed
More informationAutomated Checking Of Multiple Files Kathyayini Tappeta, Percept Pharma Services, Bridgewater, NJ
PharmaSUG 2015 - Paper QT41 Automated Checking Of Multiple Files Kathyayini Tappeta, Percept Pharma Services, Bridgewater, NJ ABSTRACT Most often clinical trial data analysis has tight deadlines with very
More informationThe REPORT Procedure CHAPTER 32
859 CHAPTER 32 The REPORT Procedure Overview 861 Types of Reports 861 A Sampling of Reports 861 Concepts 866 Laying Out a Report 866 Usage of Variables in a Report 867 Display Variables 867 Order Variables
More informationUsing PROC SQL to Calculate FIRSTOBS David C. Tabano, Kaiser Permanente, Denver, CO
Using PROC SQL to Calculate FIRSTOBS David C. Tabano, Kaiser Permanente, Denver, CO ABSTRACT The power of SAS programming can at times be greatly improved using PROC SQL statements for formatting and manipulating
More informationA Tutorial on the SAS Macro Language
HW152 SESUG 2015 A Tutorial on the SAS Macro Language John J. Cohen, Advanced Data Concepts LLC, Newark, DE ABSTRACT The SAS Macro language is another language that rests on top of regular SAS code. If
More informationThe Power of PROC SQL Techniques and SAS Dictionary Tables in Handling Data
Paper PO31 The Power of PROC SQL Techniques and SAS Dictionary Tables in Handling Data MaryAnne DePesquo Hope, Health Services Advisory Group, Phoenix, Arizona Fen Fen Li, Health Services Advisory Group,
More informationDriving to Better Credit Policies : The Risk Strategy Instrument Panel
Paper 30 Driving to Better Credit Policies : The Risk Strategy Instrument Panel Michael Davis, Bassett Consulting Services, North Haven, Connecticut Adam Terr, GE Capital Card Services, Stamford, Connecticut
More informationArmy Hearing Evaluation Automated Registry System (HEARS) Corporate Data Reporting System -- A Customized EIS Solution
Army Hearing Evaluation Automated Registry System (HEARS) Corporate Data Reporting System -- A Customized EIS Solution Krista Elspas, Troy Systems, Inc. -- Fort Detrick, Frederick, MD Julie Shadoan, Dept.
More information%SHOWCOMB: a macro to produce a data set with frequency of combinations of responses from multiple-response data
%SHOWCOMB: a macro to produce a data set with frequency of combinations of responses from multiple-response data Ronald Fehd, Centers for Disease Control, and Prevention, Atlanta GA ABSTRACT Multiple-response
More informationUsing PROC SQL to Generate Shift Tables More Efficiently
ABSTRACT SESUG Paper 218-2018 Using PROC SQL to Generate Shift Tables More Efficiently Jenna Cody, IQVIA Shift tables display the change in the frequency of subjects across specified categories from baseline
More informationUncommon Techniques for Common Variables
Paper 11863-2016 Uncommon Techniques for Common Variables Christopher J. Bost, MDRC, New York, NY ABSTRACT If a variable occurs in more than one data set being merged, the last value (from the variable
More informationCan I have the menu please?
Can I have the menu please? Renee Beekwilder - PW Consulting Introduction It is vital for users to work with a system that is easy to use and understand and that requires as little training as possible.
More information