8.5 - Variable Not Found
8.5 - Variable Not FoundThis section illustrates the kinds of messages you might see in the log window when you have misspecified a variable name somewhere in your program.
Example 8.9
The following example illustrates the "Note: Variable is uninitialized" and "Error: Variable not found" messages SAS displays in the log window to warn you of such problems:
OPTIONS PS = 58 LS = 72 NODATE NONUMBER;
DATA trees;
input type $ 1-16 circ_in hght_ft crown_ft;
volume = (0.319*hght)*(0.0000163*circ_in**2);
DATALINES;
oak, black 222 105 112
hemlock, eastern 149 138 52
ash, white 258 80 70
cherry, black 187 91 75
maple, red 210 99 74
elm, american 229 127 104
;
RUN;
PROC PRINT data = trees;
var type height circ_in volume;
RUN;
OPTIONS PS = 58 LS = 72 NODATE NONUMBER;
DATA trees;
input type $ 1-16 circ_in hght_ft crown_ft;
volume = (0.319*hght)*(0.0000163*circ_in**2);
DATALINES;
NOTE: Variable hght 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).
6 at 20:20
NOTE: The data set WORK.TREES has 6 observations and 6 variables.
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
;
RUN;
PROC PRINT data = trees;
var type height circ_in volume;
ERROR: Variable HEIGHT not found.
RUN;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
First, note that there are two places in which a variable name was misspecified in this program. In the calculation of volume in the DATA step, the height of the tree is referred to as hght rather than hght_ft in which the heights were actually stored. And, in the PRINT procedure, the height of the tree is referred to as height. Well, okay, so the programmer, is a little confused! Launch and run the SAS program, and review the log window to see the two messages that SAS displays in this situation.
Common ways to "lose" variables include:
- misspelling a variable name
- using a variable that was dropped from the data set at some earlier time
- using the wrong data set
- committing a logic error, such as using a variable before it is created
If the source of the problem is not immediately obvious, submitting a CONTENTS procedure can often help you sniff out the problem. As you may recall from an earlier lesson, the CONTENTS procedure provides, among other things, the names of the variables contained in a SAS data set.