[ncl-talk] bug with isdefined and isvar?

Rick Brownrigg brownrig at ucar.edu
Fri Aug 26 10:25:32 MDT 2016


Hi Jared,

I think you need to pass in the variable name as a string, rather than a
direct reference (i.e, "var" vs var)

HTH...
Rick


On Fri, Aug 26, 2016 at 10:02 AM, Jared Lee <jaredlee at ucar.edu> wrote:

> Hi, I think I've found a bug with the functions isdefined and isvar.
> Whether I pass in a variable from the command line or define it in the
> script, isdefined() and isvar() both return False, instead of returning
> True as the documentation says they should. And if I have them test a
> variable name that has not been defined, then NCL exits with an undefined
> variable error, instead of returning False as the documentation says they
> should. See below for a test script and output from the test script that
> demonstrates the problem.
>
> What I need is the ability to test if a variable has been declared
> (especially via the command line) to avoid crashing the code.
>
> Here's the test script, which I called isdefined.ncl:
>
> begin
>
> print(var)
> test1 = isdefined(var)
> test2 = isvar(var)
> print(var)
> print(test1)
> print(test2)
>
> var = 20
> test3 = isdefined(var)
> test4 = isvar(var)
> print(var)
> print(test3)
> print(test4)
>
> var2 = 20
> test5 = isdefined(var2)
> test6 = isvar(var2)
> print(var2)
> print(test5)
> print(test6)
>
> test7 = isdefined(var3)
> test8 = isvar(var3)
> print(test7)
> print(test8)
>
> end
>
> And then here is the output:
>
> jaredlee$ ncl isdefined.ncl 'var=10'
>  Copyright (C) 1995-2015 - All Rights Reserved
>  University Corporation for Atmospheric Research
>  NCAR Command Language Version 6.3.0
>  The use of this software is governed by a License Agreement.
>  See http://www.ncl.ucar.edu/ for more details.
>
>
> Variable: var
> Type: integer
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) 10
> warning:Argument 0 of the current function or procedure was coerced to the
> appropriate type and thus will not change if the function or procedure
> modifies its value
> warning:Argument 0 of the current function or procedure was coerced to the
> appropriate type and thus will not change if the function or procedure
> modifies its value
>
>
> Variable: var
> Type: integer
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) 10
>
>
> Variable: test1
> Type: logical
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) False
>
>
> Variable: test2
> Type: logical
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) False
> warning:Argument 0 of the current function or procedure was coerced to the
> appropriate type and thus will not change if the function or procedure
> modifies its value
> warning:Argument 0 of the current function or procedure was coerced to the
> appropriate type and thus will not change if the function or procedure
> modifies its value
>
>
> Variable: var
> Type: integer
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) 20
>
>
> Variable: test3
> Type: logical
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) False
>
>
> Variable: test4
> Type: logical
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) False
> warning:Argument 0 of the current function or procedure was coerced to the
> appropriate type and thus will not change if the function or procedure
> modifies its value
> warning:Argument 0 of the current function or procedure was coerced to the
> appropriate type and thus will not change if the function or procedure
> modifies its value
>
>
> Variable: var2
> Type: integer
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) 20
>
>
> Variable: test5
> Type: logical
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) False
>
>
> Variable: test6
> Type: logical
> Total Size: 4 bytes
>             1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) False
> fatal:Variable (var3) is undefined
> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 24 in
> file isdefined.ncl
>
>
>
> --
> ===============================
> Jared A. Lee, Ph.D.
> Project Scientist I
> Research Applications Laboratory
> National Center for Atmospheric Research
> Boulder, Colorado, USA
>
> Email: jaredlee at ucar.edu (w)
> Phone: 303.497.8485 (w)
> Web: https://staff.ucar.edu/users/jaredlee
> ===============================
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20160826/60e7fe3d/attachment.html 


More information about the ncl-talk mailing list