Omnis Technical Note TNDM0004

NULLs in expressions and Omnis

For Omnis Studio
By Omnis Technical Support

Sometimes NULLs can seem to cause a problem. For example, if you execute the following code:

If X=10 or Y=10
   OK message
END IF


and either value is 10 but the other one is NULL, then the result will always be false. This may seem to be an Omnis problem initially but it is not so. Why isn't this a bug?

The Omnis rule is straightforward, if any term of an expression is NULL the whole expression evaluates to NULL. For NULL read 'undefined', so the logic is that once part of something is undefined the whole is undefined. Clearly it is possible to argue about expressions involving ORs and it is certain that over the years standards committees have spent much time doing just that (discussion here would probably involve the role and concept of NULLs in formal database theory). But the beauty of the Omnis approach is its simplicity, it is easy to understand and all the developer has to do is make sure whenever a NULL can occur in an expression it is handled properly.

NULLs can be a nuisance and, in the opinion of some, have almost no redeeming features. However, developers have to choose whether they have advantages that outweigh their disadvantages. The NULL rule in Omnis is simple and therefore both easy to adhere to and work with.