You are on page 1of 12

SAS Interview Questions and Answers 1.

What SAS statements would you code to read an external raw data file to a DATA step? 2. How do you read in the variables that you need? 3. Are you familiar with special input delimiters? How are they used? 4. If reading a variable length file with fixed input, how would you prevent SAS from reading the next record if the last variable didnt have a value? 5. What is the difference between an informat and a format? Name three informats or formats. 6. Name and describe three SAS functions that you have used, if any? 7. How would you code the criteria to restrict the output to be produced? 8. What is the purpose of the trailing @? The @@? How would you use them? 9. Under what circumstances would you code a SELECT construct instead of IF statements? 10. What statement do you code to tell SAS that it is to write to an external file? What statement do you code to write the record to the file? 11. If reading an external file to produce an external file, what is the shortcut to write that record without coding every single variable on the record? 12. If youre not wanting any SAS output from a data step, how would you code the data statement to prevent SAS from producing a set? 13. What is the one statement to set the criteria of data that can be coded in any step? 14. Have you ever linked SAS code? If so, describe the link and any required statements used to either process the code or the step itself. 15. How would you include common or reuse code to be processed along with your statements? 16. When looking for data contained in a character string of 150 bytes, which function is the best to locate that data: scan, index, or indexc?

17. If you have a data set that contains 100 variables, but you need only five of those, what is the code to force SAS to use only those variable? 18. Code a PROC SORT on a data set containing State, District and County as the primary variables, along with several numeric variables. 19. How would you delete duplicate observations? 20. How would you delete observations with duplicate keys? 21. How would you code a merge that will keep only the observations that have matches from both sets. 22. How would you code a merge that will write the matches of both to one data set, the non-matches from the left-most data set to a second data set, and the non-matches of the right-most data set to a third data set. 23. What is the Program Data Vector (PDV)? What are its functions? 24. Does SAS Translate (compile) or does it Interpret? Explain. 25. At compile time when a SAS data set is read, what items are created? 26. Name statements that are recognized at compile time only? 27. Identify statements whose placement in the DATA step is critical. 28. Name statements that function at both compile and execution time. 29. Name statements that are execution only. 30. In the flow of DATA step processing, what is the first action in a typical DATA Step? 31. What is _n_?

Important SAS Interview Questions What has been your most common programming mistake? What is your favorite programming language and why?

What is your favorite operating system? Why? Do you observe any coding standards? What is your opinion of them? What percent of your program code is usually original and what percent copied and modified? Have you ever had to follow SOPs or programming guidelines? Which is worse: not testing your programs or not commenting your programs? Name several ways to achieve efficiency in your program. Explain trade-offs. What other SAS products have you used and consider yourself proficient in using? How do you make use of functions? When looking for contained in a character string of 150 bytes, which function is the best to locate that data: scan, index, or indexc? What is the significance of the OF in X=SUM(OF a1-a4, a6, a9);? What do the PUT and INPUT functions do? Which date function advances a date, time or date/time value by a given interval? What do the MOD and INT function do? How might you use MOD and INT on numerics to mimic SUBSTR on character strings? In ARRAY processing, what does the DIM function do? How would you determine the number of missing or nonmissing values in computations? What is the difference between: x=a+b+c+d; and x=SUM(a,b,c,d);? There is a field containing a date. It needs to be displayed in the format ddmonyy if its before 1975, dd mon ccyy if its after 1985, and as Disco Years if its between 1975 and 1985. How would you accomplish this in data step code? Using only PROC FORMAT. In the following DATA step, what is needed for fraction to print to the log? data _null_; x=1/3; if x=.3333 then put fraction; run; What is the difference between calculating the mean using the mean function and PROC MEANS? Have you ever used Proc Merge? (be prepared for surprising answers..) If you were given several SAS data sets you were unfamiliar with, how would you find out

the variable names and formats of each dataset? What SAS PROCs have you used and consider yourself proficient in using? How would you keep SAS from overlaying the a SAS set with its sorted version? In PROC PRINT, can you print only variables that begin with the letter A? What are some differences between PROC SUMMARY and PROC MEANS? Code the tables statement for a single-level (most common) frequency. Code the tables statement to produce a multi-level frequency. Name the option to produce a frequency line items rather that a table. Produce output from a frequency. Restrict the printing of the table. Code a PROC MEANS that shows both summed and averaged output of the data. Code the option that will allow MEANS to include missing numeric data to be included in the report. Code the MEANS to produce output to be used later. Do you use PROC REPORT or PROC TABULATE? Which do you prefer? Explain. What happens in a one-on-one merge? When would you use one? How would you combine 3 or more tables with different structures? What is a problem with merging two data sets that have variables with the same name but different data? When would you choose to MERGE two data sets together and when would you SET two data sets? Which data set is the controlling data set in the MERGE statement? How do the IN= variables improve the capability of a MERGE? Explain the message MERGE HAS ONE OR MORE DATASETS WITH REPEATS OF BY VARIABLES. How would you generate 1000 observations from a normal distribution with a mean of 50 and standard deviation of 20. How would you use PROC CHART to look at the distribution? Describe the shape of the distribution. How do you generate random samples?

