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