|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.
|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; Item1=4; run; proc print data=temporary; var Item1 Item2 Item3; run;
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 variables. NOTE: DATA statement used: real time 0.10 seconds cpu time 0.01 seconds 4 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 errors. NOTE: PROCEDURE PRINT used: 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:
Operating Environment Information:For more information about return codes, see the SAS documentation for your operating environment.
|Other Error Checking Options|
To help determine your programming errors, you can use:
|MSGLEVEL=||controls the level of detail in messages that are written to the SAS log.|
|PRINTMSGLIST||controls the printing of extended lists of messages to the SAS log.|
|SOURCE||controls whether SAS writes source statements to the SAS log.|
|SOURCE2||controls whether SAS writes source statements included by %INCLUDE to the SAS log.|
Top of Page
Copyright 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.