Marco,

The easy answer is no.  This would require the compiler to establish all
possible paths through a program and determine whether it was possible to
arrive at any place that uses a variable without setting it first.  Although
some compilers (many C compilers for example) make a good attempt at this,
there are always cases that cannot be resolved.

As a very simple example, consider the following:

BEGIN CASE
   CASE A = 1
       B = 'Apple'
   CASE A = 2
       B = 'Orange'
   CASE A= 3
       B = 'Banana'
END CASE
DISPLAY B

Clearly, if A is not 1, 2 or 3 B will not be assigned when we get to the
DISPLAY statement.  But, the compiler cannot treat this as an error/warning
because the author of the program may know that A can only have these
values. We do not want to have to set variables explicitly for cases that
cannot happen.

Incidentally, I find the worryingly common practice of setting all variables
to zero / null at the top of a program very annoying as it hides the very
useful unassigned variable trap, leaving you thinking your program works
when actually it doesn't  I am told that a UV user somewhere has asked for
this trap to be optional.  I wouldn't like to try to support their code!

Martin Phillips
Ladybridge Systems
17b Coldstream Lane, Hardingstone, Northampton NN4 6DB
+44-(0)1604-709200

----- Original Message ----- 
From: "Marco Manyevere" <[EMAIL PROTECTED]>
Subject: [UV] Variable never assigned a value warning


> Hi All,
>
> Is it technically or theoretically possible for the BASIC compiler (or any
other compiler for that matter) to catch (during compilation) all the
situations that might result in the use of unassigned variable at runtime
within the scope of the subroutine being compiled? Under what circumstances
does the compiler catch or fail to catch such situations?

-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users

Reply via email to