If ElemSpec is an atom, it must specify a global variable visible from the caller module.
If ElemSpec is a compound term, it must specify an element visible array. All its arguments must be non negative integer smallers than the bound specified with make_array/1/2 or make_local_array/1/2.
Success: [eclipse]: make_array(a(4), prolog), setval(a(0), -2), decval(a(0)), getval(a(0),X). X = -3 yes. [eclipse]: make_array(g(4, 5), integer), decval(g(3, 2)), getval(g(3, 2), X). X = -1 yes. [eclipse]: setval(a, 3), decval(a), getval(a, X). X = 2 yes. Error: decval(X). (Error 4). setval(a, 2.0), decval(a). (Error 5). make_array(a(2), real), decval(a(1)). (Error 5). make_array(a(2)), decval(a(2)). (Error 6). decval(no_var). (Error 41). decval(noarray(2, 4)). (Error 41).