What is the purpose of the statement DATA _NULL_ ;? What is the pound sign used for in the DATA _NULL_? What would you use the trailing @ sign for? For what purpose(s) would you use the RETURN statement? How would you determine how far down on a page you have printed in order to print out footnotes? What is the purpose of using the N=PS option? What system options would you use to help debug a macro? Describe how you would create a macro variable. How do you identify a macro variable? How do you define the end of a macro? How do you assign a macro variable to a SAS variable? For what purposes have you used SAS macros? What is the difference between %LOCAL and %GLOBAL? How long can a macro variable be? A token? If you use a SYMPUT in a DATA step, when and where can you use the macro variable? What do you code to create a macro? End one? Describe how you would pass data to a macro. You have five data sets that need to be processed identically; how would you simplify that processing with a macro? How would you code a macro statement to produce information on the SAS log? This statement can be coded anywhere. How do you add a number to a macro variable? If you need the value of a variable rather than the variable itself, what would you use to load the value to a macro variable? Can you execute a macro within a macro? Describe. Can you a macro within another macro? If so, how would SAS know where the current macro ended and the new one began?

How are parameters passed to a macro?

Learn SAS Programming How to determine the executing program name and path programatically: Oftentimes, I was asked to keep the name and path of the executing program in the FOOTNOTE of the generated table or listings.I have always created a macro variable using the %let statement and, then I called the Macro variable in the footnote statement to get the name of the program. Eventhough it is simple.. it may not be suitable when we write application which need to self document... Read more at: http://studysas.blogspot.com/2009/04/how-to-determine-executing-programname.html ________________________________________________________________________________ How to check if a variable exist or not: In SAS sometimes, we need to check whether the variable is exist in the dataset or not, we usually run the proc contents program and physically check if the variable exist in the dataset or not.If we want to check it programmatically, then use the following code.... Read more at: http://studysas.blogspot.com/2009/04/how-to-check-if-variable-exists-in-sas.html _________________________________________________________________________________ How to check if the File is exist or not in SAS: Guys Let me try explaining how to check if the file exist in the library or directory using SAS.Here I am writing a macro to check if the file exist in the directory or not.Here is the way to check it http://studysas.blogspot.com/2009/04/how-to-check-if-file-is-exist-or-not-in.html _________________________________________________________________________________ SAS programming errors we make..... can be deadly sometimes The errors I will list here will be very few in number. They are errors that you will likely make at some time if you do not remain alert. These errors could have serious consequences so that is why I have described them as "deadly errors". Read more at: http://studysas.blogspot.com/2009/03/sas-programming-errors-we-made-canbe.html _________________________________________________________________________________ Proc Sort NODUP vs NODUPKEY Somany times people from my orkut community asked me what is the real difference between the Proc sort Dodup and the Proc Sort nodupkey. I always wanted to answer the question in a better way. and folkes here is the answer ..... A common interview question for SAS jobs is "What is the

difference between proc sort nodup and proc sort nodupkey?". The answer the interviewer is expecting is usually "proc sort nodup gets rid of duplicate records with the same sort key but proc sort nodupkey gets rid of other records with the same sort key". However, this is not correct. Read more at: http://studysas.blogspot.com/2009/03/proc-sort-nodup-vs-nodupkey.html __________________________________________________________________________________ _ PROC TRANSPOSE: How to Convert Variables(columns) into Observations(ROWS) and Observations(ROWS) into Variables(Columns) During my early days as a SAS programmer, I get confused very easily with PROC TRANSPOSE. I mean, I get confused with what are the variables that I need to include in BY statement and ID statement as well as in VAR statement. Read more at:http://studysas.blogspot.com/2009/03/proc-transpose-how-to-convert.html __________________________________________________________________________________ Displaying the Graphs (Bar charts) using PROC GCHART in SAS Displaying the Graphs (Bar charts) using PROC GCHART in SAS :Just a day ago, I have received a question on Graphs in my orkut community, which prompted me to create following examples.Below are 5 different types of Graphs were produced (including 3d graphs) using Proc Gchart. Read more at: http://studysas.blogspot.com/2009/03/displaying-graphs-bar-charts-using-proc.html __________________________________________________________________________________ Change all missing values of all variables into zeros/putting zeros in place of missing values for variables I always wondered how do I convert missing values for all the variables into zeros and In this example the I have used array to do the same. The variable list includes ID and Score1 to score6.Using simple array method we can change all the missing value for the variables score1 to score6 to 0. Read more at:http://studysas.blogspot.com/2009/03/change-all-missing-values-of-all.html __________________________________________________________________________________ How to Save LOG file in the required location: Here is the simple code which allows us to save the log file in the required location. Use Proc printto procedure to save or print the log file. filename dsn C:\Documents and Settings\zzzzzzzzzzzz\Desktop\LOGfile.lst' Read more at:http://studysas.blogspot.com/2009/03/how-to-save-log-file-or-what-is-proc.html __________________________________________________________________________________

