Tuesday, June 21, 2016

SAS: option varinitchk



One thing I like about Java is that it is a tightly-typed language. In other words, every variable must be declared with a name and a type before using.

I wish SAS was tightly typed.  How many times have we been burned by “variable is uninitialized” (which all too often means you were simply inconsistent in your spelling.)

Frustrated by my most recent error with time zones, I went looking for some way to prevent that from happening again.

I found option varinitchk, which allows you to specify how the “uninitialized” error should be handled.  There are four settings: nonote, note, warn, and error.

It may be old to some, but it is new to me.  In the future, I will be using option varinitchk=error in all of my programs.  Personal choice.

Here’s some source code to demonstrate:

* demo option varinitchk ;

options varinitchk=note;  * the default ;
data work.step1;
b = a + 1;
run;

options varinitchk=warn;
data work.step2;
b = a + 1;
run;

options varinitchk=error;
data work.step3;
b = a + 1;
run;


And here’s the log:

1    * demo option varinitchk ;
2
3    options varinitchk=note;  * the default ;
4    data work.step1;
5    b = a + 1;
6    run;

NOTE: Variable a is uninitialized.
NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      1 at 5:7
NOTE: The data set WORK.STEP1 has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.05 seconds
      cpu time            0.04 seconds


7
8    options varinitchk=warn;
9    data work.step2;
10   b = a + 1;
11   run;

WARNING: Variable a is uninitialized.
NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      1 at 10:7
NOTE: The data set WORK.STEP2 has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds


12
13   options varinitchk=error;
14   data work.step3;
15   b = a + 1;
16   run;

ERROR: Variable a is uninitialized.
NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.STEP3 may be incomplete.  When this step was stopped there were 0
         observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds



No comments:

Post a Comment