
(********************************************************************)
(*                                                                  *)
(*  chkint.sd7    Checks integer literals and operations            *)
(*  Copyright (C) 1991 - 1994, 2004, 2005  Thomas Mertes            *)
(*                                                                  *)
(*  This program is free software; you can redistribute it and/or   *)
(*  modify it under the terms of the GNU General Public License as  *)
(*  published by the Free Software Foundation; either version 2 of  *)
(*  the License, or (at your option) any later version.             *)
(*                                                                  *)
(*  This program is distributed in the hope that it will be useful, *)
(*  but WITHOUT ANY WARRANTY; without even the implied warranty of  *)
(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   *)
(*  GNU General Public License for more details.                    *)
(*                                                                  *)
(*  You should have received a copy of the GNU General Public       *)
(*  License along with this program; if not, write to the           *)
(*  Free Software Foundation, Inc., 51 Franklin Street,             *)
(*  Fifth Floor, Boston, MA  02110-1301, USA.                       *)
(*                                                                  *)
(********************************************************************)


$ include "seed7_05.s7i";

const integer: INT32_MIN is pred(-2147483647);


const func string: striExpr (in string: stri) is
  return stri;


const func integer: intExpr (in integer: number) is
  return number;


const proc: check_exponent_integer_literal is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if 0 <> 0E0 or 0E0 <> 0e0 or
        0 <> 0E1 or 0E1 <> 0e1 or
        0 <> 0E2 or 0E2 <> 0e2 or
        0 <> 0E3 or 0E3 <> 0e3 or
        0 <> 0E4 or 0E4 <> 0e4 or
        0 <> 0E5 or 0E5 <> 0e5 or
        0 <> 0E6 or 0E6 <> 0e6 or
        0 <> 0E7 or 0E7 <> 0e7 or
        0 <> 0E8 or 0E8 <> 0e8 or
        0 <> 0E9 or 0E9 <> 0e9 or
        0 <> 0E10 or 0E10 <> 0e10 or
        0 <> 0E11 or 0E11 <> 0e11 or
        0 <> 0E12 or 0E12 <> 0e12 or
        0 <> 0E13 or 0E13 <> 0e13 or
        0 <> 0E14 or 0E14 <> 0e14 or
        0 <> 0E15 or 0E15 <> 0e15 or
        0 <> 0E16 or 0E16 <> 0e16 or
        0 <> 0E17 or 0E17 <> 0e17 or
        0 <> 0E999999999999999 or 0E999999999999999 <> 0e999999999999999 or
        1 <>          1E0 or 1E0 <> 1e0 or
        10 <>         1E1 or 1E1 <> 1e1 or
        100 <>        1E2 or 1E2 <> 1e2 or
        1000 <>       1E3 or 1E3 <> 1e3 or
        10000 <>      1E4 or 1E4 <> 1e4 or
        100000 <>     1E5 or 1E5 <> 1e5 or
        1000000 <>    1E6 or 1E6 <> 1e6 or
        10000000 <>   1E7 or 1E7 <> 1e7 or
        100000000 <>  1E8 or 1E8 <> 1e8 or
        1000000000 <> 1E9 or 1E9 <> 1e9 or
        12 <>         12E0 or 12E0 <> 12e0 or
        120 <>        12E1 or 12E1 <> 12e1 or
        1200 <>       12E2 or 12E2 <> 12e2 or
        1200000 <>    12E5 or 12E5 <> 12e5 or
        1200000000 <> 12E8 or 12E8 <> 12e8 or
        123 <>        123E0 or 123E0 <> 123e0 or
        1230 <>       123E1 or 123E1 <> 123e1 or
        12300 <>      123E2 or 123E2 <> 123e2 or
        12300000 <>   123E5 or 123E5 <> 123e5 or
        1230000000 <> 123E7 or 123E7 <> 123e7 or
        12345 <>      12345E0 or 12345E0 <> 12345e0 or
        123450 <>     12345E1 or 12345E1 <> 12345e1 or
        1234500 <>    12345E2 or 12345E2 <> 12345e2 or
        123450000 <>  12345E4 or 12345E4 <> 12345e4 or
        1234500000 <> 12345E5 or 12345E5 <> 12345e5 then
      writeln("Integer literals with exponent do not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Integer literals with exponent work correct.");
    else
      writeln(" ***** Integer literals with exponent do not work correct.");
      writeln;
    end if;
  end func;


const proc: chack_based_integer_literal is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if     0 <>  2#0 or  2#0 <>  3#0 or
         3#0 <>  4#0 or  4#0 <>  5#0 or  5#0 <>  6#0 or  6#0 <>  7#0 or
         7#0 <>  8#0 or  8#0 <>  9#0 or  9#0 <> 10#0 or 10#0 <> 11#0 or
        11#0 <> 12#0 or 12#0 <> 13#0 or 13#0 <> 14#0 or 14#0 <> 15#0 or
        15#0 <> 16#0 or 16#0 <> 17#0 or 17#0 <> 18#0 or 18#0 <> 19#0 or
        19#0 <> 20#0 or 20#0 <> 21#0 or 21#0 <> 22#0 or 22#0 <> 23#0 or
        23#0 <> 24#0 or 24#0 <> 25#0 or 25#0 <> 26#0 or 26#0 <> 27#0 or
        27#0 <> 28#0 or 28#0 <> 29#0 or 29#0 <> 30#0 or 30#0 <> 31#0 or
        31#0 <> 32#0 or 32#0 <> 33#0 or 33#0 <> 34#0 or 34#0 <> 35#0 or
        35#0 <> 36#0 then
      writeln("Based integer literals do not work correct.");
      okay := FALSE;
    end if;
    if     1 <>  2#1 or  2#1 <>  3#1 or
         3#1 <>  4#1 or  4#1 <>  5#1 or  5#1 <>  6#1 or  6#1 <>  7#1 or
         7#1 <>  8#1 or  8#1 <>  9#1 or  9#1 <> 10#1 or 10#1 <> 11#1 or
        11#1 <> 12#1 or 12#1 <> 13#1 or 13#1 <> 14#1 or 14#1 <> 15#1 or
        15#1 <> 16#1 or 16#1 <> 17#1 or 17#1 <> 18#1 or 18#1 <> 19#1 or
        19#1 <> 20#1 or 20#1 <> 21#1 or 21#1 <> 22#1 or 22#1 <> 23#1 or
        23#1 <> 24#1 or 24#1 <> 25#1 or 25#1 <> 26#1 or 26#1 <> 27#1 or
        27#1 <> 28#1 or 28#1 <> 29#1 or 29#1 <> 30#1 or 30#1 <> 31#1 or
        31#1 <> 32#1 or 32#1 <> 33#1 or 33#1 <> 34#1 or 34#1 <> 35#1 or
        35#1 <> 36#1 then
      writeln("Based integer literals do not work correct.");
      okay := FALSE;
    end if;
    if     2 <> 2#10 or 2#10 <>  3#2 or
         3#2 <>  4#2 or  4#2 <>  5#2 or  5#2 <>  6#2 or  6#2 <>  7#2 or
         7#2 <>  8#2 or  8#2 <>  9#2 or  9#2 <> 10#2 or 10#2 <> 11#2 or
        11#2 <> 12#2 or 12#2 <> 13#2 or 13#2 <> 14#2 or 14#2 <> 15#2 or
        15#2 <> 16#2 or 16#2 <> 17#2 or 17#2 <> 18#2 or 18#2 <> 19#2 or
        19#2 <> 20#2 or 20#2 <> 21#2 or 21#2 <> 22#2 or 22#2 <> 23#2 or
        23#2 <> 24#2 or 24#2 <> 25#2 or 25#2 <> 26#2 or 26#2 <> 27#2 or
        27#2 <> 28#2 or 28#2 <> 29#2 or 29#2 <> 30#2 or 30#2 <> 31#2 or
        31#2 <> 32#2 or 32#2 <> 33#2 or 33#2 <> 34#2 or 34#2 <> 35#2 or
        35#2 <> 36#2 then
      writeln("Based integer literals do not work correct.");
      okay := FALSE;
    end if;
    if    16 <> 2#10000 or 2#10000 <> 3#121 or
        3#121 <> 4#100 or 4#100 <>  5#31 or  5#31 <>  6#24 or  6#24 <>  7#22 or
         7#22 <>  8#20 or  8#20 <>  9#17 or  9#17 <> 10#16 or 10#16 <> 11#15 or
        11#15 <> 12#14 or 12#14 <> 13#13 or 13#13 <> 14#12 or 14#12 <> 15#11 or
        15#11 <> 16#10 or 16#10 <> 17#G or 17#G <> 18#G or 18#G <> 19#G or
        19#G <> 20#G or 20#G <> 21#G or 21#G <> 22#G or 22#G <> 23#G or
        23#G <> 24#G or 24#G <> 25#G or 25#G <> 26#G or 26#G <> 27#G or
        27#G <> 28#G or 28#G <> 29#G or 29#G <> 30#G or 30#G <> 31#G or
        31#G <> 32#G or 32#G <> 33#G or 33#G <> 34#G or 34#G <> 35#G or
        35#G <> 36#G then
      writeln("Based integer literals do not work correct.");
      okay := FALSE;
    end if;
    if    32 <> 2#100000 or 2#100000 <> 3#1012 or
       3#1012 <> 4#200 or 4#200 <> 5#112 or 5#112 <>  6#52 or  6#52 <>  7#44 or
         7#44 <>  8#40 or  8#40 <>  9#35 or  9#35 <> 10#32 or 10#32 <> 11#2A or
        11#2A <> 12#28 or 12#28 <> 13#26 or 13#26 <> 14#24 or 14#24 <> 15#22 or
        15#22 <> 16#20 or 16#20 <> 17#1F or 17#1F <> 18#1E or 18#1E <> 19#1D or
        19#1D <> 20#1C or 20#1C <> 21#1B or 21#1B <> 22#1A or 22#1A <> 23#19 or
        23#19 <> 24#18 or 24#18 <> 25#17 or 25#17 <> 26#16 or 26#16 <> 27#15 or
        27#15 <> 28#14 or 28#14 <> 29#13 or 29#13 <> 30#12 or 30#12 <> 31#11 or
        31#11 <> 32#10 or 32#10 <> 33#W or 33#W <> 34#W or 34#W <> 35#W or
        35#W <> 36#W then
      writeln("Based integer literals do not work correct.");
      okay := FALSE;
    end if;
    if  1000000 <>  2#11110100001001000000 or
        1000000 <>  3#1212210202001 or
        1000000 <>  4#3310021000 or
        1000000 <>  5#224000000 or
        1000000 <>  6#33233344 or
        1000000 <>  7#11333311 or
        1000000 <>  8#3641100 or
        1000000 <>  9#1783661 or
        1000000 <> 10#1000000 or
        1000000 <> 11#623351 or
        1000000 <> 12#402854 or
        1000000 <> 13#290221 or
        1000000 <> 14#1C0608 or
        1000000 <> 15#14B46A or
        1000000 <> 16#F4240 or
        1000000 <> 17#BG939 or
        1000000 <> 18#9987A or
        1000000 <> 19#7CF1B or
        1000000 <> 20#65000 or
        1000000 <> 21#52KC1 or
        1000000 <> 22#45K2C or
        1000000 <> 23#3D486 or
        1000000 <> 24#3082G or
        1000000 <> 25#2E000 or
        1000000 <> 26#24N7E or
        1000000 <> 27#1NLK1 or
        1000000 <> 28#1HFE8 or
        1000000 <> 29#1C01M or
        1000000 <> 30#1713A or
        1000000 <> 31#12HI2 or
        1000000 <> 32#UGI0 or
        1000000 <> 33#RR91 or
        1000000 <> 34#PF1Q or
        1000000 <> 35#NBBF or
        1000000 <> 36#LFLS then
      writeln("Based integer literals do not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Based integer literals work correct.");
    else
      writeln(" ***** Based integer literals do not work correct.");
      writeln;
    end if;
  end func;


const proc: check_negation is func
  local
    var boolean: okay is TRUE;
    var integer: number is 0;
    var integer: neg_number is 0;
  begin
    okay := TRUE;
    neg_number := 10;
    for number range -10 to 10 do
      if -number <> neg_number then
        write(" ***** -");
        write(number);
        writeln(" is not correct computed.");
        okay := FALSE;
      end if;
      decr(neg_number);
    end for;
    if okay then
      writeln("-i is correct computed in the range -10 to 10.");
    end if;
  end func;


const proc: check_add is func
  begin
    if           0 +          0 =          0 and
                 2 +          3 =          5 and
               127 +        127 =        254 and
               255 +        255 =        510 and
             18341 +      26783 =      45124 and
             32767 +      32767 =      65534 and
             35759 +      58537 =      94296 and
             65535 +      65535 =     131070 and
             73819 +     124303 =     198122 and
        2147483647 +          0 = 2147483647 and
                 0 + 2147483647 = 2147483647 then
      writeln("Addition works correct for selected values.");
    else
      writeln(" ***** Addition does not work correct.");
    end if;
  end func;


const proc: check_division is func
  local
    var boolean: okay is TRUE;
    var boolean: p_div_p is FALSE;
    var boolean: n_div_n is FALSE;
    var boolean: p_div_n is FALSE;
    var boolean: n_div_p is FALSE;
    var integer: dividend is 0;
    var integer: divisor is 0;
  begin
    writeln("a div b is integer division and a rem b is integer remainder:");

    if ( 11 div  4) =  2  and  ( 11 rem  4) =  3 then
      if (-11 div -4) =  2  and  (-11 rem -4) = -3 then
        if ( ( 11 div -4) = -2  and  ( 11 rem -4) =  3 ) and
           ( (-11 div  4) = -2  and  (-11 rem  4) = -3 ) then
          writeln("for positive and negative a and b");
        else
          writeln("only when a and b have the same sign");
        end if;
      else
        writeln("only when a and b are positive");
      end if;
    else
      writeln("not even when a and b are positive");
    end if;

    p_div_p := ( 11 div  4) *  4 + ( 11 rem  4) =  11;
    n_div_n := (-11 div -4) * -4 + (-11 rem -4) = -11;
    p_div_n := ( 11 div -4) * -4 + ( 11 rem -4) =  11;
    n_div_p := (-11 div  4) *  4 + (-11 rem  4) = -11;

    write("(a div b) * b + (a rem b) = a  holds ");

    if p_div_p then
      if n_div_n then
        if p_div_n and n_div_p then
          writeln("for positive and negative a and b");
        else
          writeln("only when a and b have the same sign");
        end if;
      else
        writeln("only when a and b are positive");
      end if;
    else
      writeln("not even when a and b are positive");
    end if;

    for dividend range -9 to 9 do
      for divisor range -4 to 4 do
        if divisor <> 0 then
          if (dividend div divisor) * divisor + dividend rem divisor <>
              dividend then
            okay := FALSE;
          end if;
        end if;
      end for;
    end for;
    if okay then
      writeln("Div and rem work correct for selected values.");
    else
      writeln(" ***** div and rem does not work correct.");
    end if;

    okay := TRUE;
    for dividend range -9 to 9 do
      for divisor range -4 to 4 do
        if divisor <> 0 then
          if (dividend mdiv divisor) * divisor + dividend mod divisor <>
              dividend then
            okay := FALSE;
          end if;
        end if;
      end for;
    end for;
    if okay then
      writeln("Mdiv and mod work correct for selected values.");
    else
      writeln(" ***** mdiv and mod does not work correct.");
    end if;
  end func;


