Ed,
Vartype() will handle a non-existent memvar with U, but vartype() will choke if you try and go down to nonexistent contained objects.
clear all
? vartype( y ) && U
? vartype( y.one ) && choke on "table" y
? vartype( y.one.two ) && choke on object y
>If the variable doesn't exist, VATYPE() smokes with a
Variable "whatever" not found, so if the variable might not exist, or might be out of scope, TYPE() is still preferable.