__ Calculating group totals and the counts within each group Sample 25217: Calculating group totals and the counts within each group This example uses the SUM() function to sum the AMOUNT column, creating a new column named GRPTOTAL with a COMMA10. format. The COUNT() function counts the number of occurrences of STATE within each group. The GROUP BY clause collapses multiple rows for each group into one row per group, containing STATE, GRPTOTAL and the COUNT. Read more at: http://studysas.blogspot.com/2009/03/calculating-group-totals-and-counts.html __________________________________________________________________________________ __ How to customize page numbers in RTF output In SAS 9.1, are there easier ways to customize page numbers in RTF output? Yes, beginning with SAS 9.1, page numbers can be customized in the RTF destination by using an escape character and the {thispage} function, {lastpage} function, {pageof} function, or all three: Read more at: http://studysas.blogspot.com/2009/03/how-to-customize-page-numbers-in-rtf.html __________________________________________________________________________________ __ How to calculate number of years and number of days between 2 dates; How to calculate number of years and number of days between 2 dates;Exploring the yrdif and datdif functions in SAS as well as INTCK function:There are several ways to calculate the number of years between two dates and out of all the methods, YRDIF function results the most accurate value. Read more at: http://studysas.blogspot.com/2009/03/how-to-calculate-number-of-years-and.html __________________________________________________________________________________ __ How to create a comma separated file (.csv) of a SAS dataset? IN SAS programming, we often require outputting the dataset in different formats like EXCEL and CSV etc and here are the five different ways to export the SAS dataset into .csv file. Read more at: http://studysas.blogspot.com/2009/02/how-to-create-comma-separated-filecsv.html __________________________________________________________________________________ __ How to Import Excel files into SAS Microsoft Excel spreadsheets can be read from SAS in several ways. Two of these will be

demonstrated here. First, PROC IMPORT allows direct access to Excel files through SAS/Access to PC File Formats or access to Comma-Separated (CSV) files through Base SAS. The second method uses the Excel LIBNAME engine. Read more at: http://studysas.blogspot.com/2009/02/how-to-import-excel-files-into-sas.html __________________________________________________________________________________ How to store a number more than 8 digits for a numeric variables Q&A: numeric variables length more than 8? We all know that the default length of the numeric variables in SAS is 8 and if suppose I want to store a number lets say (12345678910, which has a length 11 to numeric variable) to variable total, what should I do? Read more at: http://studysas.blogspot.com/2009/02/how-to-store-number-more-than-8digits.html __________________________________________________________________________________ _ Options VALIDVARNAME=UPCASE VALIDVARNAME= V7 UPCASE ANYVALIDVARNAME= option is generally used in SAS whenever we want to control the SAS variable names in the dataset. Read more at: http://studysas.blogspot.com/2009/02/options-validvarnameupcase.html __________________________________________________________________________________ _ How to merge data sets with a common variable? Here is the simple way of merging the data sets with a common variable if the datasets has the same prefix name.For example: col1-col10, dsn1-dsn 7 , or data1 to data10 with common variable of ID.Considering we have 10 datsets and all of them having the same prefix data; Read more at: http://studysas.blogspot.com/2009/02/merging-data-sets-with-commonvariable.html __________________________________________________________________________________ ___ Merging the data sets with a common variable if the datasets has the same prefix name? For example: col1-col10 dsn1-dsn 7 data1 to data6 with common variable of Usubjid.here is the example, I have 7 datasets i need to merge and each of them having the common variable(usubjid) to merge, and all the datasets having the same prefix dsn(dsn1 to dsn7). Read more at: http://studysas.blogspot.com/2009/02/merging-data-sets-using-macro-code.html __________________________________________________________________________________

