Chapter Contents



Error Processing

Syntax Check Mode

If a DATA step has a syntax error, SAS can enter syntax check mode. SAS internally sets the OBS= option to 0 and the REPLACE/NOREPLACE option to NOREPLACE. When these options are in effect, SAS

Note:   Any data sets that are created after SAS has entered syntax check mode do not replace existing data sets with the same name.   [cautionend]

How Different Modes Process Errors

When SAS encounters most syntax or semantic errors, SAS underlines the point where it detects the error and identifies the error by number. If SAS encounters a syntax error when you run noninteractive SAS programs or batch jobs, it enters syntax check mode and remains in this mode until the program finishes executing.

When you run SAS in interactive line mode or in a windowing environment, syntax check mode is in effect only during the step where SAS encountered the error. When the system detects an error, it stops executing the current step and continues processing the next step.

Processing Multiple Errors

Depending on the type and severity of the error, the method you use to run SAS, and your operating environment, SAS either stops program processing or flags errors and continues processing. SAS continues to check individual statements in procedures after it finds certain kinds of errors. Thus, in some cases SAS can detect multiple errors in a single statement and may issue more error messages for a given situation, particularly if the statement containing the error creates an output SAS data set.

The following example illustrates a statement with two errors:

data temporary;

proc print data=temporary;
   var Item1 Item2 Item3;          

SAS Log: Multiple Program Errors
      cpu time            0.00 seconds
1  data temporary;
2     Item1=4;
3  run;
NOTE: The data set WORK.TEMPORARY has 1 observations and 1 
NOTE: DATA statement used:
      real time           0.10 seconds
      cpu time            0.01 seconds
5  proc print data=temporary;
ERROR: Variable ITEM2 not found.
ERROR: Variable ITEM3 not found.
6     var Item1 Item2 Item3;
7  run;
NOTE: The SAS System stopped processing this step because of 
      real time           0.53 seconds
      cpu time            0.01 seconds

SAS displays two error messages, one for the variable Item2 and one for the variable Item3.

When running debugged production programs that are unlikely to encounter errors, you may want to force SAS to abend after a single error occurs. You can use the ERRORABEND system option to do this.

Using System Options to Debug a Program

You can use the following system options to control error handling (resolve errors) in your program:

BYERR controls whether SAS generates an error message and sets the error flag when a _NULL_ data set is used in the SORT procedure.
DKRICOND= controls the level of error detection for input data sets during the processing of DROP=, KEEP=, and RENAME= data set options.
DKROCOND= controls the level of error detection for output data sets during the processing of DROP=, KEEP=, and RENAME= data set options and the corresponding DATA step statements.
DSNFERR controls how SAS responds when a SAS data set is not found.
ERRORABEND specifies how SAS responds to errors.
ERRORCHECK= controls error handling in batch processing.
ERRORS= controls the maximum number of observations for which complete error messages are printed.
FMTERR determines whether SAS generates an error message when a format of a variable cannot be found.
INVALIDDATA= specifies the value that SAS assigns to a variable when invalid numeric data is encountered.
MERROR controls whether SAS issues a warning message when a macro-like name does not match a macro keyword.
SERROR controls whether SAS issues a warning message when a defined macro variable reference does not match a macro variable.
VNFERR controls how SAS responds when a _NULL_ data set is used.

For more information, see "SAS System Options" in SAS Language Reference: Dictionary.

Using Return Codes

In some operating environments SAS passes a return code to the system, but accessing return codes is specific to your operating environment.

Operating Environment Information:   For more information about return codes, see the SAS documentation for your operating environment.   [cautionend]

Other Error Checking Options

To help determine your programming errors, you can use:

Chapter Contents



Top of Page

Copyright 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.