Dear all,
Below there are several additional tests of the default/null values behavior both inside
and outside functions. Some results looks strange.
1) With lists
(i) in a script
nulldata 1
list znull = null
isznull = exists(znull)
nznull = nelem(znull)
print isznull nznull
(ii) inside a function
function void listtestfun (scalar x, list z[null]) isz = exists(z) nz = nelem(z) print
isz nz end function
listtestfun(1) We have
isznull = 1.0000000 nznull = 0.0000000
and
isz = 1.0000000 nz = 0.0000000
as expected
2) with strings (i) in a script
string snull = null issnull = exists(snull) nsnull = strlen(snull) print issnull nsnull
The behavior is the same as for lists and is as expected to be
Also, emptycheck = snull=="" print emptycheck
We see that ' string snull = null' actually creates the "" string
(ii) inside a function
function void strtestfun (scalar x, string s[null]) iss = exists(s) ns = strlen(s) print
iss ns end function
strtestfun(1,"oleh")
OK!
strtestfun(1)
we have
The symbol 's' is undefined *** error in function strtestfun, line 2
It seems now the problem is not with exists() but is like this: a function does not
defines a string variable in contrast as it does with default null lists
3) catch string
function void testfun3 (scalar x, string s[null]) catch string s err = $error print err
end function
testfun3(1)
testfun3(1,"a")
Please, explain why we have "0" in the first case and "2" in the
second
Oleh
P.S. I have tried to do something with formatting but I have nowhere to check. Please,
inform me