___ when to use &,&&,and &&&,how do we distinguish(Multiple Ampersands) and Diff. Between single dot and double dots in macros Here are the 2 important questions always comes up in our minds,(& vs && vs &&& and single dot and double dots) when we are dealing with macros for the first time and here are the answers for them.I did find a very good regarding the above topics in the one of the SAS forums and IAN WHITLOCK explained it very clear. Read more at: http://studysas.blogspot.com/2009/02/3when-to-use-do-we-distinguishmultiple.html __________________________________________________________________________________ ___ How can I count number of observations per subject in a data set? We always have this question in mind, while we do the SAS programming and here is the simple answer for that, we just need to use SUM statement and the FIRST.variable in the SET statement and then the RETAIN statement to calculate the observations count per subject. Read more at: http://studysas.blogspot.com/2009/02/how-can-i-count-number-ofobservations.html __________________________________________________________________________________ ___ How to remove the duplicate observations in the dataset using PROC SQL, DATASTEP/PROC SQL/or PROC SORT etc? Before using a particular step to remove the duplicate observations, we should understand that the duplicate observations are pertaining to the key variables like usubjid, treatment, patientno. etc, which are unique or exact duplicates( 2 or more observations has the duplicates with respect to all the variables in the dataset).If the observations are exact duplicates with respect to all the variables in the dataset, we can remove the exact duplicates by: Read more at: http://studysas.blogspot.com/2009/02/how-to-remove-duplicate-observations.html __________________________________________________________________________________ ___ How to scan more than 20 records to determine variable attributes in EFI: In Versions 7 and 8 of the SAS System, by default the Import Wizard, PROC IMPORT and the External File Interface (EFI) scan 20 records to determine variable attributes when reading delimited text files.Changing the default setting can only be done for EFI in Version 7, Release 8 and Release 8.1. Beginning in Release 8.2 changing the default setting is applicable to the Import Wizard, PROC IMPORT and EFI. Read more at: http://studysas.blogspot.com/2009/02/how-to-scan-more-than-20-records-to.html

__________________________________________________________________________________ ___ SAS Sample Programs: SAS sample code programs: Macro for sorting the variables: How to convert character date values into numeric date values using DATASTEP/PROC SQL and ARRAYS: How to detect missing values using Arrays: First. & Last. Variables: How to determine the last observation in the dataset: How to determine whether a numeric or character value exists within a group of variables: Lag Function: How to obtain information from the previous observation: How to create a new dataset from multiple datasets based on the sorted order: Dynamically generate SET statement to combine multiple datasets: How to determine which dataset contributed an observation: How to determine if a variable exists in a dataset or not: How to Read Delimited Text Files into SAS: How to keep only even number observations in the dataset: How to verify the existence of an external file: Accurately calculating age in one line code: How to use INDEX/INDEXC functions: Finding the number of observations in the dataset: How to capitalize first letter of the every word:/ PROPCASE FUNCTION: How to use the SCAN function: Concatenation functions in SAS 9.0: SOUNDEX Function: IFC and IFN functions:new IF functions & IF-THEN-ELSE vs SELECT: How to remove the duplicate observations from the dataset using PROC SQL, DATASTEP/PROC SQL/or PROC SORT approaches ? How can I count number of observations per subject in a data set? How to save the log file or what is PROC PRINTTO procedure How to calculate number of years and number of days between 2 dates; How to customize page numbers in RTF output How to create a comma separated file (.csv) of a SAS dataset? Change all missing values of all variables into zeros/putting zeros in place of missing values for variables ____________________________________________________________________ Base SAS Certification Summary---Functions: SAS Functions can be used to convert data and to manipulate the values of character variables. Functions are written by specifying the function name, then it's arguments in parentheses. Arguments can include variables, constants, or expressions. Although arguments are typically separated by commas, they can also be specified as variable lists or arrays. Read more at: http://studysas.blogspot.com/2009/01/base-sas-certification-summary.html __________________________________________________________________________________ __ SAS Certification Assignments

[hide]1 Session 1 1.1 exercise 1 1.2 exercise 2 1.3 exercise 3 1.4 exercise 4 1.5 exercise 5 1.6 exercise 6 2 Session 22.1 exercise 1 Read more at: http://studysas.blogspot.com/2008/11/sas-certification-assignments.html _____________________________________________________________________________ HOW TO CREATE A SAS TRANSPORT(XPT) FILE Read more at: http://studysas.blogspot.com/2008/12/how-to-create-transport-file.html ______________________________________________________________________ How to Debug the SAS code: Question:I have a huge SAS program that isn't working. The results I get are not right but there are no errors or warnings in the SAS log. How can I figure out where I went wrong? Read more at: http://studysas.blogspot.com/2008/11/how-to-debug-sas-code.html