
decval(++ElemSpec)

   Decrements the contents of the visible non-logical variable or array element ElemSpec by one.

Arguments
   ElemSpec            Atom or ground compound term whose arguments are non negative integers.

Type
   Non-logical Variables, Arrays, Bags, Shelves and Stores

Description
   Decrements by one the value of ElemSpec that must be of type integer.

   If ElemSpec is an atom, it must specify a non-logical variable visible
   from the context 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 array/1/2 or variable/1.

   In a multithreaded setting, this operation can be considered atomic.


Modes and Determinism
   decval(++) is det

Modules
   This predicate is sensitive to its module context (tool predicate, see @/2).

Exceptions
     4 --- ElemSpec is not instantiated.
     5 --- ElemSpec is a structure whose arguments are not all integers.
     5 --- ElemSpec is neither an atom nor a ground structure.
     5 --- The value or type of ElemSpec is not integer.
     6 --- Array index in ElemSpec is out of bounds.
    41 --- ElemSpec does not designate an existing array or variable.

Examples
   
Success:
      [eclipse]: local(array(a(4), prolog)),
              setval(a(0), -2),
              decval(a(0)),
              getval(a(0),X).
      X = -3
      yes.

      [eclipse]: local(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).
      local(array(a(2), float)),
          decval(a(1)).                   (Error 5).
      local(array(a(2))),
          decval(a(2)).                   (Error 6).
      decval(no_var).                     (Error 41).
      decval(noarray(2, 4)).              (Error 41).





See Also
   getval / 2, incval / 1, array / 1, array / 2, variable / 1, setval / 2
