[ Non-logical Variables, Arrays, Bags, Shelves and Stores | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

# incval(++ElemSpec)

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

ElemSpec
  Atom or ground compound term with non negative integer arguments.

## Description

Increments the value of the element ElemSpec that must be of type integer.

If ElemSpec is an atom, it must specify a non-logical variable visible from the caller module.

If ElemSpec is a compound term, it must specify a visible array element. all its arguments must be non negative integers smaller than the bounds specified with array/1/2 or variable/1.

### Modes and Determinism

- incval(++) is det

### Modules

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

### Exceptions

(4) instantiation fault
  ElemSpec is not instantiated.
(5) type error
  ElemSpec is a structure whose arguments are not all integers.
(5) type error
  ElemSpec is neither an atom nor a ground structure.
(5) type error
  The value or type of ElemSpec is not integer.
(6) out of range
  Array index in ElemSpec is out of range.
(41) array or global variable does not exist
  ElemSpec does not designate an existing array, variable or reference.

## Examples

    Success:
          [eclipse]: local(array(a(4), prolog)),
                  setval(a(1), -2),
                  incval(a(1)),
                  getval(a(1), X).
          X = -1
          yes.

          [eclipse]: local(array(g(4), integer)),
                  incval(g(1)),
                  getval(g(1), X).
          X = 1
          yes.

          [eclipse]: setval(count, 0),
                  repeat,
                  writeln(hello),
                  incval(count),
                  getval(count, X),
                  X >= 3, !.
          hello
          hello
          hello
          X = 3
          yes.

    Error:

          incval(X).                            (Error 4).
          incval(a(2.0)).                       (Error 5).
          setval(a, 2.0), incval(a).            (Error 5).
          local(array(a(2), float)),
              incval(a(1)).                     (Error 5).
          local(array(a(10), integer)),
              incval(a(-2)).                    (Error 6).
          incval(no_array(0)).                  (Error 41).
          incval(no_var).                       (Error 41).

## See Also

decval / 1, array / 1, array / 2, variable / 1, getval / 2, setval / 2