const proc: check_div is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if   10 div  5 <>  2 or
          9 div  5 <>  1 or
          8 div  5 <>  1 or
          7 div  5 <>  1 or
          6 div  5 <>  1 or
          5 div  5 <>  1 or
          4 div  5 <>  0 or
          3 div  5 <>  0 or
          2 div  5 <>  0 or
          1 div  5 <>  0 or
          0 div  5 <>  0 or
         -1 div  5 <>  0 or
         -2 div  5 <>  0 or
         -3 div  5 <>  0 or
         -4 div  5 <>  0 or
         -5 div  5 <> -1 or
         -6 div  5 <> -1 or
         -7 div  5 <> -1 or
         -8 div  5 <> -1 or
         -9 div  5 <> -1 or
        -10 div  5 <> -2 or
         10 div  4 <>  2 or
          9 div  4 <>  2 or
          8 div  4 <>  2 or
          7 div  4 <>  1 or
          6 div  4 <>  1 or
          5 div  4 <>  1 or
          4 div  4 <>  1 or
          3 div  4 <>  0 or
          2 div  4 <>  0 or
          1 div  4 <>  0 or
          0 div  4 <>  0 or
         -1 div  4 <>  0 or
         -2 div  4 <>  0 or
         -3 div  4 <>  0 or
         -4 div  4 <> -1 or
         -5 div  4 <> -1 or
         -6 div  4 <> -1 or
         -7 div  4 <> -1 or
         -8 div  4 <> -2 or
         -9 div  4 <> -2 or
        -10 div  4 <> -2 or
         10 div  3 <>  3 or
          9 div  3 <>  3 or
          8 div  3 <>  2 or
          7 div  3 <>  2 or
          6 div  3 <>  2 or
          5 div  3 <>  1 or
          4 div  3 <>  1 or
          3 div  3 <>  1 or
          2 div  3 <>  0 or
          1 div  3 <>  0 or
          0 div  3 <>  0 or
         -1 div  3 <>  0 or
         -2 div  3 <>  0 or
         -3 div  3 <> -1 or
         -4 div  3 <> -1 or
         -5 div  3 <> -1 or
         -6 div  3 <> -2 or
         -7 div  3 <> -2 or
         -8 div  3 <> -2 or
         -9 div  3 <> -3 or
        -10 div  3 <> -3 or
         10 div  2 <>  5 or
          9 div  2 <>  4 or
          8 div  2 <>  4 or
          7 div  2 <>  3 or
          6 div  2 <>  3 or
          5 div  2 <>  2 or
          4 div  2 <>  2 or
          3 div  2 <>  1 or
          2 div  2 <>  1 or
          1 div  2 <>  0 or
          0 div  2 <>  0 or
         -1 div  2 <>  0 or
         -2 div  2 <> -1 or
         -3 div  2 <> -1 or
         -4 div  2 <> -2 or
         -5 div  2 <> -2 or
         -6 div  2 <> -3 or
         -7 div  2 <> -3 or
         -8 div  2 <> -4 or
         -9 div  2 <> -4 or
        -10 div  2 <> -5 or
         10 div  1 <> 10 or
          9 div  1 <>  9 or
          8 div  1 <>  8 or
          7 div  1 <>  7 or
          6 div  1 <>  6 or
          5 div  1 <>  5 or
          4 div  1 <>  4 or
          3 div  1 <>  3 or
          2 div  1 <>  2 or
          1 div  1 <>  1 or
          0 div  1 <>  0 or
         -1 div  1 <> -1 or
         -2 div  1 <> -2 or
         -3 div  1 <> -3 or
         -4 div  1 <> -4 or
         -5 div  1 <> -5 or
         -6 div  1 <> -6 or
         -7 div  1 <> -7 or
         -8 div  1 <> -8 or
         -9 div  1 <> -9 or
        -10 div  1 <> -10 or
         10 div -1 <> -10 or
          9 div -1 <> -9 or
          8 div -1 <> -8 or
          7 div -1 <> -7 or
          6 div -1 <> -6 or
          5 div -1 <> -5 or
          4 div -1 <> -4 or
          3 div -1 <> -3 or
          2 div -1 <> -2 or
          1 div -1 <> -1 or
          0 div -1 <>  0 or
         -1 div -1 <>  1 or
         -2 div -1 <>  2 or
         -3 div -1 <>  3 or
         -4 div -1 <>  4 or
         -5 div -1 <>  5 or
         -6 div -1 <>  6 or
         -7 div -1 <>  7 or
         -8 div -1 <>  8 or
         -9 div -1 <>  9 or
        -10 div -1 <> 10 or
         10 div -2 <> -5 or
          9 div -2 <> -4 or
          8 div -2 <> -4 or
          7 div -2 <> -3 or
          6 div -2 <> -3 or
          5 div -2 <> -2 or
          4 div -2 <> -2 or
          3 div -2 <> -1 or
          2 div -2 <> -1 or
          1 div -2 <>  0 or
          0 div -2 <>  0 or
         -1 div -2 <>  0 or
         -2 div -2 <>  1 or
         -3 div -2 <>  1 or
         -4 div -2 <>  2 or
         -5 div -2 <>  2 or
         -6 div -2 <>  3 or
         -7 div -2 <>  3 or
         -8 div -2 <>  4 or
         -9 div -2 <>  4 or
        -10 div -2 <>  5 or
         10 div -3 <> -3 or
          9 div -3 <> -3 or
          8 div -3 <> -2 or
          7 div -3 <> -2 or
          6 div -3 <> -2 or
          5 div -3 <> -1 or
          4 div -3 <> -1 or
          3 div -3 <> -1 or
          2 div -3 <>  0 or
          1 div -3 <>  0 or
          0 div -3 <>  0 or
         -1 div -3 <>  0 or
         -2 div -3 <>  0 or
         -3 div -3 <>  1 or
         -4 div -3 <>  1 or
         -5 div -3 <>  1 or
         -6 div -3 <>  2 or
         -7 div -3 <>  2 or
         -8 div -3 <>  2 or
         -9 div -3 <>  3 or
        -10 div -3 <>  3 or
         10 div -4 <> -2 or
          9 div -4 <> -2 or
          8 div -4 <> -2 or
          7 div -4 <> -1 or
          6 div -4 <> -1 or
          5 div -4 <> -1 or
          4 div -4 <> -1 or
          3 div -4 <>  0 or
          2 div -4 <>  0 or
          1 div -4 <>  0 or
          0 div -4 <>  0 or
         -1 div -4 <>  0 or
         -2 div -4 <>  0 or
         -3 div -4 <>  0 or
         -4 div -4 <>  1 or
         -5 div -4 <>  1 or
         -6 div -4 <>  1 or
         -7 div -4 <>  1 or
         -8 div -4 <>  2 or
         -9 div -4 <>  2 or
        -10 div -4 <>  2 or
         10 div -5 <> -2 or
          9 div -5 <> -1 or
          8 div -5 <> -1 or
          7 div -5 <> -1 or
          6 div -5 <> -1 or
          5 div -5 <> -1 or
          4 div -5 <>  0 or
          3 div -5 <>  0 or
          2 div -5 <>  0 or
          1 div -5 <>  0 or
          0 div -5 <>  0 or
         -1 div -5 <>  0 or
         -2 div -5 <>  0 or
         -3 div -5 <>  0 or
         -4 div -5 <>  0 or
         -5 div -5 <>  1 or
         -6 div -5 <>  1 or
         -7 div -5 <>  1 or
         -8 div -5 <>  1 or
         -9 div -5 <>  1 or
        -10 div -5 <>  2 then
      writeln(" ***** div with two constants does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr( 10) div  5 <>  2 or
        intExpr(  9) div  5 <>  1 or
        intExpr(  8) div  5 <>  1 or
        intExpr(  7) div  5 <>  1 or
        intExpr(  6) div  5 <>  1 or
        intExpr(  5) div  5 <>  1 or
        intExpr(  4) div  5 <>  0 or
        intExpr(  3) div  5 <>  0 or
        intExpr(  2) div  5 <>  0 or
        intExpr(  1) div  5 <>  0 or
        intExpr(  0) div  5 <>  0 or
        intExpr( -1) div  5 <>  0 or
        intExpr( -2) div  5 <>  0 or
        intExpr( -3) div  5 <>  0 or
        intExpr( -4) div  5 <>  0 or
        intExpr( -5) div  5 <> -1 or
        intExpr( -6) div  5 <> -1 or
        intExpr( -7) div  5 <> -1 or
        intExpr( -8) div  5 <> -1 or
        intExpr( -9) div  5 <> -1 or
        intExpr(-10) div  5 <> -2 or
        intExpr( 10) div  4 <>  2 or
        intExpr(  9) div  4 <>  2 or
        intExpr(  8) div  4 <>  2 or
        intExpr(  7) div  4 <>  1 or
        intExpr(  6) div  4 <>  1 or
        intExpr(  5) div  4 <>  1 or
        intExpr(  4) div  4 <>  1 or
        intExpr(  3) div  4 <>  0 or
        intExpr(  2) div  4 <>  0 or
        intExpr(  1) div  4 <>  0 or
        intExpr(  0) div  4 <>  0 or
        intExpr( -1) div  4 <>  0 or
        intExpr( -2) div  4 <>  0 or
        intExpr( -3) div  4 <>  0 or
        intExpr( -4) div  4 <> -1 or
        intExpr( -5) div  4 <> -1 or
        intExpr( -6) div  4 <> -1 or
        intExpr( -7) div  4 <> -1 or
        intExpr( -8) div  4 <> -2 or
        intExpr( -9) div  4 <> -2 or
        intExpr(-10) div  4 <> -2 or
        intExpr( 10) div  3 <>  3 or
        intExpr(  9) div  3 <>  3 or
        intExpr(  8) div  3 <>  2 or
        intExpr(  7) div  3 <>  2 or
        intExpr(  6) div  3 <>  2 or
        intExpr(  5) div  3 <>  1 or
        intExpr(  4) div  3 <>  1 or
        intExpr(  3) div  3 <>  1 or
        intExpr(  2) div  3 <>  0 or
        intExpr(  1) div  3 <>  0 or
        intExpr(  0) div  3 <>  0 or
        intExpr( -1) div  3 <>  0 or
        intExpr( -2) div  3 <>  0 or
        intExpr( -3) div  3 <> -1 or
        intExpr( -4) div  3 <> -1 or
        intExpr( -5) div  3 <> -1 or
        intExpr( -6) div  3 <> -2 or
        intExpr( -7) div  3 <> -2 or
        intExpr( -8) div  3 <> -2 or
        intExpr( -9) div  3 <> -3 or
        intExpr(-10) div  3 <> -3 or
        intExpr( 10) div  2 <>  5 or
        intExpr(  9) div  2 <>  4 or
        intExpr(  8) div  2 <>  4 or
        intExpr(  7) div  2 <>  3 or
        intExpr(  6) div  2 <>  3 or
        intExpr(  5) div  2 <>  2 or
        intExpr(  4) div  2 <>  2 or
        intExpr(  3) div  2 <>  1 or
        intExpr(  2) div  2 <>  1 or
        intExpr(  1) div  2 <>  0 or
        intExpr(  0) div  2 <>  0 or
        intExpr( -1) div  2 <>  0 or
        intExpr( -2) div  2 <> -1 or
        intExpr( -3) div  2 <> -1 or
        intExpr( -4) div  2 <> -2 or
        intExpr( -5) div  2 <> -2 or
        intExpr( -6) div  2 <> -3 or
        intExpr( -7) div  2 <> -3 or
        intExpr( -8) div  2 <> -4 or
        intExpr( -9) div  2 <> -4 or
        intExpr(-10) div  2 <> -5 or
        intExpr( 10) div  1 <> 10 or
        intExpr(  9) div  1 <>  9 or
        intExpr(  8) div  1 <>  8 or
        intExpr(  7) div  1 <>  7 or
        intExpr(  6) div  1 <>  6 or
        intExpr(  5) div  1 <>  5 or
        intExpr(  4) div  1 <>  4 or
        intExpr(  3) div  1 <>  3 or
        intExpr(  2) div  1 <>  2 or
        intExpr(  1) div  1 <>  1 or
        intExpr(  0) div  1 <>  0 or
        intExpr( -1) div  1 <> -1 or
        intExpr( -2) div  1 <> -2 or
        intExpr( -3) div  1 <> -3 or
        intExpr( -4) div  1 <> -4 or
        intExpr( -5) div  1 <> -5 or
        intExpr( -6) div  1 <> -6 or
        intExpr( -7) div  1 <> -7 or
        intExpr( -8) div  1 <> -8 or
        intExpr( -9) div  1 <> -9 or
        intExpr(-10) div  1 <> -10 or
        intExpr( 10) div -1 <> -10 or
        intExpr(  9) div -1 <> -9 or
        intExpr(  8) div -1 <> -8 or
        intExpr(  7) div -1 <> -7 or
        intExpr(  6) div -1 <> -6 or
        intExpr(  5) div -1 <> -5 or
        intExpr(  4) div -1 <> -4 or
        intExpr(  3) div -1 <> -3 or
        intExpr(  2) div -1 <> -2 or
        intExpr(  1) div -1 <> -1 or
        intExpr(  0) div -1 <>  0 or
        intExpr( -1) div -1 <>  1 or
        intExpr( -2) div -1 <>  2 or
        intExpr( -3) div -1 <>  3 or
        intExpr( -4) div -1 <>  4 or
        intExpr( -5) div -1 <>  5 or
        intExpr( -6) div -1 <>  6 or
        intExpr( -7) div -1 <>  7 or
        intExpr( -8) div -1 <>  8 or
        intExpr( -9) div -1 <>  9 or
        intExpr(-10) div -1 <> 10 or
        intExpr( 10) div -2 <> -5 or
        intExpr(  9) div -2 <> -4 or
        intExpr(  8) div -2 <> -4 or
        intExpr(  7) div -2 <> -3 or
        intExpr(  6) div -2 <> -3 or
        intExpr(  5) div -2 <> -2 or
        intExpr(  4) div -2 <> -2 or
        intExpr(  3) div -2 <> -1 or
        intExpr(  2) div -2 <> -1 or
        intExpr(  1) div -2 <>  0 or
        intExpr(  0) div -2 <>  0 or
        intExpr( -1) div -2 <>  0 or
        intExpr( -2) div -2 <>  1 or
        intExpr( -3) div -2 <>  1 or
        intExpr( -4) div -2 <>  2 or
        intExpr( -5) div -2 <>  2 or
        intExpr( -6) div -2 <>  3 or
        intExpr( -7) div -2 <>  3 or
        intExpr( -8) div -2 <>  4 or
        intExpr( -9) div -2 <>  4 or
        intExpr(-10) div -2 <>  5 or
        intExpr( 10) div -3 <> -3 or
        intExpr(  9) div -3 <> -3 or
        intExpr(  8) div -3 <> -2 or
        intExpr(  7) div -3 <> -2 or
        intExpr(  6) div -3 <> -2 or
        intExpr(  5) div -3 <> -1 or
        intExpr(  4) div -3 <> -1 or
        intExpr(  3) div -3 <> -1 or
        intExpr(  2) div -3 <>  0 or
        intExpr(  1) div -3 <>  0 or
        intExpr(  0) div -3 <>  0 or
        intExpr( -1) div -3 <>  0 or
        intExpr( -2) div -3 <>  0 or
        intExpr( -3) div -3 <>  1 or
        intExpr( -4) div -3 <>  1 or
        intExpr( -5) div -3 <>  1 or
        intExpr( -6) div -3 <>  2 or
        intExpr( -7) div -3 <>  2 or
        intExpr( -8) div -3 <>  2 or
        intExpr( -9) div -3 <>  3 or
        intExpr(-10) div -3 <>  3 or
        intExpr( 10) div -4 <> -2 or
        intExpr(  9) div -4 <> -2 or
        intExpr(  8) div -4 <> -2 or
        intExpr(  7) div -4 <> -1 or
        intExpr(  6) div -4 <> -1 or
        intExpr(  5) div -4 <> -1 or
        intExpr(  4) div -4 <> -1 or
        intExpr(  3) div -4 <>  0 or
        intExpr(  2) div -4 <>  0 or
        intExpr(  1) div -4 <>  0 or
        intExpr(  0) div -4 <>  0 or
        intExpr( -1) div -4 <>  0 or
        intExpr( -2) div -4 <>  0 or
        intExpr( -3) div -4 <>  0 or
        intExpr( -4) div -4 <>  1 or
        intExpr( -5) div -4 <>  1 or
        intExpr( -6) div -4 <>  1 or
        intExpr( -7) div -4 <>  1 or
        intExpr( -8) div -4 <>  2 or
        intExpr( -9) div -4 <>  2 or
        intExpr(-10) div -4 <>  2 or
        intExpr( 10) div -5 <> -2 or
        intExpr(  9) div -5 <> -1 or
        intExpr(  8) div -5 <> -1 or
        intExpr(  7) div -5 <> -1 or
        intExpr(  6) div -5 <> -1 or
        intExpr(  5) div -5 <> -1 or
        intExpr(  4) div -5 <>  0 or
        intExpr(  3) div -5 <>  0 or
        intExpr(  2) div -5 <>  0 or
        intExpr(  1) div -5 <>  0 or
        intExpr(  0) div -5 <>  0 or
        intExpr( -1) div -5 <>  0 or
        intExpr( -2) div -5 <>  0 or
        intExpr( -3) div -5 <>  0 or
        intExpr( -4) div -5 <>  0 or
        intExpr( -5) div -5 <>  1 or
        intExpr( -6) div -5 <>  1 or
        intExpr( -7) div -5 <>  1 or
        intExpr( -8) div -5 <>  1 or
        intExpr( -9) div -5 <>  1 or
        intExpr(-10) div -5 <>  2 then
      writeln(" *****) div with an expression and a constant does not work correct");
      okay := FALSE;
    end if;
    if   10 div intExpr( 5) <>  2 or
          9 div intExpr( 5) <>  1 or
          8 div intExpr( 5) <>  1 or
          7 div intExpr( 5) <>  1 or
          6 div intExpr( 5) <>  1 or
          5 div intExpr( 5) <>  1 or
          4 div intExpr( 5) <>  0 or
          3 div intExpr( 5) <>  0 or
          2 div intExpr( 5) <>  0 or
          1 div intExpr( 5) <>  0 or
          0 div intExpr( 5) <>  0 or
         -1 div intExpr( 5) <>  0 or
         -2 div intExpr( 5) <>  0 or
         -3 div intExpr( 5) <>  0 or
         -4 div intExpr( 5) <>  0 or
         -5 div intExpr( 5) <> -1 or
         -6 div intExpr( 5) <> -1 or
         -7 div intExpr( 5) <> -1 or
         -8 div intExpr( 5) <> -1 or
         -9 div intExpr( 5) <> -1 or
        -10 div intExpr( 5) <> -2 or
         10 div intExpr( 4) <>  2 or
          9 div intExpr( 4) <>  2 or
          8 div intExpr( 4) <>  2 or
          7 div intExpr( 4) <>  1 or
          6 div intExpr( 4) <>  1 or
          5 div intExpr( 4) <>  1 or
          4 div intExpr( 4) <>  1 or
          3 div intExpr( 4) <>  0 or
          2 div intExpr( 4) <>  0 or
          1 div intExpr( 4) <>  0 or
          0 div intExpr( 4) <>  0 or
         -1 div intExpr( 4) <>  0 or
         -2 div intExpr( 4) <>  0 or
         -3 div intExpr( 4) <>  0 or
         -4 div intExpr( 4) <> -1 or
         -5 div intExpr( 4) <> -1 or
         -6 div intExpr( 4) <> -1 or
         -7 div intExpr( 4) <> -1 or
         -8 div intExpr( 4) <> -2 or
         -9 div intExpr( 4) <> -2 or
        -10 div intExpr( 4) <> -2 or
         10 div intExpr( 3) <>  3 or
          9 div intExpr( 3) <>  3 or
          8 div intExpr( 3) <>  2 or
          7 div intExpr( 3) <>  2 or
          6 div intExpr( 3) <>  2 or
          5 div intExpr( 3) <>  1 or
          4 div intExpr( 3) <>  1 or
          3 div intExpr( 3) <>  1 or
          2 div intExpr( 3) <>  0 or
          1 div intExpr( 3) <>  0 or
          0 div intExpr( 3) <>  0 or
         -1 div intExpr( 3) <>  0 or
         -2 div intExpr( 3) <>  0 or
         -3 div intExpr( 3) <> -1 or
         -4 div intExpr( 3) <> -1 or
         -5 div intExpr( 3) <> -1 or
         -6 div intExpr( 3) <> -2 or
         -7 div intExpr( 3) <> -2 or
         -8 div intExpr( 3) <> -2 or
         -9 div intExpr( 3) <> -3 or
        -10 div intExpr( 3) <> -3 or
         10 div intExpr( 2) <>  5 or
          9 div intExpr( 2) <>  4 or
          8 div intExpr( 2) <>  4 or
          7 div intExpr( 2) <>  3 or
          6 div intExpr( 2) <>  3 or
          5 div intExpr( 2) <>  2 or
          4 div intExpr( 2) <>  2 or
          3 div intExpr( 2) <>  1 or
          2 div intExpr( 2) <>  1 or
          1 div intExpr( 2) <>  0 or
          0 div intExpr( 2) <>  0 or
         -1 div intExpr( 2) <>  0 or
         -2 div intExpr( 2) <> -1 or
         -3 div intExpr( 2) <> -1 or
         -4 div intExpr( 2) <> -2 or
         -5 div intExpr( 2) <> -2 or
         -6 div intExpr( 2) <> -3 or
         -7 div intExpr( 2) <> -3 or
         -8 div intExpr( 2) <> -4 or
         -9 div intExpr( 2) <> -4 or
        -10 div intExpr( 2) <> -5 or
         10 div intExpr( 1) <> 10 or
          9 div intExpr( 1) <>  9 or
          8 div intExpr( 1) <>  8 or
          7 div intExpr( 1) <>  7 or
          6 div intExpr( 1) <>  6 or
          5 div intExpr( 1) <>  5 or
          4 div intExpr( 1) <>  4 or
          3 div intExpr( 1) <>  3 or
          2 div intExpr( 1) <>  2 or
          1 div intExpr( 1) <>  1 or
          0 div intExpr( 1) <>  0 or
         -1 div intExpr( 1) <> -1 or
         -2 div intExpr( 1) <> -2 or
         -3 div intExpr( 1) <> -3 or
         -4 div intExpr( 1) <> -4 or
         -5 div intExpr( 1) <> -5 or
         -6 div intExpr( 1) <> -6 or
         -7 div intExpr( 1) <> -7 or
         -8 div intExpr( 1) <> -8 or
         -9 div intExpr( 1) <> -9 or
        -10 div intExpr( 1) <> -10 or
         10 div intExpr(-1) <> -10 or
          9 div intExpr(-1) <> -9 or
          8 div intExpr(-1) <> -8 or
          7 div intExpr(-1) <> -7 or
          6 div intExpr(-1) <> -6 or
          5 div intExpr(-1) <> -5 or
          4 div intExpr(-1) <> -4 or
          3 div intExpr(-1) <> -3 or
          2 div intExpr(-1) <> -2 or
          1 div intExpr(-1) <> -1 or
          0 div intExpr(-1) <>  0 or
         -1 div intExpr(-1) <>  1 or
         -2 div intExpr(-1) <>  2 or
         -3 div intExpr(-1) <>  3 or
         -4 div intExpr(-1) <>  4 or
         -5 div intExpr(-1) <>  5 or
         -6 div intExpr(-1) <>  6 or
         -7 div intExpr(-1) <>  7 or
         -8 div intExpr(-1) <>  8 or
         -9 div intExpr(-1) <>  9 or
        -10 div intExpr(-1) <> 10 or
         10 div intExpr(-2) <> -5 or
          9 div intExpr(-2) <> -4 or
          8 div intExpr(-2) <> -4 or
          7 div intExpr(-2) <> -3 or
          6 div intExpr(-2) <> -3 or
          5 div intExpr(-2) <> -2 or
          4 div intExpr(-2) <> -2 or
          3 div intExpr(-2) <> -1 or
          2 div intExpr(-2) <> -1 or
          1 div intExpr(-2) <>  0 or
          0 div intExpr(-2) <>  0 or
         -1 div intExpr(-2) <>  0 or
         -2 div intExpr(-2) <>  1 or
         -3 div intExpr(-2) <>  1 or
         -4 div intExpr(-2) <>  2 or
         -5 div intExpr(-2) <>  2 or
         -6 div intExpr(-2) <>  3 or
         -7 div intExpr(-2) <>  3 or
         -8 div intExpr(-2) <>  4 or
         -9 div intExpr(-2) <>  4 or
        -10 div intExpr(-2) <>  5 or
         10 div intExpr(-3) <> -3 or
          9 div intExpr(-3) <> -3 or
          8 div intExpr(-3) <> -2 or
          7 div intExpr(-3) <> -2 or
          6 div intExpr(-3) <> -2 or
          5 div intExpr(-3) <> -1 or
          4 div intExpr(-3) <> -1 or
          3 div intExpr(-3) <> -1 or
          2 div intExpr(-3) <>  0 or
          1 div intExpr(-3) <>  0 or
          0 div intExpr(-3) <>  0 or
         -1 div intExpr(-3) <>  0 or
         -2 div intExpr(-3) <>  0 or
         -3 div intExpr(-3) <>  1 or
         -4 div intExpr(-3) <>  1 or
         -5 div intExpr(-3) <>  1 or
         -6 div intExpr(-3) <>  2 or
         -7 div intExpr(-3) <>  2 or
         -8 div intExpr(-3) <>  2 or
         -9 div intExpr(-3) <>  3 or
        -10 div intExpr(-3) <>  3 or
         10 div intExpr(-4) <> -2 or
          9 div intExpr(-4) <> -2 or
          8 div intExpr(-4) <> -2 or
          7 div intExpr(-4) <> -1 or
          6 div intExpr(-4) <> -1 or
          5 div intExpr(-4) <> -1 or
          4 div intExpr(-4) <> -1 or
          3 div intExpr(-4) <>  0 or
          2 div intExpr(-4) <>  0 or
          1 div intExpr(-4) <>  0 or
          0 div intExpr(-4) <>  0 or
         -1 div intExpr(-4) <>  0 or
         -2 div intExpr(-4) <>  0 or
         -3 div intExpr(-4) <>  0 or
         -4 div intExpr(-4) <>  1 or
         -5 div intExpr(-4) <>  1 or
         -6 div intExpr(-4) <>  1 or
         -7 div intExpr(-4) <>  1 or
         -8 div intExpr(-4) <>  2 or
         -9 div intExpr(-4) <>  2 or
        -10 div intExpr(-4) <>  2 or
         10 div intExpr(-5) <> -2 or
          9 div intExpr(-5) <> -1 or
          8 div intExpr(-5) <> -1 or
          7 div intExpr(-5) <> -1 or
          6 div intExpr(-5) <> -1 or
          5 div intExpr(-5) <> -1 or
          4 div intExpr(-5) <>  0 or
          3 div intExpr(-5) <>  0 or
          2 div intExpr(-5) <>  0 or
          1 div intExpr(-5) <>  0 or
          0 div intExpr(-5) <>  0 or
         -1 div intExpr(-5) <>  0 or
         -2 div intExpr(-5) <>  0 or
         -3 div intExpr(-5) <>  0 or
         -4 div intExpr(-5) <>  0 or
         -5 div intExpr(-5) <>  1 or
         -6 div intExpr(-5) <>  1 or
         -7 div intExpr(-5) <>  1 or
         -8 div intExpr(-5) <>  1 or
         -9 div intExpr(-5) <>  1 or
        -10 div intExpr(-5) <>  2 then
      writeln(" ***** div with a constant and an expression does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr( 10) div intExpr( 5) <>  2 or
        intExpr(  9) div intExpr( 5) <>  1 or
        intExpr(  8) div intExpr( 5) <>  1 or
        intExpr(  7) div intExpr( 5) <>  1 or
        intExpr(  6) div intExpr( 5) <>  1 or
        intExpr(  5) div intExpr( 5) <>  1 or
        intExpr(  4) div intExpr( 5) <>  0 or
        intExpr(  3) div intExpr( 5) <>  0 or
        intExpr(  2) div intExpr( 5) <>  0 or
        intExpr(  1) div intExpr( 5) <>  0 or
        intExpr(  0) div intExpr( 5) <>  0 or
        intExpr( -1) div intExpr( 5) <>  0 or
        intExpr( -2) div intExpr( 5) <>  0 or
        intExpr( -3) div intExpr( 5) <>  0 or
        intExpr( -4) div intExpr( 5) <>  0 or
        intExpr( -5) div intExpr( 5) <> -1 or
        intExpr( -6) div intExpr( 5) <> -1 or
        intExpr( -7) div intExpr( 5) <> -1 or
        intExpr( -8) div intExpr( 5) <> -1 or
        intExpr( -9) div intExpr( 5) <> -1 or
        intExpr(-10) div intExpr( 5) <> -2 or
        intExpr( 10) div intExpr( 4) <>  2 or
        intExpr(  9) div intExpr( 4) <>  2 or
        intExpr(  8) div intExpr( 4) <>  2 or
        intExpr(  7) div intExpr( 4) <>  1 or
        intExpr(  6) div intExpr( 4) <>  1 or
        intExpr(  5) div intExpr( 4) <>  1 or
        intExpr(  4) div intExpr( 4) <>  1 or
        intExpr(  3) div intExpr( 4) <>  0 or
        intExpr(  2) div intExpr( 4) <>  0 or
        intExpr(  1) div intExpr( 4) <>  0 or
        intExpr(  0) div intExpr( 4) <>  0 or
        intExpr( -1) div intExpr( 4) <>  0 or
        intExpr( -2) div intExpr( 4) <>  0 or
        intExpr( -3) div intExpr( 4) <>  0 or
        intExpr( -4) div intExpr( 4) <> -1 or
        intExpr( -5) div intExpr( 4) <> -1 or
        intExpr( -6) div intExpr( 4) <> -1 or
        intExpr( -7) div intExpr( 4) <> -1 or
        intExpr( -8) div intExpr( 4) <> -2 or
        intExpr( -9) div intExpr( 4) <> -2 or
        intExpr(-10) div intExpr( 4) <> -2 or
        intExpr( 10) div intExpr( 3) <>  3 or
        intExpr(  9) div intExpr( 3) <>  3 or
        intExpr(  8) div intExpr( 3) <>  2 or
        intExpr(  7) div intExpr( 3) <>  2 or
        intExpr(  6) div intExpr( 3) <>  2 or
        intExpr(  5) div intExpr( 3) <>  1 or
        intExpr(  4) div intExpr( 3) <>  1 or
        intExpr(  3) div intExpr( 3) <>  1 or
        intExpr(  2) div intExpr( 3) <>  0 or
        intExpr(  1) div intExpr( 3) <>  0 or
        intExpr(  0) div intExpr( 3) <>  0 or
        intExpr( -1) div intExpr( 3) <>  0 or
        intExpr( -2) div intExpr( 3) <>  0 or
        intExpr( -3) div intExpr( 3) <> -1 or
        intExpr( -4) div intExpr( 3) <> -1 or
        intExpr( -5) div intExpr( 3) <> -1 or
        intExpr( -6) div intExpr( 3) <> -2 or
        intExpr( -7) div intExpr( 3) <> -2 or
        intExpr( -8) div intExpr( 3) <> -2 or
        intExpr( -9) div intExpr( 3) <> -3 or
        intExpr(-10) div intExpr( 3) <> -3 or
        intExpr( 10) div intExpr( 2) <>  5 or
        intExpr(  9) div intExpr( 2) <>  4 or
        intExpr(  8) div intExpr( 2) <>  4 or
        intExpr(  7) div intExpr( 2) <>  3 or
        intExpr(  6) div intExpr( 2) <>  3 or
        intExpr(  5) div intExpr( 2) <>  2 or
        intExpr(  4) div intExpr( 2) <>  2 or
        intExpr(  3) div intExpr( 2) <>  1 or
        intExpr(  2) div intExpr( 2) <>  1 or
        intExpr(  1) div intExpr( 2) <>  0 or
        intExpr(  0) div intExpr( 2) <>  0 or
        intExpr( -1) div intExpr( 2) <>  0 or
        intExpr( -2) div intExpr( 2) <> -1 or
        intExpr( -3) div intExpr( 2) <> -1 or
        intExpr( -4) div intExpr( 2) <> -2 or
        intExpr( -5) div intExpr( 2) <> -2 or
        intExpr( -6) div intExpr( 2) <> -3 or
        intExpr( -7) div intExpr( 2) <> -3 or
        intExpr( -8) div intExpr( 2) <> -4 or
        intExpr( -9) div intExpr( 2) <> -4 or
        intExpr(-10) div intExpr( 2) <> -5 or
        intExpr( 10) div intExpr( 1) <> 10 or
        intExpr(  9) div intExpr( 1) <>  9 or
        intExpr(  8) div intExpr( 1) <>  8 or
        intExpr(  7) div intExpr( 1) <>  7 or
        intExpr(  6) div intExpr( 1) <>  6 or
        intExpr(  5) div intExpr( 1) <>  5 or
        intExpr(  4) div intExpr( 1) <>  4 or
        intExpr(  3) div intExpr( 1) <>  3 or
        intExpr(  2) div intExpr( 1) <>  2 or
        intExpr(  1) div intExpr( 1) <>  1 or
        intExpr(  0) div intExpr( 1) <>  0 or
        intExpr( -1) div intExpr( 1) <> -1 or
        intExpr( -2) div intExpr( 1) <> -2 or
        intExpr( -3) div intExpr( 1) <> -3 or
        intExpr( -4) div intExpr( 1) <> -4 or
        intExpr( -5) div intExpr( 1) <> -5 or
        intExpr( -6) div intExpr( 1) <> -6 or
        intExpr( -7) div intExpr( 1) <> -7 or
        intExpr( -8) div intExpr( 1) <> -8 or
        intExpr( -9) div intExpr( 1) <> -9 or
        intExpr(-10) div intExpr( 1) <> -10 or
        intExpr( 10) div intExpr(-1) <> -10 or
        intExpr(  9) div intExpr(-1) <> -9 or
        intExpr(  8) div intExpr(-1) <> -8 or
        intExpr(  7) div intExpr(-1) <> -7 or
        intExpr(  6) div intExpr(-1) <> -6 or
        intExpr(  5) div intExpr(-1) <> -5 or
        intExpr(  4) div intExpr(-1) <> -4 or
        intExpr(  3) div intExpr(-1) <> -3 or
        intExpr(  2) div intExpr(-1) <> -2 or
        intExpr(  1) div intExpr(-1) <> -1 or
        intExpr(  0) div intExpr(-1) <>  0 or
        intExpr( -1) div intExpr(-1) <>  1 or
        intExpr( -2) div intExpr(-1) <>  2 or
        intExpr( -3) div intExpr(-1) <>  3 or
        intExpr( -4) div intExpr(-1) <>  4 or
        intExpr( -5) div intExpr(-1) <>  5 or
        intExpr( -6) div intExpr(-1) <>  6 or
        intExpr( -7) div intExpr(-1) <>  7 or
        intExpr( -8) div intExpr(-1) <>  8 or
        intExpr( -9) div intExpr(-1) <>  9 or
        intExpr(-10) div intExpr(-1) <> 10 or
        intExpr( 10) div intExpr(-2) <> -5 or
        intExpr(  9) div intExpr(-2) <> -4 or
        intExpr(  8) div intExpr(-2) <> -4 or
        intExpr(  7) div intExpr(-2) <> -3 or
        intExpr(  6) div intExpr(-2) <> -3 or
        intExpr(  5) div intExpr(-2) <> -2 or
        intExpr(  4) div intExpr(-2) <> -2 or
        intExpr(  3) div intExpr(-2) <> -1 or
        intExpr(  2) div intExpr(-2) <> -1 or
        intExpr(  1) div intExpr(-2) <>  0 or
        intExpr(  0) div intExpr(-2) <>  0 or
        intExpr( -1) div intExpr(-2) <>  0 or
        intExpr( -2) div intExpr(-2) <>  1 or
        intExpr( -3) div intExpr(-2) <>  1 or
        intExpr( -4) div intExpr(-2) <>  2 or
        intExpr( -5) div intExpr(-2) <>  2 or
        intExpr( -6) div intExpr(-2) <>  3 or
        intExpr( -7) div intExpr(-2) <>  3 or
        intExpr( -8) div intExpr(-2) <>  4 or
        intExpr( -9) div intExpr(-2) <>  4 or
        intExpr(-10) div intExpr(-2) <>  5 or
        intExpr( 10) div intExpr(-3) <> -3 or
        intExpr(  9) div intExpr(-3) <> -3 or
        intExpr(  8) div intExpr(-3) <> -2 or
        intExpr(  7) div intExpr(-3) <> -2 or
        intExpr(  6) div intExpr(-3) <> -2 or
        intExpr(  5) div intExpr(-3) <> -1 or
        intExpr(  4) div intExpr(-3) <> -1 or
        intExpr(  3) div intExpr(-3) <> -1 or
        intExpr(  2) div intExpr(-3) <>  0 or
        intExpr(  1) div intExpr(-3) <>  0 or
        intExpr(  0) div intExpr(-3) <>  0 or
        intExpr( -1) div intExpr(-3) <>  0 or
        intExpr( -2) div intExpr(-3) <>  0 or
        intExpr( -3) div intExpr(-3) <>  1 or
        intExpr( -4) div intExpr(-3) <>  1 or
        intExpr( -5) div intExpr(-3) <>  1 or
        intExpr( -6) div intExpr(-3) <>  2 or
        intExpr( -7) div intExpr(-3) <>  2 or
        intExpr( -8) div intExpr(-3) <>  2 or
        intExpr( -9) div intExpr(-3) <>  3 or
        intExpr(-10) div intExpr(-3) <>  3 or
        intExpr( 10) div intExpr(-4) <> -2 or
        intExpr(  9) div intExpr(-4) <> -2 or
        intExpr(  8) div intExpr(-4) <> -2 or
        intExpr(  7) div intExpr(-4) <> -1 or
        intExpr(  6) div intExpr(-4) <> -1 or
        intExpr(  5) div intExpr(-4) <> -1 or
        intExpr(  4) div intExpr(-4) <> -1 or
        intExpr(  3) div intExpr(-4) <>  0 or
        intExpr(  2) div intExpr(-4) <>  0 or
        intExpr(  1) div intExpr(-4) <>  0 or
        intExpr(  0) div intExpr(-4) <>  0 or
        intExpr( -1) div intExpr(-4) <>  0 or
        intExpr( -2) div intExpr(-4) <>  0 or
        intExpr( -3) div intExpr(-4) <>  0 or
        intExpr( -4) div intExpr(-4) <>  1 or
        intExpr( -5) div intExpr(-4) <>  1 or
        intExpr( -6) div intExpr(-4) <>  1 or
        intExpr( -7) div intExpr(-4) <>  1 or
        intExpr( -8) div intExpr(-4) <>  2 or
        intExpr( -9) div intExpr(-4) <>  2 or
        intExpr(-10) div intExpr(-4) <>  2 or
        intExpr( 10) div intExpr(-5) <> -2 or
        intExpr(  9) div intExpr(-5) <> -1 or
        intExpr(  8) div intExpr(-5) <> -1 or
        intExpr(  7) div intExpr(-5) <> -1 or
        intExpr(  6) div intExpr(-5) <> -1 or
        intExpr(  5) div intExpr(-5) <> -1 or
        intExpr(  4) div intExpr(-5) <>  0 or
        intExpr(  3) div intExpr(-5) <>  0 or
        intExpr(  2) div intExpr(-5) <>  0 or
        intExpr(  1) div intExpr(-5) <>  0 or
        intExpr(  0) div intExpr(-5) <>  0 or
        intExpr( -1) div intExpr(-5) <>  0 or
        intExpr( -2) div intExpr(-5) <>  0 or
        intExpr( -3) div intExpr(-5) <>  0 or
        intExpr( -4) div intExpr(-5) <>  0 or
        intExpr( -5) div intExpr(-5) <>  1 or
        intExpr( -6) div intExpr(-5) <>  1 or
        intExpr( -7) div intExpr(-5) <>  1 or
        intExpr( -8) div intExpr(-5) <>  1 or
        intExpr( -9) div intExpr(-5) <>  1 or
        intExpr(-10) div intExpr(-5) <>  2 then
      writeln(" ***** div with two expressions does not work correct.");
      okay := FALSE;
    end if;
    if okay then
      writeln("Div works correct for selected values.");
    else
      writeln(" ***** div does not work correct.");
    end if;
  end func;


const proc: check_rem is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if   10 rem  5 <>  0 or
          9 rem  5 <>  4 or
          8 rem  5 <>  3 or
          7 rem  5 <>  2 or
          6 rem  5 <>  1 or
          5 rem  5 <>  0 or
          4 rem  5 <>  4 or
          3 rem  5 <>  3 or
          2 rem  5 <>  2 or
          1 rem  5 <>  1 or
          0 rem  5 <>  0 or
         -1 rem  5 <> -1 or
         -2 rem  5 <> -2 or
         -3 rem  5 <> -3 or
         -4 rem  5 <> -4 or
         -5 rem  5 <>  0 or
         -6 rem  5 <> -1 or
         -7 rem  5 <> -2 or
         -8 rem  5 <> -3 or
         -9 rem  5 <> -4 or
        -10 rem  5 <>  0 or
         10 rem  4 <>  2 or
          9 rem  4 <>  1 or
          8 rem  4 <>  0 or
          7 rem  4 <>  3 or
          6 rem  4 <>  2 or
          5 rem  4 <>  1 or
          4 rem  4 <>  0 or
          3 rem  4 <>  3 or
          2 rem  4 <>  2 or
          1 rem  4 <>  1 or
          0 rem  4 <>  0 or
         -1 rem  4 <> -1 or
         -2 rem  4 <> -2 or
         -3 rem  4 <> -3 or
         -4 rem  4 <>  0 or
         -5 rem  4 <> -1 or
         -6 rem  4 <> -2 or
         -7 rem  4 <> -3 or
         -8 rem  4 <>  0 or
         -9 rem  4 <> -1 or
        -10 rem  4 <> -2 or
         10 rem  3 <>  1 or
          9 rem  3 <>  0 or
          8 rem  3 <>  2 or
          7 rem  3 <>  1 or
          6 rem  3 <>  0 or
          5 rem  3 <>  2 or
          4 rem  3 <>  1 or
          3 rem  3 <>  0 or
          2 rem  3 <>  2 or
          1 rem  3 <>  1 or
          0 rem  3 <>  0 or
         -1 rem  3 <> -1 or
         -2 rem  3 <> -2 or
         -3 rem  3 <>  0 or
         -4 rem  3 <> -1 or
         -5 rem  3 <> -2 or
         -6 rem  3 <>  0 or
         -7 rem  3 <> -1 or
         -8 rem  3 <> -2 or
         -9 rem  3 <>  0 or
        -10 rem  3 <> -1 or
         10 rem  2 <>  0 or
          9 rem  2 <>  1 or
          8 rem  2 <>  0 or
          7 rem  2 <>  1 or
          6 rem  2 <>  0 or
          5 rem  2 <>  1 or
          4 rem  2 <>  0 or
          3 rem  2 <>  1 or
          2 rem  2 <>  0 or
          1 rem  2 <>  1 or
          0 rem  2 <>  0 or
         -1 rem  2 <> -1 or
         -2 rem  2 <>  0 or
         -3 rem  2 <> -1 or
         -4 rem  2 <>  0 or
         -5 rem  2 <> -1 or
         -6 rem  2 <>  0 or
         -7 rem  2 <> -1 or
         -8 rem  2 <>  0 or
         -9 rem  2 <> -1 or
        -10 rem  2 <>  0 or
         10 rem  1 <>  0 or
          9 rem  1 <>  0 or
          8 rem  1 <>  0 or
          7 rem  1 <>  0 or
          6 rem  1 <>  0 or
          5 rem  1 <>  0 or
          4 rem  1 <>  0 or
          3 rem  1 <>  0 or
          2 rem  1 <>  0 or
          1 rem  1 <>  0 or
          0 rem  1 <>  0 or
         -1 rem  1 <>  0 or
         -2 rem  1 <>  0 or
         -3 rem  1 <>  0 or
         -4 rem  1 <>  0 or
         -5 rem  1 <>  0 or
         -6 rem  1 <>  0 or
         -7 rem  1 <>  0 or
         -8 rem  1 <>  0 or
         -9 rem  1 <>  0 or
        -10 rem  1 <>  0 or
         10 rem -1 <>  0 or
          9 rem -1 <>  0 or
          8 rem -1 <>  0 or
          7 rem -1 <>  0 or
          6 rem -1 <>  0 or
          5 rem -1 <>  0 or
          4 rem -1 <>  0 or
          3 rem -1 <>  0 or
          2 rem -1 <>  0 or
          1 rem -1 <>  0 or
          0 rem -1 <>  0 or
         -1 rem -1 <>  0 or
         -2 rem -1 <>  0 or
         -3 rem -1 <>  0 or
         -4 rem -1 <>  0 or
         -5 rem -1 <>  0 or
         -6 rem -1 <>  0 or
         -7 rem -1 <>  0 or
         -8 rem -1 <>  0 or
         -9 rem -1 <>  0 or
        -10 rem -1 <>  0 or
         10 rem -2 <>  0 or
          9 rem -2 <>  1 or
          8 rem -2 <>  0 or
          7 rem -2 <>  1 or
          6 rem -2 <>  0 or
          5 rem -2 <>  1 or
          4 rem -2 <>  0 or
          3 rem -2 <>  1 or
          2 rem -2 <>  0 or
          1 rem -2 <>  1 or
          0 rem -2 <>  0 or
         -1 rem -2 <> -1 or
         -2 rem -2 <>  0 or
         -3 rem -2 <> -1 or
         -4 rem -2 <>  0 or
         -5 rem -2 <> -1 or
         -6 rem -2 <>  0 or
         -7 rem -2 <> -1 or
         -8 rem -2 <>  0 or
         -9 rem -2 <> -1 or
        -10 rem -2 <>  0 or
         10 rem -3 <>  1 or
          9 rem -3 <>  0 or
          8 rem -3 <>  2 or
          7 rem -3 <>  1 or
          6 rem -3 <>  0 or
          5 rem -3 <>  2 or
          4 rem -3 <>  1 or
          3 rem -3 <>  0 or
          2 rem -3 <>  2 or
          1 rem -3 <>  1 or
          0 rem -3 <>  0 or
         -1 rem -3 <> -1 or
         -2 rem -3 <> -2 or
         -3 rem -3 <>  0 or
         -4 rem -3 <> -1 or
         -5 rem -3 <> -2 or
         -6 rem -3 <>  0 or
         -7 rem -3 <> -1 or
         -8 rem -3 <> -2 or
         -9 rem -3 <>  0 or
        -10 rem -3 <> -1 or
         10 rem -4 <>  2 or
          9 rem -4 <>  1 or
          8 rem -4 <>  0 or
          7 rem -4 <>  3 or
          6 rem -4 <>  2 or
          5 rem -4 <>  1 or
          4 rem -4 <>  0 or
          3 rem -4 <>  3 or
          2 rem -4 <>  2 or
          1 rem -4 <>  1 or
          0 rem -4 <>  0 or
         -1 rem -4 <> -1 or
         -2 rem -4 <> -2 or
         -3 rem -4 <> -3 or
         -4 rem -4 <>  0 or
         -5 rem -4 <> -1 or
         -6 rem -4 <> -2 or
         -7 rem -4 <> -3 or
         -8 rem -4 <>  0 or
         -9 rem -4 <> -1 or
        -10 rem -4 <> -2 or
         10 rem -5 <>  0 or
          9 rem -5 <>  4 or
          8 rem -5 <>  3 or
          7 rem -5 <>  2 or
          6 rem -5 <>  1 or
          5 rem -5 <>  0 or
          4 rem -5 <>  4 or
          3 rem -5 <>  3 or
          2 rem -5 <>  2 or
          1 rem -5 <>  1 or
          0 rem -5 <>  0 or
         -1 rem -5 <> -1 or
         -2 rem -5 <> -2 or
         -3 rem -5 <> -3 or
         -4 rem -5 <> -4 or
         -5 rem -5 <>  0 or
         -6 rem -5 <> -1 or
         -7 rem -5 <> -2 or
         -8 rem -5 <> -3 or
         -9 rem -5 <> -4 or
        -10 rem -5 <>  0 then
      writeln(" ***** rem with two constants does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr( 10) rem  5 <>  0 or
        intExpr(  9) rem  5 <>  4 or
        intExpr(  8) rem  5 <>  3 or
        intExpr(  7) rem  5 <>  2 or
        intExpr(  6) rem  5 <>  1 or
        intExpr(  5) rem  5 <>  0 or
        intExpr(  4) rem  5 <>  4 or
        intExpr(  3) rem  5 <>  3 or
        intExpr(  2) rem  5 <>  2 or
        intExpr(  1) rem  5 <>  1 or
        intExpr(  0) rem  5 <>  0 or
        intExpr( -1) rem  5 <> -1 or
        intExpr( -2) rem  5 <> -2 or
        intExpr( -3) rem  5 <> -3 or
        intExpr( -4) rem  5 <> -4 or
        intExpr( -5) rem  5 <>  0 or
        intExpr( -6) rem  5 <> -1 or
        intExpr( -7) rem  5 <> -2 or
        intExpr( -8) rem  5 <> -3 or
        intExpr( -9) rem  5 <> -4 or
        intExpr(-10) rem  5 <>  0 or
        intExpr( 10) rem  4 <>  2 or
        intExpr(  9) rem  4 <>  1 or
        intExpr(  8) rem  4 <>  0 or
        intExpr(  7) rem  4 <>  3 or
        intExpr(  6) rem  4 <>  2 or
        intExpr(  5) rem  4 <>  1 or
        intExpr(  4) rem  4 <>  0 or
        intExpr(  3) rem  4 <>  3 or
        intExpr(  2) rem  4 <>  2 or
        intExpr(  1) rem  4 <>  1 or
        intExpr(  0) rem  4 <>  0 or
        intExpr( -1) rem  4 <> -1 or
        intExpr( -2) rem  4 <> -2 or
        intExpr( -3) rem  4 <> -3 or
        intExpr( -4) rem  4 <>  0 or
        intExpr( -5) rem  4 <> -1 or
        intExpr( -6) rem  4 <> -2 or
        intExpr( -7) rem  4 <> -3 or
        intExpr( -8) rem  4 <>  0 or
        intExpr( -9) rem  4 <> -1 or
        intExpr(-10) rem  4 <> -2 or
        intExpr( 10) rem  3 <>  1 or
        intExpr(  9) rem  3 <>  0 or
        intExpr(  8) rem  3 <>  2 or
        intExpr(  7) rem  3 <>  1 or
        intExpr(  6) rem  3 <>  0 or
        intExpr(  5) rem  3 <>  2 or
        intExpr(  4) rem  3 <>  1 or
        intExpr(  3) rem  3 <>  0 or
        intExpr(  2) rem  3 <>  2 or
        intExpr(  1) rem  3 <>  1 or
        intExpr(  0) rem  3 <>  0 or
        intExpr( -1) rem  3 <> -1 or
        intExpr( -2) rem  3 <> -2 or
        intExpr( -3) rem  3 <>  0 or
        intExpr( -4) rem  3 <> -1 or
        intExpr( -5) rem  3 <> -2 or
        intExpr( -6) rem  3 <>  0 or
        intExpr( -7) rem  3 <> -1 or
        intExpr( -8) rem  3 <> -2 or
        intExpr( -9) rem  3 <>  0 or
        intExpr(-10) rem  3 <> -1 or
        intExpr( 10) rem  2 <>  0 or
        intExpr(  9) rem  2 <>  1 or
        intExpr(  8) rem  2 <>  0 or
        intExpr(  7) rem  2 <>  1 or
        intExpr(  6) rem  2 <>  0 or
        intExpr(  5) rem  2 <>  1 or
        intExpr(  4) rem  2 <>  0 or
        intExpr(  3) rem  2 <>  1 or
        intExpr(  2) rem  2 <>  0 or
        intExpr(  1) rem  2 <>  1 or
        intExpr(  0) rem  2 <>  0 or
        intExpr( -1) rem  2 <> -1 or
        intExpr( -2) rem  2 <>  0 or
        intExpr( -3) rem  2 <> -1 or
        intExpr( -4) rem  2 <>  0 or
        intExpr( -5) rem  2 <> -1 or
        intExpr( -6) rem  2 <>  0 or
        intExpr( -7) rem  2 <> -1 or
        intExpr( -8) rem  2 <>  0 or
        intExpr( -9) rem  2 <> -1 or
        intExpr(-10) rem  2 <>  0 or
        intExpr( 10) rem  1 <>  0 or
        intExpr(  9) rem  1 <>  0 or
        intExpr(  8) rem  1 <>  0 or
        intExpr(  7) rem  1 <>  0 or
        intExpr(  6) rem  1 <>  0 or
        intExpr(  5) rem  1 <>  0 or
        intExpr(  4) rem  1 <>  0 or
        intExpr(  3) rem  1 <>  0 or
        intExpr(  2) rem  1 <>  0 or
        intExpr(  1) rem  1 <>  0 or
        intExpr(  0) rem  1 <>  0 or
        intExpr( -1) rem  1 <>  0 or
        intExpr( -2) rem  1 <>  0 or
        intExpr( -3) rem  1 <>  0 or
        intExpr( -4) rem  1 <>  0 or
        intExpr( -5) rem  1 <>  0 or
        intExpr( -6) rem  1 <>  0 or
        intExpr( -7) rem  1 <>  0 or
        intExpr( -8) rem  1 <>  0 or
        intExpr( -9) rem  1 <>  0 or
        intExpr(-10) rem  1 <>  0 or
        intExpr( 10) rem -1 <>  0 or
        intExpr(  9) rem -1 <>  0 or
        intExpr(  8) rem -1 <>  0 or
        intExpr(  7) rem -1 <>  0 or
        intExpr(  6) rem -1 <>  0 or
        intExpr(  5) rem -1 <>  0 or
        intExpr(  4) rem -1 <>  0 or
        intExpr(  3) rem -1 <>  0 or
        intExpr(  2) rem -1 <>  0 or
        intExpr(  1) rem -1 <>  0 or
        intExpr(  0) rem -1 <>  0 or
        intExpr( -1) rem -1 <>  0 or
        intExpr( -2) rem -1 <>  0 or
        intExpr( -3) rem -1 <>  0 or
        intExpr( -4) rem -1 <>  0 or
        intExpr( -5) rem -1 <>  0 or
        intExpr( -6) rem -1 <>  0 or
        intExpr( -7) rem -1 <>  0 or
        intExpr( -8) rem -1 <>  0 or
        intExpr( -9) rem -1 <>  0 or
        intExpr(-10) rem -1 <>  0 or
        intExpr( 10) rem -2 <>  0 or
        intExpr(  9) rem -2 <>  1 or
        intExpr(  8) rem -2 <>  0 or
        intExpr(  7) rem -2 <>  1 or
        intExpr(  6) rem -2 <>  0 or
        intExpr(  5) rem -2 <>  1 or
        intExpr(  4) rem -2 <>  0 or
        intExpr(  3) rem -2 <>  1 or
        intExpr(  2) rem -2 <>  0 or
        intExpr(  1) rem -2 <>  1 or
        intExpr(  0) rem -2 <>  0 or
        intExpr( -1) rem -2 <> -1 or
        intExpr( -2) rem -2 <>  0 or
        intExpr( -3) rem -2 <> -1 or
        intExpr( -4) rem -2 <>  0 or
        intExpr( -5) rem -2 <> -1 or
        intExpr( -6) rem -2 <>  0 or
        intExpr( -7) rem -2 <> -1 or
        intExpr( -8) rem -2 <>  0 or
        intExpr( -9) rem -2 <> -1 or
        intExpr(-10) rem -2 <>  0 or
        intExpr( 10) rem -3 <>  1 or
        intExpr(  9) rem -3 <>  0 or
        intExpr(  8) rem -3 <>  2 or
        intExpr(  7) rem -3 <>  1 or
        intExpr(  6) rem -3 <>  0 or
        intExpr(  5) rem -3 <>  2 or
        intExpr(  4) rem -3 <>  1 or
        intExpr(  3) rem -3 <>  0 or
        intExpr(  2) rem -3 <>  2 or
        intExpr(  1) rem -3 <>  1 or
        intExpr(  0) rem -3 <>  0 or
        intExpr( -1) rem -3 <> -1 or
        intExpr( -2) rem -3 <> -2 or
        intExpr( -3) rem -3 <>  0 or
        intExpr( -4) rem -3 <> -1 or
        intExpr( -5) rem -3 <> -2 or
        intExpr( -6) rem -3 <>  0 or
        intExpr( -7) rem -3 <> -1 or
        intExpr( -8) rem -3 <> -2 or
        intExpr( -9) rem -3 <>  0 or
        intExpr(-10) rem -3 <> -1 or
        intExpr( 10) rem -4 <>  2 or
        intExpr(  9) rem -4 <>  1 or
        intExpr(  8) rem -4 <>  0 or
        intExpr(  7) rem -4 <>  3 or
        intExpr(  6) rem -4 <>  2 or
        intExpr(  5) rem -4 <>  1 or
        intExpr(  4) rem -4 <>  0 or
        intExpr(  3) rem -4 <>  3 or
        intExpr(  2) rem -4 <>  2 or
        intExpr(  1) rem -4 <>  1 or
        intExpr(  0) rem -4 <>  0 or
        intExpr( -1) rem -4 <> -1 or
        intExpr( -2) rem -4 <> -2 or
        intExpr( -3) rem -4 <> -3 or
        intExpr( -4) rem -4 <>  0 or
        intExpr( -5) rem -4 <> -1 or
        intExpr( -6) rem -4 <> -2 or
        intExpr( -7) rem -4 <> -3 or
        intExpr( -8) rem -4 <>  0 or
        intExpr( -9) rem -4 <> -1 or
        intExpr(-10) rem -4 <> -2 or
        intExpr( 10) rem -5 <>  0 or
        intExpr(  9) rem -5 <>  4 or
        intExpr(  8) rem -5 <>  3 or
        intExpr(  7) rem -5 <>  2 or
        intExpr(  6) rem -5 <>  1 or
        intExpr(  5) rem -5 <>  0 or
        intExpr(  4) rem -5 <>  4 or
        intExpr(  3) rem -5 <>  3 or
        intExpr(  2) rem -5 <>  2 or
        intExpr(  1) rem -5 <>  1 or
        intExpr(  0) rem -5 <>  0 or
        intExpr( -1) rem -5 <> -1 or
        intExpr( -2) rem -5 <> -2 or
        intExpr( -3) rem -5 <> -3 or
        intExpr( -4) rem -5 <> -4 or
        intExpr( -5) rem -5 <>  0 or
        intExpr( -6) rem -5 <> -1 or
        intExpr( -7) rem -5 <> -2 or
        intExpr( -8) rem -5 <> -3 or
        intExpr( -9) rem -5 <> -4 or
        intExpr(-10) rem -5 <>  0 then
      writeln(" ***** rem with an expression and a constant does not work correct.");
      okay := FALSE;
    end if;
    if   10 rem intExpr( 5) <>  0 or
          9 rem intExpr( 5) <>  4 or
          8 rem intExpr( 5) <>  3 or
          7 rem intExpr( 5) <>  2 or
          6 rem intExpr( 5) <>  1 or
          5 rem intExpr( 5) <>  0 or
          4 rem intExpr( 5) <>  4 or
          3 rem intExpr( 5) <>  3 or
          2 rem intExpr( 5) <>  2 or
          1 rem intExpr( 5) <>  1 or
          0 rem intExpr( 5) <>  0 or
         -1 rem intExpr( 5) <> -1 or
         -2 rem intExpr( 5) <> -2 or
         -3 rem intExpr( 5) <> -3 or
         -4 rem intExpr( 5) <> -4 or
         -5 rem intExpr( 5) <>  0 or
         -6 rem intExpr( 5) <> -1 or
         -7 rem intExpr( 5) <> -2 or
         -8 rem intExpr( 5) <> -3 or
         -9 rem intExpr( 5) <> -4 or
        -10 rem intExpr( 5) <>  0 or
         10 rem intExpr( 4) <>  2 or
          9 rem intExpr( 4) <>  1 or
          8 rem intExpr( 4) <>  0 or
          7 rem intExpr( 4) <>  3 or
          6 rem intExpr( 4) <>  2 or
          5 rem intExpr( 4) <>  1 or
          4 rem intExpr( 4) <>  0 or
          3 rem intExpr( 4) <>  3 or
          2 rem intExpr( 4) <>  2 or
          1 rem intExpr( 4) <>  1 or
          0 rem intExpr( 4) <>  0 or
         -1 rem intExpr( 4) <> -1 or
         -2 rem intExpr( 4) <> -2 or
         -3 rem intExpr( 4) <> -3 or
         -4 rem intExpr( 4) <>  0 or
         -5 rem intExpr( 4) <> -1 or
         -6 rem intExpr( 4) <> -2 or
         -7 rem intExpr( 4) <> -3 or
         -8 rem intExpr( 4) <>  0 or
         -9 rem intExpr( 4) <> -1 or
        -10 rem intExpr( 4) <> -2 or
         10 rem intExpr( 3) <>  1 or
          9 rem intExpr( 3) <>  0 or
          8 rem intExpr( 3) <>  2 or
          7 rem intExpr( 3) <>  1 or
          6 rem intExpr( 3) <>  0 or
          5 rem intExpr( 3) <>  2 or
          4 rem intExpr( 3) <>  1 or
          3 rem intExpr( 3) <>  0 or
          2 rem intExpr( 3) <>  2 or
          1 rem intExpr( 3) <>  1 or
          0 rem intExpr( 3) <>  0 or
         -1 rem intExpr( 3) <> -1 or
         -2 rem intExpr( 3) <> -2 or
         -3 rem intExpr( 3) <>  0 or
         -4 rem intExpr( 3) <> -1 or
         -5 rem intExpr( 3) <> -2 or
         -6 rem intExpr( 3) <>  0 or
         -7 rem intExpr( 3) <> -1 or
         -8 rem intExpr( 3) <> -2 or
         -9 rem intExpr( 3) <>  0 or
        -10 rem intExpr( 3) <> -1 or
         10 rem intExpr( 2) <>  0 or
          9 rem intExpr( 2) <>  1 or
          8 rem intExpr( 2) <>  0 or
          7 rem intExpr( 2) <>  1 or
          6 rem intExpr( 2) <>  0 or
          5 rem intExpr( 2) <>  1 or
          4 rem intExpr( 2) <>  0 or
          3 rem intExpr( 2) <>  1 or
          2 rem intExpr( 2) <>  0 or
          1 rem intExpr( 2) <>  1 or
          0 rem intExpr( 2) <>  0 or
         -1 rem intExpr( 2) <> -1 or
         -2 rem intExpr( 2) <>  0 or
         -3 rem intExpr( 2) <> -1 or
         -4 rem intExpr( 2) <>  0 or
         -5 rem intExpr( 2) <> -1 or
         -6 rem intExpr( 2) <>  0 or
         -7 rem intExpr( 2) <> -1 or
         -8 rem intExpr( 2) <>  0 or
         -9 rem intExpr( 2) <> -1 or
        -10 rem intExpr( 2) <>  0 or
         10 rem intExpr( 1) <>  0 or
          9 rem intExpr( 1) <>  0 or
          8 rem intExpr( 1) <>  0 or
          7 rem intExpr( 1) <>  0 or
          6 rem intExpr( 1) <>  0 or
          5 rem intExpr( 1) <>  0 or
          4 rem intExpr( 1) <>  0 or
          3 rem intExpr( 1) <>  0 or
          2 rem intExpr( 1) <>  0 or
          1 rem intExpr( 1) <>  0 or
          0 rem intExpr( 1) <>  0 or
         -1 rem intExpr( 1) <>  0 or
         -2 rem intExpr( 1) <>  0 or
         -3 rem intExpr( 1) <>  0 or
         -4 rem intExpr( 1) <>  0 or
         -5 rem intExpr( 1) <>  0 or
         -6 rem intExpr( 1) <>  0 or
         -7 rem intExpr( 1) <>  0 or
         -8 rem intExpr( 1) <>  0 or
         -9 rem intExpr( 1) <>  0 or
        -10 rem intExpr( 1) <>  0 or
         10 rem intExpr(-1) <>  0 or
          9 rem intExpr(-1) <>  0 or
          8 rem intExpr(-1) <>  0 or
          7 rem intExpr(-1) <>  0 or
          6 rem intExpr(-1) <>  0 or
          5 rem intExpr(-1) <>  0 or
          4 rem intExpr(-1) <>  0 or
          3 rem intExpr(-1) <>  0 or
          2 rem intExpr(-1) <>  0 or
          1 rem intExpr(-1) <>  0 or
          0 rem intExpr(-1) <>  0 or
         -1 rem intExpr(-1) <>  0 or
         -2 rem intExpr(-1) <>  0 or
         -3 rem intExpr(-1) <>  0 or
         -4 rem intExpr(-1) <>  0 or
         -5 rem intExpr(-1) <>  0 or
         -6 rem intExpr(-1) <>  0 or
         -7 rem intExpr(-1) <>  0 or
         -8 rem intExpr(-1) <>  0 or
         -9 rem intExpr(-1) <>  0 or
        -10 rem intExpr(-1) <>  0 or
         10 rem intExpr(-2) <>  0 or
          9 rem intExpr(-2) <>  1 or
          8 rem intExpr(-2) <>  0 or
          7 rem intExpr(-2) <>  1 or
          6 rem intExpr(-2) <>  0 or
          5 rem intExpr(-2) <>  1 or
          4 rem intExpr(-2) <>  0 or
          3 rem intExpr(-2) <>  1 or
          2 rem intExpr(-2) <>  0 or
          1 rem intExpr(-2) <>  1 or
          0 rem intExpr(-2) <>  0 or
         -1 rem intExpr(-2) <> -1 or
         -2 rem intExpr(-2) <>  0 or
         -3 rem intExpr(-2) <> -1 or
         -4 rem intExpr(-2) <>  0 or
         -5 rem intExpr(-2) <> -1 or
         -6 rem intExpr(-2) <>  0 or
         -7 rem intExpr(-2) <> -1 or
         -8 rem intExpr(-2) <>  0 or
         -9 rem intExpr(-2) <> -1 or
        -10 rem intExpr(-2) <>  0 or
         10 rem intExpr(-3) <>  1 or
          9 rem intExpr(-3) <>  0 or
          8 rem intExpr(-3) <>  2 or
          7 rem intExpr(-3) <>  1 or
          6 rem intExpr(-3) <>  0 or
          5 rem intExpr(-3) <>  2 or
          4 rem intExpr(-3) <>  1 or
          3 rem intExpr(-3) <>  0 or
          2 rem intExpr(-3) <>  2 or
          1 rem intExpr(-3) <>  1 or
          0 rem intExpr(-3) <>  0 or
         -1 rem intExpr(-3) <> -1 or
         -2 rem intExpr(-3) <> -2 or
         -3 rem intExpr(-3) <>  0 or
         -4 rem intExpr(-3) <> -1 or
         -5 rem intExpr(-3) <> -2 or
         -6 rem intExpr(-3) <>  0 or
         -7 rem intExpr(-3) <> -1 or
         -8 rem intExpr(-3) <> -2 or
         -9 rem intExpr(-3) <>  0 or
        -10 rem intExpr(-3) <> -1 or
         10 rem intExpr(-4) <>  2 or
          9 rem intExpr(-4) <>  1 or
          8 rem intExpr(-4) <>  0 or
          7 rem intExpr(-4) <>  3 or
          6 rem intExpr(-4) <>  2 or
          5 rem intExpr(-4) <>  1 or
          4 rem intExpr(-4) <>  0 or
          3 rem intExpr(-4) <>  3 or
          2 rem intExpr(-4) <>  2 or
          1 rem intExpr(-4) <>  1 or
          0 rem intExpr(-4) <>  0 or
         -1 rem intExpr(-4) <> -1 or
         -2 rem intExpr(-4) <> -2 or
         -3 rem intExpr(-4) <> -3 or
         -4 rem intExpr(-4) <>  0 or
         -5 rem intExpr(-4) <> -1 or
         -6 rem intExpr(-4) <> -2 or
         -7 rem intExpr(-4) <> -3 or
         -8 rem intExpr(-4) <>  0 or
         -9 rem intExpr(-4) <> -1 or
        -10 rem intExpr(-4) <> -2 or
         10 rem intExpr(-5) <>  0 or
          9 rem intExpr(-5) <>  4 or
          8 rem intExpr(-5) <>  3 or
          7 rem intExpr(-5) <>  2 or
          6 rem intExpr(-5) <>  1 or
          5 rem intExpr(-5) <>  0 or
          4 rem intExpr(-5) <>  4 or
          3 rem intExpr(-5) <>  3 or
          2 rem intExpr(-5) <>  2 or
          1 rem intExpr(-5) <>  1 or
          0 rem intExpr(-5) <>  0 or
         -1 rem intExpr(-5) <> -1 or
         -2 rem intExpr(-5) <> -2 or
         -3 rem intExpr(-5) <> -3 or
         -4 rem intExpr(-5) <> -4 or
         -5 rem intExpr(-5) <>  0 or
         -6 rem intExpr(-5) <> -1 or
         -7 rem intExpr(-5) <> -2 or
         -8 rem intExpr(-5) <> -3 or
         -9 rem intExpr(-5) <> -4 or
        -10 rem intExpr(-5) <>  0 then
      writeln(" ***** rem with a constant and an expression does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr( 10) rem intExpr( 5) <>  0 or
        intExpr(  9) rem intExpr( 5) <>  4 or
        intExpr(  8) rem intExpr( 5) <>  3 or
        intExpr(  7) rem intExpr( 5) <>  2 or
        intExpr(  6) rem intExpr( 5) <>  1 or
        intExpr(  5) rem intExpr( 5) <>  0 or
        intExpr(  4) rem intExpr( 5) <>  4 or
        intExpr(  3) rem intExpr( 5) <>  3 or
        intExpr(  2) rem intExpr( 5) <>  2 or
        intExpr(  1) rem intExpr( 5) <>  1 or
        intExpr(  0) rem intExpr( 5) <>  0 or
        intExpr( -1) rem intExpr( 5) <> -1 or
        intExpr( -2) rem intExpr( 5) <> -2 or
        intExpr( -3) rem intExpr( 5) <> -3 or
        intExpr( -4) rem intExpr( 5) <> -4 or
        intExpr( -5) rem intExpr( 5) <>  0 or
        intExpr( -6) rem intExpr( 5) <> -1 or
        intExpr( -7) rem intExpr( 5) <> -2 or
        intExpr( -8) rem intExpr( 5) <> -3 or
        intExpr( -9) rem intExpr( 5) <> -4 or
        intExpr(-10) rem intExpr( 5) <>  0 or
        intExpr( 10) rem intExpr( 4) <>  2 or
        intExpr(  9) rem intExpr( 4) <>  1 or
        intExpr(  8) rem intExpr( 4) <>  0 or
        intExpr(  7) rem intExpr( 4) <>  3 or
        intExpr(  6) rem intExpr( 4) <>  2 or
        intExpr(  5) rem intExpr( 4) <>  1 or
        intExpr(  4) rem intExpr( 4) <>  0 or
        intExpr(  3) rem intExpr( 4) <>  3 or
        intExpr(  2) rem intExpr( 4) <>  2 or
        intExpr(  1) rem intExpr( 4) <>  1 or
        intExpr(  0) rem intExpr( 4) <>  0 or
        intExpr( -1) rem intExpr( 4) <> -1 or
        intExpr( -2) rem intExpr( 4) <> -2 or
        intExpr( -3) rem intExpr( 4) <> -3 or
        intExpr( -4) rem intExpr( 4) <>  0 or
        intExpr( -5) rem intExpr( 4) <> -1 or
        intExpr( -6) rem intExpr( 4) <> -2 or
        intExpr( -7) rem intExpr( 4) <> -3 or
        intExpr( -8) rem intExpr( 4) <>  0 or
        intExpr( -9) rem intExpr( 4) <> -1 or
        intExpr(-10) rem intExpr( 4) <> -2 or
        intExpr( 10) rem intExpr( 3) <>  1 or
        intExpr(  9) rem intExpr( 3) <>  0 or
        intExpr(  8) rem intExpr( 3) <>  2 or
        intExpr(  7) rem intExpr( 3) <>  1 or
        intExpr(  6) rem intExpr( 3) <>  0 or
        intExpr(  5) rem intExpr( 3) <>  2 or
        intExpr(  4) rem intExpr( 3) <>  1 or
        intExpr(  3) rem intExpr( 3) <>  0 or
        intExpr(  2) rem intExpr( 3) <>  2 or
        intExpr(  1) rem intExpr( 3) <>  1 or
        intExpr(  0) rem intExpr( 3) <>  0 or
        intExpr( -1) rem intExpr( 3) <> -1 or
        intExpr( -2) rem intExpr( 3) <> -2 or
        intExpr( -3) rem intExpr( 3) <>  0 or
        intExpr( -4) rem intExpr( 3) <> -1 or
        intExpr( -5) rem intExpr( 3) <> -2 or
        intExpr( -6) rem intExpr( 3) <>  0 or
        intExpr( -7) rem intExpr( 3) <> -1 or
        intExpr( -8) rem intExpr( 3) <> -2 or
        intExpr( -9) rem intExpr( 3) <>  0 or
        intExpr(-10) rem intExpr( 3) <> -1 or
        intExpr( 10) rem intExpr( 2) <>  0 or
        intExpr(  9) rem intExpr( 2) <>  1 or
        intExpr(  8) rem intExpr( 2) <>  0 or
        intExpr(  7) rem intExpr( 2) <>  1 or
        intExpr(  6) rem intExpr( 2) <>  0 or
        intExpr(  5) rem intExpr( 2) <>  1 or
        intExpr(  4) rem intExpr( 2) <>  0 or
        intExpr(  3) rem intExpr( 2) <>  1 or
        intExpr(  2) rem intExpr( 2) <>  0 or
        intExpr(  1) rem intExpr( 2) <>  1 or
        intExpr(  0) rem intExpr( 2) <>  0 or
        intExpr( -1) rem intExpr( 2) <> -1 or
        intExpr( -2) rem intExpr( 2) <>  0 or
        intExpr( -3) rem intExpr( 2) <> -1 or
        intExpr( -4) rem intExpr( 2) <>  0 or
        intExpr( -5) rem intExpr( 2) <> -1 or
        intExpr( -6) rem intExpr( 2) <>  0 or
        intExpr( -7) rem intExpr( 2) <> -1 or
        intExpr( -8) rem intExpr( 2) <>  0 or
        intExpr( -9) rem intExpr( 2) <> -1 or
        intExpr(-10) rem intExpr( 2) <>  0 or
        intExpr( 10) rem intExpr( 1) <>  0 or
        intExpr(  9) rem intExpr( 1) <>  0 or
        intExpr(  8) rem intExpr( 1) <>  0 or
        intExpr(  7) rem intExpr( 1) <>  0 or
        intExpr(  6) rem intExpr( 1) <>  0 or
        intExpr(  5) rem intExpr( 1) <>  0 or
        intExpr(  4) rem intExpr( 1) <>  0 or
        intExpr(  3) rem intExpr( 1) <>  0 or
        intExpr(  2) rem intExpr( 1) <>  0 or
        intExpr(  1) rem intExpr( 1) <>  0 or
        intExpr(  0) rem intExpr( 1) <>  0 or
        intExpr( -1) rem intExpr( 1) <>  0 or
        intExpr( -2) rem intExpr( 1) <>  0 or
        intExpr( -3) rem intExpr( 1) <>  0 or
        intExpr( -4) rem intExpr( 1) <>  0 or
        intExpr( -5) rem intExpr( 1) <>  0 or
        intExpr( -6) rem intExpr( 1) <>  0 or
        intExpr( -7) rem intExpr( 1) <>  0 or
        intExpr( -8) rem intExpr( 1) <>  0 or
        intExpr( -9) rem intExpr( 1) <>  0 or
        intExpr(-10) rem intExpr( 1) <>  0 or
        intExpr( 10) rem intExpr(-1) <>  0 or
        intExpr(  9) rem intExpr(-1) <>  0 or
        intExpr(  8) rem intExpr(-1) <>  0 or
        intExpr(  7) rem intExpr(-1) <>  0 or
        intExpr(  6) rem intExpr(-1) <>  0 or
        intExpr(  5) rem intExpr(-1) <>  0 or
        intExpr(  4) rem intExpr(-1) <>  0 or
        intExpr(  3) rem intExpr(-1) <>  0 or
        intExpr(  2) rem intExpr(-1) <>  0 or
        intExpr(  1) rem intExpr(-1) <>  0 or
        intExpr(  0) rem intExpr(-1) <>  0 or
        intExpr( -1) rem intExpr(-1) <>  0 or
        intExpr( -2) rem intExpr(-1) <>  0 or
        intExpr( -3) rem intExpr(-1) <>  0 or
        intExpr( -4) rem intExpr(-1) <>  0 or
        intExpr( -5) rem intExpr(-1) <>  0 or
        intExpr( -6) rem intExpr(-1) <>  0 or
        intExpr( -7) rem intExpr(-1) <>  0 or
        intExpr( -8) rem intExpr(-1) <>  0 or
        intExpr( -9) rem intExpr(-1) <>  0 or
        intExpr(-10) rem intExpr(-1) <>  0 or
        intExpr( 10) rem intExpr(-2) <>  0 or
        intExpr(  9) rem intExpr(-2) <>  1 or
        intExpr(  8) rem intExpr(-2) <>  0 or
        intExpr(  7) rem intExpr(-2) <>  1 or
        intExpr(  6) rem intExpr(-2) <>  0 or
        intExpr(  5) rem intExpr(-2) <>  1 or
        intExpr(  4) rem intExpr(-2) <>  0 or
        intExpr(  3) rem intExpr(-2) <>  1 or
        intExpr(  2) rem intExpr(-2) <>  0 or
        intExpr(  1) rem intExpr(-2) <>  1 or
        intExpr(  0) rem intExpr(-2) <>  0 or
        intExpr( -1) rem intExpr(-2) <> -1 or
        intExpr( -2) rem intExpr(-2) <>  0 or
        intExpr( -3) rem intExpr(-2) <> -1 or
        intExpr( -4) rem intExpr(-2) <>  0 or
        intExpr( -5) rem intExpr(-2) <> -1 or
        intExpr( -6) rem intExpr(-2) <>  0 or
        intExpr( -7) rem intExpr(-2) <> -1 or
        intExpr( -8) rem intExpr(-2) <>  0 or
        intExpr( -9) rem intExpr(-2) <> -1 or
        intExpr(-10) rem intExpr(-2) <>  0 or
        intExpr( 10) rem intExpr(-3) <>  1 or
        intExpr(  9) rem intExpr(-3) <>  0 or
        intExpr(  8) rem intExpr(-3) <>  2 or
        intExpr(  7) rem intExpr(-3) <>  1 or
        intExpr(  6) rem intExpr(-3) <>  0 or
        intExpr(  5) rem intExpr(-3) <>  2 or
        intExpr(  4) rem intExpr(-3) <>  1 or
        intExpr(  3) rem intExpr(-3) <>  0 or
        intExpr(  2) rem intExpr(-3) <>  2 or
        intExpr(  1) rem intExpr(-3) <>  1 or
        intExpr(  0) rem intExpr(-3) <>  0 or
        intExpr( -1) rem intExpr(-3) <> -1 or
        intExpr( -2) rem intExpr(-3) <> -2 or
        intExpr( -3) rem intExpr(-3) <>  0 or
        intExpr( -4) rem intExpr(-3) <> -1 or
        intExpr( -5) rem intExpr(-3) <> -2 or
        intExpr( -6) rem intExpr(-3) <>  0 or
        intExpr( -7) rem intExpr(-3) <> -1 or
        intExpr( -8) rem intExpr(-3) <> -2 or
        intExpr( -9) rem intExpr(-3) <>  0 or
        intExpr(-10) rem intExpr(-3) <> -1 or
        intExpr( 10) rem intExpr(-4) <>  2 or
        intExpr(  9) rem intExpr(-4) <>  1 or
        intExpr(  8) rem intExpr(-4) <>  0 or
        intExpr(  7) rem intExpr(-4) <>  3 or
        intExpr(  6) rem intExpr(-4) <>  2 or
        intExpr(  5) rem intExpr(-4) <>  1 or
        intExpr(  4) rem intExpr(-4) <>  0 or
        intExpr(  3) rem intExpr(-4) <>  3 or
        intExpr(  2) rem intExpr(-4) <>  2 or
        intExpr(  1) rem intExpr(-4) <>  1 or
        intExpr(  0) rem intExpr(-4) <>  0 or
        intExpr( -1) rem intExpr(-4) <> -1 or
        intExpr( -2) rem intExpr(-4) <> -2 or
        intExpr( -3) rem intExpr(-4) <> -3 or
        intExpr( -4) rem intExpr(-4) <>  0 or
        intExpr( -5) rem intExpr(-4) <> -1 or
        intExpr( -6) rem intExpr(-4) <> -2 or
        intExpr( -7) rem intExpr(-4) <> -3 or
        intExpr( -8) rem intExpr(-4) <>  0 or
        intExpr( -9) rem intExpr(-4) <> -1 or
        intExpr(-10) rem intExpr(-4) <> -2 or
        intExpr( 10) rem intExpr(-5) <>  0 or
        intExpr(  9) rem intExpr(-5) <>  4 or
        intExpr(  8) rem intExpr(-5) <>  3 or
        intExpr(  7) rem intExpr(-5) <>  2 or
        intExpr(  6) rem intExpr(-5) <>  1 or
        intExpr(  5) rem intExpr(-5) <>  0 or
        intExpr(  4) rem intExpr(-5) <>  4 or
        intExpr(  3) rem intExpr(-5) <>  3 or
        intExpr(  2) rem intExpr(-5) <>  2 or
        intExpr(  1) rem intExpr(-5) <>  1 or
        intExpr(  0) rem intExpr(-5) <>  0 or
        intExpr( -1) rem intExpr(-5) <> -1 or
        intExpr( -2) rem intExpr(-5) <> -2 or
        intExpr( -3) rem intExpr(-5) <> -3 or
        intExpr( -4) rem intExpr(-5) <> -4 or
        intExpr( -5) rem intExpr(-5) <>  0 or
        intExpr( -6) rem intExpr(-5) <> -1 or
        intExpr( -7) rem intExpr(-5) <> -2 or
        intExpr( -8) rem intExpr(-5) <> -3 or
        intExpr( -9) rem intExpr(-5) <> -4 or
        intExpr(-10) rem intExpr(-5) <>  0 then
      writeln(" ***** rem with two expressions does not work correct.");
      okay := FALSE;
    end if;
    if okay then
      writeln("Rem works correct for selected values.");
    else
      writeln(" ***** rem does not work correct.");
    end if;
  end func;


const proc: check_mdiv is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if   10 mdiv  5 <>  2 or
          9 mdiv  5 <>  1 or
          8 mdiv  5 <>  1 or
          7 mdiv  5 <>  1 or
          6 mdiv  5 <>  1 or
          5 mdiv  5 <>  1 or
          4 mdiv  5 <>  0 or
          3 mdiv  5 <>  0 or
          2 mdiv  5 <>  0 or
          1 mdiv  5 <>  0 or
          0 mdiv  5 <>  0 or
         -1 mdiv  5 <> -1 or
         -2 mdiv  5 <> -1 or
         -3 mdiv  5 <> -1 or
         -4 mdiv  5 <> -1 or
         -5 mdiv  5 <> -1 or
         -6 mdiv  5 <> -2 or
         -7 mdiv  5 <> -2 or
         -8 mdiv  5 <> -2 or
         -9 mdiv  5 <> -2 or
        -10 mdiv  5 <> -2 or
         10 mdiv  4 <>  2 or
          9 mdiv  4 <>  2 or
          8 mdiv  4 <>  2 or
          7 mdiv  4 <>  1 or
          6 mdiv  4 <>  1 or
          5 mdiv  4 <>  1 or
          4 mdiv  4 <>  1 or
          3 mdiv  4 <>  0 or
          2 mdiv  4 <>  0 or
          1 mdiv  4 <>  0 or
          0 mdiv  4 <>  0 or
         -1 mdiv  4 <> -1 or
         -2 mdiv  4 <> -1 or
         -3 mdiv  4 <> -1 or
         -4 mdiv  4 <> -1 or
         -5 mdiv  4 <> -2 or
         -6 mdiv  4 <> -2 or
         -7 mdiv  4 <> -2 or
         -8 mdiv  4 <> -2 or
         -9 mdiv  4 <> -3 or
        -10 mdiv  4 <> -3 or
         10 mdiv  3 <>  3 or
          9 mdiv  3 <>  3 or
          8 mdiv  3 <>  2 or
          7 mdiv  3 <>  2 or
          6 mdiv  3 <>  2 or
          5 mdiv  3 <>  1 or
          4 mdiv  3 <>  1 or
          3 mdiv  3 <>  1 or
          2 mdiv  3 <>  0 or
          1 mdiv  3 <>  0 or
          0 mdiv  3 <>  0 or
         -1 mdiv  3 <> -1 or
         -2 mdiv  3 <> -1 or
         -3 mdiv  3 <> -1 or
         -4 mdiv  3 <> -2 or
         -5 mdiv  3 <> -2 or
         -6 mdiv  3 <> -2 or
         -7 mdiv  3 <> -3 or
         -8 mdiv  3 <> -3 or
         -9 mdiv  3 <> -3 or
        -10 mdiv  3 <> -4 or
         10 mdiv  2 <>  5 or
          9 mdiv  2 <>  4 or
          8 mdiv  2 <>  4 or
          7 mdiv  2 <>  3 or
          6 mdiv  2 <>  3 or
          5 mdiv  2 <>  2 or
          4 mdiv  2 <>  2 or
          3 mdiv  2 <>  1 or
          2 mdiv  2 <>  1 or
          1 mdiv  2 <>  0 or
          0 mdiv  2 <>  0 or
         -1 mdiv  2 <> -1 or
         -2 mdiv  2 <> -1 or
         -3 mdiv  2 <> -2 or
         -4 mdiv  2 <> -2 or
         -5 mdiv  2 <> -3 or
         -6 mdiv  2 <> -3 or
         -7 mdiv  2 <> -4 or
         -8 mdiv  2 <> -4 or
         -9 mdiv  2 <> -5 or
        -10 mdiv  2 <> -5 or
         10 mdiv  1 <> 10 or
          9 mdiv  1 <>  9 or
          8 mdiv  1 <>  8 or
          7 mdiv  1 <>  7 or
          6 mdiv  1 <>  6 or
          5 mdiv  1 <>  5 or
          4 mdiv  1 <>  4 or
          3 mdiv  1 <>  3 or
          2 mdiv  1 <>  2 or
          1 mdiv  1 <>  1 or
          0 mdiv  1 <>  0 or
         -1 mdiv  1 <> -1 or
         -2 mdiv  1 <> -2 or
         -3 mdiv  1 <> -3 or
         -4 mdiv  1 <> -4 or
         -5 mdiv  1 <> -5 or
         -6 mdiv  1 <> -6 or
         -7 mdiv  1 <> -7 or
         -8 mdiv  1 <> -8 or
         -9 mdiv  1 <> -9 or
        -10 mdiv  1 <> -10 or
         10 mdiv -1 <> -10 or
          9 mdiv -1 <> -9 or
          8 mdiv -1 <> -8 or
          7 mdiv -1 <> -7 or
          6 mdiv -1 <> -6 or
          5 mdiv -1 <> -5 or
          4 mdiv -1 <> -4 or
          3 mdiv -1 <> -3 or
          2 mdiv -1 <> -2 or
          1 mdiv -1 <> -1 or
          0 mdiv -1 <>  0 or
         -1 mdiv -1 <>  1 or
         -2 mdiv -1 <>  2 or
         -3 mdiv -1 <>  3 or
         -4 mdiv -1 <>  4 or
         -5 mdiv -1 <>  5 or
         -6 mdiv -1 <>  6 or
         -7 mdiv -1 <>  7 or
         -8 mdiv -1 <>  8 or
         -9 mdiv -1 <>  9 or
        -10 mdiv -1 <> 10 or
         10 mdiv -2 <> -5 or
          9 mdiv -2 <> -5 or
          8 mdiv -2 <> -4 or
          7 mdiv -2 <> -4 or
          6 mdiv -2 <> -3 or
          5 mdiv -2 <> -3 or
          4 mdiv -2 <> -2 or
          3 mdiv -2 <> -2 or
          2 mdiv -2 <> -1 or
          1 mdiv -2 <> -1 or
          0 mdiv -2 <>  0 or
         -1 mdiv -2 <>  0 or
         -2 mdiv -2 <>  1 or
         -3 mdiv -2 <>  1 or
         -4 mdiv -2 <>  2 or
         -5 mdiv -2 <>  2 or
         -6 mdiv -2 <>  3 or
         -7 mdiv -2 <>  3 or
         -8 mdiv -2 <>  4 or
         -9 mdiv -2 <>  4 or
        -10 mdiv -2 <>  5 or
         10 mdiv -3 <> -4 or
          9 mdiv -3 <> -3 or
          8 mdiv -3 <> -3 or
          7 mdiv -3 <> -3 or
          6 mdiv -3 <> -2 or
          5 mdiv -3 <> -2 or
          4 mdiv -3 <> -2 or
          3 mdiv -3 <> -1 or
          2 mdiv -3 <> -1 or
          1 mdiv -3 <> -1 or
          0 mdiv -3 <>  0 or
         -1 mdiv -3 <>  0 or
         -2 mdiv -3 <>  0 or
         -3 mdiv -3 <>  1 or
         -4 mdiv -3 <>  1 or
         -5 mdiv -3 <>  1 or
         -6 mdiv -3 <>  2 or
         -7 mdiv -3 <>  2 or
         -8 mdiv -3 <>  2 or
         -9 mdiv -3 <>  3 or
        -10 mdiv -3 <>  3 or
         10 mdiv -4 <> -3 or
          9 mdiv -4 <> -3 or
          8 mdiv -4 <> -2 or
          7 mdiv -4 <> -2 or
          6 mdiv -4 <> -2 or
          5 mdiv -4 <> -2 or
          4 mdiv -4 <> -1 or
          3 mdiv -4 <> -1 or
          2 mdiv -4 <> -1 or
          1 mdiv -4 <> -1 or
          0 mdiv -4 <>  0 or
         -1 mdiv -4 <>  0 or
         -2 mdiv -4 <>  0 or
         -3 mdiv -4 <>  0 or
         -4 mdiv -4 <>  1 or
         -5 mdiv -4 <>  1 or
         -6 mdiv -4 <>  1 or
         -7 mdiv -4 <>  1 or
         -8 mdiv -4 <>  2 or
         -9 mdiv -4 <>  2 or
        -10 mdiv -4 <>  2 or
         10 mdiv -5 <> -2 or
          9 mdiv -5 <> -2 or
          8 mdiv -5 <> -2 or
          7 mdiv -5 <> -2 or
          6 mdiv -5 <> -2 or
          5 mdiv -5 <> -1 or
          4 mdiv -5 <> -1 or
          3 mdiv -5 <> -1 or
          2 mdiv -5 <> -1 or
          1 mdiv -5 <> -1 or
          0 mdiv -5 <>  0 or
         -1 mdiv -5 <>  0 or
         -2 mdiv -5 <>  0 or
         -3 mdiv -5 <>  0 or
         -4 mdiv -5 <>  0 or
         -5 mdiv -5 <>  1 or
         -6 mdiv -5 <>  1 or
         -7 mdiv -5 <>  1 or
         -8 mdiv -5 <>  1 or
         -9 mdiv -5 <>  1 or
        -10 mdiv -5 <>  2 then
      writeln(" ***** mdiv with two constants does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr( 10) mdiv  5 <>  2 or
        intExpr(  9) mdiv  5 <>  1 or
        intExpr(  8) mdiv  5 <>  1 or
        intExpr(  7) mdiv  5 <>  1 or
        intExpr(  6) mdiv  5 <>  1 or
        intExpr(  5) mdiv  5 <>  1 or
        intExpr(  4) mdiv  5 <>  0 or
        intExpr(  3) mdiv  5 <>  0 or
        intExpr(  2) mdiv  5 <>  0 or
        intExpr(  1) mdiv  5 <>  0 or
        intExpr(  0) mdiv  5 <>  0 or
        intExpr( -1) mdiv  5 <> -1 or
        intExpr( -2) mdiv  5 <> -1 or
        intExpr( -3) mdiv  5 <> -1 or
        intExpr( -4) mdiv  5 <> -1 or
        intExpr( -5) mdiv  5 <> -1 or
        intExpr( -6) mdiv  5 <> -2 or
        intExpr( -7) mdiv  5 <> -2 or
        intExpr( -8) mdiv  5 <> -2 or
        intExpr( -9) mdiv  5 <> -2 or
        intExpr(-10) mdiv  5 <> -2 or
        intExpr( 10) mdiv  4 <>  2 or
        intExpr(  9) mdiv  4 <>  2 or
        intExpr(  8) mdiv  4 <>  2 or
        intExpr(  7) mdiv  4 <>  1 or
        intExpr(  6) mdiv  4 <>  1 or
        intExpr(  5) mdiv  4 <>  1 or
        intExpr(  4) mdiv  4 <>  1 or
        intExpr(  3) mdiv  4 <>  0 or
        intExpr(  2) mdiv  4 <>  0 or
        intExpr(  1) mdiv  4 <>  0 or
        intExpr(  0) mdiv  4 <>  0 or
        intExpr( -1) mdiv  4 <> -1 or
        intExpr( -2) mdiv  4 <> -1 or
        intExpr( -3) mdiv  4 <> -1 or
        intExpr( -4) mdiv  4 <> -1 or
        intExpr( -5) mdiv  4 <> -2 or
        intExpr( -6) mdiv  4 <> -2 or
        intExpr( -7) mdiv  4 <> -2 or
        intExpr( -8) mdiv  4 <> -2 or
        intExpr( -9) mdiv  4 <> -3 or
        intExpr(-10) mdiv  4 <> -3 or
        intExpr( 10) mdiv  3 <>  3 or
        intExpr(  9) mdiv  3 <>  3 or
        intExpr(  8) mdiv  3 <>  2 or
        intExpr(  7) mdiv  3 <>  2 or
        intExpr(  6) mdiv  3 <>  2 or
        intExpr(  5) mdiv  3 <>  1 or
        intExpr(  4) mdiv  3 <>  1 or
        intExpr(  3) mdiv  3 <>  1 or
        intExpr(  2) mdiv  3 <>  0 or
        intExpr(  1) mdiv  3 <>  0 or
        intExpr(  0) mdiv  3 <>  0 or
        intExpr( -1) mdiv  3 <> -1 or
        intExpr( -2) mdiv  3 <> -1 or
        intExpr( -3) mdiv  3 <> -1 or
        intExpr( -4) mdiv  3 <> -2 or
        intExpr( -5) mdiv  3 <> -2 or
        intExpr( -6) mdiv  3 <> -2 or
        intExpr( -7) mdiv  3 <> -3 or
        intExpr( -8) mdiv  3 <> -3 or
        intExpr( -9) mdiv  3 <> -3 or
        intExpr(-10) mdiv  3 <> -4 or
        intExpr( 10) mdiv  2 <>  5 or
        intExpr(  9) mdiv  2 <>  4 or
        intExpr(  8) mdiv  2 <>  4 or
        intExpr(  7) mdiv  2 <>  3 or
        intExpr(  6) mdiv  2 <>  3 or
        intExpr(  5) mdiv  2 <>  2 or
        intExpr(  4) mdiv  2 <>  2 or
        intExpr(  3) mdiv  2 <>  1 or
        intExpr(  2) mdiv  2 <>  1 or
        intExpr(  1) mdiv  2 <>  0 or
        intExpr(  0) mdiv  2 <>  0 or
        intExpr( -1) mdiv  2 <> -1 or
        intExpr( -2) mdiv  2 <> -1 or
        intExpr( -3) mdiv  2 <> -2 or
        intExpr( -4) mdiv  2 <> -2 or
        intExpr( -5) mdiv  2 <> -3 or
        intExpr( -6) mdiv  2 <> -3 or
        intExpr( -7) mdiv  2 <> -4 or
        intExpr( -8) mdiv  2 <> -4 or
        intExpr( -9) mdiv  2 <> -5 or
        intExpr(-10) mdiv  2 <> -5 or
        intExpr( 10) mdiv  1 <> 10 or
        intExpr(  9) mdiv  1 <>  9 or
        intExpr(  8) mdiv  1 <>  8 or
        intExpr(  7) mdiv  1 <>  7 or
        intExpr(  6) mdiv  1 <>  6 or
        intExpr(  5) mdiv  1 <>  5 or
        intExpr(  4) mdiv  1 <>  4 or
        intExpr(  3) mdiv  1 <>  3 or
        intExpr(  2) mdiv  1 <>  2 or
        intExpr(  1) mdiv  1 <>  1 or
        intExpr(  0) mdiv  1 <>  0 or
        intExpr( -1) mdiv  1 <> -1 or
        intExpr( -2) mdiv  1 <> -2 or
        intExpr( -3) mdiv  1 <> -3 or
        intExpr( -4) mdiv  1 <> -4 or
        intExpr( -5) mdiv  1 <> -5 or
        intExpr( -6) mdiv  1 <> -6 or
        intExpr( -7) mdiv  1 <> -7 or
        intExpr( -8) mdiv  1 <> -8 or
        intExpr( -9) mdiv  1 <> -9 or
        intExpr(-10) mdiv  1 <> -10 or
        intExpr( 10) mdiv -1 <> -10 or
        intExpr(  9) mdiv -1 <> -9 or
        intExpr(  8) mdiv -1 <> -8 or
        intExpr(  7) mdiv -1 <> -7 or
        intExpr(  6) mdiv -1 <> -6 or
        intExpr(  5) mdiv -1 <> -5 or
        intExpr(  4) mdiv -1 <> -4 or
        intExpr(  3) mdiv -1 <> -3 or
        intExpr(  2) mdiv -1 <> -2 or
        intExpr(  1) mdiv -1 <> -1 or
        intExpr(  0) mdiv -1 <>  0 or
        intExpr( -1) mdiv -1 <>  1 or
        intExpr( -2) mdiv -1 <>  2 or
        intExpr( -3) mdiv -1 <>  3 or
        intExpr( -4) mdiv -1 <>  4 or
        intExpr( -5) mdiv -1 <>  5 or
        intExpr( -6) mdiv -1 <>  6 or
        intExpr( -7) mdiv -1 <>  7 or
        intExpr( -8) mdiv -1 <>  8 or
        intExpr( -9) mdiv -1 <>  9 or
        intExpr(-10) mdiv -1 <> 10 or
        intExpr( 10) mdiv -2 <> -5 or
        intExpr(  9) mdiv -2 <> -5 or
        intExpr(  8) mdiv -2 <> -4 or
        intExpr(  7) mdiv -2 <> -4 or
        intExpr(  6) mdiv -2 <> -3 or
        intExpr(  5) mdiv -2 <> -3 or
        intExpr(  4) mdiv -2 <> -2 or
        intExpr(  3) mdiv -2 <> -2 or
        intExpr(  2) mdiv -2 <> -1 or
        intExpr(  1) mdiv -2 <> -1 or
        intExpr(  0) mdiv -2 <>  0 or
        intExpr( -1) mdiv -2 <>  0 or
        intExpr( -2) mdiv -2 <>  1 or
        intExpr( -3) mdiv -2 <>  1 or
        intExpr( -4) mdiv -2 <>  2 or
        intExpr( -5) mdiv -2 <>  2 or
        intExpr( -6) mdiv -2 <>  3 or
        intExpr( -7) mdiv -2 <>  3 or
        intExpr( -8) mdiv -2 <>  4 or
        intExpr( -9) mdiv -2 <>  4 or
        intExpr(-10) mdiv -2 <>  5 or
        intExpr( 10) mdiv -3 <> -4 or
        intExpr(  9) mdiv -3 <> -3 or
        intExpr(  8) mdiv -3 <> -3 or
        intExpr(  7) mdiv -3 <> -3 or
        intExpr(  6) mdiv -3 <> -2 or
        intExpr(  5) mdiv -3 <> -2 or
        intExpr(  4) mdiv -3 <> -2 or
        intExpr(  3) mdiv -3 <> -1 or
        intExpr(  2) mdiv -3 <> -1 or
        intExpr(  1) mdiv -3 <> -1 or
        intExpr(  0) mdiv -3 <>  0 or
        intExpr( -1) mdiv -3 <>  0 or
        intExpr( -2) mdiv -3 <>  0 or
        intExpr( -3) mdiv -3 <>  1 or
        intExpr( -4) mdiv -3 <>  1 or
        intExpr( -5) mdiv -3 <>  1 or
        intExpr( -6) mdiv -3 <>  2 or
        intExpr( -7) mdiv -3 <>  2 or
        intExpr( -8) mdiv -3 <>  2 or
        intExpr( -9) mdiv -3 <>  3 or
        intExpr(-10) mdiv -3 <>  3 or
        intExpr( 10) mdiv -4 <> -3 or
        intExpr(  9) mdiv -4 <> -3 or
        intExpr(  8) mdiv -4 <> -2 or
        intExpr(  7) mdiv -4 <> -2 or
        intExpr(  6) mdiv -4 <> -2 or
        intExpr(  5) mdiv -4 <> -2 or
        intExpr(  4) mdiv -4 <> -1 or
        intExpr(  3) mdiv -4 <> -1 or
        intExpr(  2) mdiv -4 <> -1 or
        intExpr(  1) mdiv -4 <> -1 or
        intExpr(  0) mdiv -4 <>  0 or
        intExpr( -1) mdiv -4 <>  0 or
        intExpr( -2) mdiv -4 <>  0 or
        intExpr( -3) mdiv -4 <>  0 or
        intExpr( -4) mdiv -4 <>  1 or
        intExpr( -5) mdiv -4 <>  1 or
        intExpr( -6) mdiv -4 <>  1 or
        intExpr( -7) mdiv -4 <>  1 or
        intExpr( -8) mdiv -4 <>  2 or
        intExpr( -9) mdiv -4 <>  2 or
        intExpr(-10) mdiv -4 <>  2 or
        intExpr( 10) mdiv -5 <> -2 or
        intExpr(  9) mdiv -5 <> -2 or
        intExpr(  8) mdiv -5 <> -2 or
        intExpr(  7) mdiv -5 <> -2 or
        intExpr(  6) mdiv -5 <> -2 or
        intExpr(  5) mdiv -5 <> -1 or
        intExpr(  4) mdiv -5 <> -1 or
        intExpr(  3) mdiv -5 <> -1 or
        intExpr(  2) mdiv -5 <> -1 or
        intExpr(  1) mdiv -5 <> -1 or
        intExpr(  0) mdiv -5 <>  0 or
        intExpr( -1) mdiv -5 <>  0 or
        intExpr( -2) mdiv -5 <>  0 or
        intExpr( -3) mdiv -5 <>  0 or
        intExpr( -4) mdiv -5 <>  0 or
        intExpr( -5) mdiv -5 <>  1 or
        intExpr( -6) mdiv -5 <>  1 or
        intExpr( -7) mdiv -5 <>  1 or
        intExpr( -8) mdiv -5 <>  1 or
        intExpr( -9) mdiv -5 <>  1 or
        intExpr(-10) mdiv -5 <>  2 then
      writeln(" *****) mdiv with an expression and a constant does not work correct");
      okay := FALSE;
    end if;
    if   10 mdiv intExpr( 5) <>  2 or
          9 mdiv intExpr( 5) <>  1 or
          8 mdiv intExpr( 5) <>  1 or
          7 mdiv intExpr( 5) <>  1 or
          6 mdiv intExpr( 5) <>  1 or
          5 mdiv intExpr( 5) <>  1 or
          4 mdiv intExpr( 5) <>  0 or
          3 mdiv intExpr( 5) <>  0 or
          2 mdiv intExpr( 5) <>  0 or
          1 mdiv intExpr( 5) <>  0 or
          0 mdiv intExpr( 5) <>  0 or
         -1 mdiv intExpr( 5) <> -1 or
         -2 mdiv intExpr( 5) <> -1 or
         -3 mdiv intExpr( 5) <> -1 or
         -4 mdiv intExpr( 5) <> -1 or
         -5 mdiv intExpr( 5) <> -1 or
         -6 mdiv intExpr( 5) <> -2 or
         -7 mdiv intExpr( 5) <> -2 or
         -8 mdiv intExpr( 5) <> -2 or
         -9 mdiv intExpr( 5) <> -2 or
        -10 mdiv intExpr( 5) <> -2 or
         10 mdiv intExpr( 4) <>  2 or
          9 mdiv intExpr( 4) <>  2 or
          8 mdiv intExpr( 4) <>  2 or
          7 mdiv intExpr( 4) <>  1 or
          6 mdiv intExpr( 4) <>  1 or
          5 mdiv intExpr( 4) <>  1 or
          4 mdiv intExpr( 4) <>  1 or
          3 mdiv intExpr( 4) <>  0 or
          2 mdiv intExpr( 4) <>  0 or
          1 mdiv intExpr( 4) <>  0 or
          0 mdiv intExpr( 4) <>  0 or
         -1 mdiv intExpr( 4) <> -1 or
         -2 mdiv intExpr( 4) <> -1 or
         -3 mdiv intExpr( 4) <> -1 or
         -4 mdiv intExpr( 4) <> -1 or
         -5 mdiv intExpr( 4) <> -2 or
         -6 mdiv intExpr( 4) <> -2 or
         -7 mdiv intExpr( 4) <> -2 or
         -8 mdiv intExpr( 4) <> -2 or
         -9 mdiv intExpr( 4) <> -3 or
        -10 mdiv intExpr( 4) <> -3 or
         10 mdiv intExpr( 3) <>  3 or
          9 mdiv intExpr( 3) <>  3 or
          8 mdiv intExpr( 3) <>  2 or
          7 mdiv intExpr( 3) <>  2 or
          6 mdiv intExpr( 3) <>  2 or
          5 mdiv intExpr( 3) <>  1 or
          4 mdiv intExpr( 3) <>  1 or
          3 mdiv intExpr( 3) <>  1 or
          2 mdiv intExpr( 3) <>  0 or
          1 mdiv intExpr( 3) <>  0 or
          0 mdiv intExpr( 3) <>  0 or
         -1 mdiv intExpr( 3) <> -1 or
         -2 mdiv intExpr( 3) <> -1 or
         -3 mdiv intExpr( 3) <> -1 or
         -4 mdiv intExpr( 3) <> -2 or
         -5 mdiv intExpr( 3) <> -2 or
         -6 mdiv intExpr( 3) <> -2 or
         -7 mdiv intExpr( 3) <> -3 or
         -8 mdiv intExpr( 3) <> -3 or
         -9 mdiv intExpr( 3) <> -3 or
        -10 mdiv intExpr( 3) <> -4 or
         10 mdiv intExpr( 2) <>  5 or
          9 mdiv intExpr( 2) <>  4 or
          8 mdiv intExpr( 2) <>  4 or
          7 mdiv intExpr( 2) <>  3 or
          6 mdiv intExpr( 2) <>  3 or
          5 mdiv intExpr( 2) <>  2 or
          4 mdiv intExpr( 2) <>  2 or
          3 mdiv intExpr( 2) <>  1 or
          2 mdiv intExpr( 2) <>  1 or
          1 mdiv intExpr( 2) <>  0 or
          0 mdiv intExpr( 2) <>  0 or
         -1 mdiv intExpr( 2) <> -1 or
         -2 mdiv intExpr( 2) <> -1 or
         -3 mdiv intExpr( 2) <> -2 or
         -4 mdiv intExpr( 2) <> -2 or
         -5 mdiv intExpr( 2) <> -3 or
         -6 mdiv intExpr( 2) <> -3 or
         -7 mdiv intExpr( 2) <> -4 or
         -8 mdiv intExpr( 2) <> -4 or
         -9 mdiv intExpr( 2) <> -5 or
        -10 mdiv intExpr( 2) <> -5 or
         10 mdiv intExpr( 1) <> 10 or
          9 mdiv intExpr( 1) <>  9 or
          8 mdiv intExpr( 1) <>  8 or
          7 mdiv intExpr( 1) <>  7 or
          6 mdiv intExpr( 1) <>  6 or
          5 mdiv intExpr( 1) <>  5 or
          4 mdiv intExpr( 1) <>  4 or
          3 mdiv intExpr( 1) <>  3 or
          2 mdiv intExpr( 1) <>  2 or
          1 mdiv intExpr( 1) <>  1 or
          0 mdiv intExpr( 1) <>  0 or
         -1 mdiv intExpr( 1) <> -1 or
         -2 mdiv intExpr( 1) <> -2 or
         -3 mdiv intExpr( 1) <> -3 or
         -4 mdiv intExpr( 1) <> -4 or
         -5 mdiv intExpr( 1) <> -5 or
         -6 mdiv intExpr( 1) <> -6 or
         -7 mdiv intExpr( 1) <> -7 or
         -8 mdiv intExpr( 1) <> -8 or
         -9 mdiv intExpr( 1) <> -9 or
        -10 mdiv intExpr( 1) <> -10 or
         10 mdiv intExpr(-1) <> -10 or
          9 mdiv intExpr(-1) <> -9 or
          8 mdiv intExpr(-1) <> -8 or
          7 mdiv intExpr(-1) <> -7 or
          6 mdiv intExpr(-1) <> -6 or
          5 mdiv intExpr(-1) <> -5 or
          4 mdiv intExpr(-1) <> -4 or
          3 mdiv intExpr(-1) <> -3 or
          2 mdiv intExpr(-1) <> -2 or
          1 mdiv intExpr(-1) <> -1 or
          0 mdiv intExpr(-1) <>  0 or
         -1 mdiv intExpr(-1) <>  1 or
         -2 mdiv intExpr(-1) <>  2 or
         -3 mdiv intExpr(-1) <>  3 or
         -4 mdiv intExpr(-1) <>  4 or
         -5 mdiv intExpr(-1) <>  5 or
         -6 mdiv intExpr(-1) <>  6 or
         -7 mdiv intExpr(-1) <>  7 or
         -8 mdiv intExpr(-1) <>  8 or
         -9 mdiv intExpr(-1) <>  9 or
        -10 mdiv intExpr(-1) <> 10 or
         10 mdiv intExpr(-2) <> -5 or
          9 mdiv intExpr(-2) <> -5 or
          8 mdiv intExpr(-2) <> -4 or
          7 mdiv intExpr(-2) <> -4 or
          6 mdiv intExpr(-2) <> -3 or
          5 mdiv intExpr(-2) <> -3 or
          4 mdiv intExpr(-2) <> -2 or
          3 mdiv intExpr(-2) <> -2 or
          2 mdiv intExpr(-2) <> -1 or
          1 mdiv intExpr(-2) <> -1 or
          0 mdiv intExpr(-2) <>  0 or
         -1 mdiv intExpr(-2) <>  0 or
         -2 mdiv intExpr(-2) <>  1 or
         -3 mdiv intExpr(-2) <>  1 or
         -4 mdiv intExpr(-2) <>  2 or
         -5 mdiv intExpr(-2) <>  2 or
         -6 mdiv intExpr(-2) <>  3 or
         -7 mdiv intExpr(-2) <>  3 or
         -8 mdiv intExpr(-2) <>  4 or
         -9 mdiv intExpr(-2) <>  4 or
        -10 mdiv intExpr(-2) <>  5 or
         10 mdiv intExpr(-3) <> -4 or
          9 mdiv intExpr(-3) <> -3 or
          8 mdiv intExpr(-3) <> -3 or
          7 mdiv intExpr(-3) <> -3 or
          6 mdiv intExpr(-3) <> -2 or
          5 mdiv intExpr(-3) <> -2 or
          4 mdiv intExpr(-3) <> -2 or
          3 mdiv intExpr(-3) <> -1 or
          2 mdiv intExpr(-3) <> -1 or
          1 mdiv intExpr(-3) <> -1 or
          0 mdiv intExpr(-3) <>  0 or
         -1 mdiv intExpr(-3) <>  0 or
         -2 mdiv intExpr(-3) <>  0 or
         -3 mdiv intExpr(-3) <>  1 or
         -4 mdiv intExpr(-3) <>  1 or
         -5 mdiv intExpr(-3) <>  1 or
         -6 mdiv intExpr(-3) <>  2 or
         -7 mdiv intExpr(-3) <>  2 or
         -8 mdiv intExpr(-3) <>  2 or
         -9 mdiv intExpr(-3) <>  3 or
        -10 mdiv intExpr(-3) <>  3 or
         10 mdiv intExpr(-4) <> -3 or
          9 mdiv intExpr(-4) <> -3 or
          8 mdiv intExpr(-4) <> -2 or
          7 mdiv intExpr(-4) <> -2 or
          6 mdiv intExpr(-4) <> -2 or
          5 mdiv intExpr(-4) <> -2 or
          4 mdiv intExpr(-4) <> -1 or
          3 mdiv intExpr(-4) <> -1 or
          2 mdiv intExpr(-4) <> -1 or
          1 mdiv intExpr(-4) <> -1 or
          0 mdiv intExpr(-4) <>  0 or
         -1 mdiv intExpr(-4) <>  0 or
         -2 mdiv intExpr(-4) <>  0 or
         -3 mdiv intExpr(-4) <>  0 or
         -4 mdiv intExpr(-4) <>  1 or
         -5 mdiv intExpr(-4) <>  1 or
         -6 mdiv intExpr(-4) <>  1 or
         -7 mdiv intExpr(-4) <>  1 or
         -8 mdiv intExpr(-4) <>  2 or
         -9 mdiv intExpr(-4) <>  2 or
        -10 mdiv intExpr(-4) <>  2 or
         10 mdiv intExpr(-5) <> -2 or
          9 mdiv intExpr(-5) <> -2 or
          8 mdiv intExpr(-5) <> -2 or
          7 mdiv intExpr(-5) <> -2 or
          6 mdiv intExpr(-5) <> -2 or
          5 mdiv intExpr(-5) <> -1 or
          4 mdiv intExpr(-5) <> -1 or
          3 mdiv intExpr(-5) <> -1 or
          2 mdiv intExpr(-5) <> -1 or
          1 mdiv intExpr(-5) <> -1 or
          0 mdiv intExpr(-5) <>  0 or
         -1 mdiv intExpr(-5) <>  0 or
         -2 mdiv intExpr(-5) <>  0 or
         -3 mdiv intExpr(-5) <>  0 or
         -4 mdiv intExpr(-5) <>  0 or
         -5 mdiv intExpr(-5) <>  1 or
         -6 mdiv intExpr(-5) <>  1 or
         -7 mdiv intExpr(-5) <>  1 or
         -8 mdiv intExpr(-5) <>  1 or
         -9 mdiv intExpr(-5) <>  1 or
        -10 mdiv intExpr(-5) <>  2 then
      writeln(" ***** mdiv with a constant and an expression does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr( 10) mdiv intExpr( 5) <>  2 or
        intExpr(  9) mdiv intExpr( 5) <>  1 or
        intExpr(  8) mdiv intExpr( 5) <>  1 or
        intExpr(  7) mdiv intExpr( 5) <>  1 or
        intExpr(  6) mdiv intExpr( 5) <>  1 or
        intExpr(  5) mdiv intExpr( 5) <>  1 or
        intExpr(  4) mdiv intExpr( 5) <>  0 or
        intExpr(  3) mdiv intExpr( 5) <>  0 or
        intExpr(  2) mdiv intExpr( 5) <>  0 or
        intExpr(  1) mdiv intExpr( 5) <>  0 or
        intExpr(  0) mdiv intExpr( 5) <>  0 or
        intExpr( -1) mdiv intExpr( 5) <> -1 or
        intExpr( -2) mdiv intExpr( 5) <> -1 or
        intExpr( -3) mdiv intExpr( 5) <> -1 or
        intExpr( -4) mdiv intExpr( 5) <> -1 or
        intExpr( -5) mdiv intExpr( 5) <> -1 or
        intExpr( -6) mdiv intExpr( 5) <> -2 or
        intExpr( -7) mdiv intExpr( 5) <> -2 or
        intExpr( -8) mdiv intExpr( 5) <> -2 or
        intExpr( -9) mdiv intExpr( 5) <> -2 or
        intExpr(-10) mdiv intExpr( 5) <> -2 or
        intExpr( 10) mdiv intExpr( 4) <>  2 or
        intExpr(  9) mdiv intExpr( 4) <>  2 or
        intExpr(  8) mdiv intExpr( 4) <>  2 or
        intExpr(  7) mdiv intExpr( 4) <>  1 or
        intExpr(  6) mdiv intExpr( 4) <>  1 or
        intExpr(  5) mdiv intExpr( 4) <>  1 or
        intExpr(  4) mdiv intExpr( 4) <>  1 or
        intExpr(  3) mdiv intExpr( 4) <>  0 or
        intExpr(  2) mdiv intExpr( 4) <>  0 or
        intExpr(  1) mdiv intExpr( 4) <>  0 or
        intExpr(  0) mdiv intExpr( 4) <>  0 or
        intExpr( -1) mdiv intExpr( 4) <> -1 or
        intExpr( -2) mdiv intExpr( 4) <> -1 or
        intExpr( -3) mdiv intExpr( 4) <> -1 or
        intExpr( -4) mdiv intExpr( 4) <> -1 or
        intExpr( -5) mdiv intExpr( 4) <> -2 or
        intExpr( -6) mdiv intExpr( 4) <> -2 or
        intExpr( -7) mdiv intExpr( 4) <> -2 or
        intExpr( -8) mdiv intExpr( 4) <> -2 or
        intExpr( -9) mdiv intExpr( 4) <> -3 or
        intExpr(-10) mdiv intExpr( 4) <> -3 or
        intExpr( 10) mdiv intExpr( 3) <>  3 or
        intExpr(  9) mdiv intExpr( 3) <>  3 or
        intExpr(  8) mdiv intExpr( 3) <>  2 or
        intExpr(  7) mdiv intExpr( 3) <>  2 or
        intExpr(  6) mdiv intExpr( 3) <>  2 or
        intExpr(  5) mdiv intExpr( 3) <>  1 or
        intExpr(  4) mdiv intExpr( 3) <>  1 or
        intExpr(  3) mdiv intExpr( 3) <>  1 or
        intExpr(  2) mdiv intExpr( 3) <>  0 or
        intExpr(  1) mdiv intExpr( 3) <>  0 or
        intExpr(  0) mdiv intExpr( 3) <>  0 or
        intExpr( -1) mdiv intExpr( 3) <> -1 or
        intExpr( -2) mdiv intExpr( 3) <> -1 or
        intExpr( -3) mdiv intExpr( 3) <> -1 or
        intExpr( -4) mdiv intExpr( 3) <> -2 or
        intExpr( -5) mdiv intExpr( 3) <> -2 or
        intExpr( -6) mdiv intExpr( 3) <> -2 or
        intExpr( -7) mdiv intExpr( 3) <> -3 or
        intExpr( -8) mdiv intExpr( 3) <> -3 or
        intExpr( -9) mdiv intExpr( 3) <> -3 or
        intExpr(-10) mdiv intExpr( 3) <> -4 or
        intExpr( 10) mdiv intExpr( 2) <>  5 or
        intExpr(  9) mdiv intExpr( 2) <>  4 or
        intExpr(  8) mdiv intExpr( 2) <>  4 or
        intExpr(  7) mdiv intExpr( 2) <>  3 or
        intExpr(  6) mdiv intExpr( 2) <>  3 or
        intExpr(  5) mdiv intExpr( 2) <>  2 or
        intExpr(  4) mdiv intExpr( 2) <>  2 or
        intExpr(  3) mdiv intExpr( 2) <>  1 or
        intExpr(  2) mdiv intExpr( 2) <>  1 or
        intExpr(  1) mdiv intExpr( 2) <>  0 or
        intExpr(  0) mdiv intExpr( 2) <>  0 or
        intExpr( -1) mdiv intExpr( 2) <> -1 or
        intExpr( -2) mdiv intExpr( 2) <> -1 or
        intExpr( -3) mdiv intExpr( 2) <> -2 or
        intExpr( -4) mdiv intExpr( 2) <> -2 or
        intExpr( -5) mdiv intExpr( 2) <> -3 or
        intExpr( -6) mdiv intExpr( 2) <> -3 or
        intExpr( -7) mdiv intExpr( 2) <> -4 or
        intExpr( -8) mdiv intExpr( 2) <> -4 or
        intExpr( -9) mdiv intExpr( 2) <> -5 or
        intExpr(-10) mdiv intExpr( 2) <> -5 or
        intExpr( 10) mdiv intExpr( 1) <> 10 or
        intExpr(  9) mdiv intExpr( 1) <>  9 or
        intExpr(  8) mdiv intExpr( 1) <>  8 or
        intExpr(  7) mdiv intExpr( 1) <>  7 or
        intExpr(  6) mdiv intExpr( 1) <>  6 or
        intExpr(  5) mdiv intExpr( 1) <>  5 or
        intExpr(  4) mdiv intExpr( 1) <>  4 or
        intExpr(  3) mdiv intExpr( 1) <>  3 or
        intExpr(  2) mdiv intExpr( 1) <>  2 or
        intExpr(  1) mdiv intExpr( 1) <>  1 or
        intExpr(  0) mdiv intExpr( 1) <>  0 or
        intExpr( -1) mdiv intExpr( 1) <> -1 or
        intExpr( -2) mdiv intExpr( 1) <> -2 or
        intExpr( -3) mdiv intExpr( 1) <> -3 or
        intExpr( -4) mdiv intExpr( 1) <> -4 or
        intExpr( -5) mdiv intExpr( 1) <> -5 or
        intExpr( -6) mdiv intExpr( 1) <> -6 or
        intExpr( -7) mdiv intExpr( 1) <> -7 or
        intExpr( -8) mdiv intExpr( 1) <> -8 or
        intExpr( -9) mdiv intExpr( 1) <> -9 or
        intExpr(-10) mdiv intExpr( 1) <> -10 or
        intExpr( 10) mdiv intExpr(-1) <> -10 or
        intExpr(  9) mdiv intExpr(-1) <> -9 or
        intExpr(  8) mdiv intExpr(-1) <> -8 or
        intExpr(  7) mdiv intExpr(-1) <> -7 or
        intExpr(  6) mdiv intExpr(-1) <> -6 or
        intExpr(  5) mdiv intExpr(-1) <> -5 or
        intExpr(  4) mdiv intExpr(-1) <> -4 or
        intExpr(  3) mdiv intExpr(-1) <> -3 or
        intExpr(  2) mdiv intExpr(-1) <> -2 or
        intExpr(  1) mdiv intExpr(-1) <> -1 or
        intExpr(  0) mdiv intExpr(-1) <>  0 or
        intExpr( -1) mdiv intExpr(-1) <>  1 or
        intExpr( -2) mdiv intExpr(-1) <>  2 or
        intExpr( -3) mdiv intExpr(-1) <>  3 or
        intExpr( -4) mdiv intExpr(-1) <>  4 or
        intExpr( -5) mdiv intExpr(-1) <>  5 or
        intExpr( -6) mdiv intExpr(-1) <>  6 or
        intExpr( -7) mdiv intExpr(-1) <>  7 or
        intExpr( -8) mdiv intExpr(-1) <>  8 or
        intExpr( -9) mdiv intExpr(-1) <>  9 or
        intExpr(-10) mdiv intExpr(-1) <> 10 or
        intExpr( 10) mdiv intExpr(-2) <> -5 or
        intExpr(  9) mdiv intExpr(-2) <> -5 or
        intExpr(  8) mdiv intExpr(-2) <> -4 or
        intExpr(  7) mdiv intExpr(-2) <> -4 or
        intExpr(  6) mdiv intExpr(-2) <> -3 or
        intExpr(  5) mdiv intExpr(-2) <> -3 or
        intExpr(  4) mdiv intExpr(-2) <> -2 or
        intExpr(  3) mdiv intExpr(-2) <> -2 or
        intExpr(  2) mdiv intExpr(-2) <> -1 or
        intExpr(  1) mdiv intExpr(-2) <> -1 or
        intExpr(  0) mdiv intExpr(-2) <>  0 or
        intExpr( -1) mdiv intExpr(-2) <>  0 or
        intExpr( -2) mdiv intExpr(-2) <>  1 or
        intExpr( -3) mdiv intExpr(-2) <>  1 or
        intExpr( -4) mdiv intExpr(-2) <>  2 or
        intExpr( -5) mdiv intExpr(-2) <>  2 or
        intExpr( -6) mdiv intExpr(-2) <>  3 or
        intExpr( -7) mdiv intExpr(-2) <>  3 or
        intExpr( -8) mdiv intExpr(-2) <>  4 or
        intExpr( -9) mdiv intExpr(-2) <>  4 or
        intExpr(-10) mdiv intExpr(-2) <>  5 or
        intExpr( 10) mdiv intExpr(-3) <> -4 or
        intExpr(  9) mdiv intExpr(-3) <> -3 or
        intExpr(  8) mdiv intExpr(-3) <> -3 or
        intExpr(  7) mdiv intExpr(-3) <> -3 or
        intExpr(  6) mdiv intExpr(-3) <> -2 or
        intExpr(  5) mdiv intExpr(-3) <> -2 or
        intExpr(  4) mdiv intExpr(-3) <> -2 or
        intExpr(  3) mdiv intExpr(-3) <> -1 or
        intExpr(  2) mdiv intExpr(-3) <> -1 or
        intExpr(  1) mdiv intExpr(-3) <> -1 or
        intExpr(  0) mdiv intExpr(-3) <>  0 or
        intExpr( -1) mdiv intExpr(-3) <>  0 or
        intExpr( -2) mdiv intExpr(-3) <>  0 or
        intExpr( -3) mdiv intExpr(-3) <>  1 or
        intExpr( -4) mdiv intExpr(-3) <>  1 or
        intExpr( -5) mdiv intExpr(-3) <>  1 or
        intExpr( -6) mdiv intExpr(-3) <>  2 or
        intExpr( -7) mdiv intExpr(-3) <>  2 or
        intExpr( -8) mdiv intExpr(-3) <>  2 or
        intExpr( -9) mdiv intExpr(-3) <>  3 or
        intExpr(-10) mdiv intExpr(-3) <>  3 or
        intExpr( 10) mdiv intExpr(-4) <> -3 or
        intExpr(  9) mdiv intExpr(-4) <> -3 or
        intExpr(  8) mdiv intExpr(-4) <> -2 or
        intExpr(  7) mdiv intExpr(-4) <> -2 or
        intExpr(  6) mdiv intExpr(-4) <> -2 or
        intExpr(  5) mdiv intExpr(-4) <> -2 or
        intExpr(  4) mdiv intExpr(-4) <> -1 or
        intExpr(  3) mdiv intExpr(-4) <> -1 or
        intExpr(  2) mdiv intExpr(-4) <> -1 or
        intExpr(  1) mdiv intExpr(-4) <> -1 or
        intExpr(  0) mdiv intExpr(-4) <>  0 or
        intExpr( -1) mdiv intExpr(-4) <>  0 or
        intExpr( -2) mdiv intExpr(-4) <>  0 or
        intExpr( -3) mdiv intExpr(-4) <>  0 or
        intExpr( -4) mdiv intExpr(-4) <>  1 or
        intExpr( -5) mdiv intExpr(-4) <>  1 or
        intExpr( -6) mdiv intExpr(-4) <>  1 or
        intExpr( -7) mdiv intExpr(-4) <>  1 or
        intExpr( -8) mdiv intExpr(-4) <>  2 or
        intExpr( -9) mdiv intExpr(-4) <>  2 or
        intExpr(-10) mdiv intExpr(-4) <>  2 or
        intExpr( 10) mdiv intExpr(-5) <> -2 or
        intExpr(  9) mdiv intExpr(-5) <> -2 or
        intExpr(  8) mdiv intExpr(-5) <> -2 or
        intExpr(  7) mdiv intExpr(-5) <> -2 or
        intExpr(  6) mdiv intExpr(-5) <> -2 or
        intExpr(  5) mdiv intExpr(-5) <> -1 or
        intExpr(  4) mdiv intExpr(-5) <> -1 or
        intExpr(  3) mdiv intExpr(-5) <> -1 or
        intExpr(  2) mdiv intExpr(-5) <> -1 or
        intExpr(  1) mdiv intExpr(-5) <> -1 or
        intExpr(  0) mdiv intExpr(-5) <>  0 or
        intExpr( -1) mdiv intExpr(-5) <>  0 or
        intExpr( -2) mdiv intExpr(-5) <>  0 or
        intExpr( -3) mdiv intExpr(-5) <>  0 or
        intExpr( -4) mdiv intExpr(-5) <>  0 or
        intExpr( -5) mdiv intExpr(-5) <>  1 or
        intExpr( -6) mdiv intExpr(-5) <>  1 or
        intExpr( -7) mdiv intExpr(-5) <>  1 or
        intExpr( -8) mdiv intExpr(-5) <>  1 or
        intExpr( -9) mdiv intExpr(-5) <>  1 or
        intExpr(-10) mdiv intExpr(-5) <>  2 then
      writeln(" ***** mdiv with two expressions does not work correct.");
      okay := FALSE;
    end if;
    if okay then
      writeln("Mdiv works correct for selected values.");
    else
      writeln(" ***** mdiv does not work correct.");
    end if;
  end func;


const proc: check_mod is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if   10 mod  5 <>  0 or
          9 mod  5 <>  4 or
          8 mod  5 <>  3 or
          7 mod  5 <>  2 or
          6 mod  5 <>  1 or
          5 mod  5 <>  0 or
          4 mod  5 <>  4 or
          3 mod  5 <>  3 or
          2 mod  5 <>  2 or
          1 mod  5 <>  1 or
          0 mod  5 <>  0 or
         -1 mod  5 <>  4 or
         -2 mod  5 <>  3 or
         -3 mod  5 <>  2 or
         -4 mod  5 <>  1 or
         -5 mod  5 <>  0 or
         -6 mod  5 <>  4 or
         -7 mod  5 <>  3 or
         -8 mod  5 <>  2 or
         -9 mod  5 <>  1 or
        -10 mod  5 <>  0 or
         10 mod  4 <>  2 or
          9 mod  4 <>  1 or
          8 mod  4 <>  0 or
          7 mod  4 <>  3 or
          6 mod  4 <>  2 or
          5 mod  4 <>  1 or
          4 mod  4 <>  0 or
          3 mod  4 <>  3 or
          2 mod  4 <>  2 or
          1 mod  4 <>  1 or
          0 mod  4 <>  0 or
         -1 mod  4 <>  3 or
         -2 mod  4 <>  2 or
         -3 mod  4 <>  1 or
         -4 mod  4 <>  0 or
         -5 mod  4 <>  3 or
         -6 mod  4 <>  2 or
         -7 mod  4 <>  1 or
         -8 mod  4 <>  0 or
         -9 mod  4 <>  3 or
        -10 mod  4 <>  2 or
         10 mod  3 <>  1 or
          9 mod  3 <>  0 or
          8 mod  3 <>  2 or
          7 mod  3 <>  1 or
          6 mod  3 <>  0 or
          5 mod  3 <>  2 or
          4 mod  3 <>  1 or
          3 mod  3 <>  0 or
          2 mod  3 <>  2 or
          1 mod  3 <>  1 or
          0 mod  3 <>  0 or
         -1 mod  3 <>  2 or
         -2 mod  3 <>  1 or
         -3 mod  3 <>  0 or
         -4 mod  3 <>  2 or
         -5 mod  3 <>  1 or
         -6 mod  3 <>  0 or
         -7 mod  3 <>  2 or
         -8 mod  3 <>  1 or
         -9 mod  3 <>  0 or
        -10 mod  3 <>  2 or
         10 mod  2 <>  0 or
          9 mod  2 <>  1 or
          8 mod  2 <>  0 or
          7 mod  2 <>  1 or
          6 mod  2 <>  0 or
          5 mod  2 <>  1 or
          4 mod  2 <>  0 or
          3 mod  2 <>  1 or
          2 mod  2 <>  0 or
          1 mod  2 <>  1 or
          0 mod  2 <>  0 or
         -1 mod  2 <>  1 or
         -2 mod  2 <>  0 or
         -3 mod  2 <>  1 or
         -4 mod  2 <>  0 or
         -5 mod  2 <>  1 or
         -6 mod  2 <>  0 or
         -7 mod  2 <>  1 or
         -8 mod  2 <>  0 or
         -9 mod  2 <>  1 or
        -10 mod  2 <>  0 or
         10 mod  1 <>  0 or
          9 mod  1 <>  0 or
          8 mod  1 <>  0 or
          7 mod  1 <>  0 or
          6 mod  1 <>  0 or
          5 mod  1 <>  0 or
          4 mod  1 <>  0 or
          3 mod  1 <>  0 or
          2 mod  1 <>  0 or
          1 mod  1 <>  0 or
          0 mod  1 <>  0 or
         -1 mod  1 <>  0 or
         -2 mod  1 <>  0 or
         -3 mod  1 <>  0 or
         -4 mod  1 <>  0 or
         -5 mod  1 <>  0 or
         -6 mod  1 <>  0 or
         -7 mod  1 <>  0 or
         -8 mod  1 <>  0 or
         -9 mod  1 <>  0 or
        -10 mod  1 <>  0 or
         10 mod -1 <>  0 or
          9 mod -1 <>  0 or
          8 mod -1 <>  0 or
          7 mod -1 <>  0 or
          6 mod -1 <>  0 or
          5 mod -1 <>  0 or
          4 mod -1 <>  0 or
          3 mod -1 <>  0 or
          2 mod -1 <>  0 or
          1 mod -1 <>  0 or
          0 mod -1 <>  0 or
         -1 mod -1 <>  0 or
         -2 mod -1 <>  0 or
         -3 mod -1 <>  0 or
         -4 mod -1 <>  0 or
         -5 mod -1 <>  0 or
         -6 mod -1 <>  0 or
         -7 mod -1 <>  0 or
         -8 mod -1 <>  0 or
         -9 mod -1 <>  0 or
        -10 mod -1 <>  0 or
         10 mod -2 <>  0 or
          9 mod -2 <> -1 or
          8 mod -2 <>  0 or
          7 mod -2 <> -1 or
          6 mod -2 <>  0 or
          5 mod -2 <> -1 or
          4 mod -2 <>  0 or
          3 mod -2 <> -1 or
          2 mod -2 <>  0 or
          1 mod -2 <> -1 or
          0 mod -2 <>  0 or
         -1 mod -2 <> -1 or
         -2 mod -2 <>  0 or
         -3 mod -2 <> -1 or
         -4 mod -2 <>  0 or
         -5 mod -2 <> -1 or
         -6 mod -2 <>  0 or
         -7 mod -2 <> -1 or
         -8 mod -2 <>  0 or
         -9 mod -2 <> -1 or
        -10 mod -2 <>  0 or
         10 mod -3 <> -2 or
          9 mod -3 <>  0 or
          8 mod -3 <> -1 or
          7 mod -3 <> -2 or
          6 mod -3 <>  0 or
          5 mod -3 <> -1 or
          4 mod -3 <> -2 or
          3 mod -3 <>  0 or
          2 mod -3 <> -1 or
          1 mod -3 <> -2 or
          0 mod -3 <>  0 or
         -1 mod -3 <> -1 or
         -2 mod -3 <> -2 or
         -3 mod -3 <>  0 or
         -4 mod -3 <> -1 or
         -5 mod -3 <> -2 or
         -6 mod -3 <>  0 or
         -7 mod -3 <> -1 or
         -8 mod -3 <> -2 or
         -9 mod -3 <>  0 or
        -10 mod -3 <> -1 or
         10 mod -4 <> -2 or
          9 mod -4 <> -3 or
          8 mod -4 <>  0 or
          7 mod -4 <> -1 or
          6 mod -4 <> -2 or
          5 mod -4 <> -3 or
          4 mod -4 <>  0 or
          3 mod -4 <> -1 or
          2 mod -4 <> -2 or
          1 mod -4 <> -3 or
          0 mod -4 <>  0 or
         -1 mod -4 <> -1 or
         -2 mod -4 <> -2 or
         -3 mod -4 <> -3 or
         -4 mod -4 <>  0 or
         -5 mod -4 <> -1 or
         -6 mod -4 <> -2 or
         -7 mod -4 <> -3 or
         -8 mod -4 <>  0 or
         -9 mod -4 <> -1 or
        -10 mod -4 <> -2 or
         10 mod -5 <> -0 or
          9 mod -5 <> -1 or
          8 mod -5 <> -2 or
          7 mod -5 <> -3 or
          6 mod -5 <> -4 or
          5 mod -5 <>  0 or
          4 mod -5 <> -1 or
          3 mod -5 <> -2 or
          2 mod -5 <> -3 or
          1 mod -5 <> -4 or
          0 mod -5 <>  0 or
         -1 mod -5 <> -1 or
         -2 mod -5 <> -2 or
         -3 mod -5 <> -3 or
         -4 mod -5 <> -4 or
         -5 mod -5 <>  0 or
         -6 mod -5 <> -1 or
         -7 mod -5 <> -2 or
         -8 mod -5 <> -3 or
         -9 mod -5 <> -4 or
        -10 mod -5 <>  0 then
      writeln(" ***** mod with two constants does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr( 10) mod  5 <>  0 or
        intExpr(  9) mod  5 <>  4 or
        intExpr(  8) mod  5 <>  3 or
        intExpr(  7) mod  5 <>  2 or
        intExpr(  6) mod  5 <>  1 or
        intExpr(  5) mod  5 <>  0 or
        intExpr(  4) mod  5 <>  4 or
        intExpr(  3) mod  5 <>  3 or
        intExpr(  2) mod  5 <>  2 or
        intExpr(  1) mod  5 <>  1 or
        intExpr(  0) mod  5 <>  0 or
        intExpr( -1) mod  5 <>  4 or
        intExpr( -2) mod  5 <>  3 or
        intExpr( -3) mod  5 <>  2 or
        intExpr( -4) mod  5 <>  1 or
        intExpr( -5) mod  5 <>  0 or
        intExpr( -6) mod  5 <>  4 or
        intExpr( -7) mod  5 <>  3 or
        intExpr( -8) mod  5 <>  2 or
        intExpr( -9) mod  5 <>  1 or
        intExpr(-10) mod  5 <>  0 or
        intExpr( 10) mod  4 <>  2 or
        intExpr(  9) mod  4 <>  1 or
        intExpr(  8) mod  4 <>  0 or
        intExpr(  7) mod  4 <>  3 or
        intExpr(  6) mod  4 <>  2 or
        intExpr(  5) mod  4 <>  1 or
        intExpr(  4) mod  4 <>  0 or
        intExpr(  3) mod  4 <>  3 or
        intExpr(  2) mod  4 <>  2 or
        intExpr(  1) mod  4 <>  1 or
        intExpr(  0) mod  4 <>  0 or
        intExpr( -1) mod  4 <>  3 or
        intExpr( -2) mod  4 <>  2 or
        intExpr( -3) mod  4 <>  1 or
        intExpr( -4) mod  4 <>  0 or
        intExpr( -5) mod  4 <>  3 or
        intExpr( -6) mod  4 <>  2 or
        intExpr( -7) mod  4 <>  1 or
        intExpr( -8) mod  4 <>  0 or
        intExpr( -9) mod  4 <>  3 or
        intExpr(-10) mod  4 <>  2 or
        intExpr( 10) mod  3 <>  1 or
        intExpr(  9) mod  3 <>  0 or
        intExpr(  8) mod  3 <>  2 or
        intExpr(  7) mod  3 <>  1 or
        intExpr(  6) mod  3 <>  0 or
        intExpr(  5) mod  3 <>  2 or
        intExpr(  4) mod  3 <>  1 or
        intExpr(  3) mod  3 <>  0 or
        intExpr(  2) mod  3 <>  2 or
        intExpr(  1) mod  3 <>  1 or
        intExpr(  0) mod  3 <>  0 or
        intExpr( -1) mod  3 <>  2 or
        intExpr( -2) mod  3 <>  1 or
        intExpr( -3) mod  3 <>  0 or
        intExpr( -4) mod  3 <>  2 or
        intExpr( -5) mod  3 <>  1 or
        intExpr( -6) mod  3 <>  0 or
        intExpr( -7) mod  3 <>  2 or
        intExpr( -8) mod  3 <>  1 or
        intExpr( -9) mod  3 <>  0 or
        intExpr(-10) mod  3 <>  2 or
        intExpr( 10) mod  2 <>  0 or
        intExpr(  9) mod  2 <>  1 or
        intExpr(  8) mod  2 <>  0 or
        intExpr(  7) mod  2 <>  1 or
        intExpr(  6) mod  2 <>  0 or
        intExpr(  5) mod  2 <>  1 or
        intExpr(  4) mod  2 <>  0 or
        intExpr(  3) mod  2 <>  1 or
        intExpr(  2) mod  2 <>  0 or
        intExpr(  1) mod  2 <>  1 or
        intExpr(  0) mod  2 <>  0 or
        intExpr( -1) mod  2 <>  1 or
        intExpr( -2) mod  2 <>  0 or
        intExpr( -3) mod  2 <>  1 or
        intExpr( -4) mod  2 <>  0 or
        intExpr( -5) mod  2 <>  1 or
        intExpr( -6) mod  2 <>  0 or
        intExpr( -7) mod  2 <>  1 or
        intExpr( -8) mod  2 <>  0 or
        intExpr( -9) mod  2 <>  1 or
        intExpr(-10) mod  2 <>  0 or
        intExpr( 10) mod  1 <>  0 or
        intExpr(  9) mod  1 <>  0 or
        intExpr(  8) mod  1 <>  0 or
        intExpr(  7) mod  1 <>  0 or
        intExpr(  6) mod  1 <>  0 or
        intExpr(  5) mod  1 <>  0 or
        intExpr(  4) mod  1 <>  0 or
        intExpr(  3) mod  1 <>  0 or
        intExpr(  2) mod  1 <>  0 or
        intExpr(  1) mod  1 <>  0 or
        intExpr(  0) mod  1 <>  0 or
        intExpr( -1) mod  1 <>  0 or
        intExpr( -2) mod  1 <>  0 or
        intExpr( -3) mod  1 <>  0 or
        intExpr( -4) mod  1 <>  0 or
        intExpr( -5) mod  1 <>  0 or
        intExpr( -6) mod  1 <>  0 or
        intExpr( -7) mod  1 <>  0 or
        intExpr( -8) mod  1 <>  0 or
        intExpr( -9) mod  1 <>  0 or
        intExpr(-10) mod  1 <>  0 or
        intExpr( 10) mod -1 <>  0 or
        intExpr(  9) mod -1 <>  0 or
        intExpr(  8) mod -1 <>  0 or
        intExpr(  7) mod -1 <>  0 or
        intExpr(  6) mod -1 <>  0 or
        intExpr(  5) mod -1 <>  0 or
        intExpr(  4) mod -1 <>  0 or
        intExpr(  3) mod -1 <>  0 or
        intExpr(  2) mod -1 <>  0 or
        intExpr(  1) mod -1 <>  0 or
        intExpr(  0) mod -1 <>  0 or
        intExpr( -1) mod -1 <>  0 or
        intExpr( -2) mod -1 <>  0 or
        intExpr( -3) mod -1 <>  0 or
        intExpr( -4) mod -1 <>  0 or
        intExpr( -5) mod -1 <>  0 or
        intExpr( -6) mod -1 <>  0 or
        intExpr( -7) mod -1 <>  0 or
        intExpr( -8) mod -1 <>  0 or
        intExpr( -9) mod -1 <>  0 or
        intExpr(-10) mod -1 <>  0 or
        intExpr( 10) mod -2 <>  0 or
        intExpr(  9) mod -2 <> -1 or
        intExpr(  8) mod -2 <>  0 or
        intExpr(  7) mod -2 <> -1 or
        intExpr(  6) mod -2 <>  0 or
        intExpr(  5) mod -2 <> -1 or
        intExpr(  4) mod -2 <>  0 or
        intExpr(  3) mod -2 <> -1 or
        intExpr(  2) mod -2 <>  0 or
        intExpr(  1) mod -2 <> -1 or
        intExpr(  0) mod -2 <>  0 or
        intExpr( -1) mod -2 <> -1 or
        intExpr( -2) mod -2 <>  0 or
        intExpr( -3) mod -2 <> -1 or
        intExpr( -4) mod -2 <>  0 or
        intExpr( -5) mod -2 <> -1 or
        intExpr( -6) mod -2 <>  0 or
        intExpr( -7) mod -2 <> -1 or
        intExpr( -8) mod -2 <>  0 or
        intExpr( -9) mod -2 <> -1 or
        intExpr(-10) mod -2 <>  0 or
        intExpr( 10) mod -3 <> -2 or
        intExpr(  9) mod -3 <>  0 or
        intExpr(  8) mod -3 <> -1 or
        intExpr(  7) mod -3 <> -2 or
        intExpr(  6) mod -3 <>  0 or
        intExpr(  5) mod -3 <> -1 or
        intExpr(  4) mod -3 <> -2 or
        intExpr(  3) mod -3 <>  0 or
        intExpr(  2) mod -3 <> -1 or
        intExpr(  1) mod -3 <> -2 or
        intExpr(  0) mod -3 <>  0 or
        intExpr( -1) mod -3 <> -1 or
        intExpr( -2) mod -3 <> -2 or
        intExpr( -3) mod -3 <>  0 or
        intExpr( -4) mod -3 <> -1 or
        intExpr( -5) mod -3 <> -2 or
        intExpr( -6) mod -3 <>  0 or
        intExpr( -7) mod -3 <> -1 or
        intExpr( -8) mod -3 <> -2 or
        intExpr( -9) mod -3 <>  0 or
        intExpr(-10) mod -3 <> -1 or
        intExpr( 10) mod -4 <> -2 or
        intExpr(  9) mod -4 <> -3 or
        intExpr(  8) mod -4 <>  0 or
        intExpr(  7) mod -4 <> -1 or
        intExpr(  6) mod -4 <> -2 or
        intExpr(  5) mod -4 <> -3 or
        intExpr(  4) mod -4 <>  0 or
        intExpr(  3) mod -4 <> -1 or
        intExpr(  2) mod -4 <> -2 or
        intExpr(  1) mod -4 <> -3 or
        intExpr(  0) mod -4 <>  0 or
        intExpr( -1) mod -4 <> -1 or
        intExpr( -2) mod -4 <> -2 or
        intExpr( -3) mod -4 <> -3 or
        intExpr( -4) mod -4 <>  0 or
        intExpr( -5) mod -4 <> -1 or
        intExpr( -6) mod -4 <> -2 or
        intExpr( -7) mod -4 <> -3 or
        intExpr( -8) mod -4 <>  0 or
        intExpr( -9) mod -4 <> -1 or
        intExpr(-10) mod -4 <> -2 or
        intExpr( 10) mod -5 <> -0 or
        intExpr(  9) mod -5 <> -1 or
        intExpr(  8) mod -5 <> -2 or
        intExpr(  7) mod -5 <> -3 or
        intExpr(  6) mod -5 <> -4 or
        intExpr(  5) mod -5 <>  0 or
        intExpr(  4) mod -5 <> -1 or
        intExpr(  3) mod -5 <> -2 or
        intExpr(  2) mod -5 <> -3 or
        intExpr(  1) mod -5 <> -4 or
        intExpr(  0) mod -5 <>  0 or
        intExpr( -1) mod -5 <> -1 or
        intExpr( -2) mod -5 <> -2 or
        intExpr( -3) mod -5 <> -3 or
        intExpr( -4) mod -5 <> -4 or
        intExpr( -5) mod -5 <>  0 or
        intExpr( -6) mod -5 <> -1 or
        intExpr( -7) mod -5 <> -2 or
        intExpr( -8) mod -5 <> -3 or
        intExpr( -9) mod -5 <> -4 or
        intExpr(-10) mod -5 <>  0 then
      writeln(" ***** mod with an expression and a constant does not work correct.");
      okay := FALSE;
    end if;
    if   10 mod intExpr( 5) <>  0 or
          9 mod intExpr( 5) <>  4 or
          8 mod intExpr( 5) <>  3 or
          7 mod intExpr( 5) <>  2 or
          6 mod intExpr( 5) <>  1 or
          5 mod intExpr( 5) <>  0 or
          4 mod intExpr( 5) <>  4 or
          3 mod intExpr( 5) <>  3 or
          2 mod intExpr( 5) <>  2 or
          1 mod intExpr( 5) <>  1 or
          0 mod intExpr( 5) <>  0 or
         -1 mod intExpr( 5) <>  4 or
         -2 mod intExpr( 5) <>  3 or
         -3 mod intExpr( 5) <>  2 or
         -4 mod intExpr( 5) <>  1 or
         -5 mod intExpr( 5) <>  0 or
         -6 mod intExpr( 5) <>  4 or
         -7 mod intExpr( 5) <>  3 or
         -8 mod intExpr( 5) <>  2 or
         -9 mod intExpr( 5) <>  1 or
        -10 mod intExpr( 5) <>  0 or
         10 mod intExpr( 4) <>  2 or
          9 mod intExpr( 4) <>  1 or
          8 mod intExpr( 4) <>  0 or
          7 mod intExpr( 4) <>  3 or
          6 mod intExpr( 4) <>  2 or
          5 mod intExpr( 4) <>  1 or
          4 mod intExpr( 4) <>  0 or
          3 mod intExpr( 4) <>  3 or
          2 mod intExpr( 4) <>  2 or
          1 mod intExpr( 4) <>  1 or
          0 mod intExpr( 4) <>  0 or
         -1 mod intExpr( 4) <>  3 or
         -2 mod intExpr( 4) <>  2 or
         -3 mod intExpr( 4) <>  1 or
         -4 mod intExpr( 4) <>  0 or
         -5 mod intExpr( 4) <>  3 or
         -6 mod intExpr( 4) <>  2 or
         -7 mod intExpr( 4) <>  1 or
         -8 mod intExpr( 4) <>  0 or
         -9 mod intExpr( 4) <>  3 or
        -10 mod intExpr( 4) <>  2 or
         10 mod intExpr( 3) <>  1 or
          9 mod intExpr( 3) <>  0 or
          8 mod intExpr( 3) <>  2 or
          7 mod intExpr( 3) <>  1 or
          6 mod intExpr( 3) <>  0 or
          5 mod intExpr( 3) <>  2 or
          4 mod intExpr( 3) <>  1 or
          3 mod intExpr( 3) <>  0 or
          2 mod intExpr( 3) <>  2 or
          1 mod intExpr( 3) <>  1 or
          0 mod intExpr( 3) <>  0 or
         -1 mod intExpr( 3) <>  2 or
         -2 mod intExpr( 3) <>  1 or
         -3 mod intExpr( 3) <>  0 or
         -4 mod intExpr( 3) <>  2 or
         -5 mod intExpr( 3) <>  1 or
         -6 mod intExpr( 3) <>  0 or
         -7 mod intExpr( 3) <>  2 or
         -8 mod intExpr( 3) <>  1 or
         -9 mod intExpr( 3) <>  0 or
        -10 mod intExpr( 3) <>  2 or
         10 mod intExpr( 2) <>  0 or
          9 mod intExpr( 2) <>  1 or
          8 mod intExpr( 2) <>  0 or
          7 mod intExpr( 2) <>  1 or
          6 mod intExpr( 2) <>  0 or
          5 mod intExpr( 2) <>  1 or
          4 mod intExpr( 2) <>  0 or
          3 mod intExpr( 2) <>  1 or
          2 mod intExpr( 2) <>  0 or
          1 mod intExpr( 2) <>  1 or
          0 mod intExpr( 2) <>  0 or
         -1 mod intExpr( 2) <>  1 or
         -2 mod intExpr( 2) <>  0 or
         -3 mod intExpr( 2) <>  1 or
         -4 mod intExpr( 2) <>  0 or
         -5 mod intExpr( 2) <>  1 or
         -6 mod intExpr( 2) <>  0 or
         -7 mod intExpr( 2) <>  1 or
         -8 mod intExpr( 2) <>  0 or
         -9 mod intExpr( 2) <>  1 or
        -10 mod intExpr( 2) <>  0 or
         10 mod intExpr( 1) <>  0 or
          9 mod intExpr( 1) <>  0 or
          8 mod intExpr( 1) <>  0 or
          7 mod intExpr( 1) <>  0 or
          6 mod intExpr( 1) <>  0 or
          5 mod intExpr( 1) <>  0 or
          4 mod intExpr( 1) <>  0 or
          3 mod intExpr( 1) <>  0 or
          2 mod intExpr( 1) <>  0 or
          1 mod intExpr( 1) <>  0 or
          0 mod intExpr( 1) <>  0 or
         -1 mod intExpr( 1) <>  0 or
         -2 mod intExpr( 1) <>  0 or
         -3 mod intExpr( 1) <>  0 or
         -4 mod intExpr( 1) <>  0 or
         -5 mod intExpr( 1) <>  0 or
         -6 mod intExpr( 1) <>  0 or
         -7 mod intExpr( 1) <>  0 or
         -8 mod intExpr( 1) <>  0 or
         -9 mod intExpr( 1) <>  0 or
        -10 mod intExpr( 1) <>  0 or
         10 mod intExpr(-1) <>  0 or
          9 mod intExpr(-1) <>  0 or
          8 mod intExpr(-1) <>  0 or
          7 mod intExpr(-1) <>  0 or
          6 mod intExpr(-1) <>  0 or
          5 mod intExpr(-1) <>  0 or
          4 mod intExpr(-1) <>  0 or
          3 mod intExpr(-1) <>  0 or
          2 mod intExpr(-1) <>  0 or
          1 mod intExpr(-1) <>  0 or
          0 mod intExpr(-1) <>  0 or
         -1 mod intExpr(-1) <>  0 or
         -2 mod intExpr(-1) <>  0 or
         -3 mod intExpr(-1) <>  0 or
         -4 mod intExpr(-1) <>  0 or
         -5 mod intExpr(-1) <>  0 or
         -6 mod intExpr(-1) <>  0 or
         -7 mod intExpr(-1) <>  0 or
         -8 mod intExpr(-1) <>  0 or
         -9 mod intExpr(-1) <>  0 or
        -10 mod intExpr(-1) <>  0 or
         10 mod intExpr(-2) <>  0 or
          9 mod intExpr(-2) <> -1 or
          8 mod intExpr(-2) <>  0 or
          7 mod intExpr(-2) <> -1 or
          6 mod intExpr(-2) <>  0 or
          5 mod intExpr(-2) <> -1 or
          4 mod intExpr(-2) <>  0 or
          3 mod intExpr(-2) <> -1 or
          2 mod intExpr(-2) <>  0 or
          1 mod intExpr(-2) <> -1 or
          0 mod intExpr(-2) <>  0 or
         -1 mod intExpr(-2) <> -1 or
         -2 mod intExpr(-2) <>  0 or
         -3 mod intExpr(-2) <> -1 or
         -4 mod intExpr(-2) <>  0 or
         -5 mod intExpr(-2) <> -1 or
         -6 mod intExpr(-2) <>  0 or
         -7 mod intExpr(-2) <> -1 or
         -8 mod intExpr(-2) <>  0 or
         -9 mod intExpr(-2) <> -1 or
        -10 mod intExpr(-2) <>  0 or
         10 mod intExpr(-3) <> -2 or
          9 mod intExpr(-3) <>  0 or
          8 mod intExpr(-3) <> -1 or
          7 mod intExpr(-3) <> -2 or
          6 mod intExpr(-3) <>  0 or
          5 mod intExpr(-3) <> -1 or
          4 mod intExpr(-3) <> -2 or
          3 mod intExpr(-3) <>  0 or
          2 mod intExpr(-3) <> -1 or
          1 mod intExpr(-3) <> -2 or
          0 mod intExpr(-3) <>  0 or
         -1 mod intExpr(-3) <> -1 or
         -2 mod intExpr(-3) <> -2 or
         -3 mod intExpr(-3) <>  0 or
         -4 mod intExpr(-3) <> -1 or
         -5 mod intExpr(-3) <> -2 or
         -6 mod intExpr(-3) <>  0 or
         -7 mod intExpr(-3) <> -1 or
         -8 mod intExpr(-3) <> -2 or
         -9 mod intExpr(-3) <>  0 or
        -10 mod intExpr(-3) <> -1 or
         10 mod intExpr(-4) <> -2 or
          9 mod intExpr(-4) <> -3 or
          8 mod intExpr(-4) <>  0 or
          7 mod intExpr(-4) <> -1 or
          6 mod intExpr(-4) <> -2 or
          5 mod intExpr(-4) <> -3 or
          4 mod intExpr(-4) <>  0 or
          3 mod intExpr(-4) <> -1 or
          2 mod intExpr(-4) <> -2 or
          1 mod intExpr(-4) <> -3 or
          0 mod intExpr(-4) <>  0 or
         -1 mod intExpr(-4) <> -1 or
         -2 mod intExpr(-4) <> -2 or
         -3 mod intExpr(-4) <> -3 or
         -4 mod intExpr(-4) <>  0 or
         -5 mod intExpr(-4) <> -1 or
         -6 mod intExpr(-4) <> -2 or
         -7 mod intExpr(-4) <> -3 or
         -8 mod intExpr(-4) <>  0 or
         -9 mod intExpr(-4) <> -1 or
        -10 mod intExpr(-4) <> -2 or
         10 mod intExpr(-5) <> -0 or
          9 mod intExpr(-5) <> -1 or
          8 mod intExpr(-5) <> -2 or
          7 mod intExpr(-5) <> -3 or
          6 mod intExpr(-5) <> -4 or
          5 mod intExpr(-5) <>  0 or
          4 mod intExpr(-5) <> -1 or
          3 mod intExpr(-5) <> -2 or
          2 mod intExpr(-5) <> -3 or
          1 mod intExpr(-5) <> -4 or
          0 mod intExpr(-5) <>  0 or
         -1 mod intExpr(-5) <> -1 or
         -2 mod intExpr(-5) <> -2 or
         -3 mod intExpr(-5) <> -3 or
         -4 mod intExpr(-5) <> -4 or
         -5 mod intExpr(-5) <>  0 or
         -6 mod intExpr(-5) <> -1 or
         -7 mod intExpr(-5) <> -2 or
         -8 mod intExpr(-5) <> -3 or
         -9 mod intExpr(-5) <> -4 or
        -10 mod intExpr(-5) <>  0 then
      writeln(" ***** mod with a constant and an expression does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr( 10) mod intExpr( 5) <>  0 or
        intExpr(  9) mod intExpr( 5) <>  4 or
        intExpr(  8) mod intExpr( 5) <>  3 or
        intExpr(  7) mod intExpr( 5) <>  2 or
        intExpr(  6) mod intExpr( 5) <>  1 or
        intExpr(  5) mod intExpr( 5) <>  0 or
        intExpr(  4) mod intExpr( 5) <>  4 or
        intExpr(  3) mod intExpr( 5) <>  3 or
        intExpr(  2) mod intExpr( 5) <>  2 or
        intExpr(  1) mod intExpr( 5) <>  1 or
        intExpr(  0) mod intExpr( 5) <>  0 or
        intExpr( -1) mod intExpr( 5) <>  4 or
        intExpr( -2) mod intExpr( 5) <>  3 or
        intExpr( -3) mod intExpr( 5) <>  2 or
        intExpr( -4) mod intExpr( 5) <>  1 or
        intExpr( -5) mod intExpr( 5) <>  0 or
        intExpr( -6) mod intExpr( 5) <>  4 or
        intExpr( -7) mod intExpr( 5) <>  3 or
        intExpr( -8) mod intExpr( 5) <>  2 or
        intExpr( -9) mod intExpr( 5) <>  1 or
        intExpr(-10) mod intExpr( 5) <>  0 or
        intExpr( 10) mod intExpr( 4) <>  2 or
        intExpr(  9) mod intExpr( 4) <>  1 or
        intExpr(  8) mod intExpr( 4) <>  0 or
        intExpr(  7) mod intExpr( 4) <>  3 or
        intExpr(  6) mod intExpr( 4) <>  2 or
        intExpr(  5) mod intExpr( 4) <>  1 or
        intExpr(  4) mod intExpr( 4) <>  0 or
        intExpr(  3) mod intExpr( 4) <>  3 or
        intExpr(  2) mod intExpr( 4) <>  2 or
        intExpr(  1) mod intExpr( 4) <>  1 or
        intExpr(  0) mod intExpr( 4) <>  0 or
        intExpr( -1) mod intExpr( 4) <>  3 or
        intExpr( -2) mod intExpr( 4) <>  2 or
        intExpr( -3) mod intExpr( 4) <>  1 or
        intExpr( -4) mod intExpr( 4) <>  0 or
        intExpr( -5) mod intExpr( 4) <>  3 or
        intExpr( -6) mod intExpr( 4) <>  2 or
        intExpr( -7) mod intExpr( 4) <>  1 or
        intExpr( -8) mod intExpr( 4) <>  0 or
        intExpr( -9) mod intExpr( 4) <>  3 or
        intExpr(-10) mod intExpr( 4) <>  2 or
        intExpr( 10) mod intExpr( 3) <>  1 or
        intExpr(  9) mod intExpr( 3) <>  0 or
        intExpr(  8) mod intExpr( 3) <>  2 or
        intExpr(  7) mod intExpr( 3) <>  1 or
        intExpr(  6) mod intExpr( 3) <>  0 or
        intExpr(  5) mod intExpr( 3) <>  2 or
        intExpr(  4) mod intExpr( 3) <>  1 or
        intExpr(  3) mod intExpr( 3) <>  0 or
        intExpr(  2) mod intExpr( 3) <>  2 or
        intExpr(  1) mod intExpr( 3) <>  1 or
        intExpr(  0) mod intExpr( 3) <>  0 or
        intExpr( -1) mod intExpr( 3) <>  2 or
        intExpr( -2) mod intExpr( 3) <>  1 or
        intExpr( -3) mod intExpr( 3) <>  0 or
        intExpr( -4) mod intExpr( 3) <>  2 or
        intExpr( -5) mod intExpr( 3) <>  1 or
        intExpr( -6) mod intExpr( 3) <>  0 or
        intExpr( -7) mod intExpr( 3) <>  2 or
        intExpr( -8) mod intExpr( 3) <>  1 or
        intExpr( -9) mod intExpr( 3) <>  0 or
        intExpr(-10) mod intExpr( 3) <>  2 or
        intExpr( 10) mod intExpr( 2) <>  0 or
        intExpr(  9) mod intExpr( 2) <>  1 or
        intExpr(  8) mod intExpr( 2) <>  0 or
        intExpr(  7) mod intExpr( 2) <>  1 or
        intExpr(  6) mod intExpr( 2) <>  0 or
        intExpr(  5) mod intExpr( 2) <>  1 or
        intExpr(  4) mod intExpr( 2) <>  0 or
        intExpr(  3) mod intExpr( 2) <>  1 or
        intExpr(  2) mod intExpr( 2) <>  0 or
        intExpr(  1) mod intExpr( 2) <>  1 or
        intExpr(  0) mod intExpr( 2) <>  0 or
        intExpr( -1) mod intExpr( 2) <>  1 or
        intExpr( -2) mod intExpr( 2) <>  0 or
        intExpr( -3) mod intExpr( 2) <>  1 or
        intExpr( -4) mod intExpr( 2) <>  0 or
        intExpr( -5) mod intExpr( 2) <>  1 or
        intExpr( -6) mod intExpr( 2) <>  0 or
        intExpr( -7) mod intExpr( 2) <>  1 or
        intExpr( -8) mod intExpr( 2) <>  0 or
        intExpr( -9) mod intExpr( 2) <>  1 or
        intExpr(-10) mod intExpr( 2) <>  0 or
        intExpr( 10) mod intExpr( 1) <>  0 or
        intExpr(  9) mod intExpr( 1) <>  0 or
        intExpr(  8) mod intExpr( 1) <>  0 or
        intExpr(  7) mod intExpr( 1) <>  0 or
        intExpr(  6) mod intExpr( 1) <>  0 or
        intExpr(  5) mod intExpr( 1) <>  0 or
        intExpr(  4) mod intExpr( 1) <>  0 or
        intExpr(  3) mod intExpr( 1) <>  0 or
        intExpr(  2) mod intExpr( 1) <>  0 or
        intExpr(  1) mod intExpr( 1) <>  0 or
        intExpr(  0) mod intExpr( 1) <>  0 or
        intExpr( -1) mod intExpr( 1) <>  0 or
        intExpr( -2) mod intExpr( 1) <>  0 or
        intExpr( -3) mod intExpr( 1) <>  0 or
        intExpr( -4) mod intExpr( 1) <>  0 or
        intExpr( -5) mod intExpr( 1) <>  0 or
        intExpr( -6) mod intExpr( 1) <>  0 or
        intExpr( -7) mod intExpr( 1) <>  0 or
        intExpr( -8) mod intExpr( 1) <>  0 or
        intExpr( -9) mod intExpr( 1) <>  0 or
        intExpr(-10) mod intExpr( 1) <>  0 or
        intExpr( 10) mod intExpr(-1) <>  0 or
        intExpr(  9) mod intExpr(-1) <>  0 or
        intExpr(  8) mod intExpr(-1) <>  0 or
        intExpr(  7) mod intExpr(-1) <>  0 or
        intExpr(  6) mod intExpr(-1) <>  0 or
        intExpr(  5) mod intExpr(-1) <>  0 or
        intExpr(  4) mod intExpr(-1) <>  0 or
        intExpr(  3) mod intExpr(-1) <>  0 or
        intExpr(  2) mod intExpr(-1) <>  0 or
        intExpr(  1) mod intExpr(-1) <>  0 or
        intExpr(  0) mod intExpr(-1) <>  0 or
        intExpr( -1) mod intExpr(-1) <>  0 or
        intExpr( -2) mod intExpr(-1) <>  0 or
        intExpr( -3) mod intExpr(-1) <>  0 or
        intExpr( -4) mod intExpr(-1) <>  0 or
        intExpr( -5) mod intExpr(-1) <>  0 or
        intExpr( -6) mod intExpr(-1) <>  0 or
        intExpr( -7) mod intExpr(-1) <>  0 or
        intExpr( -8) mod intExpr(-1) <>  0 or
        intExpr( -9) mod intExpr(-1) <>  0 or
        intExpr(-10) mod intExpr(-1) <>  0 or
        intExpr( 10) mod intExpr(-2) <>  0 or
        intExpr(  9) mod intExpr(-2) <> -1 or
        intExpr(  8) mod intExpr(-2) <>  0 or
        intExpr(  7) mod intExpr(-2) <> -1 or
        intExpr(  6) mod intExpr(-2) <>  0 or
        intExpr(  5) mod intExpr(-2) <> -1 or
        intExpr(  4) mod intExpr(-2) <>  0 or
        intExpr(  3) mod intExpr(-2) <> -1 or
        intExpr(  2) mod intExpr(-2) <>  0 or
        intExpr(  1) mod intExpr(-2) <> -1 or
        intExpr(  0) mod intExpr(-2) <>  0 or
        intExpr( -1) mod intExpr(-2) <> -1 or
        intExpr( -2) mod intExpr(-2) <>  0 or
        intExpr( -3) mod intExpr(-2) <> -1 or
        intExpr( -4) mod intExpr(-2) <>  0 or
        intExpr( -5) mod intExpr(-2) <> -1 or
        intExpr( -6) mod intExpr(-2) <>  0 or
        intExpr( -7) mod intExpr(-2) <> -1 or
        intExpr( -8) mod intExpr(-2) <>  0 or
        intExpr( -9) mod intExpr(-2) <> -1 or
        intExpr(-10) mod intExpr(-2) <>  0 or
        intExpr( 10) mod intExpr(-3) <> -2 or
        intExpr(  9) mod intExpr(-3) <>  0 or
        intExpr(  8) mod intExpr(-3) <> -1 or
        intExpr(  7) mod intExpr(-3) <> -2 or
        intExpr(  6) mod intExpr(-3) <>  0 or
        intExpr(  5) mod intExpr(-3) <> -1 or
        intExpr(  4) mod intExpr(-3) <> -2 or
        intExpr(  3) mod intExpr(-3) <>  0 or
        intExpr(  2) mod intExpr(-3) <> -1 or
        intExpr(  1) mod intExpr(-3) <> -2 or
        intExpr(  0) mod intExpr(-3) <>  0 or
        intExpr( -1) mod intExpr(-3) <> -1 or
        intExpr( -2) mod intExpr(-3) <> -2 or
        intExpr( -3) mod intExpr(-3) <>  0 or
        intExpr( -4) mod intExpr(-3) <> -1 or
        intExpr( -5) mod intExpr(-3) <> -2 or
        intExpr( -6) mod intExpr(-3) <>  0 or
        intExpr( -7) mod intExpr(-3) <> -1 or
        intExpr( -8) mod intExpr(-3) <> -2 or
        intExpr( -9) mod intExpr(-3) <>  0 or
        intExpr(-10) mod intExpr(-3) <> -1 or
        intExpr( 10) mod intExpr(-4) <> -2 or
        intExpr(  9) mod intExpr(-4) <> -3 or
        intExpr(  8) mod intExpr(-4) <>  0 or
        intExpr(  7) mod intExpr(-4) <> -1 or
        intExpr(  6) mod intExpr(-4) <> -2 or
        intExpr(  5) mod intExpr(-4) <> -3 or
        intExpr(  4) mod intExpr(-4) <>  0 or
        intExpr(  3) mod intExpr(-4) <> -1 or
        intExpr(  2) mod intExpr(-4) <> -2 or
        intExpr(  1) mod intExpr(-4) <> -3 or
        intExpr(  0) mod intExpr(-4) <>  0 or
        intExpr( -1) mod intExpr(-4) <> -1 or
        intExpr( -2) mod intExpr(-4) <> -2 or
        intExpr( -3) mod intExpr(-4) <> -3 or
        intExpr( -4) mod intExpr(-4) <>  0 or
        intExpr( -5) mod intExpr(-4) <> -1 or
        intExpr( -6) mod intExpr(-4) <> -2 or
        intExpr( -7) mod intExpr(-4) <> -3 or
        intExpr( -8) mod intExpr(-4) <>  0 or
        intExpr( -9) mod intExpr(-4) <> -1 or
        intExpr(-10) mod intExpr(-4) <> -2 or
        intExpr( 10) mod intExpr(-5) <> -0 or
        intExpr(  9) mod intExpr(-5) <> -1 or
        intExpr(  8) mod intExpr(-5) <> -2 or
        intExpr(  7) mod intExpr(-5) <> -3 or
        intExpr(  6) mod intExpr(-5) <> -4 or
        intExpr(  5) mod intExpr(-5) <>  0 or
        intExpr(  4) mod intExpr(-5) <> -1 or
        intExpr(  3) mod intExpr(-5) <> -2 or
        intExpr(  2) mod intExpr(-5) <> -3 or
        intExpr(  1) mod intExpr(-5) <> -4 or
        intExpr(  0) mod intExpr(-5) <>  0 or
        intExpr( -1) mod intExpr(-5) <> -1 or
        intExpr( -2) mod intExpr(-5) <> -2 or
        intExpr( -3) mod intExpr(-5) <> -3 or
        intExpr( -4) mod intExpr(-5) <> -4 or
        intExpr( -5) mod intExpr(-5) <>  0 or
        intExpr( -6) mod intExpr(-5) <> -1 or
        intExpr( -7) mod intExpr(-5) <> -2 or
        intExpr( -8) mod intExpr(-5) <> -3 or
        intExpr( -9) mod intExpr(-5) <> -4 or
        intExpr(-10) mod intExpr(-5) <>  0 then
      writeln(" ***** mod with two expressions does not work correct.");
      okay := FALSE;
    end if;
    if okay then
      writeln("Mod works correct for selected values.");
    else
      writeln(" ***** mod does not work correct.");
    end if;
  end func;


const proc: check_odd is func
  local
    var boolean: okay is TRUE;
    var boolean: is_odd is FALSE;
    var integer: number is 0;
  begin
    okay := TRUE;
    is_odd := FALSE;
    for number range -20 to 20 do
      if is_odd <> odd(number) then
        okay := FALSE;
      end if;
      is_odd := not is_odd;
    end for;
    if okay then
      writeln("odd(i) works correct in the range -20 to 20.");
    else
      writeln(" ***** odd(i) does not work correct.");
    end if;
  end func;


const proc: check_fact is func
  local
    var boolean: okay is TRUE;
    var integer: number is 0;
    var integer: fact is 0;
  begin
    okay := TRUE;
    if !0 <> 1 then
      okay := FALSE;
    else
      fact := 1;
      for number range 1 to 12 do
        fact := fact * number;
        if !number <> fact then
          write(" ***** !");
          write(number);
          writeln(" is not correct computed.");
          okay := FALSE;
        end if;
      end for;
    end if;
    if okay then
      writeln("!i works correct for i in the range 0 to 12.");
    end if;
  end func;


const proc: check_binom is func
  local
    var boolean: okay is TRUE;
    var integer: n is 0;
    var integer: k is 0;
    var integer: j is 0;
    var integer: binom_result is 0;
    var boolean: overflow is FALSE;
  begin
    okay := TRUE;
    for n range 0 to 12 do
      for k range 0 to n do
        if n ! k <> !n div (!(n - k) * !k) then
          write(" ***** ");
          write(n);
          write(" ! ");
          write(k);
          writeln(" is not correct computed.");
          okay := FALSE;
        end if;
      end for;
      for k range succ(n) to 20 do
        if n ! k <> 0 then
          write(" ***** ");
          write(n);
          write(" ! ");
          write(k);
          writeln(" is not correct computed.");
          okay := FALSE;
        end if;
      end for;
    end for;
    for n range 1 to 30 do
      for k range 0 to n do
        if n ! k <> pred(n) ! pred(k) + pred(n) ! k then
          write(" ***** ");
          write(n);
          write(" ! ");
          write(k);
          writeln(" is not correct computed.");
          write(pred(n) ! pred(k));
          write(" ");
          write(pred(n) ! k);
          write(" ");
          write(pred(n) ! pred(k) + pred(n) ! k);
          write(" ");
          writeln(n ! k);
          okay := FALSE;
        end if;
      end for;
      for k range succ(n) to 40 do
        if n ! k <> 0 then
          write(" ***** ");
          write(n);
          write(" ! ");
          write(k);
          writeln(" is not correct computed.");
          okay := FALSE;
        end if;
      end for;
    end for;
    for n range -1 downto -30 do
      for k range 0 to 40 do
        binom_result := 1;
        overflow := FALSE;
        for j range 1 to k do
          if abs(n + 1 - j) > 2147483647 div abs(binom_result) then
            # writeln(" *** overflow: " <& n <& "!" <& k);
            overflow := TRUE;
            j := k;
          else
            binom_result *:= (n + 1 - j);
            binom_result := binom_result div j;
          end if;
        end for;
        if not overflow and n ! k <> binom_result then
          write(" ***** ");
          write(n);
          write(" ! ");
          write(k);
          writeln(" is not correct computed.");
          write(binom_result);
          write(" ");
          writeln(n ! k);
          okay := FALSE;
        end if;
      end for;
    end for;
    if okay then
      writeln("n ! k is correct for n <= 30.");
    end if;
  end func;


const proc: check_power is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if  (-4) **  0 <>       1 or
        (-4) **  1 <>      -4 or
        (-4) **  2 <>      16 or
        (-4) **  3 <>     -64 or
        (-4) **  4 <>     256 or
        (-3) **  0 <>       1 or
        (-3) **  1 <>      -3 or
        (-3) **  2 <>       9 or
        (-3) **  3 <>     -27 or
        (-3) **  4 <>      81 or
        (-2) **  0 <>       1 or
        (-2) **  1 <>      -2 or
        (-2) **  2 <>       4 or
        (-2) **  3 <>      -8 or
        (-2) **  4 <>      16 or
        (-1) **  0 <>       1 or
        (-1) **  1 <>      -1 or
        (-1) **  2 <>       1 or
        (-1) **  3 <>      -1 or
        (-1) **  4 <>       1 or
          0  **  0 <>       1 or
          0  **  1 <>       0 or
          0  **  2 <>       0 or
          0  **  3 <>       0 or
          0  **  4 <>       0 or
          1  **  0 <>       1 or
          1  **  1 <>       1 or
          1  **  2 <>       1 or
          1  **  3 <>       1 or
          1  **  4 <>       1 or
          2  **  0 <>       1 or
          2  **  1 <>       2 or
          2  **  2 <>       4 or
          2  **  3 <>       8 or
          2  **  4 <>      16 or
          3  **  0 <>       1 or
          3  **  1 <>       3 or
          3  **  2 <>       9 or
          3  **  3 <>      27 or
          3  **  4 <>      81 or
          4  **  0 <>       1 or
          4  **  1 <>       4 or
          4  **  2 <>      16 or
          4  **  3 <>      64 or
          4  **  4 <>     256 then
      writeln(" ***** Computing power with constants does not work correct.");
      exit(PROGRAM);
      okay := FALSE;
    end if;
    if  intExpr(-4) **  0 <>       1 or
        intExpr(-4) **  1 <>      -4 or
        intExpr(-4) **  2 <>      16 or
        intExpr(-4) **  3 <>     -64 or
        intExpr(-4) **  4 <>     256 or
        intExpr(-3) **  0 <>       1 or
        intExpr(-3) **  1 <>      -3 or
        intExpr(-3) **  2 <>       9 or
        intExpr(-3) **  3 <>     -27 or
        intExpr(-3) **  4 <>      81 or
        intExpr(-2) **  0 <>       1 or
        intExpr(-2) **  1 <>      -2 or
        intExpr(-2) **  2 <>       4 or
        intExpr(-2) **  3 <>      -8 or
        intExpr(-2) **  4 <>      16 or
        intExpr(-1) **  0 <>       1 or
        intExpr(-1) **  1 <>      -1 or
        intExpr(-1) **  2 <>       1 or
        intExpr(-1) **  3 <>      -1 or
        intExpr(-1) **  4 <>       1 or
        intExpr( 0) **  0 <>       1 or
        intExpr( 0) **  1 <>       0 or
        intExpr( 0) **  2 <>       0 or
        intExpr( 0) **  3 <>       0 or
        intExpr( 0) **  4 <>       0 or
        intExpr( 1) **  0 <>       1 or
        intExpr( 1) **  1 <>       1 or
        intExpr( 1) **  2 <>       1 or
        intExpr( 1) **  3 <>       1 or
        intExpr( 1) **  4 <>       1 or
        intExpr( 2) **  0 <>       1 or
        intExpr( 2) **  1 <>       2 or
        intExpr( 2) **  2 <>       4 or
        intExpr( 2) **  3 <>       8 or
        intExpr( 2) **  4 <>      16 or
        intExpr( 3) **  0 <>       1 or
        intExpr( 3) **  1 <>       3 or
        intExpr( 3) **  2 <>       9 or
        intExpr( 3) **  3 <>      27 or
        intExpr( 3) **  4 <>      81 or
        intExpr( 4) **  0 <>       1 or
        intExpr( 4) **  1 <>       4 or
        intExpr( 4) **  2 <>      16 or
        intExpr( 4) **  3 <>      64 or
        intExpr( 4) **  4 <>     256 then
      writeln(" ***** Computing power with an expression and a constant does not work correct.");
      okay := FALSE;
    end if;
    if  (-4) ** intExpr( 0) <>       1 or
        (-4) ** intExpr( 1) <>      -4 or
        (-4) ** intExpr( 2) <>      16 or
        (-4) ** intExpr( 3) <>     -64 or
        (-4) ** intExpr( 4) <>     256 or
        (-3) ** intExpr( 0) <>       1 or
        (-3) ** intExpr( 1) <>      -3 or
        (-3) ** intExpr( 2) <>       9 or
        (-3) ** intExpr( 3) <>     -27 or
        (-3) ** intExpr( 4) <>      81 or
        (-2) ** intExpr( 0) <>       1 or
        (-2) ** intExpr( 1) <>      -2 or
        (-2) ** intExpr( 2) <>       4 or
        (-2) ** intExpr( 3) <>      -8 or
        (-2) ** intExpr( 4) <>      16 or
        (-1) ** intExpr( 0) <>       1 or
        (-1) ** intExpr( 1) <>      -1 or
        (-1) ** intExpr( 2) <>       1 or
        (-1) ** intExpr( 3) <>      -1 or
        (-1) ** intExpr( 4) <>       1 or
          0  ** intExpr( 0) <>       1 or
          0  ** intExpr( 1) <>       0 or
          0  ** intExpr( 2) <>       0 or
          0  ** intExpr( 3) <>       0 or
          0  ** intExpr( 4) <>       0 or
          1  ** intExpr( 0) <>       1 or
          1  ** intExpr( 1) <>       1 or
          1  ** intExpr( 2) <>       1 or
          1  ** intExpr( 3) <>       1 or
          1  ** intExpr( 4) <>       1 or
          2  ** intExpr( 0) <>       1 or
          2  ** intExpr( 1) <>       2 or
          2  ** intExpr( 2) <>       4 or
          2  ** intExpr( 3) <>       8 or
          2  ** intExpr( 4) <>      16 or
          3  ** intExpr( 0) <>       1 or
          3  ** intExpr( 1) <>       3 or
          3  ** intExpr( 2) <>       9 or
          3  ** intExpr( 3) <>      27 or
          3  ** intExpr( 4) <>      81 or
          4  ** intExpr( 0) <>       1 or
          4  ** intExpr( 1) <>       4 or
          4  ** intExpr( 2) <>      16 or
          4  ** intExpr( 3) <>      64 or
          4  ** intExpr( 4) <>     256 then
      writeln(" ***** Computing power with a constant and an expression does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr(-4) ** intExpr( 0) <>       1 or
        intExpr(-4) ** intExpr( 1) <>      -4 or
        intExpr(-4) ** intExpr( 2) <>      16 or
        intExpr(-4) ** intExpr( 3) <>     -64 or
        intExpr(-4) ** intExpr( 4) <>     256 or
        intExpr(-3) ** intExpr( 0) <>       1 or
        intExpr(-3) ** intExpr( 1) <>      -3 or
        intExpr(-3) ** intExpr( 2) <>       9 or
        intExpr(-3) ** intExpr( 3) <>     -27 or
        intExpr(-3) ** intExpr( 4) <>      81 or
        intExpr(-2) ** intExpr( 0) <>       1 or
        intExpr(-2) ** intExpr( 1) <>      -2 or
        intExpr(-2) ** intExpr( 2) <>       4 or
        intExpr(-2) ** intExpr( 3) <>      -8 or
        intExpr(-2) ** intExpr( 4) <>      16 or
        intExpr(-1) ** intExpr( 0) <>       1 or
        intExpr(-1) ** intExpr( 1) <>      -1 or
        intExpr(-1) ** intExpr( 2) <>       1 or
        intExpr(-1) ** intExpr( 3) <>      -1 or
        intExpr(-1) ** intExpr( 4) <>       1 or
        intExpr( 0) ** intExpr( 0) <>       1 or
        intExpr( 0) ** intExpr( 1) <>       0 or
        intExpr( 0) ** intExpr( 2) <>       0 or
        intExpr( 0) ** intExpr( 3) <>       0 or
        intExpr( 0) ** intExpr( 4) <>       0 or
        intExpr( 1) ** intExpr( 0) <>       1 or
        intExpr( 1) ** intExpr( 1) <>       1 or
        intExpr( 1) ** intExpr( 2) <>       1 or
        intExpr( 1) ** intExpr( 3) <>       1 or
        intExpr( 1) ** intExpr( 4) <>       1 or
        intExpr( 2) ** intExpr( 0) <>       1 or
        intExpr( 2) ** intExpr( 1) <>       2 or
        intExpr( 2) ** intExpr( 2) <>       4 or
        intExpr( 2) ** intExpr( 3) <>       8 or
        intExpr( 2) ** intExpr( 4) <>      16 or
        intExpr( 3) ** intExpr( 0) <>       1 or
        intExpr( 3) ** intExpr( 1) <>       3 or
        intExpr( 3) ** intExpr( 2) <>       9 or
        intExpr( 3) ** intExpr( 3) <>      27 or
        intExpr( 3) ** intExpr( 4) <>      81 or
        intExpr( 4) ** intExpr( 0) <>       1 or
        intExpr( 4) ** intExpr( 1) <>       4 or
        intExpr( 4) ** intExpr( 2) <>      16 or
        intExpr( 4) ** intExpr( 3) <>      64 or
        intExpr( 4) ** intExpr( 4) <>     256 then
      writeln(" ***** Computing power with two expressions does not work correct.");
      okay := FALSE;
    end if;
    if okay then
      writeln("i ** j is correct for -4 <= i <= 4 and 0 <= j <= 4.");
    end if;
  end func;


const proc: check_powers_of_2 is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if  2 **  0 <>          1 or
        2 **  1 <>          2 or
        2 **  2 <>          4 or
        2 **  3 <>          8 or
        2 **  4 <>         16 or
        2 **  5 <>         32 or
        2 **  6 <>         64 or
        2 **  7 <>        128 or
        2 **  8 <>        256 or
        2 **  9 <>        512 or
        2 ** 10 <>       1024 or
        2 ** 11 <>       2048 or
        2 ** 12 <>       4096 or
        2 ** 13 <>       8192 or
        2 ** 14 <>      16384 or
        2 ** 15 <>      32768 or
        2 ** 16 <>      65536 or
        2 ** 17 <>     131072 or
        2 ** 18 <>     262144 or
        2 ** 19 <>     524288 or
        2 ** 20 <>    1048576 or
        2 ** 21 <>    2097152 or
        2 ** 22 <>    4194304 or
        2 ** 23 <>    8388608 or
        2 ** 24 <>   16777216 or
        2 ** 25 <>   33554432 or
        2 ** 26 <>   67108864 or
        2 ** 27 <>  134217728 or
        2 ** 28 <>  268435456 or
        2 ** 29 <>  536870912 or
        2 ** 30 <> 1073741824 then
      writeln(" ***** Computing powers of two with constants does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr(2) **  0 <>          1 or
        intExpr(2) **  1 <>          2 or
        intExpr(2) **  2 <>          4 or
        intExpr(2) **  3 <>          8 or
        intExpr(2) **  4 <>         16 or
        intExpr(2) **  5 <>         32 or
        intExpr(2) **  6 <>         64 or
        intExpr(2) **  7 <>        128 or
        intExpr(2) **  8 <>        256 or
        intExpr(2) **  9 <>        512 or
        intExpr(2) ** 10 <>       1024 or
        intExpr(2) ** 11 <>       2048 or
        intExpr(2) ** 12 <>       4096 or
        intExpr(2) ** 13 <>       8192 or
        intExpr(2) ** 14 <>      16384 or
        intExpr(2) ** 15 <>      32768 or
        intExpr(2) ** 16 <>      65536 or
        intExpr(2) ** 17 <>     131072 or
        intExpr(2) ** 18 <>     262144 or
        intExpr(2) ** 19 <>     524288 or
        intExpr(2) ** 20 <>    1048576 or
        intExpr(2) ** 21 <>    2097152 or
        intExpr(2) ** 22 <>    4194304 or
        intExpr(2) ** 23 <>    8388608 or
        intExpr(2) ** 24 <>   16777216 or
        intExpr(2) ** 25 <>   33554432 or
        intExpr(2) ** 26 <>   67108864 or
        intExpr(2) ** 27 <>  134217728 or
        intExpr(2) ** 28 <>  268435456 or
        intExpr(2) ** 29 <>  536870912 or
        intExpr(2) ** 30 <> 1073741824 then
      writeln(" ***** Computing powers of two with an expression and a constant does not work correct.");
      okay := FALSE;
    end if;
    if  2 ** intExpr( 0) <>          1 or
        2 ** intExpr( 1) <>          2 or
        2 ** intExpr( 2) <>          4 or
        2 ** intExpr( 3) <>          8 or
        2 ** intExpr( 4) <>         16 or
        2 ** intExpr( 5) <>         32 or
        2 ** intExpr( 6) <>         64 or
        2 ** intExpr( 7) <>        128 or
        2 ** intExpr( 8) <>        256 or
        2 ** intExpr( 9) <>        512 or
        2 ** intExpr(10) <>       1024 or
        2 ** intExpr(11) <>       2048 or
        2 ** intExpr(12) <>       4096 or
        2 ** intExpr(13) <>       8192 or
        2 ** intExpr(14) <>      16384 or
        2 ** intExpr(15) <>      32768 or
        2 ** intExpr(16) <>      65536 or
        2 ** intExpr(17) <>     131072 or
        2 ** intExpr(18) <>     262144 or
        2 ** intExpr(19) <>     524288 or
        2 ** intExpr(20) <>    1048576 or
        2 ** intExpr(21) <>    2097152 or
        2 ** intExpr(22) <>    4194304 or
        2 ** intExpr(23) <>    8388608 or
        2 ** intExpr(24) <>   16777216 or
        2 ** intExpr(25) <>   33554432 or
        2 ** intExpr(26) <>   67108864 or
        2 ** intExpr(27) <>  134217728 or
        2 ** intExpr(28) <>  268435456 or
        2 ** intExpr(29) <>  536870912 or
        2 ** intExpr(30) <> 1073741824 then
      writeln(" ***** Computing powers of two with a constant and an expression does not work correct.");
      okay := FALSE;
    end if;
    if  intExpr(2) ** intExpr( 0) <>          1 or
        intExpr(2) ** intExpr( 1) <>          2 or
        intExpr(2) ** intExpr( 2) <>          4 or
        intExpr(2) ** intExpr( 3) <>          8 or
        intExpr(2) ** intExpr( 4) <>         16 or
        intExpr(2) ** intExpr( 5) <>         32 or
        intExpr(2) ** intExpr( 6) <>         64 or
        intExpr(2) ** intExpr( 7) <>        128 or
        intExpr(2) ** intExpr( 8) <>        256 or
        intExpr(2) ** intExpr( 9) <>        512 or
        intExpr(2) ** intExpr(10) <>       1024 or
        intExpr(2) ** intExpr(11) <>       2048 or
        intExpr(2) ** intExpr(12) <>       4096 or
        intExpr(2) ** intExpr(13) <>       8192 or
        intExpr(2) ** intExpr(14) <>      16384 or
        intExpr(2) ** intExpr(15) <>      32768 or
        intExpr(2) ** intExpr(16) <>      65536 or
        intExpr(2) ** intExpr(17) <>     131072 or
        intExpr(2) ** intExpr(18) <>     262144 or
        intExpr(2) ** intExpr(19) <>     524288 or
        intExpr(2) ** intExpr(20) <>    1048576 or
        intExpr(2) ** intExpr(21) <>    2097152 or
        intExpr(2) ** intExpr(22) <>    4194304 or
        intExpr(2) ** intExpr(23) <>    8388608 or
        intExpr(2) ** intExpr(24) <>   16777216 or
        intExpr(2) ** intExpr(25) <>   33554432 or
        intExpr(2) ** intExpr(26) <>   67108864 or
        intExpr(2) ** intExpr(27) <>  134217728 or
        intExpr(2) ** intExpr(28) <>  268435456 or
        intExpr(2) ** intExpr(29) <>  536870912 or
        intExpr(2) ** intExpr(30) <> 1073741824 then
      writeln(" ***** Computing powers of two with two expressions does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Computing powers of two works correct.");
    else
      writeln(" ***** Computing powers of two does not work correct.");
    end if;
  end func;


const proc: check_sqrt is func
  local
    var boolean: okay is TRUE;
    var integer: number is 0;
    var integer: sqrt_num is 0;
    var integer: count is 0;
  begin
    okay := TRUE;
    for number range 0 to 1000 do
      sqrt_num := sqrt(number);
      if sqrt_num * sqrt_num > number or
          (sqrt_num + 1) * (sqrt_num + 1) <= number then
        write("sqrt(");
        write(number);
        write(") = ");
        write(sqrt_num);
        writeln(" is NOT OKAY");
        okay := FALSE;
      end if;
    end for;
    if okay then
      writeln("Integer sqrt is correct for values between 0 and 1000.");
    end if;
    okay := TRUE;
    for count range 1 to 10000 do
      number := rand(0, 2147395599);
      sqrt_num := sqrt(number);
      if sqrt_num * sqrt_num > number or
          (sqrt_num + 1) * (sqrt_num + 1) <= number then
        write("sqrt(");
        write(number);
        write(") = ");
        write(sqrt_num);
        writeln(" is NOT OKAY");
        okay := FALSE;
      end if;
    end for;
    for count range 1 to 1000 do
      number := rand(2147395600, 2147483647);
      sqrt_num := sqrt(number);
      if sqrt_num <> 46340 then
        write("sqrt(");
        write(number);
        write(") = ");
        write(sqrt_num);
        writeln(" is NOT OKAY");
        okay := FALSE;
      end if;
    end for;
    if okay then
      writeln("Integer sqrt is correct for 11000 random values.");
    end if;
  end func;


const proc: check_log2 is func
  local
    var boolean: okay is TRUE;
    var integer: number is 0;
    var integer: power_of_two is 0;
    var integer: counter is 0;
    var integer: log2_arg is 0;
    var integer: log2_num is 0;
  begin
    okay := TRUE;
    if log2(0) <> -1 then
      write("log2(0) = ");
      write(log2(0));
      writeln(" instead of -1");
      okay := FALSE;
    end if;
    power_of_two := 1;
    for number range 0 to 30 do
      for counter range 1 to 200 do
        log2_arg := power_of_two + rand(0, power_of_two div 2);
        log2_num := log2(log2_arg);
        if log2_num <> number then
          write("log2(");
          write(log2_arg);
          write(") = ");
          write(log2_num);
          write(" instead of ");
          writeln(number);
          okay := FALSE;
        end if;
      end for;
      if number < 30 then
        power_of_two := power_of_two * 2;
      end if;
    end for;
    if okay then
      writeln("log2 is correct for results between 0 and 30.");
    end if;
  end func;


const func boolean: chkLShift (in integer: number, in integer: lshift,
    in integer: checkValue) is func
  result
    var boolean: wrong is FALSE;
  local
    var integer: intVar is 0;
  begin
    wrong := number << lshift <> checkValue;
    if not wrong then
      intVar := number;
      intVar <<:= lshift;
      wrong := intVar <> checkValue;
    end if;
  end func;


const func boolean: chkLShift (in integer: number, in integer: lshift) is func
  result
    var boolean: wrong is FALSE;
  begin
    wrong := chkLShift(number, lshift, number * 2 ** lshift);
  end func;


const proc: chkLShift (in integer: lshift, inout boolean: okay) is func
  begin
    if  chkLShift( 2147483647, lshift) or
        chkLShift( 1073741824, lshift) or
        chkLShift( 1073741823, lshift) or
        chkLShift( 1000000000, lshift) or
        chkLShift(  100000000, lshift) or
        chkLShift(   10000000, lshift) or
        chkLShift(    1000000, lshift) or
        chkLShift(     100000, lshift) or
        chkLShift(      65536, lshift) or
        chkLShift(      65535, lshift) or
        chkLShift(      32768, lshift) or
        chkLShift(      32767, lshift) or
        chkLShift(      10000, lshift) or
        chkLShift(       1000, lshift) or
        chkLShift(        256, lshift) or
        chkLShift(        255, lshift) or
        chkLShift(        128, lshift) or
        chkLShift(        127, lshift) or
        chkLShift(        100, lshift) or
        chkLShift(         10, lshift) or
        chkLShift(          1, lshift) or
        chkLShift(          0, lshift) or
        chkLShift(         -1, lshift) or
        chkLShift(        -10, lshift) or
        chkLShift(       -100, lshift) or
        chkLShift(       -128, lshift) or
        chkLShift(       -129, lshift) or
        chkLShift(       -256, lshift) or
        chkLShift(       -257, lshift) or
        chkLShift(      -1000, lshift) or
        chkLShift(     -10000, lshift) or
        chkLShift(     -32768, lshift) or
        chkLShift(     -32769, lshift) or
        chkLShift(     -65536, lshift) or
        chkLShift(     -65537, lshift) or
        chkLShift(    -100000, lshift) or
        chkLShift(   -1000000, lshift) or
        chkLShift(  -10000000, lshift) or
        chkLShift( -100000000, lshift) or
        chkLShift(-1000000000, lshift) or
        chkLShift(-1073741824, lshift) or
        chkLShift(-1073741825, lshift) or
        chkLShift(-2147483647, lshift) or
        chkLShift(  INT32_MIN, lshift) then
      writeln("The integer << or <<:= with " <& lshift <& " does not work correct.");
      okay := FALSE;
    end if;
  end func;


const proc: check_lShift is func
  local
    var boolean: okay is TRUE;
    var integer: lshift is 0;
  begin
    for lshift range 0 to 31 do
      chkLShift(lshift, okay);
    end for;

    if okay then
      writeln("The integer << and <<:= works correct.");
    else
      writeln(" ***** The integer << or <<:= does not work correct.");
      writeln;
    end if;
  end func;


const func boolean: chkRShift (in integer: number, in integer: rshift,
    in integer: check) is func
  result
    var boolean: wrong is FALSE;
  local
    var integer: intVar is 0;
  begin
    wrong := number >> rshift <> check;
    if not wrong then
      intVar := number;
      intVar >>:= rshift;
      wrong := intVar <> check;
    end if;
  end func;


const func boolean: chkRShift (in integer: number, in integer: rshift) is func
  result
    var boolean: wrong is FALSE;
  begin
    if rshift < 31 then
      wrong := chkRShift(number, rshift, number mdiv 2 ** rshift);
    elsif number < 0 then
      wrong := chkRShift(number, rshift, -1);
    else
      wrong := chkRShift(number, rshift, 0);
    end if;
  end func;


const proc: chkRShift (in integer: rshift, inout boolean: okay) is func
  begin
    if  chkRShift( 2147483647, rshift) or
        chkRShift( 1073741824, rshift) or
        chkRShift( 1073741823, rshift) or
        chkRShift( 1000000000, rshift) or
        chkRShift(  100000000, rshift) or
        chkRShift(   10000000, rshift) or
        chkRShift(    1000000, rshift) or
        chkRShift(     100000, rshift) or
        chkRShift(      65536, rshift) or
        chkRShift(      65535, rshift) or
        chkRShift(      32768, rshift) or
        chkRShift(      32767, rshift) or
        chkRShift(      10000, rshift) or
        chkRShift(       1000, rshift) or
        chkRShift(        256, rshift) or
        chkRShift(        255, rshift) or
        chkRShift(        128, rshift) or
        chkRShift(        127, rshift) or
        chkRShift(        100, rshift) or
        chkRShift(         10, rshift) or
        chkRShift(          1, rshift) or
        chkRShift(          0, rshift) or
        chkRShift(         -1, rshift) or
        chkRShift(        -10, rshift) or
        chkRShift(       -100, rshift) or
        chkRShift(       -128, rshift) or
        chkRShift(       -129, rshift) or
        chkRShift(       -256, rshift) or
        chkRShift(       -257, rshift) or
        chkRShift(      -1000, rshift) or
        chkRShift(     -10000, rshift) or
        chkRShift(     -32768, rshift) or
        chkRShift(     -32769, rshift) or
        chkRShift(     -65536, rshift) or
        chkRShift(     -65537, rshift) or
        chkRShift(    -100000, rshift) or
        chkRShift(   -1000000, rshift) or
        chkRShift(  -10000000, rshift) or
        chkRShift( -100000000, rshift) or
        chkRShift(-1000000000, rshift) or
        chkRShift(-1073741824, rshift) or
        chkRShift(-1073741825, rshift) or
        chkRShift(-2147483647, rshift) or
        chkRShift(  INT32_MIN, rshift) then
      writeln("The integer >> or >>:= with " <& rshift <& " does not work correct.");
      okay := FALSE;
    end if;
  end func;


const proc: check_rShift is func
  local
    var boolean: okay is TRUE;
    var integer: rshift is 0;
  begin
    for rshift range 0 to 31 do
      chkRShift(rshift, okay);
    end for;

    if okay then
      writeln("The integer >> and >>:= works correct.");
    else
      writeln(" ***** The integer >> or >>:= does not work correct.");
      writeln;
    end if;
  end func;


const proc: check_str is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if  str(  INT32_MIN) <> "-2147483648" or
        str(-2147483647) <> "-2147483647" or
        str(-1073741825) <> "-1073741825" or
        str(-1073741824) <> "-1073741824" or
        str(-1000000000) <> "-1000000000" or
        str( -100000000) <>  "-100000000" or
        str(  -10000000) <>   "-10000000" or
        str(   -1000000) <>    "-1000000" or
        str(    -100000) <>     "-100000" or
        str(     -65537) <>      "-65537" or
        str(     -65536) <>      "-65536" or
        str(     -32769) <>      "-32769" or
        str(     -32768) <>      "-32768" or
        str(     -10001) <>      "-10001" or
        str(     -10000) <>      "-10000" or
        str(      -9999) <>       "-9999" or
        str(      -2000) <>       "-2000" or
        str(      -1001) <>       "-1001" or
        str(      -1000) <>       "-1000" or
        str(       -999) <>        "-999" or
        str(       -200) <>        "-200" or
        str(       -101) <>        "-101" or
        str(       -100) <>        "-100" or
        str(        -99) <>         "-99" or
        str(        -20) <>         "-20" or
        str(        -11) <>         "-11" or
        str(        -10) <>         "-10" or
        str(         -9) <>          "-9" or
        str(         -2) <>          "-2" or
        str(         -1) <>          "-1" or
        str(          0) <>           "0" or
        str(          1) <>           "1" or
        str(          2) <>           "2" or
        str(          9) <>           "9" or
        str(         10) <>          "10" or
        str(         11) <>          "11" or
        str(         20) <>          "20" or
        str(         99) <>          "99" or
        str(        100) <>         "100" or
        str(        101) <>         "101" or
        str(        200) <>         "200" or
        str(        999) <>         "999" or
        str(       1000) <>        "1000" or
        str(       1001) <>        "1001" or
        str(       2000) <>        "2000" or
        str(       9999) <>        "9999" or
        str(      10000) <>       "10000" or
        str(      10001) <>       "10001" or
        str(      32768) <>       "32768" or
        str(      32769) <>       "32769" or
        str(      65536) <>       "65536" or
        str(      65537) <>       "65537" or
        str(     100000) <>      "100000" or
        str(    1000000) <>     "1000000" or
        str(   10000000) <>    "10000000" or
        str(  100000000) <>   "100000000" or
        str( 1000000000) <>  "1000000000" or
        str( 1073741823) <>  "1073741823" or
        str( 1073741824) <>  "1073741824" or
        str( 2147483647) <>  "2147483647" then
      writeln(" ***** Integer str with literals does not work correct.");
      okay := FALSE;
    end if;
    if  str(intExpr(  INT32_MIN)) <> "-2147483648" or
        str(intExpr(-2147483647)) <> "-2147483647" or
        str(intExpr(-1073741825)) <> "-1073741825" or
        str(intExpr(-1073741824)) <> "-1073741824" or
        str(intExpr(-1000000000)) <> "-1000000000" or
        str(intExpr( -100000000)) <>  "-100000000" or
        str(intExpr(  -10000000)) <>   "-10000000" or
        str(intExpr(   -1000000)) <>    "-1000000" or
        str(intExpr(    -100000)) <>     "-100000" or
        str(intExpr(     -65537)) <>      "-65537" or
        str(intExpr(     -65536)) <>      "-65536" or
        str(intExpr(     -32769)) <>      "-32769" or
        str(intExpr(     -32768)) <>      "-32768" or
        str(intExpr(     -10001)) <>      "-10001" or
        str(intExpr(     -10000)) <>      "-10000" or
        str(intExpr(      -9999)) <>       "-9999" or
        str(intExpr(      -2000)) <>       "-2000" or
        str(intExpr(      -1001)) <>       "-1001" or
        str(intExpr(      -1000)) <>       "-1000" or
        str(intExpr(       -999)) <>        "-999" or
        str(intExpr(       -200)) <>        "-200" or
        str(intExpr(       -101)) <>        "-101" or
        str(intExpr(       -100)) <>        "-100" or
        str(intExpr(        -99)) <>         "-99" or
        str(intExpr(        -20)) <>         "-20" or
        str(intExpr(        -11)) <>         "-11" or
        str(intExpr(        -10)) <>         "-10" or
        str(intExpr(         -9)) <>          "-9" or
        str(intExpr(         -2)) <>          "-2" or
        str(intExpr(         -1)) <>          "-1" or
        str(intExpr(          0)) <>           "0" or
        str(intExpr(          1)) <>           "1" or
        str(intExpr(          2)) <>           "2" or
        str(intExpr(          9)) <>           "9" or
        str(intExpr(         10)) <>          "10" or
        str(intExpr(         11)) <>          "11" or
        str(intExpr(         20)) <>          "20" or
        str(intExpr(         99)) <>          "99" or
        str(intExpr(        100)) <>         "100" or
        str(intExpr(        101)) <>         "101" or
        str(intExpr(        200)) <>         "200" or
        str(intExpr(        999)) <>         "999" or
        str(intExpr(       1000)) <>        "1000" or
        str(intExpr(       1001)) <>        "1001" or
        str(intExpr(       2000)) <>        "2000" or
        str(intExpr(       9999)) <>        "9999" or
        str(intExpr(      10000)) <>       "10000" or
        str(intExpr(      10001)) <>       "10001" or
        str(intExpr(      32768)) <>       "32768" or
        str(intExpr(      32769)) <>       "32769" or
        str(intExpr(      65536)) <>       "65536" or
        str(intExpr(      65537)) <>       "65537" or
        str(intExpr(     100000)) <>      "100000" or
        str(intExpr(    1000000)) <>     "1000000" or
        str(intExpr(   10000000)) <>    "10000000" or
        str(intExpr(  100000000)) <>   "100000000" or
        str(intExpr( 1000000000)) <>  "1000000000" or
        str(intExpr( 1073741823)) <>  "1073741823" or
        str(intExpr( 1073741824)) <>  "1073741824" or
        str(intExpr( 2147483647)) <>  "2147483647" then
      writeln(" ***** Integer str with expressions does not work correct.");
      okay := FALSE;
    end if;
    if  str(1000000,  2) <> "11110100001001000000" or
        str(1000000,  3) <> "1212210202001" or
        str(1000000,  4) <> "3310021000" or
        str(1000000,  5) <> "224000000" or
        str(1000000,  6) <> "33233344" or
        str(1000000,  7) <> "11333311" or
        str(1000000,  8) <> "3641100" or
        str(1000000,  9) <> "1783661" or
        str(1000000, 10) <> "1000000" or
        str(1000000, 11) <> "623351" or
        str(1000000, 12) <> "402854" or
        str(1000000, 13) <> "290221" or
        str(1000000, 14) <> "1C0608" or
        str(1000000, 15) <> "14B46A" or
        str(1000000, 16) <> "F4240" or
        str(1000000, 17) <> "BG939" or
        str(1000000, 18) <> "9987A" or
        str(1000000, 19) <> "7CF1B" or
        str(1000000, 20) <> "65000" or
        str(1000000, 21) <> "52KC1" or
        str(1000000, 22) <> "45K2C" or
        str(1000000, 23) <> "3D486" or
        str(1000000, 24) <> "3082G" or
        str(1000000, 25) <> "2E000" or
        str(1000000, 26) <> "24N7E" or
        str(1000000, 27) <> "1NLK1" or
        str(1000000, 28) <> "1HFE8" or
        str(1000000, 29) <> "1C01M" or
        str(1000000, 30) <> "1713A" or
        str(1000000, 31) <> "12HI2" or
        str(1000000, 32) <> "UGI0" or
        str(1000000, 33) <> "RR91" or
        str(1000000, 34) <> "PF1Q" or
        str(1000000, 35) <> "NBBF" or
        str(1000000, 36) <> "LFLS" then
      writeln(" ***** Integer str with base does not work correct.");
      okay := FALSE;
    end if;
    if  str(intExpr(1000000),  2) <> "11110100001001000000" or
        str(intExpr(1000000),  3) <> "1212210202001" or
        str(intExpr(1000000),  4) <> "3310021000" or
        str(intExpr(1000000),  5) <> "224000000" or
        str(intExpr(1000000),  6) <> "33233344" or
        str(intExpr(1000000),  7) <> "11333311" or
        str(intExpr(1000000),  8) <> "3641100" or
        str(intExpr(1000000),  9) <> "1783661" or
        str(intExpr(1000000), 10) <> "1000000" or
        str(intExpr(1000000), 11) <> "623351" or
        str(intExpr(1000000), 12) <> "402854" or
        str(intExpr(1000000), 13) <> "290221" or
        str(intExpr(1000000), 14) <> "1C0608" or
        str(intExpr(1000000), 15) <> "14B46A" or
        str(intExpr(1000000), 16) <> "F4240" or
        str(intExpr(1000000), 17) <> "BG939" or
        str(intExpr(1000000), 18) <> "9987A" or
        str(intExpr(1000000), 19) <> "7CF1B" or
        str(intExpr(1000000), 20) <> "65000" or
        str(intExpr(1000000), 21) <> "52KC1" or
        str(intExpr(1000000), 22) <> "45K2C" or
        str(intExpr(1000000), 23) <> "3D486" or
        str(intExpr(1000000), 24) <> "3082G" or
        str(intExpr(1000000), 25) <> "2E000" or
        str(intExpr(1000000), 26) <> "24N7E" or
        str(intExpr(1000000), 27) <> "1NLK1" or
        str(intExpr(1000000), 28) <> "1HFE8" or
        str(intExpr(1000000), 29) <> "1C01M" or
        str(intExpr(1000000), 30) <> "1713A" or
        str(intExpr(1000000), 31) <> "12HI2" or
        str(intExpr(1000000), 32) <> "UGI0" or
        str(intExpr(1000000), 33) <> "RR91" or
        str(intExpr(1000000), 34) <> "PF1Q" or
        str(intExpr(1000000), 35) <> "NBBF" or
        str(intExpr(1000000), 36) <> "LFLS" then
      writeln(" ***** Integer str with base does not work correct.");
      okay := FALSE;
    end if;
    if  str(1000000, intExpr( 2)) <> "11110100001001000000" or
        str(1000000, intExpr( 3)) <> "1212210202001" or
        str(1000000, intExpr( 4)) <> "3310021000" or
        str(1000000, intExpr( 5)) <> "224000000" or
        str(1000000, intExpr( 6)) <> "33233344" or
        str(1000000, intExpr( 7)) <> "11333311" or
        str(1000000, intExpr( 8)) <> "3641100" or
        str(1000000, intExpr( 9)) <> "1783661" or
        str(1000000, intExpr(10)) <> "1000000" or
        str(1000000, intExpr(11)) <> "623351" or
        str(1000000, intExpr(12)) <> "402854" or
        str(1000000, intExpr(13)) <> "290221" or
        str(1000000, intExpr(14)) <> "1C0608" or
        str(1000000, intExpr(15)) <> "14B46A" or
        str(1000000, intExpr(16)) <> "F4240" or
        str(1000000, intExpr(17)) <> "BG939" or
        str(1000000, intExpr(18)) <> "9987A" or
        str(1000000, intExpr(19)) <> "7CF1B" or
        str(1000000, intExpr(20)) <> "65000" or
        str(1000000, intExpr(21)) <> "52KC1" or
        str(1000000, intExpr(22)) <> "45K2C" or
        str(1000000, intExpr(23)) <> "3D486" or
        str(1000000, intExpr(24)) <> "3082G" or
        str(1000000, intExpr(25)) <> "2E000" or
        str(1000000, intExpr(26)) <> "24N7E" or
        str(1000000, intExpr(27)) <> "1NLK1" or
        str(1000000, intExpr(28)) <> "1HFE8" or
        str(1000000, intExpr(29)) <> "1C01M" or
        str(1000000, intExpr(30)) <> "1713A" or
        str(1000000, intExpr(31)) <> "12HI2" or
        str(1000000, intExpr(32)) <> "UGI0" or
        str(1000000, intExpr(33)) <> "RR91" or
        str(1000000, intExpr(34)) <> "PF1Q" or
        str(1000000, intExpr(35)) <> "NBBF" or
        str(1000000, intExpr(36)) <> "LFLS" then
      writeln(" ***** Integer str with base does not work correct.");
      okay := FALSE;
    end if;
    if  str(intExpr(1000000), intExpr( 2)) <> "11110100001001000000" or
        str(intExpr(1000000), intExpr( 3)) <> "1212210202001" or
        str(intExpr(1000000), intExpr( 4)) <> "3310021000" or
        str(intExpr(1000000), intExpr( 5)) <> "224000000" or
        str(intExpr(1000000), intExpr( 6)) <> "33233344" or
        str(intExpr(1000000), intExpr( 7)) <> "11333311" or
        str(intExpr(1000000), intExpr( 8)) <> "3641100" or
        str(intExpr(1000000), intExpr( 9)) <> "1783661" or
        str(intExpr(1000000), intExpr(10)) <> "1000000" or
        str(intExpr(1000000), intExpr(11)) <> "623351" or
        str(intExpr(1000000), intExpr(12)) <> "402854" or
        str(intExpr(1000000), intExpr(13)) <> "290221" or
        str(intExpr(1000000), intExpr(14)) <> "1C0608" or
        str(intExpr(1000000), intExpr(15)) <> "14B46A" or
        str(intExpr(1000000), intExpr(16)) <> "F4240" or
        str(intExpr(1000000), intExpr(17)) <> "BG939" or
        str(intExpr(1000000), intExpr(18)) <> "9987A" or
        str(intExpr(1000000), intExpr(19)) <> "7CF1B" or
        str(intExpr(1000000), intExpr(20)) <> "65000" or
        str(intExpr(1000000), intExpr(21)) <> "52KC1" or
        str(intExpr(1000000), intExpr(22)) <> "45K2C" or
        str(intExpr(1000000), intExpr(23)) <> "3D486" or
        str(intExpr(1000000), intExpr(24)) <> "3082G" or
        str(intExpr(1000000), intExpr(25)) <> "2E000" or
        str(intExpr(1000000), intExpr(26)) <> "24N7E" or
        str(intExpr(1000000), intExpr(27)) <> "1NLK1" or
        str(intExpr(1000000), intExpr(28)) <> "1HFE8" or
        str(intExpr(1000000), intExpr(29)) <> "1C01M" or
        str(intExpr(1000000), intExpr(30)) <> "1713A" or
        str(intExpr(1000000), intExpr(31)) <> "12HI2" or
        str(intExpr(1000000), intExpr(32)) <> "UGI0" or
        str(intExpr(1000000), intExpr(33)) <> "RR91" or
        str(intExpr(1000000), intExpr(34)) <> "PF1Q" or
        str(intExpr(1000000), intExpr(35)) <> "NBBF" or
        str(intExpr(1000000), intExpr(36)) <> "LFLS" then
      writeln(" ***** Integer str with base does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Integer str does work correct.");
    end if;
  end func;


const proc: check_parse is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if  # integer parse "-2147483648" <>   INT32_MIN or
        integer parse "-2147483647" <> -2147483647 or
        integer parse "-1073741825" <> -1073741825 or
        integer parse "-1073741824" <> -1073741824 or
        integer parse "-1000000000" <> -1000000000 or
        integer parse  "-100000000" <>  -100000000 or
        integer parse   "-10000000" <>   -10000000 or
        integer parse    "-1000000" <>    -1000000 or
        integer parse     "-100000" <>     -100000 or
        integer parse      "-65537" <>      -65537 or
        integer parse      "-65536" <>      -65536 or
        integer parse      "-32769" <>      -32769 or
        integer parse      "-32768" <>      -32768 or
        integer parse      "-10001" <>      -10001 or
        integer parse      "-10000" <>      -10000 or
        integer parse       "-9999" <>       -9999 or
        integer parse       "-2000" <>       -2000 or
        integer parse       "-1001" <>       -1001 or
        integer parse       "-1000" <>       -1000 or
        integer parse        "-999" <>        -999 or
        integer parse        "-200" <>        -200 or
        integer parse        "-101" <>        -101 or
        integer parse        "-100" <>        -100 or
        integer parse         "-99" <>         -99 or
        integer parse         "-20" <>         -20 or
        integer parse         "-11" <>         -11 or
        integer parse         "-10" <>         -10 or
        integer parse          "-9" <>          -9 or
        integer parse          "-2" <>          -2 or
        integer parse          "-1" <>          -1 or
        integer parse           "0" <>           0 or
        integer parse           "1" <>           1 or
        integer parse           "2" <>           2 or
        integer parse           "9" <>           9 or
        integer parse          "10" <>          10 or
        integer parse          "11" <>          11 or
        integer parse          "20" <>          20 or
        integer parse          "99" <>          99 or
        integer parse         "100" <>         100 or
        integer parse         "101" <>         101 or
        integer parse         "200" <>         200 or
        integer parse         "999" <>         999 or
        integer parse        "1000" <>        1000 or
        integer parse        "1001" <>        1001 or
        integer parse        "2000" <>        2000 or
        integer parse        "9999" <>        9999 or
        integer parse       "10000" <>       10000 or
        integer parse       "10001" <>       10001 or
        integer parse       "32768" <>       32768 or
        integer parse       "32769" <>       32769 or
        integer parse       "65536" <>       65536 or
        integer parse       "65537" <>       65537 or
        integer parse      "100000" <>      100000 or
        integer parse     "1000000" <>     1000000 or
        integer parse    "10000000" <>    10000000 or
        integer parse   "100000000" <>   100000000 or
        integer parse  "1000000000" <>  1000000000 or
        integer parse  "1073741823" <>  1073741823 or
        integer parse  "1073741824" <>  1073741824 or
        integer parse  "2147483647" <>  2147483647 then
      writeln(" ***** Integer parse with literals does not work correct.");
      okay := FALSE;
    end if;
    if  # integer parse striExpr("-2147483648") <>   INT32_MIN or
        integer parse striExpr("-2147483647") <> -2147483647 or
        integer parse striExpr("-1073741825") <> -1073741825 or
        integer parse striExpr("-1073741824") <> -1073741824 or
        integer parse striExpr("-1000000000") <> -1000000000 or
        integer parse striExpr( "-100000000") <>  -100000000 or
        integer parse striExpr(  "-10000000") <>   -10000000 or
        integer parse striExpr(   "-1000000") <>    -1000000 or
        integer parse striExpr(    "-100000") <>     -100000 or
        integer parse striExpr(     "-65537") <>      -65537 or
        integer parse striExpr(     "-65536") <>      -65536 or
        integer parse striExpr(     "-32769") <>      -32769 or
        integer parse striExpr(     "-32768") <>      -32768 or
        integer parse striExpr(     "-10001") <>      -10001 or
        integer parse striExpr(     "-10000") <>      -10000 or
        integer parse striExpr(      "-9999") <>       -9999 or
        integer parse striExpr(      "-2000") <>       -2000 or
        integer parse striExpr(      "-1001") <>       -1001 or
        integer parse striExpr(      "-1000") <>       -1000 or
        integer parse striExpr(       "-999") <>        -999 or
        integer parse striExpr(       "-200") <>        -200 or
        integer parse striExpr(       "-101") <>        -101 or
        integer parse striExpr(       "-100") <>        -100 or
        integer parse striExpr(        "-99") <>         -99 or
        integer parse striExpr(        "-20") <>         -20 or
        integer parse striExpr(        "-11") <>         -11 or
        integer parse striExpr(        "-10") <>         -10 or
        integer parse striExpr(         "-9") <>          -9 or
        integer parse striExpr(         "-2") <>          -2 or
        integer parse striExpr(         "-1") <>          -1 or
        integer parse striExpr(          "0") <>           0 or
        integer parse striExpr(          "1") <>           1 or
        integer parse striExpr(          "2") <>           2 or
        integer parse striExpr(          "9") <>           9 or
        integer parse striExpr(         "10") <>          10 or
        integer parse striExpr(         "11") <>          11 or
        integer parse striExpr(         "20") <>          20 or
        integer parse striExpr(         "99") <>          99 or
        integer parse striExpr(        "100") <>         100 or
        integer parse striExpr(        "101") <>         101 or
        integer parse striExpr(        "200") <>         200 or
        integer parse striExpr(        "999") <>         999 or
        integer parse striExpr(       "1000") <>        1000 or
        integer parse striExpr(       "1001") <>        1001 or
        integer parse striExpr(       "2000") <>        2000 or
        integer parse striExpr(       "9999") <>        9999 or
        integer parse striExpr(      "10000") <>       10000 or
        integer parse striExpr(      "10001") <>       10001 or
        integer parse striExpr(      "32768") <>       32768 or
        integer parse striExpr(      "32769") <>       32769 or
        integer parse striExpr(      "65536") <>       65536 or
        integer parse striExpr(      "65537") <>       65537 or
        integer parse striExpr(     "100000") <>      100000 or
        integer parse striExpr(    "1000000") <>     1000000 or
        integer parse striExpr(   "10000000") <>    10000000 or
        integer parse striExpr(  "100000000") <>   100000000 or
        integer parse striExpr( "1000000000") <>  1000000000 or
        integer parse striExpr( "1073741823") <>  1073741823 or
        integer parse striExpr( "1073741824") <>  1073741824 or
        integer parse striExpr( "2147483647") <>  2147483647 then
      writeln(" ***** Integer parse with expressions does not work correct.");
      okay := FALSE;
    end if;
    if  integer parse          "0123"  <> 123 or
        integer parse striExpr("0123") <> 123 then
      writeln(" ***** Integer parse with leading zeros does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Integer parse does work correct.");
    end if;
  end func;


const proc: check_lpad0 is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if (-10001 lpad0 0) <> "-10001" or
       (-10000 lpad0 0) <> "-10000" or
       ( -9999 lpad0 0) <>  "-9999" or
       ( -2000 lpad0 0) <>  "-2000" or
       ( -1001 lpad0 0) <>  "-1001" or
       ( -1000 lpad0 0) <>  "-1000" or
       (  -999 lpad0 0) <>   "-999" or
       (  -200 lpad0 0) <>   "-200" or
       (  -101 lpad0 0) <>   "-101" or
       (  -100 lpad0 0) <>   "-100" or
       (   -99 lpad0 0) <>    "-99" or
       (   -20 lpad0 0) <>    "-20" or
       (   -11 lpad0 0) <>    "-11" or
       (   -10 lpad0 0) <>    "-10" or
       (    -9 lpad0 0) <>     "-9" or
       (    -2 lpad0 0) <>     "-2" or
       (    -1 lpad0 0) <>     "-1" or
       (     0 lpad0 0) <>      "0" or
       (     1 lpad0 0) <>      "1" or
       (     2 lpad0 0) <>      "2" or
       (     9 lpad0 0) <>      "9" or
       (    10 lpad0 0) <>     "10" or
       (    11 lpad0 0) <>     "11" or
       (    20 lpad0 0) <>     "20" or
       (    99 lpad0 0) <>     "99" or
       (   100 lpad0 0) <>    "100" or
       (   101 lpad0 0) <>    "101" or
       (   200 lpad0 0) <>    "200" or
       (   999 lpad0 0) <>    "999" or
       (  1000 lpad0 0) <>   "1000" or
       (  1001 lpad0 0) <>   "1001" or
       (  2000 lpad0 0) <>   "2000" or
       (  9999 lpad0 0) <>   "9999" or
       ( 10000 lpad0 0) <>  "10000" or
       ( 10001 lpad0 0) <>  "10001" or
       (-10001 lpad0 1) <> "-10001" or
       (-10000 lpad0 1) <> "-10000" or
       ( -9999 lpad0 1) <>  "-9999" or
       ( -2000 lpad0 1) <>  "-2000" or
       ( -1001 lpad0 1) <>  "-1001" or
       ( -1000 lpad0 1) <>  "-1000" or
       (  -999 lpad0 1) <>   "-999" or
       (  -200 lpad0 1) <>   "-200" or
       (  -101 lpad0 1) <>   "-101" or
       (  -100 lpad0 1) <>   "-100" or
       (   -99 lpad0 1) <>    "-99" or
       (   -20 lpad0 1) <>    "-20" or
       (   -11 lpad0 1) <>    "-11" or
       (   -10 lpad0 1) <>    "-10" or
       (    -9 lpad0 1) <>     "-9" or
       (    -2 lpad0 1) <>     "-2" or
       (    -1 lpad0 1) <>     "-1" or
       (     0 lpad0 1) <>      "0" or
       (     1 lpad0 1) <>      "1" or
       (     2 lpad0 1) <>      "2" or
       (     9 lpad0 1) <>      "9" or
       (    10 lpad0 1) <>     "10" or
       (    11 lpad0 1) <>     "11" or
       (    20 lpad0 1) <>     "20" or
       (    99 lpad0 1) <>     "99" or
       (   100 lpad0 1) <>    "100" or
       (   101 lpad0 1) <>    "101" or
       (   200 lpad0 1) <>    "200" or
       (   999 lpad0 1) <>    "999" or
       (  1000 lpad0 1) <>   "1000" or
       (  1001 lpad0 1) <>   "1001" or
       (  2000 lpad0 1) <>   "2000" or
       (  9999 lpad0 1) <>   "9999" or
       ( 10000 lpad0 1) <>  "10000" or
       ( 10001 lpad0 1) <>  "10001" or
       (-10001 lpad0 2) <> "-10001" or
       (-10000 lpad0 2) <> "-10000" or
       ( -9999 lpad0 2) <>  "-9999" or
       ( -2000 lpad0 2) <>  "-2000" or
       ( -1001 lpad0 2) <>  "-1001" or
       ( -1000 lpad0 2) <>  "-1000" or
       (  -999 lpad0 2) <>   "-999" or
       (  -200 lpad0 2) <>   "-200" or
       (  -101 lpad0 2) <>   "-101" or
       (  -100 lpad0 2) <>   "-100" or
       (   -99 lpad0 2) <>    "-99" or
       (   -20 lpad0 2) <>    "-20" or
       (   -11 lpad0 2) <>    "-11" or
       (   -10 lpad0 2) <>    "-10" or
       (    -9 lpad0 2) <>     "-9" or
       (    -2 lpad0 2) <>     "-2" or
       (    -1 lpad0 2) <>     "-1" or
       (     0 lpad0 2) <>     "00" or
       (     1 lpad0 2) <>     "01" or
       (     2 lpad0 2) <>     "02" or
       (     9 lpad0 2) <>     "09" or
       (    10 lpad0 2) <>     "10" or
       (    11 lpad0 2) <>     "11" or
       (    20 lpad0 2) <>     "20" or
       (    99 lpad0 2) <>     "99" or
       (   100 lpad0 2) <>    "100" or
       (   101 lpad0 2) <>    "101" or
       (   200 lpad0 2) <>    "200" or
       (   999 lpad0 2) <>    "999" or
       (  1000 lpad0 2) <>   "1000" or
       (  1001 lpad0 2) <>   "1001" or
       (  2000 lpad0 2) <>   "2000" or
       (  9999 lpad0 2) <>   "9999" or
       ( 10000 lpad0 2) <>  "10000" or
       ( 10001 lpad0 2) <>  "10001" or
       (-10001 lpad0 3) <> "-10001" or
       (-10000 lpad0 3) <> "-10000" or
       ( -9999 lpad0 3) <>  "-9999" or
       ( -2000 lpad0 3) <>  "-2000" or
       ( -1001 lpad0 3) <>  "-1001" or
       ( -1000 lpad0 3) <>  "-1000" or
       (  -999 lpad0 3) <>   "-999" or
       (  -200 lpad0 3) <>   "-200" or
       (  -101 lpad0 3) <>   "-101" or
       (  -100 lpad0 3) <>   "-100" or
       (   -99 lpad0 3) <>    "-99" or
       (   -20 lpad0 3) <>    "-20" or
       (   -11 lpad0 3) <>    "-11" or
       (   -10 lpad0 3) <>    "-10" or
       (    -9 lpad0 3) <>    "-09" or
       (    -2 lpad0 3) <>    "-02" or
       (    -1 lpad0 3) <>    "-01" or
       (     0 lpad0 3) <>    "000" or
       (     1 lpad0 3) <>    "001" or
       (     2 lpad0 3) <>    "002" or
       (     9 lpad0 3) <>    "009" or
       (    10 lpad0 3) <>    "010" or
       (    11 lpad0 3) <>    "011" or
       (    20 lpad0 3) <>    "020" or
       (    99 lpad0 3) <>    "099" or
       (   100 lpad0 3) <>    "100" or
       (   101 lpad0 3) <>    "101" or
       (   200 lpad0 3) <>    "200" or
       (   999 lpad0 3) <>    "999" or
       (  1000 lpad0 3) <>   "1000" or
       (  1001 lpad0 3) <>   "1001" or
       (  2000 lpad0 3) <>   "2000" or
       (  9999 lpad0 3) <>   "9999" or
       ( 10000 lpad0 3) <>  "10000" or
       ( 10001 lpad0 3) <>  "10001" or
       (-10001 lpad0 4) <> "-10001" or
       (-10000 lpad0 4) <> "-10000" or
       ( -9999 lpad0 4) <>  "-9999" or
       ( -2000 lpad0 4) <>  "-2000" or
       ( -1001 lpad0 4) <>  "-1001" or
       ( -1000 lpad0 4) <>  "-1000" or
       (  -999 lpad0 4) <>   "-999" or
       (  -200 lpad0 4) <>   "-200" or
       (  -101 lpad0 4) <>   "-101" or
       (  -100 lpad0 4) <>   "-100" or
       (   -99 lpad0 4) <>   "-099" or
       (   -20 lpad0 4) <>   "-020" or
       (   -11 lpad0 4) <>   "-011" or
       (   -10 lpad0 4) <>   "-010" or
       (    -9 lpad0 4) <>   "-009" or
       (    -2 lpad0 4) <>   "-002" or
       (    -1 lpad0 4) <>   "-001" or
       (     0 lpad0 4) <>   "0000" or
       (     1 lpad0 4) <>   "0001" or
       (     2 lpad0 4) <>   "0002" or
       (     9 lpad0 4) <>   "0009" or
       (    10 lpad0 4) <>   "0010" or
       (    11 lpad0 4) <>   "0011" or
       (    20 lpad0 4) <>   "0020" or
       (    99 lpad0 4) <>   "0099" or
       (   100 lpad0 4) <>   "0100" or
       (   101 lpad0 4) <>   "0101" or
       (   200 lpad0 4) <>   "0200" or
       (   999 lpad0 4) <>   "0999" or
       (  1000 lpad0 4) <>   "1000" or
       (  1001 lpad0 4) <>   "1001" or
       (  2000 lpad0 4) <>   "2000" or
       (  9999 lpad0 4) <>   "9999" or
       ( 10000 lpad0 4) <>  "10000" or
       ( 10001 lpad0 4) <>  "10001" or
       (-10001 lpad0 5) <> "-10001" or
       (-10000 lpad0 5) <> "-10000" or
       ( -9999 lpad0 5) <>  "-9999" or
       ( -2000 lpad0 5) <>  "-2000" or
       ( -1001 lpad0 5) <>  "-1001" or
       ( -1000 lpad0 5) <>  "-1000" or
       (  -999 lpad0 5) <>  "-0999" or
       (  -200 lpad0 5) <>  "-0200" or
       (  -101 lpad0 5) <>  "-0101" or
       (  -100 lpad0 5) <>  "-0100" or
       (   -99 lpad0 5) <>  "-0099" or
       (   -20 lpad0 5) <>  "-0020" or
       (   -11 lpad0 5) <>  "-0011" or
       (   -10 lpad0 5) <>  "-0010" or
       (    -9 lpad0 5) <>  "-0009" or
       (    -2 lpad0 5) <>  "-0002" or
       (    -1 lpad0 5) <>  "-0001" or
       (     0 lpad0 5) <>  "00000" or
       (     1 lpad0 5) <>  "00001" or
       (     2 lpad0 5) <>  "00002" or
       (     9 lpad0 5) <>  "00009" or
       (    10 lpad0 5) <>  "00010" or
       (    11 lpad0 5) <>  "00011" or
       (    20 lpad0 5) <>  "00020" or
       (    99 lpad0 5) <>  "00099" or
       (   100 lpad0 5) <>  "00100" or
       (   101 lpad0 5) <>  "00101" or
       (   200 lpad0 5) <>  "00200" or
       (   999 lpad0 5) <>  "00999" or
       (  1000 lpad0 5) <>  "01000" or
       (  1001 lpad0 5) <>  "01001" or
       (  2000 lpad0 5) <>  "02000" or
       (  9999 lpad0 5) <>  "09999" or
       ( 10000 lpad0 5) <>  "10000" or
       ( 10001 lpad0 5) <>  "10001" or
       (-10001 lpad0 6) <> "-10001" or
       (-10000 lpad0 6) <> "-10000" or
       ( -9999 lpad0 6) <> "-09999" or
       ( -2000 lpad0 6) <> "-02000" or
       ( -1001 lpad0 6) <> "-01001" or
       ( -1000 lpad0 6) <> "-01000" or
       (  -999 lpad0 6) <> "-00999" or
       (  -200 lpad0 6) <> "-00200" or
       (  -101 lpad0 6) <> "-00101" or
       (  -100 lpad0 6) <> "-00100" or
       (   -99 lpad0 6) <> "-00099" or
       (   -20 lpad0 6) <> "-00020" or
       (   -11 lpad0 6) <> "-00011" or
       (   -10 lpad0 6) <> "-00010" or
       (    -9 lpad0 6) <> "-00009" or
       (    -2 lpad0 6) <> "-00002" or
       (    -1 lpad0 6) <> "-00001" or
       (     0 lpad0 6) <> "000000" or
       (     1 lpad0 6) <> "000001" or
       (     2 lpad0 6) <> "000002" or
       (     9 lpad0 6) <> "000009" or
       (    10 lpad0 6) <> "000010" or
       (    11 lpad0 6) <> "000011" or
       (    20 lpad0 6) <> "000020" or
       (    99 lpad0 6) <> "000099" or
       (   100 lpad0 6) <> "000100" or
       (   101 lpad0 6) <> "000101" or
       (   200 lpad0 6) <> "000200" or
       (   999 lpad0 6) <> "000999" or
       (  1000 lpad0 6) <> "001000" or
       (  1001 lpad0 6) <> "001001" or
       (  2000 lpad0 6) <> "002000" or
       (  9999 lpad0 6) <> "009999" or
       ( 10000 lpad0 6) <> "010000" or
       ( 10001 lpad0 6) <> "010001" then
      writeln(" ***** Integer lpad0 is not correct computed.");
      okay := FALSE;
    end if;
    if okay then
      writeln("Integer lpad0 does work correct.");
    end if;
  end func;


const proc: check_bitLength is func
  local
    var boolean: okay is TRUE;
  begin
    okay := TRUE;
    if  bitLength(  INT32_MIN) <> 31 or
        bitLength(-2147483647) <> 31 or
        bitLength(-1073741825) <> 31 or
        bitLength(-1073741824) <> 30 or
        bitLength( -536870913) <> 30 or
        bitLength( -536870912) <> 29 or
        bitLength( -268435457) <> 29 or
        bitLength( -268435456) <> 28 or
        bitLength( -134217729) <> 28 or
        bitLength( -134217728) <> 27 or
        bitLength(  -67108865) <> 27 or
        bitLength(  -67108864) <> 26 or
        bitLength(  -33554433) <> 26 or
        bitLength(  -33554432) <> 25 or
        bitLength(  -16777217) <> 25 or
        bitLength(  -16777216) <> 24 or
        bitLength(   -8388609) <> 24 or
        bitLength(   -8388608) <> 23 or
        bitLength(   -4194305) <> 23 or
        bitLength(   -4194304) <> 22 or
        bitLength(   -2097153) <> 22 or
        bitLength(   -2097152) <> 21 or
        bitLength(   -1048577) <> 21 or
        bitLength(   -1048576) <> 20 or
        bitLength(    -524289) <> 20 or
        bitLength(    -524288) <> 19 or
        bitLength(    -262145) <> 19 or
        bitLength(    -262144) <> 18 or
        bitLength(    -131073) <> 18 or
        bitLength(    -131072) <> 17 or
        bitLength(     -65537) <> 17 or
        bitLength(     -65536) <> 16 or
        bitLength(     -32769) <> 16 or
        bitLength(     -32768) <> 15 or
        bitLength(     -16385) <> 15 or
        bitLength(     -16384) <> 14 or
        bitLength(      -8193) <> 14 or
        bitLength(      -8192) <> 13 or
        bitLength(      -4097) <> 13 or
        bitLength(      -4096) <> 12 or
        bitLength(      -2049) <> 12 or
        bitLength(      -2048) <> 11 or
        bitLength(      -1025) <> 11 or
        bitLength(      -1024) <> 10 or
        bitLength(       -513) <> 10 or
        bitLength(       -512) <>  9 or
        bitLength(       -257) <>  9 or
        bitLength(       -256) <>  8 or
        bitLength(       -129) <>  8 or
        bitLength(       -128) <>  7 or
        bitLength(        -65) <>  7 or
        bitLength(        -64) <>  6 or
        bitLength(        -33) <>  6 or
        bitLength(        -32) <>  5 or
        bitLength(        -17) <>  5 or
        bitLength(        -16) <>  4 or
        bitLength(         -9) <>  4 or
        bitLength(         -8) <>  3 or
        bitLength(         -5) <>  3 or
        bitLength(         -4) <>  2 or
        bitLength(         -3) <>  2 or
        bitLength(         -2) <>  1 or
        bitLength(         -1) <>  0 or
        bitLength(          0) <>  0 or
        bitLength(          1) <>  1 or
        bitLength(          2) <>  2 or
        bitLength(          3) <>  2 or
        bitLength(          4) <>  3 or
        bitLength(          7) <>  3 or
        bitLength(          8) <>  4 or
        bitLength(         15) <>  4 or
        bitLength(         16) <>  5 or
        bitLength(         31) <>  5 or
        bitLength(         32) <>  6 or
        bitLength(         63) <>  6 or
        bitLength(         64) <>  7 or
        bitLength(        127) <>  7 or
        bitLength(        128) <>  8 or
        bitLength(        255) <>  8 or
        bitLength(        256) <>  9 or
        bitLength(        511) <>  9 or
        bitLength(        512) <> 10 or
        bitLength(       1023) <> 10 or
        bitLength(       1024) <> 11 or
        bitLength(       2047) <> 11 or
        bitLength(       2048) <> 12 or
        bitLength(       4095) <> 12 or
        bitLength(       4096) <> 13 or
        bitLength(       8191) <> 13 or
        bitLength(       8192) <> 14 or
        bitLength(      16383) <> 14 or
        bitLength(      16384) <> 15 or
        bitLength(      32767) <> 15 or
        bitLength(      32768) <> 16 or
        bitLength(      65535) <> 16 or
        bitLength(      65536) <> 17 or
        bitLength(     131071) <> 17 or
        bitLength(     131072) <> 18 or
        bitLength(     262143) <> 18 or
        bitLength(     262144) <> 19 or
        bitLength(     524287) <> 19 or
        bitLength(     524288) <> 20 or
        bitLength(    1048575) <> 20 or
        bitLength(    1048576) <> 21 or
        bitLength(    2097151) <> 21 or
        bitLength(    2097152) <> 22 or
        bitLength(    4194303) <> 22 or
        bitLength(    4194304) <> 23 or
        bitLength(    8388607) <> 23 or
        bitLength(    8388608) <> 24 or
        bitLength(   16777215) <> 24 or
        bitLength(   16777216) <> 25 or
        bitLength(   33554431) <> 25 or
        bitLength(   33554432) <> 26 or
        bitLength(   67108863) <> 26 or
        bitLength(   67108864) <> 27 or
        bitLength(  134217727) <> 27 or
        bitLength(  134217728) <> 28 or
        bitLength(  268435455) <> 28 or
        bitLength(  268435456) <> 29 or
        bitLength(  536870911) <> 29 or
        bitLength(  536870912) <> 30 or
        bitLength( 1073741823) <> 30 or
        bitLength( 1073741824) <> 31 or
        bitLength( 2147483647) <> 31 then
      writeln(" ***** Integer bitLength is not correct computed.");
      okay := FALSE;
    end if;
    if okay then
      writeln("Integer bitLength does work correct.");
    end if;
  end func;


const proc: main is func

  begin
    writeln;
    check_exponent_integer_literal;
    chack_based_integer_literal;
    check_negation;
    check_add;
    check_division;
    check_div;
    check_rem;
    check_mdiv;
    check_mod;
    check_odd;
    check_fact;
    check_binom;
    check_power;
    check_powers_of_2;
    check_sqrt;
    check_log2;
    check_lShift;
    check_rShift;
    check_str;
    check_parse;
    check_lpad0;
    check_bitLength;
  end func;
