Error Handling
Last Updated : 29 June, 2004
Center of Excellence
Data Warehousing
Error Handling
Identify and resolve programming logic error
Recognize and correct syntax errors
Examine and resolve data errors
Error Handling
SAS performs error processing during both the
compilation and the execution phases of SAS processing.
Debug SAS programs by understanding processing
messages in the SAS log and then fixing your code.
Use the DATA Step Debugger to detect logic errors in a
DATA step during execution.
Error Handling
Error occurs when ... detected at ...
syntax programming statements do not conform to the compile time
rules of the SAS language
semantic the language element is correct, but the element may compile time
not be valid for a particular usage
execution- SAS attempts to execute a program and execution execution time
time fails
data data values are invalid execution time
Error Handling
Syntax errors occur when program statements do not conform to
the rules of the SAS language. Examples of syntax errors include
misspelling a SAS keyword
using unmatched quotation marks
forgetting a semicolon
specifying an invalid statement option
specifying an invalid data set option.
Example:The DATA statement is misspelled, and SAS prints a warning
message to the log. Because SAS could interpret the misspelled word, the
program runs and produces output.
date temp;
x=1;
run;
Error Handling
SAS Log: Syntax Error (misspelled key word)
date temp;
14WARNING 14-169: Assuming the symbol DATA was misspelled
as date.
x=1;
3 run;
NOTE: The data set WORK.TEMP has 1 observations and 1
variables.
NOTE: DATA statement used: real time 0.17 seconds
cpu time 0.04 seconds
Error Handling
when you fail to end a SAS statement with a semicolon.
1 data temp
x=1;
76
ERROR 76-322: Syntax error, statement will be ignored.
run;
NOTE: The SAS System stopped processing this step
because of errors.
NOTE: DATA statement used: real time 0.11 seconds
cpu time 0.02 seconds
Error Handling
Semantic errors occur when the form of the elements in a SAS
statement is correct, but the elements are not valid for that usage.
Semantic errors are detected at compile time
specifying the wrong number of arguments for a function
using a numeric variable name where only a character variable is valid
using illegal references to an array.
data test;
set somelib.old;
run;
data test;
ERROR: Libname SOMELIB is not assigned.
set somelib.old;
run;
Error Handling
Execution-time errors occur when SAS executes a program that contains data
values. Most execution-time errors produce warning messages or notes in the
SAS log but allow the program to continue executing. The location of an
execution-time error is usually given as line and column numbers in a note or
error message.
illegal arguments to functions
illegal mathematical operations (for example, division by 0)
observations in the wrong order for BY-group processing
reference to a nonexistent member of an array (occurs when the array's subscript is
out of range)
open and close errors on SAS data sets and other files in INFILE and FILE
statements
INPUT statements that do not match the data lines (for example, an INPUT
statement in which you list the wrong columns for a variable or fail to indicate that
the variable is a character variable).
An execution-time error can also occur when you encounter an out-of-resources
condition, such as a full disk, or insufficient memory for a SAS procedure to
complete.
Error Handling
data inventory;
input Item $ 1-14 TotalCost 15-20 UnitsOnHand 21-23;
UnitCost=TotalCost/UnitsOnHand;
datalines;
Hammers 440 55
Nylon cord 35 0
Ceiling fans 1155 30
;
run;
NOTE: Division by zero detected at line 12 column 22.
RULE:----+----1----+----2----+----3----+----4----+----5----+----10 Nylon cord 35
0Item=Nylon cord TotalCost=35 UnitsOnHand=0 UnitCost=.
_ERROR_=1_N_=2
NOTE: Mathematical operations could not be performed at the following
places. The results of the operations have been set to missing values. Each
place is given by: (Number of times) at (Line):(Column). 1 at 12:22
NOTE: The data set WORK.INVENTORY has 3 observations and 4 variables.
Error Handling
Data errors occur when some data values are not appropriate for the SAS
statements that you have specified in the program.
For example, if you define a variable as numeric, but the data value is actually
character, SAS generates a data error. SAS detects data errors during
program execution and continues to execute the program, and does the
following:
writes an invalid data note to the SAS log.
prints the input line and column numbers that contain the invalid value in the SAS
log. Unprintable characters appear in hexadecimal. To help determine column
numbers, SAS prints a rule line above the input line.
prints the observation under the rule line.
sets the automatic variable _ERROR_ to 1 for the current observation.
Error handling
data age;
input Name $ Number;
datalines;
Sue 35
Joe xx
Steve 22;
;
run;
NOTE: Invalid data for Number in line 61 5-6.
RULE:----+----1----+----2----+----3----+----4----+----5----+----
8 Joe xx
Name=Joe Number=. _ERROR_=1 _N_=2
NOTE: The data set WORK.AGE has 3 observations and 2 variables.
Error Handling
A logic error occurs when the program statements
follow the rules, but the results are not correct.
The PUT Statement
If you do not specify a FILE statement, the PUT
statement writes information to the log. This is useful to
determine
which piece of code is executing
which piece of code is not executing
the current value of a particular variable
the current values of all variables.
Error Handling
General Forms of the PUT Statement
PUT
PUT 'text';
'text';
writes the text string literal.
Example:
put 'I am here.';
writes I am here. to the log.
Error Handling
General Forms of the PUT Statement
PUT
PUTvariable-name=;
variable-name=;
writes the name of the variable followed by an equal sign and the
value.
Example:
If the value of the variable Var is 5, the statement
put Var=;
writes Var=5 to the log.
Error Handling
General Forms of the PUT Statement
PUT
PUT variable-name
variable-nameformat-name.;
format-name.;
writes the variable value with the indicated format.
Example:
If the value of the variable ChVar is THIS with a leading space, the
statement
put ChVar $quote20.;
writes “ THIS” to the log.
Error Handling
General Forms of the PUT Statement
PUT
PUT_ALL_;
_ALL_;
writes the name of each variable in the PDV followed by an equal sign
and the value of the variable.
Error Handling
Determining Logic Errors
Use the DEBUG option in the DATA statement to help identify
logic problems.
The DEBUG option is an interactive interface to the DATA
step during DATA step execution. This option is useful to
determine
which piece of code is executing
which piece of code is not executing
the current value of a particular variable
when the value of a variable changes.
General form of the DEBUG option:
DATA
DATAdata-set-name
data-set-name // DEBUG;
DEBUG;
Error Handling
DEBUG Commands
Common commands used with the DEBUG option.
Command Abbreviation Action
STEP ENTER key Steps through a program
one statement at a time.
EXAMINE E variable(s) Displays the value of the
variable.
WATCH W variable(s) Suspends execution when
the value of the variable
changes.
LIST WATCH L W List variables that are
watched.
QUIT Q Halts execution of the DATA
step.
Questions