Dennis,


What Build of R:BASE 6.5++ you or your client is using?

I got the following results using your example below:

-0- is null
-0- not gt 0
-0- eq 0
-0- not lt 0
-0- not exists
-0- x 0. x

0. is null
0. not gt 0
0. eq 0
0. not lt 0
0. not exists
0. x 0. x

Very Best R:egards,

Razzak.


At 01:10 PM 10/7/2003 -0700, you wrote:


Sorry Razzak,

No help there. The expanded demo shows that nothing I can think of will
solve my problem.  To make matters worse, if I retrieve the column into
a variable, the value retrieved is zero not NULL.  I usually can figure
a workaround but this is a real stumper. Even CTXT retrieves zero as
demoed when you run this code.  I can send you a demo db with a simple
form to show the problem, if you need it.

set eqnull on
set null -0-
set zero on -- required

set var vreal real = null
set var vtest = (ifnull(.vreal,'is null','is not null'))
wri .vreal, .vtest
set var vtest = (ifgt(.vreal,0, 'gt 0','not gt 0'))
wri .vreal, .vtest
set var vtest = (ifeq(.vreal,0, 'eq 0','not eq 0'))
wri .vreal, .vtest
set var vtest = (iflt(.vreal,0, 'lt 0','not lt 0'))
wri .vreal, .vtest
set var vtest = (ifexists(.vreal,'exists','not exists'))
wri .vreal, .vtest
set var vtest = ('x' & CTXT(.vreal) & 'x')
wri .vreal, .vtest


wri ' ' set var vreal real = 0 set var vtest = (ifnull(.vreal,'is null','is not null')) wri .vreal, .vtest set var vtest = (ifgt(.vreal,0, 'gt 0','not gt 0')) wri .vreal, .vtest set var vtest = (ifeq(.vreal,0, 'eq 0','not eq 0')) wri .vreal, .vtest set var vtest = (iflt(.vreal,0, 'lt 0','not lt 0')) wri .vreal, .vtest set var vtest = (ifexists(.vreal,'exists','not exists')) wri .vreal, .vtest set var vtest = ('x' & CTXT(.vreal) & 'x') wri .vreal, .vtest

Best Regards,
Dennis McGrath

--- "A. Razzak Memon" <[EMAIL PROTECTED]> wrote:
>
> Dennis,
>
> What's the settings for EQNULL ?
>
> Correct evaluation of expressions when EQNULL is SET to ON.
>
> R:BASE 6.5++ (Build:1.866xRT03 and higher)
>
> R:BASE uses special processing on simple IF commands for maximum
> speed. However, the way these were processed was not consistent
> with the way complex IF commands or WHILE commands were processed
> with regard to comparisons using NULL values. The EQNULL setting
> at TRUE means that a comparison between two NULL values is a match
> and that a comparison between a NULL value and a non-NULL value is
> not. When EQNULL is set to FALSE then a comparison between two NULL
> values is not a match nor is a comparison between a NULL value and
> a non-NULL value a mismatch. The NULL value essentially make the
> whole thing "unknown'. This behavior was followed in WHILE and
> complex IF commands but was not followed in simple IF commands. A
> simple IF command has only one comparison and the left side is a
> simple variable and the right side is either a variable or a
> constant. A simple IF does not have any expressions.
>
> Compare these code samples:
>
> SET VAR v1 TEXT = NULL
> SET VAR v2 TEXT = NULL
>
> SET EQNULL OFF
> IF v1 = .v2 THEN
>     -- will not be a hit
> ENDIF
> IF v1 <> .v2 THEN
>     -- will not be a hit
> ENDIF
> IF v1 <> 'This' THEN
>     -- will not be a hit (it used to be before this fix)
> ENDIF
>
> SET EQNULL ON
> IF v1 = .v2 THEN
>     -- will be a hit
> ENDIF
> IF v1 <> .v2 THEN
>     -- will not be a hit
> ENDIF
> IF v1 <> 'This' THEN
>     -- will be a hit
> ENDIF
>
> Before this fix, the comparison "IF v1 <> 'This' THEN" would be
> a hit with EQNULL set ON or FALSE when it should only be a hit
> when EQNULL is ON. This means that now:
>
> "IF (.v1) <> 'This' THEN" and "IF v1 <> 'This' THEN"
>
> will both process the same way. In the past they would be
> different because of this problem.
>
> In your code if you want the comparison of a NULL variable and
> a non-NULL constant to be a hit then you should run with EQNULL
> set ON.
>
> In your code if you want the comparison of a NULL variable and
> a non-NULL constant to be a hit then you should run with EQNULL
> set ON.
>
> Let me know how that goes ...
>
> Hope that helps!
>
> Very Best R:egards,
>
> Razzak.
>
> At 12:42 PM 10/7/2003 -0700, Dennis McGrath wrote:
>
> >I've got a problem has me stumped.  I have a client where SET ZERO
> is
> >always ON. I won't go into the details, but this is a must.
> >
> >Running the latest patch of 6.5++ both DOS and Win.
> >
> >I need to test a column (REAL) on several entry forms to see if it
> is
> >NULL or zero. Seems the ISNULL function is not up to the task.  Here
> is
> >some demo code:
> >
> >set null -0-
> >set zero on -- required
> >set var vreal real = null
> >set var vtest = (ifnull(.vreal,'is null','is not null'))
> >wri .vreal, .vtest
> >wri ' '
> >set var vreal real = 0
> >set var vtest = (ifnull(.vreal,'is null','is not null'))
> >wri .vreal, .vtest
> >
> >
> >vTest always = 'is null'
> >
> >Anyone have a magic bullet that will solve my problem?



Reply via email to