[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 9.201 Pred

### Synopsis

    function Pred (i: ordinal type): ordinal type;

or

    function Pred (i: ordinal type; j: Integer): ordinal type;

or, with extended syntax (``--extended-syntax'` or ``{$X+}'`),

    function Pred (p: Pointer type): Pointer type;

or

    function Pred (p: Pointer type; j: Integer): Pointer type;

### Description

Returns the predecessor of the ordinal type value ``i'`, or, if the second argument ``j'` is given, its ``j'`th predecessor. For integer values ``i'`, this is ``i - 1'` (or ``i - j'`). (No, ``Pred'` does not work faster than plain subtraction. Both are optimized to a single machine instruction or even expanded by the compiler, if possible.)

If extended syntax is on, the argument may also be a pointer value. In this case, the address is decremented by the size of the variable pointed to, or, if ``j'` is given, by ``j'` times the size of the variable pointed to. If ``p'` points to an element of an array, the returned pointer will point to the (``j'`th) previous element of the array.

### Conforming to

The ``Pred'` function is defined in ISO-7185 Pascal. The optional second parameter is defined in ISO-10206 Extended Pascal. Application of ``Pred'` to pointers is defined in Borland Pascal. The combination of the second argument with application to pointers is a GNU extension.

### Example

    program PredDemo;

    type
      Metasyntactical = (foo, bar, baz);

    var
      m: Metasyntactical;
      c: Char;
      a: array [1 .. 7] of Integer;
      p: ^Integer;

    begin
      m := Pred (bar);     { foo }
      c := Pred ('Z', 2);  { 'X' }
      a[1] := 42;
      a[4] := Pred (a[1]);     { 41 }
      a[5] := Pred (a[4], 3);  { 38 }
      {$X+}
      p := @a[5];
      p := Pred (p);     { now p points to a[4] }
      p := Pred (p, 3);  { now p points to a[1] }
    end.

### See also

section 9.271 Succ, section 9.59 Dec, section 8.6 Pointer Arithmetics.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated by Frank Heckenbach on May, 10 2002 using texi2html