
(********************************************************************)
(*                                                                  *)
(*  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";
  include "stdio.s7i";
  include "bytedata.s7i";


const integer: INT32_MIN is pred(-2147483647);
const integer: INT64_MIN is pred(-9223372036854775807);


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: check_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_bytesBe is func
  local
    var boolean: okay is TRUE;
  begin
    if  bytesBe(           INT64_MIN) <> "\128\\000\\000\\000\\000\\000\\000\\000\" or
        bytesBe(  -72057594037927937) <> "\254\\255\\255\\255\\255\\255\\255\\255\" or
        bytesBe(  -72057594037927936) <> "\255\\000\\000\\000\\000\\000\\000\\000\" or
        bytesBe(  -36028797018963969) <> "\255\\127\\255\\255\\255\\255\\255\\255\" or
        bytesBe(  -36028797018963968) <>      "\128\\000\\000\\000\\000\\000\\000\" or
        bytesBe(    -281474976710657) <>      "\254\\255\\255\\255\\255\\255\\255\" or
        bytesBe(    -281474976710656) <>      "\255\\000\\000\\000\\000\\000\\000\" or
        bytesBe(    -140737488355329) <>      "\255\\127\\255\\255\\255\\255\\255\" or
        bytesBe(    -140737488355328) <>           "\128\\000\\000\\000\\000\\000\" or
        bytesBe(      -1099511627777) <>           "\254\\255\\255\\255\\255\\255\" or
        bytesBe(      -1099511627776) <>           "\255\\000\\000\\000\\000\\000\" or
        bytesBe(       -549755813889) <>           "\255\\127\\255\\255\\255\\255\" or
        bytesBe(       -549755813888) <>                "\128\\000\\000\\000\\000\" or
        bytesBe(         -4294967297) <>                "\254\\255\\255\\255\\255\" or
        bytesBe(         -4294967296) <>                "\255\\000\\000\\000\\000\" or
        bytesBe(         -2147483649) <>                "\255\\127\\255\\255\\255\" or
        bytesBe(         -2147483648) <>                     "\128\\000\\000\\000\" or
        bytesBe(           -16777217) <>                     "\254\\255\\255\\255\" or
        bytesBe(           -16777216) <>                     "\255\\000\\000\\000\" or
        bytesBe(            -8388609) <>                     "\255\\127\\255\\255\" or
        bytesBe(            -8388608) <>                          "\128\\000\\000\" or
        bytesBe(              -65537) <>                          "\254\\255\\255\" or
        bytesBe(              -65536) <>                          "\255\\000\\000\" or
        bytesBe(              -65281) <>                          "\255\\000\\255\" or
        bytesBe(              -65280) <>                          "\255\\001\\000\" or
        bytesBe(              -65025) <>                          "\255\\001\\255\" or
        bytesBe(              -65024) <>                          "\255\\002\\000\" or
        bytesBe(              -32770) <>                          "\255\\127\\254\" or
        bytesBe(              -32769) <>                          "\255\\127\\255\" or
        bytesBe(              -32768) <>                               "\128\\000\" or
        bytesBe(              -32767) <>                               "\128\\001\" or
        bytesBe(              -32514) <>                               "\128\\254\" or
        bytesBe(              -32513) <>                               "\128\\255\" or
        bytesBe(              -32512) <>                               "\129\\000\" or
        bytesBe(              -32511) <>                               "\129\\001\" or
        bytesBe(              -32258) <>                               "\129\\254\" or
        bytesBe(              -32257) <>                               "\129\\255\" or
        bytesBe(              -32256) <>                               "\130\\000\" or
        bytesBe(              -32255) <>                               "\130\\001\" or
        bytesBe(                -514) <>                               "\253\\254\" or
        bytesBe(                -513) <>                               "\253\\255\" or
        bytesBe(                -512) <>                               "\254\\000\" or
        bytesBe(                -511) <>                               "\254\\001\" or
        bytesBe(                -258) <>                               "\254\\254\" or
        bytesBe(                -257) <>                               "\254\\255\" or
        bytesBe(                -256) <>                               "\255\\000\" or
        bytesBe(                -255) <>                               "\255\\001\" or
        bytesBe(                -130) <>                               "\255\\126\" or
        bytesBe(                -129) <>                               "\255\\127\" or
        bytesBe(                -128) <>                                    "\128\" or
        bytesBe(                -127) <>                                    "\129\" or
        bytesBe(                  -2) <>                                    "\254\" or
        bytesBe(                  -1) <>                                    "\255\" or
        bytesBe(                   0) <>                                    "\000\" or
        bytesBe(                   1) <>                                    "\001\" or
        bytesBe(                   2) <>                                    "\002\" or
        bytesBe(                 126) <>                                    "\126\" or
        bytesBe(                 127) <>                                    "\127\" or
        bytesBe(                 128) <>                               "\000\\128\" or
        bytesBe(                 129) <>                               "\000\\129\" or
        bytesBe(                 254) <>                               "\000\\254\" or
        bytesBe(                 255) <>                               "\000\\255\" or
        bytesBe(                 256) <>                               "\001\\000\" or
        bytesBe(                 257) <>                               "\001\\001\" or
        bytesBe(                 510) <>                               "\001\\254\" or
        bytesBe(                 511) <>                               "\001\\255\" or
        bytesBe(                 512) <>                               "\002\\000\" or
        bytesBe(                 513) <>                               "\002\\001\" or
        bytesBe(               32254) <>                               "\125\\254\" or
        bytesBe(               32255) <>                               "\125\\255\" or
        bytesBe(               32256) <>                               "\126\\000\" or
        bytesBe(               32257) <>                               "\126\\001\" or
        bytesBe(               32510) <>                               "\126\\254\" or
        bytesBe(               32511) <>                               "\126\\255\" or
        bytesBe(               32512) <>                               "\127\\000\" or
        bytesBe(               32513) <>                               "\127\\001\" or
        bytesBe(               32766) <>                               "\127\\254\" or
        bytesBe(               32767) <>                               "\127\\255\" or
        bytesBe(               32768) <>                          "\000\\128\\000\" or
        bytesBe(               32769) <>                          "\000\\128\\001\" or
        bytesBe(               65023) <>                          "\000\\253\\255\" or
        bytesBe(               65024) <>                          "\000\\254\\000\" or
        bytesBe(               65279) <>                          "\000\\254\\255\" or
        bytesBe(               65280) <>                          "\000\\255\\000\" or
        bytesBe(               65535) <>                          "\000\\255\\255\" or
        bytesBe(               65536) <>                          "\001\\000\\000\" or
        bytesBe(             8388607) <>                          "\127\\255\\255\" or
        bytesBe(             8388608) <>                     "\000\\128\\000\\000\" or
        bytesBe(            16777215) <>                     "\000\\255\\255\\255\" or
        bytesBe(            16777216) <>                     "\001\\000\\000\\000\" or
        bytesBe(          2147483647) <>                     "\127\\255\\255\\255\" or
        bytesBe(          2147483648) <>                "\000\\128\\000\\000\\000\" or
        bytesBe(          4294967295) <>                "\000\\255\\255\\255\\255\" or
        bytesBe(          4294967296) <>                "\001\\000\\000\\000\\000\" or
        bytesBe(        549755813887) <>                "\127\\255\\255\\255\\255\" or
        bytesBe(        549755813888) <>           "\000\\128\\000\\000\\000\\000\" or
        bytesBe(       1099511627775) <>           "\000\\255\\255\\255\\255\\255\" or
        bytesBe(       1099511627776) <>           "\001\\000\\000\\000\\000\\000\" or
        bytesBe(     140737488355327) <>           "\127\\255\\255\\255\\255\\255\" or
        bytesBe(     140737488355328) <>      "\000\\128\\000\\000\\000\\000\\000\" or
        bytesBe(     281474976710655) <>      "\000\\255\\255\\255\\255\\255\\255\" or
        bytesBe(     281474976710656) <>      "\001\\000\\000\\000\\000\\000\\000\" or
        bytesBe(   36028797018963967) <>      "\127\\255\\255\\255\\255\\255\\255\" or
        bytesBe(   36028797018963968) <> "\000\\128\\000\\000\\000\\000\\000\\000\" or
        bytesBe(   72057594037927935) <> "\000\\255\\255\\255\\255\\255\\255\\255\" or
        bytesBe(   72057594037927936) <> "\001\\000\\000\\000\\000\\000\\000\\000\" or
        bytesBe( 9223372036854775807) <> "\127\\255\\255\\255\\255\\255\\255\\255\" then
      writeln("Conversion of integer to big endian byte string does not work correct.");
      okay := FALSE;
    end if;

    if  bytesBe(               258) <>                   "\1\\2\" or
        bytesBe(             66051) <>                "\1\\2\\3\" or
        bytesBe(          16909060) <>             "\1\\2\\3\\4\" or
        bytesBe(        4328719365) <>          "\1\\2\\3\\4\\5\" or
        bytesBe(     1108152157446) <>       "\1\\2\\3\\4\\5\\6\" or
        bytesBe(   283686952306183) <>    "\1\\2\\3\\4\\5\\6\\7\" or
        bytesBe( 72623859790382856) <> "\1\\2\\3\\4\\5\\6\\7\\8\" or
        bytesBe(               513) <>                   "\2\\1\" or
        bytesBe(            197121) <>                "\3\\2\\1\" or
        bytesBe(          67305985) <>             "\4\\3\\2\\1\" or
        bytesBe(       21542142465) <>          "\5\\4\\3\\2\\1\" or
        bytesBe(     6618611909121) <>       "\6\\5\\4\\3\\2\\1\" or
        bytesBe(  1976943448883713) <>    "\7\\6\\5\\4\\3\\2\\1\" or
        bytesBe(578437695752307201) <> "\8\\7\\6\\5\\4\\3\\2\\1\" then
      writeln("Conversion of integer to big endian byte string does not work correct.");
      okay := FALSE;
    end if;

    if  bytesBe(              -255) <>                   "\255\\1\" or
        bytesBe(            -65278) <>                "\255\\1\\2\" or
        bytesBe(         -16711165) <>             "\255\\1\\2\\3\" or
        bytesBe(       -4278058236) <>          "\255\\1\\2\\3\\4\" or
        bytesBe(    -1095182908411) <>       "\255\\1\\2\\3\\4\\5\" or
        bytesBe(  -280366824553210) <>    "\255\\1\\2\\3\\4\\5\\6\" or
        bytesBe(-71773907085621753) <> "\255\\1\\2\\3\\4\\5\\6\\7\" or
        bytesBe(              -255) <>                   "\255\\1\" or
        bytesBe(            -65023) <>                "\255\\2\\1\" or
        bytesBe(         -16580095) <>             "\255\\3\\2\\1\" or
        bytesBe(       -4227661311) <>          "\255\\4\\3\\2\\1\" or
        bytesBe(    -1077969485311) <>       "\255\\5\\4\\3\\2\\1\" or
        bytesBe(  -274856364801535) <>    "\255\\6\\5\\4\\3\\2\\1\" or
        bytesBe(-70080650589044223) <> "\255\\7\\6\\5\\4\\3\\2\\1\" then
      writeln("Conversion of integer to big endian byte string does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Conversion of integer to big endian byte string works correct.");
    else
      writeln(" ***** Conversion of integer to big endian byte string does not work correct.");
      writeln;
    end if;
  end func;


const proc: check_bytesLe is func
  local
    var boolean: okay is TRUE;
  begin
    if  bytesLe(           INT64_MIN) <> "\000\\000\\000\\000\\000\\000\\000\\128\" or
        bytesLe(  -72057594037927937) <> "\255\\255\\255\\255\\255\\255\\255\\254\" or
        bytesLe(  -72057594037927936) <> "\000\\000\\000\\000\\000\\000\\000\\255\" or
        bytesLe(  -36028797018963969) <> "\255\\255\\255\\255\\255\\255\\127\\255\" or
        bytesLe(  -36028797018963968) <> "\000\\000\\000\\000\\000\\000\\128\"      or
        bytesLe(    -281474976710657) <> "\255\\255\\255\\255\\255\\255\\254\"      or
        bytesLe(    -281474976710656) <> "\000\\000\\000\\000\\000\\000\\255\"      or
        bytesLe(    -140737488355329) <> "\255\\255\\255\\255\\255\\127\\255\"      or
        bytesLe(    -140737488355328) <> "\000\\000\\000\\000\\000\\128\"           or
        bytesLe(      -1099511627777) <> "\255\\255\\255\\255\\255\\254\"           or
        bytesLe(      -1099511627776) <> "\000\\000\\000\\000\\000\\255\"           or
        bytesLe(       -549755813889) <> "\255\\255\\255\\255\\127\\255\"           or
        bytesLe(       -549755813888) <> "\000\\000\\000\\000\\128\"                or
        bytesLe(         -4294967297) <> "\255\\255\\255\\255\\254\"                or
        bytesLe(         -4294967296) <> "\000\\000\\000\\000\\255\"                or
        bytesLe(         -2147483649) <> "\255\\255\\255\\127\\255\"                or
        bytesLe(         -2147483648) <> "\000\\000\\000\\128\"                     or
        bytesLe(           -16777217) <> "\255\\255\\255\\254\"                     or
        bytesLe(           -16777216) <> "\000\\000\\000\\255\"                     or
        bytesLe(            -8388609) <> "\255\\255\\127\\255\"                     or
        bytesLe(            -8388608) <> "\000\\000\\128\"                          or
        bytesLe(              -65537) <> "\255\\255\\254\"                          or
        bytesLe(              -65536) <> "\000\\000\\255\"                          or
        bytesLe(              -65281) <> "\255\\000\\255\"                          or
        bytesLe(              -65280) <> "\000\\001\\255\"                          or
        bytesLe(              -65025) <> "\255\\001\\255\"                          or
        bytesLe(              -65024) <> "\000\\002\\255\"                          or
        bytesLe(              -32770) <> "\254\\127\\255\"                          or
        bytesLe(              -32769) <> "\255\\127\\255\"                          or
        bytesLe(              -32768) <> "\000\\128\"                               or
        bytesLe(              -32767) <> "\001\\128\"                               or
        bytesLe(              -32514) <> "\254\\128\"                               or
        bytesLe(              -32513) <> "\255\\128\"                               or
        bytesLe(              -32512) <> "\000\\129\"                               or
        bytesLe(              -32511) <> "\001\\129\"                               or
        bytesLe(              -32258) <> "\254\\129\"                               or
        bytesLe(              -32257) <> "\255\\129\"                               or
        bytesLe(              -32256) <> "\000\\130\"                               or
        bytesLe(              -32255) <> "\001\\130\"                               or
        bytesLe(                -514) <> "\254\\253\"                               or
        bytesLe(                -513) <> "\255\\253\"                               or
        bytesLe(                -512) <> "\000\\254\"                               or
        bytesLe(                -511) <> "\001\\254\"                               or
        bytesLe(                -258) <> "\254\\254\"                               or
        bytesLe(                -257) <> "\255\\254\"                               or
        bytesLe(                -256) <> "\000\\255\"                               or
        bytesLe(                -255) <> "\001\\255\"                               or
        bytesLe(                -130) <> "\126\\255\"                               or
        bytesLe(                -129) <> "\127\\255\"                               or
        bytesLe(                -128) <> "\128\"                                    or
        bytesLe(                -127) <> "\129\"                                    or
        bytesLe(                  -2) <> "\254\"                                    or
        bytesLe(                  -1) <> "\255\"                                    or
        bytesLe(                   0) <> "\000\"                                    or
        bytesLe(                   1) <> "\001\"                                    or
        bytesLe(                   2) <> "\002\"                                    or
        bytesLe(                 126) <> "\126\"                                    or
        bytesLe(                 127) <> "\127\"                                    or
        bytesLe(                 128) <> "\128\\000\"                               or
        bytesLe(                 129) <> "\129\\000\"                               or
        bytesLe(                 254) <> "\254\\000\"                               or
        bytesLe(                 255) <> "\255\\000\"                               or
        bytesLe(                 256) <> "\000\\001\"                               or
        bytesLe(                 257) <> "\001\\001\"                               or
        bytesLe(                 510) <> "\254\\001\"                               or
        bytesLe(                 511) <> "\255\\001\"                               or
        bytesLe(                 512) <> "\000\\002\"                               or
        bytesLe(                 513) <> "\001\\002\"                               or
        bytesLe(               32254) <> "\254\\125\"                               or
        bytesLe(               32255) <> "\255\\125\"                               or
        bytesLe(               32256) <> "\000\\126\"                               or
        bytesLe(               32257) <> "\001\\126\"                               or
        bytesLe(               32510) <> "\254\\126\"                               or
        bytesLe(               32511) <> "\255\\126\"                               or
        bytesLe(               32512) <> "\000\\127\"                               or
        bytesLe(               32513) <> "\001\\127\"                               or
        bytesLe(               32766) <> "\254\\127\"                               or
        bytesLe(               32767) <> "\255\\127\"                               or
        bytesLe(               32768) <> "\000\\128\\000\"                          or
        bytesLe(               32769) <> "\001\\128\\000\"                          or
        bytesLe(               65023) <> "\255\\253\\000\"                          or
        bytesLe(               65024) <> "\000\\254\\000\"                          or
        bytesLe(               65279) <> "\255\\254\\000\"                          or
        bytesLe(               65280) <> "\000\\255\\000\"                          or
        bytesLe(               65535) <> "\255\\255\\000\"                          or
        bytesLe(               65536) <> "\000\\000\\001\"                          or
        bytesLe(             8388607) <> "\255\\255\\127\"                          or
        bytesLe(             8388608) <> "\000\\000\\128\\000\"                     or
        bytesLe(            16777215) <> "\255\\255\\255\\000\"                     or
        bytesLe(            16777216) <> "\000\\000\\000\\001\"                     or
        bytesLe(          2147483647) <> "\255\\255\\255\\127\"                     or
        bytesLe(          2147483648) <> "\000\\000\\000\\128\\000\"                or
        bytesLe(          4294967295) <> "\255\\255\\255\\255\\000\"                or
        bytesLe(          4294967296) <> "\000\\000\\000\\000\\001\"                or
        bytesLe(        549755813887) <> "\255\\255\\255\\255\\127\"                or
        bytesLe(        549755813888) <> "\000\\000\\000\\000\\128\\000\"           or
        bytesLe(       1099511627775) <> "\255\\255\\255\\255\\255\\000\"           or
        bytesLe(       1099511627776) <> "\000\\000\\000\\000\\000\\001\"           or
        bytesLe(     140737488355327) <> "\255\\255\\255\\255\\255\\127\"           or
        bytesLe(     140737488355328) <> "\000\\000\\000\\000\\000\\128\\000\"      or
        bytesLe(     281474976710655) <> "\255\\255\\255\\255\\255\\255\\000\"      or
        bytesLe(     281474976710656) <> "\000\\000\\000\\000\\000\\000\\001\"      or
        bytesLe(   36028797018963967) <> "\255\\255\\255\\255\\255\\255\\127\"      or
        bytesLe(   36028797018963968) <> "\000\\000\\000\\000\\000\\000\\128\\000\" or
        bytesLe(   72057594037927935) <> "\255\\255\\255\\255\\255\\255\\255\\000\" or
        bytesLe(   72057594037927936) <> "\000\\000\\000\\000\\000\\000\\000\\001\" or
        bytesLe( 9223372036854775807) <> "\255\\255\\255\\255\\255\\255\\255\\127\" then
      writeln("Conversion of integer to little endian byte string does not work correct.");
      okay := FALSE;
    end if;

    if  bytesLe(               258) <> "\2\\1\"                   or
        bytesLe(             66051) <> "\3\\2\\1\"                or
        bytesLe(          16909060) <> "\4\\3\\2\\1\"             or
        bytesLe(        4328719365) <> "\5\\4\\3\\2\\1\"          or
        bytesLe(     1108152157446) <> "\6\\5\\4\\3\\2\\1\"       or
        bytesLe(   283686952306183) <> "\7\\6\\5\\4\\3\\2\\1\"    or
        bytesLe( 72623859790382856) <> "\8\\7\\6\\5\\4\\3\\2\\1\" or
        bytesLe(               513) <> "\1\\2\"                   or
        bytesLe(            197121) <> "\1\\2\\3\"                or
        bytesLe(          67305985) <> "\1\\2\\3\\4\"             or
        bytesLe(       21542142465) <> "\1\\2\\3\\4\\5\"          or
        bytesLe(     6618611909121) <> "\1\\2\\3\\4\\5\\6\"       or
        bytesLe(  1976943448883713) <> "\1\\2\\3\\4\\5\\6\\7\"    or
        bytesLe(578437695752307201) <> "\1\\2\\3\\4\\5\\6\\7\\8\" then
      writeln("Conversion of integer to little endian byte string does not work correct.");
      okay := FALSE;
    end if;

    if  bytesLe(              -255) <> "\1\\255\"                   or
        bytesLe(            -65278) <> "\2\\1\\255\"                or
        bytesLe(         -16711165) <> "\3\\2\\1\\255\"             or
        bytesLe(       -4278058236) <> "\4\\3\\2\\1\\255\"          or
        bytesLe(    -1095182908411) <> "\5\\4\\3\\2\\1\\255\"       or
        bytesLe(  -280366824553210) <> "\6\\5\\4\\3\\2\\1\\255\"    or
        bytesLe(-71773907085621753) <> "\7\\6\\5\\4\\3\\2\\1\\255\" or
        bytesLe(              -255) <> "\1\\255\"                   or
        bytesLe(            -65023) <> "\1\\2\\255\"                or
        bytesLe(         -16580095) <> "\1\\2\\3\\255\"             or
        bytesLe(       -4227661311) <> "\1\\2\\3\\4\\255\"          or
        bytesLe(    -1077969485311) <> "\1\\2\\3\\4\\5\\255\"       or
        bytesLe(  -274856364801535) <> "\1\\2\\3\\4\\5\\6\\255\"    or
        bytesLe(-70080650589044223) <> "\1\\2\\3\\4\\5\\6\\7\\255\" then
      writeln("Conversion of integer to little endian byte string does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Conversion of integer to little endian byte string works correct.");
    else
      writeln(" ***** Conversion of integer to little endian byte string does 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         2109876543  mdiv           INT32_MIN  <>          -1 or
               2109876543  mdiv         -1073741824  <>          -2 or
               2109876543  mdiv          -536870912  <>          -4 or
               2109876543  mdiv          -268435456  <>          -8 or
               2109876543  mdiv          -134217728  <>         -16 or
               2109876543  mdiv           -67108864  <>         -32 or
               2109876543  mdiv           -33554432  <>         -63 or
               2109876543  mdiv           -16777216  <>        -126 or
               2109876543  mdiv            -8388608  <>        -252 or
               2109876543  mdiv            -4194304  <>        -504 or
               2109876543  mdiv            -2097152  <>       -1007 or
               2109876543  mdiv            -1048576  <>       -2013 or
               2109876543  mdiv             -524288  <>       -4025 or
               2109876543  mdiv             -262144  <>       -8049 or
               2109876543  mdiv             -131072  <>      -16098 or
               2109876543  mdiv              -65536  <>      -32195 or
               2109876543  mdiv              -32768  <>      -64389 or
               2109876543  mdiv              -16384  <>     -128777 or
               2109876543  mdiv               -8192  <>     -257554 or
               2109876543  mdiv               -4096  <>     -515107 or
               2109876543  mdiv               -2048  <>    -1030214 or
               2109876543  mdiv               -1024  <>    -2060427 or
               2109876543  mdiv                -512  <>    -4120853 or
               2109876543  mdiv                -256  <>    -8241706 or
               2109876543  mdiv                -128  <>   -16483411 or
               2109876543  mdiv                 -64  <>   -32966821 or
               2109876543  mdiv                 -32  <>   -65933642 or
               2109876543  mdiv                 -16  <>  -131867284 or
               2109876543  mdiv                  -8  <>  -263734568 or
               2109876543  mdiv                  -4  <>  -527469136 or
               2109876543  mdiv                  -2  <> -1054938272 or
               2109876543  mdiv                   2  <>  1054938271 or
               2109876543  mdiv                   4  <>   527469135 or
               2109876543  mdiv                   8  <>   263734567 or
               2109876543  mdiv                  16  <>   131867283 or
               2109876543  mdiv                  32  <>    65933641 or
               2109876543  mdiv                  64  <>    32966820 or
               2109876543  mdiv                 128  <>    16483410 or
               2109876543  mdiv                 256  <>     8241705 or
               2109876543  mdiv                 512  <>     4120852 or
               2109876543  mdiv                1024  <>     2060426 or
               2109876543  mdiv                2048  <>     1030213 or
               2109876543  mdiv                4096  <>      515106 or
               2109876543  mdiv                8192  <>      257553 or
               2109876543  mdiv               16384  <>      128776 or
               2109876543  mdiv               32768  <>       64388 or
               2109876543  mdiv               65536  <>       32194 or
               2109876543  mdiv              131072  <>       16097 or
               2109876543  mdiv              262144  <>        8048 or
               2109876543  mdiv              524288  <>        4024 or
               2109876543  mdiv             1048576  <>        2012 or
               2109876543  mdiv             2097152  <>        1006 or
               2109876543  mdiv             4194304  <>         503 or
               2109876543  mdiv             8388608  <>         251 or
               2109876543  mdiv            16777216  <>         125 or
               2109876543  mdiv            33554432  <>          62 or
               2109876543  mdiv            67108864  <>          31 or
               2109876543  mdiv           134217728  <>          15 or
               2109876543  mdiv           268435456  <>           7 or
               2109876543  mdiv           536870912  <>           3 or
               2109876543  mdiv          1073741824  <>           1 or
       intExpr(2109876543) mdiv           INT32_MIN  <>          -1 or
       intExpr(2109876543) mdiv         -1073741824  <>          -2 or
       intExpr(2109876543) mdiv          -536870912  <>          -4 or
       intExpr(2109876543) mdiv          -268435456  <>          -8 or
       intExpr(2109876543) mdiv          -134217728  <>         -16 or
       intExpr(2109876543) mdiv           -67108864  <>         -32 or
       intExpr(2109876543) mdiv           -33554432  <>         -63 or
       intExpr(2109876543) mdiv           -16777216  <>        -126 or
       intExpr(2109876543) mdiv            -8388608  <>        -252 or
       intExpr(2109876543) mdiv            -4194304  <>        -504 or
       intExpr(2109876543) mdiv            -2097152  <>       -1007 or
       intExpr(2109876543) mdiv            -1048576  <>       -2013 or
       intExpr(2109876543) mdiv             -524288  <>       -4025 or
       intExpr(2109876543) mdiv             -262144  <>       -8049 or
       intExpr(2109876543) mdiv             -131072  <>      -16098 or
       intExpr(2109876543) mdiv              -65536  <>      -32195 or
       intExpr(2109876543) mdiv              -32768  <>      -64389 or
       intExpr(2109876543) mdiv              -16384  <>     -128777 or
       intExpr(2109876543) mdiv               -8192  <>     -257554 or
       intExpr(2109876543) mdiv               -4096  <>     -515107 or
       intExpr(2109876543) mdiv               -2048  <>    -1030214 or
       intExpr(2109876543) mdiv               -1024  <>    -2060427 or
       intExpr(2109876543) mdiv                -512  <>    -4120853 or
       intExpr(2109876543) mdiv                -256  <>    -8241706 or
       intExpr(2109876543) mdiv                -128  <>   -16483411 or
       intExpr(2109876543) mdiv                 -64  <>   -32966821 or
       intExpr(2109876543) mdiv                 -32  <>   -65933642 or
       intExpr(2109876543) mdiv                 -16  <>  -131867284 or
       intExpr(2109876543) mdiv                  -8  <>  -263734568 or
       intExpr(2109876543) mdiv                  -4  <>  -527469136 or
       intExpr(2109876543) mdiv                  -2  <> -1054938272 or
       intExpr(2109876543) mdiv                   2  <>  1054938271 or
       intExpr(2109876543) mdiv                   4  <>   527469135 or
       intExpr(2109876543) mdiv                   8  <>   263734567 or
       intExpr(2109876543) mdiv                  16  <>   131867283 or
       intExpr(2109876543) mdiv                  32  <>    65933641 or
       intExpr(2109876543) mdiv                  64  <>    32966820 or
       intExpr(2109876543) mdiv                 128  <>    16483410 or
       intExpr(2109876543) mdiv                 256  <>     8241705 or
       intExpr(2109876543) mdiv                 512  <>     4120852 or
       intExpr(2109876543) mdiv                1024  <>     2060426 or
       intExpr(2109876543) mdiv                2048  <>     1030213 or
       intExpr(2109876543) mdiv                4096  <>      515106 or
       intExpr(2109876543) mdiv                8192  <>      257553 or
       intExpr(2109876543) mdiv               16384  <>      128776 or
       intExpr(2109876543) mdiv               32768  <>       64388 or
       intExpr(2109876543) mdiv               65536  <>       32194 or
       intExpr(2109876543) mdiv              131072  <>       16097 or
       intExpr(2109876543) mdiv              262144  <>        8048 or
       intExpr(2109876543) mdiv              524288  <>        4024 or
       intExpr(2109876543) mdiv             1048576  <>        2012 or
       intExpr(2109876543) mdiv             2097152  <>        1006 or
       intExpr(2109876543) mdiv             4194304  <>         503 or
       intExpr(2109876543) mdiv             8388608  <>         251 or
       intExpr(2109876543) mdiv            16777216  <>         125 or
       intExpr(2109876543) mdiv            33554432  <>          62 or
       intExpr(2109876543) mdiv            67108864  <>          31 or
       intExpr(2109876543) mdiv           134217728  <>          15 or
       intExpr(2109876543) mdiv           268435456  <>           7 or
       intExpr(2109876543) mdiv           536870912  <>           3 or
       intExpr(2109876543) mdiv          1073741824  <>           1 or
               2109876543  mdiv intExpr(  INT32_MIN) <>          -1 or
               2109876543  mdiv intExpr(-1073741824) <>          -2 or
               2109876543  mdiv intExpr( -536870912) <>          -4 or
               2109876543  mdiv intExpr( -268435456) <>          -8 or
               2109876543  mdiv intExpr( -134217728) <>         -16 or
               2109876543  mdiv intExpr(  -67108864) <>         -32 or
               2109876543  mdiv intExpr(  -33554432) <>         -63 or
               2109876543  mdiv intExpr(  -16777216) <>        -126 or
               2109876543  mdiv intExpr(   -8388608) <>        -252 or
               2109876543  mdiv intExpr(   -4194304) <>        -504 or
               2109876543  mdiv intExpr(   -2097152) <>       -1007 or
               2109876543  mdiv intExpr(   -1048576) <>       -2013 or
               2109876543  mdiv intExpr(    -524288) <>       -4025 or
               2109876543  mdiv intExpr(    -262144) <>       -8049 or
               2109876543  mdiv intExpr(    -131072) <>      -16098 or
               2109876543  mdiv intExpr(     -65536) <>      -32195 or
               2109876543  mdiv intExpr(     -32768) <>      -64389 or
               2109876543  mdiv intExpr(     -16384) <>     -128777 or
               2109876543  mdiv intExpr(      -8192) <>     -257554 or
               2109876543  mdiv intExpr(      -4096) <>     -515107 or
               2109876543  mdiv intExpr(      -2048) <>    -1030214 or
               2109876543  mdiv intExpr(      -1024) <>    -2060427 or
               2109876543  mdiv intExpr(       -512) <>    -4120853 or
               2109876543  mdiv intExpr(       -256) <>    -8241706 or
               2109876543  mdiv intExpr(       -128) <>   -16483411 or
               2109876543  mdiv intExpr(        -64) <>   -32966821 or
               2109876543  mdiv intExpr(        -32) <>   -65933642 or
               2109876543  mdiv intExpr(        -16) <>  -131867284 or
               2109876543  mdiv intExpr(         -8) <>  -263734568 or
               2109876543  mdiv intExpr(         -4) <>  -527469136 or
               2109876543  mdiv intExpr(         -2) <> -1054938272 or
               2109876543  mdiv intExpr(          2) <>  1054938271 or
               2109876543  mdiv intExpr(          4) <>   527469135 or
               2109876543  mdiv intExpr(          8) <>   263734567 or
               2109876543  mdiv intExpr(         16) <>   131867283 or
               2109876543  mdiv intExpr(         32) <>    65933641 or
               2109876543  mdiv intExpr(         64) <>    32966820 or
               2109876543  mdiv intExpr(        128) <>    16483410 or
               2109876543  mdiv intExpr(        256) <>     8241705 or
               2109876543  mdiv intExpr(        512) <>     4120852 or
               2109876543  mdiv intExpr(       1024) <>     2060426 or
               2109876543  mdiv intExpr(       2048) <>     1030213 or
               2109876543  mdiv intExpr(       4096) <>      515106 or
               2109876543  mdiv intExpr(       8192) <>      257553 or
               2109876543  mdiv intExpr(      16384) <>      128776 or
               2109876543  mdiv intExpr(      32768) <>       64388 or
               2109876543  mdiv intExpr(      65536) <>       32194 or
               2109876543  mdiv intExpr(     131072) <>       16097 or
               2109876543  mdiv intExpr(     262144) <>        8048 or
               2109876543  mdiv intExpr(     524288) <>        4024 or
               2109876543  mdiv intExpr(    1048576) <>        2012 or
               2109876543  mdiv intExpr(    2097152) <>        1006 or
               2109876543  mdiv intExpr(    4194304) <>         503 or
               2109876543  mdiv intExpr(    8388608) <>         251 or
               2109876543  mdiv intExpr(   16777216) <>         125 or
               2109876543  mdiv intExpr(   33554432) <>          62 or
               2109876543  mdiv intExpr(   67108864) <>          31 or
               2109876543  mdiv intExpr(  134217728) <>          15 or
               2109876543  mdiv intExpr(  268435456) <>           7 or
               2109876543  mdiv intExpr(  536870912) <>           3 or
               2109876543  mdiv intExpr( 1073741824) <>           1 or
       intExpr(2109876543) mdiv intExpr(  INT32_MIN) <>          -1 or
       intExpr(2109876543) mdiv intExpr(-1073741824) <>          -2 or
       intExpr(2109876543) mdiv intExpr( -536870912) <>          -4 or
       intExpr(2109876543) mdiv intExpr( -268435456) <>          -8 or
       intExpr(2109876543) mdiv intExpr( -134217728) <>         -16 or
       intExpr(2109876543) mdiv intExpr(  -67108864) <>         -32 or
       intExpr(2109876543) mdiv intExpr(  -33554432) <>         -63 or
       intExpr(2109876543) mdiv intExpr(  -16777216) <>        -126 or
       intExpr(2109876543) mdiv intExpr(   -8388608) <>        -252 or
       intExpr(2109876543) mdiv intExpr(   -4194304) <>        -504 or
       intExpr(2109876543) mdiv intExpr(   -2097152) <>       -1007 or
       intExpr(2109876543) mdiv intExpr(   -1048576) <>       -2013 or
       intExpr(2109876543) mdiv intExpr(    -524288) <>       -4025 or
       intExpr(2109876543) mdiv intExpr(    -262144) <>       -8049 or
       intExpr(2109876543) mdiv intExpr(    -131072) <>      -16098 or
       intExpr(2109876543) mdiv intExpr(     -65536) <>      -32195 or
       intExpr(2109876543) mdiv intExpr(     -32768) <>      -64389 or
       intExpr(2109876543) mdiv intExpr(     -16384) <>     -128777 or
       intExpr(2109876543) mdiv intExpr(      -8192) <>     -257554 or
       intExpr(2109876543) mdiv intExpr(      -4096) <>     -515107 or
       intExpr(2109876543) mdiv intExpr(      -2048) <>    -1030214 or
       intExpr(2109876543) mdiv intExpr(      -1024) <>    -2060427 or
       intExpr(2109876543) mdiv intExpr(       -512) <>    -4120853 or
       intExpr(2109876543) mdiv intExpr(       -256) <>    -8241706 or
       intExpr(2109876543) mdiv intExpr(       -128) <>   -16483411 or
       intExpr(2109876543) mdiv intExpr(        -64) <>   -32966821 or
       intExpr(2109876543) mdiv intExpr(        -32) <>   -65933642 or
       intExpr(2109876543) mdiv intExpr(        -16) <>  -131867284 or
       intExpr(2109876543) mdiv intExpr(         -8) <>  -263734568 or
       intExpr(2109876543) mdiv intExpr(         -4) <>  -527469136 or
       intExpr(2109876543) mdiv intExpr(         -2) <> -1054938272 or
       intExpr(2109876543) mdiv intExpr(          2) <>  1054938271 or
       intExpr(2109876543) mdiv intExpr(          4) <>   527469135 or
       intExpr(2109876543) mdiv intExpr(          8) <>   263734567 or
       intExpr(2109876543) mdiv intExpr(         16) <>   131867283 or
       intExpr(2109876543) mdiv intExpr(         32) <>    65933641 or
       intExpr(2109876543) mdiv intExpr(         64) <>    32966820 or
       intExpr(2109876543) mdiv intExpr(        128) <>    16483410 or
       intExpr(2109876543) mdiv intExpr(        256) <>     8241705 or
       intExpr(2109876543) mdiv intExpr(        512) <>     4120852 or
       intExpr(2109876543) mdiv intExpr(       1024) <>     2060426 or
       intExpr(2109876543) mdiv intExpr(       2048) <>     1030213 or
       intExpr(2109876543) mdiv intExpr(       4096) <>      515106 or
       intExpr(2109876543) mdiv intExpr(       8192) <>      257553 or
       intExpr(2109876543) mdiv intExpr(      16384) <>      128776 or
       intExpr(2109876543) mdiv intExpr(      32768) <>       64388 or
       intExpr(2109876543) mdiv intExpr(      65536) <>       32194 or
       intExpr(2109876543) mdiv intExpr(     131072) <>       16097 or
       intExpr(2109876543) mdiv intExpr(     262144) <>        8048 or
       intExpr(2109876543) mdiv intExpr(     524288) <>        4024 or
       intExpr(2109876543) mdiv intExpr(    1048576) <>        2012 or
       intExpr(2109876543) mdiv intExpr(    2097152) <>        1006 or
       intExpr(2109876543) mdiv intExpr(    4194304) <>         503 or
       intExpr(2109876543) mdiv intExpr(    8388608) <>         251 or
       intExpr(2109876543) mdiv intExpr(   16777216) <>         125 or
       intExpr(2109876543) mdiv intExpr(   33554432) <>          62 or
       intExpr(2109876543) mdiv intExpr(   67108864) <>          31 or
       intExpr(2109876543) mdiv intExpr(  134217728) <>          15 or
       intExpr(2109876543) mdiv intExpr(  268435456) <>           7 or
       intExpr(2109876543) mdiv intExpr(  536870912) <>           3 or
       intExpr(2109876543) mdiv intExpr( 1073741824) <>           1 then
      writeln(" ***** mdiv with powers of two 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         2109876543  mod           INT32_MIN  <>   -37607105 or
               2109876543  mod         -1073741824  <>   -37607105 or
               2109876543  mod          -536870912  <>   -37607105 or
               2109876543  mod          -268435456  <>   -37607105 or
               2109876543  mod          -134217728  <>   -37607105 or
               2109876543  mod           -67108864  <>   -37607105 or
               2109876543  mod           -33554432  <>    -4052673 or
               2109876543  mod           -16777216  <>    -4052673 or
               2109876543  mod            -8388608  <>    -4052673 or
               2109876543  mod            -4194304  <>    -4052673 or
               2109876543  mod            -2097152  <>    -1955521 or
               2109876543  mod            -1048576  <>     -906945 or
               2109876543  mod             -524288  <>     -382657 or
               2109876543  mod             -262144  <>     -120513 or
               2109876543  mod             -131072  <>     -120513 or
               2109876543  mod              -65536  <>      -54977 or
               2109876543  mod              -32768  <>      -22209 or
               2109876543  mod              -16384  <>       -5825 or
               2109876543  mod               -8192  <>       -5825 or
               2109876543  mod               -4096  <>       -1729 or
               2109876543  mod               -2048  <>       -1729 or
               2109876543  mod               -1024  <>        -705 or
               2109876543  mod                -512  <>        -193 or
               2109876543  mod                -256  <>        -193 or
               2109876543  mod                -128  <>         -65 or
               2109876543  mod                 -64  <>          -1 or
               2109876543  mod                 -32  <>          -1 or
               2109876543  mod                 -16  <>          -1 or
               2109876543  mod                  -8  <>          -1 or
               2109876543  mod                  -4  <>          -1 or
               2109876543  mod                  -2  <>          -1 or
               2109876543  mod                   2  <>           1 or
               2109876543  mod                   4  <>           3 or
               2109876543  mod                   8  <>           7 or
               2109876543  mod                  16  <>          15 or
               2109876543  mod                  32  <>          31 or
               2109876543  mod                  64  <>          63 or
               2109876543  mod                 128  <>          63 or
               2109876543  mod                 256  <>          63 or
               2109876543  mod                 512  <>         319 or
               2109876543  mod                1024  <>         319 or
               2109876543  mod                2048  <>         319 or
               2109876543  mod                4096  <>        2367 or
               2109876543  mod                8192  <>        2367 or
               2109876543  mod               16384  <>       10559 or
               2109876543  mod               32768  <>       10559 or
               2109876543  mod               65536  <>       10559 or
               2109876543  mod              131072  <>       10559 or
               2109876543  mod              262144  <>      141631 or
               2109876543  mod              524288  <>      141631 or
               2109876543  mod             1048576  <>      141631 or
               2109876543  mod             2097152  <>      141631 or
               2109876543  mod             4194304  <>      141631 or
               2109876543  mod             8388608  <>     4335935 or
               2109876543  mod            16777216  <>    12724543 or
               2109876543  mod            33554432  <>    29501759 or
               2109876543  mod            67108864  <>    29501759 or
               2109876543  mod           134217728  <>    96610623 or
               2109876543  mod           268435456  <>   230828351 or
               2109876543  mod           536870912  <>   499263807 or
               2109876543  mod          1073741824  <>  1036134719 or
       intExpr(2109876543) mod           INT32_MIN  <>   -37607105 or
       intExpr(2109876543) mod         -1073741824  <>   -37607105 or
       intExpr(2109876543) mod          -536870912  <>   -37607105 or
       intExpr(2109876543) mod          -268435456  <>   -37607105 or
       intExpr(2109876543) mod          -134217728  <>   -37607105 or
       intExpr(2109876543) mod           -67108864  <>   -37607105 or
       intExpr(2109876543) mod           -33554432  <>    -4052673 or
       intExpr(2109876543) mod           -16777216  <>    -4052673 or
       intExpr(2109876543) mod            -8388608  <>    -4052673 or
       intExpr(2109876543) mod            -4194304  <>    -4052673 or
       intExpr(2109876543) mod            -2097152  <>    -1955521 or
       intExpr(2109876543) mod            -1048576  <>     -906945 or
       intExpr(2109876543) mod             -524288  <>     -382657 or
       intExpr(2109876543) mod             -262144  <>     -120513 or
       intExpr(2109876543) mod             -131072  <>     -120513 or
       intExpr(2109876543) mod              -65536  <>      -54977 or
       intExpr(2109876543) mod              -32768  <>      -22209 or
       intExpr(2109876543) mod              -16384  <>       -5825 or
       intExpr(2109876543) mod               -8192  <>       -5825 or
       intExpr(2109876543) mod               -4096  <>       -1729 or
       intExpr(2109876543) mod               -2048  <>       -1729 or
       intExpr(2109876543) mod               -1024  <>        -705 or
       intExpr(2109876543) mod                -512  <>        -193 or
       intExpr(2109876543) mod                -256  <>        -193 or
       intExpr(2109876543) mod                -128  <>         -65 or
       intExpr(2109876543) mod                 -64  <>          -1 or
       intExpr(2109876543) mod                 -32  <>          -1 or
       intExpr(2109876543) mod                 -16  <>          -1 or
       intExpr(2109876543) mod                  -8  <>          -1 or
       intExpr(2109876543) mod                  -4  <>          -1 or
       intExpr(2109876543) mod                  -2  <>          -1 or
       intExpr(2109876543) mod                   2  <>           1 or
       intExpr(2109876543) mod                   4  <>           3 or
       intExpr(2109876543) mod                   8  <>           7 or
       intExpr(2109876543) mod                  16  <>          15 or
       intExpr(2109876543) mod                  32  <>          31 or
       intExpr(2109876543) mod                  64  <>          63 or
       intExpr(2109876543) mod                 128  <>          63 or
       intExpr(2109876543) mod                 256  <>          63 or
       intExpr(2109876543) mod                 512  <>         319 or
       intExpr(2109876543) mod                1024  <>         319 or
       intExpr(2109876543) mod                2048  <>         319 or
       intExpr(2109876543) mod                4096  <>        2367 or
       intExpr(2109876543) mod                8192  <>        2367 or
       intExpr(2109876543) mod               16384  <>       10559 or
       intExpr(2109876543) mod               32768  <>       10559 or
       intExpr(2109876543) mod               65536  <>       10559 or
       intExpr(2109876543) mod              131072  <>       10559 or
       intExpr(2109876543) mod              262144  <>      141631 or
       intExpr(2109876543) mod              524288  <>      141631 or
       intExpr(2109876543) mod             1048576  <>      141631 or
       intExpr(2109876543) mod             2097152  <>      141631 or
       intExpr(2109876543) mod             4194304  <>      141631 or
       intExpr(2109876543) mod             8388608  <>     4335935 or
       intExpr(2109876543) mod            16777216  <>    12724543 or
       intExpr(2109876543) mod            33554432  <>    29501759 or
       intExpr(2109876543) mod            67108864  <>    29501759 or
       intExpr(2109876543) mod           134217728  <>    96610623 or
       intExpr(2109876543) mod           268435456  <>   230828351 or
       intExpr(2109876543) mod           536870912  <>   499263807 or
       intExpr(2109876543) mod          1073741824  <>  1036134719 or
               2109876543  mod intExpr(  INT32_MIN) <>   -37607105 or
               2109876543  mod intExpr(-1073741824) <>   -37607105 or
               2109876543  mod intExpr( -536870912) <>   -37607105 or
               2109876543  mod intExpr( -268435456) <>   -37607105 or
               2109876543  mod intExpr( -134217728) <>   -37607105 or
               2109876543  mod intExpr(  -67108864) <>   -37607105 or
               2109876543  mod intExpr(  -33554432) <>    -4052673 or
               2109876543  mod intExpr(  -16777216) <>    -4052673 or
               2109876543  mod intExpr(   -8388608) <>    -4052673 or
               2109876543  mod intExpr(   -4194304) <>    -4052673 or
               2109876543  mod intExpr(   -2097152) <>    -1955521 or
               2109876543  mod intExpr(   -1048576) <>     -906945 or
               2109876543  mod intExpr(    -524288) <>     -382657 or
               2109876543  mod intExpr(    -262144) <>     -120513 or
               2109876543  mod intExpr(    -131072) <>     -120513 or
               2109876543  mod intExpr(     -65536) <>      -54977 or
               2109876543  mod intExpr(     -32768) <>      -22209 or
               2109876543  mod intExpr(     -16384) <>       -5825 or
               2109876543  mod intExpr(      -8192) <>       -5825 or
               2109876543  mod intExpr(      -4096) <>       -1729 or
               2109876543  mod intExpr(      -2048) <>       -1729 or
               2109876543  mod intExpr(      -1024) <>        -705 or
               2109876543  mod intExpr(       -512) <>        -193 or
               2109876543  mod intExpr(       -256) <>        -193 or
               2109876543  mod intExpr(       -128) <>         -65 or
               2109876543  mod intExpr(        -64) <>          -1 or
               2109876543  mod intExpr(        -32) <>          -1 or
               2109876543  mod intExpr(        -16) <>          -1 or
               2109876543  mod intExpr(         -8) <>          -1 or
               2109876543  mod intExpr(         -4) <>          -1 or
               2109876543  mod intExpr(         -2) <>          -1 or
               2109876543  mod intExpr(          2) <>           1 or
               2109876543  mod intExpr(          4) <>           3 or
               2109876543  mod intExpr(          8) <>           7 or
               2109876543  mod intExpr(         16) <>          15 or
               2109876543  mod intExpr(         32) <>          31 or
               2109876543  mod intExpr(         64) <>          63 or
               2109876543  mod intExpr(        128) <>          63 or
               2109876543  mod intExpr(        256) <>          63 or
               2109876543  mod intExpr(        512) <>         319 or
               2109876543  mod intExpr(       1024) <>         319 or
               2109876543  mod intExpr(       2048) <>         319 or
               2109876543  mod intExpr(       4096) <>        2367 or
               2109876543  mod intExpr(       8192) <>        2367 or
               2109876543  mod intExpr(      16384) <>       10559 or
               2109876543  mod intExpr(      32768) <>       10559 or
               2109876543  mod intExpr(      65536) <>       10559 or
               2109876543  mod intExpr(     131072) <>       10559 or
               2109876543  mod intExpr(     262144) <>      141631 or
               2109876543  mod intExpr(     524288) <>      141631 or
               2109876543  mod intExpr(    1048576) <>      141631 or
               2109876543  mod intExpr(    2097152) <>      141631 or
               2109876543  mod intExpr(    4194304) <>      141631 or
               2109876543  mod intExpr(    8388608) <>     4335935 or
               2109876543  mod intExpr(   16777216) <>    12724543 or
               2109876543  mod intExpr(   33554432) <>    29501759 or
               2109876543  mod intExpr(   67108864) <>    29501759 or
               2109876543  mod intExpr(  134217728) <>    96610623 or
               2109876543  mod intExpr(  268435456) <>   230828351 or
               2109876543  mod intExpr(  536870912) <>   499263807 or
               2109876543  mod intExpr( 1073741824) <>  1036134719 or
       intExpr(2109876543) mod intExpr(  INT32_MIN) <>   -37607105 or
       intExpr(2109876543) mod intExpr(-1073741824) <>   -37607105 or
       intExpr(2109876543) mod intExpr( -536870912) <>   -37607105 or
       intExpr(2109876543) mod intExpr( -268435456) <>   -37607105 or
       intExpr(2109876543) mod intExpr( -134217728) <>   -37607105 or
       intExpr(2109876543) mod intExpr(  -67108864) <>   -37607105 or
       intExpr(2109876543) mod intExpr(  -33554432) <>    -4052673 or
       intExpr(2109876543) mod intExpr(  -16777216) <>    -4052673 or
       intExpr(2109876543) mod intExpr(   -8388608) <>    -4052673 or
       intExpr(2109876543) mod intExpr(   -4194304) <>    -4052673 or
       intExpr(2109876543) mod intExpr(   -2097152) <>    -1955521 or
       intExpr(2109876543) mod intExpr(   -1048576) <>     -906945 or
       intExpr(2109876543) mod intExpr(    -524288) <>     -382657 or
       intExpr(2109876543) mod intExpr(    -262144) <>     -120513 or
       intExpr(2109876543) mod intExpr(    -131072) <>     -120513 or
       intExpr(2109876543) mod intExpr(     -65536) <>      -54977 or
       intExpr(2109876543) mod intExpr(     -32768) <>      -22209 or
       intExpr(2109876543) mod intExpr(     -16384) <>       -5825 or
       intExpr(2109876543) mod intExpr(      -8192) <>       -5825 or
       intExpr(2109876543) mod intExpr(      -4096) <>       -1729 or
       intExpr(2109876543) mod intExpr(      -2048) <>       -1729 or
       intExpr(2109876543) mod intExpr(      -1024) <>        -705 or
       intExpr(2109876543) mod intExpr(       -512) <>        -193 or
       intExpr(2109876543) mod intExpr(       -256) <>        -193 or
       intExpr(2109876543) mod intExpr(       -128) <>         -65 or
       intExpr(2109876543) mod intExpr(        -64) <>          -1 or
       intExpr(2109876543) mod intExpr(        -32) <>          -1 or
       intExpr(2109876543) mod intExpr(        -16) <>          -1 or
       intExpr(2109876543) mod intExpr(         -8) <>          -1 or
       intExpr(2109876543) mod intExpr(         -4) <>          -1 or
       intExpr(2109876543) mod intExpr(         -2) <>          -1 or
       intExpr(2109876543) mod intExpr(          2) <>           1 or
       intExpr(2109876543) mod intExpr(          4) <>           3 or
       intExpr(2109876543) mod intExpr(          8) <>           7 or
       intExpr(2109876543) mod intExpr(         16) <>          15 or
       intExpr(2109876543) mod intExpr(         32) <>          31 or
       intExpr(2109876543) mod intExpr(         64) <>          63 or
       intExpr(2109876543) mod intExpr(        128) <>          63 or
       intExpr(2109876543) mod intExpr(        256) <>          63 or
       intExpr(2109876543) mod intExpr(        512) <>         319 or
       intExpr(2109876543) mod intExpr(       1024) <>         319 or
       intExpr(2109876543) mod intExpr(       2048) <>         319 or
       intExpr(2109876543) mod intExpr(       4096) <>        2367 or
       intExpr(2109876543) mod intExpr(       8192) <>        2367 or
       intExpr(2109876543) mod intExpr(      16384) <>       10559 or
       intExpr(2109876543) mod intExpr(      32768) <>       10559 or
       intExpr(2109876543) mod intExpr(      65536) <>       10559 or
       intExpr(2109876543) mod intExpr(     131072) <>       10559 or
       intExpr(2109876543) mod intExpr(     262144) <>      141631 or
       intExpr(2109876543) mod intExpr(     524288) <>      141631 or
       intExpr(2109876543) mod intExpr(    1048576) <>      141631 or
       intExpr(2109876543) mod intExpr(    2097152) <>      141631 or
       intExpr(2109876543) mod intExpr(    4194304) <>      141631 or
       intExpr(2109876543) mod intExpr(    8388608) <>     4335935 or
       intExpr(2109876543) mod intExpr(   16777216) <>    12724543 or
       intExpr(2109876543) mod intExpr(   33554432) <>    29501759 or
       intExpr(2109876543) mod intExpr(   67108864) <>    29501759 or
       intExpr(2109876543) mod intExpr(  134217728) <>    96610623 or
       intExpr(2109876543) mod intExpr(  268435456) <>   230828351 or
       intExpr(2109876543) mod intExpr(  536870912) <>   499263807 or
       intExpr(2109876543) mod intExpr( 1073741824) <>  1036134719 then
      writeln(" ***** mod with powers of two 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 *:= 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
      if log2(power_of_two) <> number then
        write("log2(");
        write(power_of_two);
        write(") = ");
        write(log2(power_of_two));
        write(" instead of ");
        writeln(number);
        okay := FALSE;
      end if;
      if log2(pred(power_of_two)) <> pred(number) then
        write("log2(");
        write(pred(power_of_two));
        write(") = ");
        write(log2(pred(power_of_two)));
        write(" instead of ");
        writeln(pred(number));
        okay := FALSE;
      end if;
      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
    if lshift = 31 and number = 0 then
      # writeln(number <& " << " <& lshift);
      wrong := chkLShift(number, lshift, 0);
    elsif lshift = 31 and number = -1 then
      # writeln(number <& " << " <& lshift);
      wrong := chkLShift(number, lshift, INT32_MIN);
    elsif lshift <= 30 and
        number <= 2147483647 mdiv 2 ** lshift and
        number >= INT32_MIN mdiv 2 ** lshift then
      # writeln(number <& " << " <& lshift);
      wrong := chkLShift(number, lshift, number * 2 ** lshift);
    end if;
  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(         17, lshift) or
        chkLShift(         16, lshift) or
        chkLShift(         15, lshift) or
        chkLShift(         10, lshift) or
        chkLShift(          9, lshift) or
        chkLShift(          8, lshift) or
        chkLShift(          7, lshift) or
        chkLShift(          5, lshift) or
        chkLShift(          4, lshift) or
        chkLShift(          3, lshift) or
        chkLShift(          2, lshift) or
        chkLShift(          1, lshift) or
        chkLShift(          0, lshift) or
        chkLShift(         -1, lshift) or
        chkLShift(         -2, lshift) or
        chkLShift(         -3, lshift) or
        chkLShift(         -4, lshift) or
        chkLShift(         -5, lshift) or
        chkLShift(         -7, lshift) or
        chkLShift(         -8, lshift) or
        chkLShift(         -9, lshift) or
        chkLShift(        -10, lshift) or
        chkLShift(        -15, lshift) or
        chkLShift(        -16, lshift) or
        chkLShift(        -17, 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  (1000000 radix  2) <> "11110100001001000000" or
        (1000000 radix  3) <> "1212210202001" or
        (1000000 radix  4) <> "3310021000" or
        (1000000 radix  5) <> "224000000" or
        (1000000 radix  6) <> "33233344" or
        (1000000 radix  7) <> "11333311" or
        (1000000 radix  8) <> "3641100" or
        (1000000 radix  9) <> "1783661" or
        (1000000 radix 10) <> "1000000" or
        (1000000 radix 11) <> "623351" or
        (1000000 radix 12) <> "402854" or
        (1000000 radix 13) <> "290221" or
        (1000000 radix 14) <> "1c0608" or
        (1000000 radix 15) <> "14b46a" or
        (1000000 radix 16) <> "f4240" or
        (1000000 radix 17) <> "bg939" or
        (1000000 radix 18) <> "9987a" or
        (1000000 radix 19) <> "7cf1b" or
        (1000000 radix 20) <> "65000" or
        (1000000 radix 21) <> "52kc1" or
        (1000000 radix 22) <> "45k2c" or
        (1000000 radix 23) <> "3d486" or
        (1000000 radix 24) <> "3082g" or
        (1000000 radix 25) <> "2e000" or
        (1000000 radix 26) <> "24n7e" or
        (1000000 radix 27) <> "1nlk1" or
        (1000000 radix 28) <> "1hfe8" or
        (1000000 radix 29) <> "1c01m" or
        (1000000 radix 30) <> "1713a" or
        (1000000 radix 31) <> "12hi2" or
        (1000000 radix 32) <> "ugi0" or
        (1000000 radix 33) <> "rr91" or
        (1000000 radix 34) <> "pf1q" or
        (1000000 radix 35) <> "nbbf" or
        (1000000 radix 36) <> "lfls" then
      writeln(" ***** The radix operator does not work correct.");
      okay := FALSE;
    end if;
    if  (intExpr(1000000) radix  2) <> "11110100001001000000" or
        (intExpr(1000000) radix  3) <> "1212210202001" or
        (intExpr(1000000) radix  4) <> "3310021000" or
        (intExpr(1000000) radix  5) <> "224000000" or
        (intExpr(1000000) radix  6) <> "33233344" or
        (intExpr(1000000) radix  7) <> "11333311" or
        (intExpr(1000000) radix  8) <> "3641100" or
        (intExpr(1000000) radix  9) <> "1783661" or
        (intExpr(1000000) radix 10) <> "1000000" or
        (intExpr(1000000) radix 11) <> "623351" or
        (intExpr(1000000) radix 12) <> "402854" or
        (intExpr(1000000) radix 13) <> "290221" or
        (intExpr(1000000) radix 14) <> "1c0608" or
        (intExpr(1000000) radix 15) <> "14b46a" or
        (intExpr(1000000) radix 16) <> "f4240" or
        (intExpr(1000000) radix 17) <> "bg939" or
        (intExpr(1000000) radix 18) <> "9987a" or
        (intExpr(1000000) radix 19) <> "7cf1b" or
        (intExpr(1000000) radix 20) <> "65000" or
        (intExpr(1000000) radix 21) <> "52kc1" or
        (intExpr(1000000) radix 22) <> "45k2c" or
        (intExpr(1000000) radix 23) <> "3d486" or
        (intExpr(1000000) radix 24) <> "3082g" or
        (intExpr(1000000) radix 25) <> "2e000" or
        (intExpr(1000000) radix 26) <> "24n7e" or
        (intExpr(1000000) radix 27) <> "1nlk1" or
        (intExpr(1000000) radix 28) <> "1hfe8" or
        (intExpr(1000000) radix 29) <> "1c01m" or
        (intExpr(1000000) radix 30) <> "1713a" or
        (intExpr(1000000) radix 31) <> "12hi2" or
        (intExpr(1000000) radix 32) <> "ugi0" or
        (intExpr(1000000) radix 33) <> "rr91" or
        (intExpr(1000000) radix 34) <> "pf1q" or
        (intExpr(1000000) radix 35) <> "nbbf" or
        (intExpr(1000000) radix 36) <> "lfls" then
      writeln(" ***** The radix operator does not work correct.");
      okay := FALSE;
    end if;
    if  (1000000 radix intExpr( 2)) <> "11110100001001000000" or
        (1000000 radix intExpr( 3)) <> "1212210202001" or
        (1000000 radix intExpr( 4)) <> "3310021000" or
        (1000000 radix intExpr( 5)) <> "224000000" or
        (1000000 radix intExpr( 6)) <> "33233344" or
        (1000000 radix intExpr( 7)) <> "11333311" or
        (1000000 radix intExpr( 8)) <> "3641100" or
        (1000000 radix intExpr( 9)) <> "1783661" or
        (1000000 radix intExpr(10)) <> "1000000" or
        (1000000 radix intExpr(11)) <> "623351" or
        (1000000 radix intExpr(12)) <> "402854" or
        (1000000 radix intExpr(13)) <> "290221" or
        (1000000 radix intExpr(14)) <> "1c0608" or
        (1000000 radix intExpr(15)) <> "14b46a" or
        (1000000 radix intExpr(16)) <> "f4240" or
        (1000000 radix intExpr(17)) <> "bg939" or
        (1000000 radix intExpr(18)) <> "9987a" or
        (1000000 radix intExpr(19)) <> "7cf1b" or
        (1000000 radix intExpr(20)) <> "65000" or
        (1000000 radix intExpr(21)) <> "52kc1" or
        (1000000 radix intExpr(22)) <> "45k2c" or
        (1000000 radix intExpr(23)) <> "3d486" or
        (1000000 radix intExpr(24)) <> "3082g" or
        (1000000 radix intExpr(25)) <> "2e000" or
        (1000000 radix intExpr(26)) <> "24n7e" or
        (1000000 radix intExpr(27)) <> "1nlk1" or
        (1000000 radix intExpr(28)) <> "1hfe8" or
        (1000000 radix intExpr(29)) <> "1c01m" or
        (1000000 radix intExpr(30)) <> "1713a" or
        (1000000 radix intExpr(31)) <> "12hi2" or
        (1000000 radix intExpr(32)) <> "ugi0" or
        (1000000 radix intExpr(33)) <> "rr91" or
        (1000000 radix intExpr(34)) <> "pf1q" or
        (1000000 radix intExpr(35)) <> "nbbf" or
        (1000000 radix intExpr(36)) <> "lfls" then
      writeln(" ***** The radix operator does not work correct.");
      okay := FALSE;
    end if;
    if  (intExpr(1000000) radix intExpr( 2)) <> "11110100001001000000" or
        (intExpr(1000000) radix intExpr( 3)) <> "1212210202001" or
        (intExpr(1000000) radix intExpr( 4)) <> "3310021000" or
        (intExpr(1000000) radix intExpr( 5)) <> "224000000" or
        (intExpr(1000000) radix intExpr( 6)) <> "33233344" or
        (intExpr(1000000) radix intExpr( 7)) <> "11333311" or
        (intExpr(1000000) radix intExpr( 8)) <> "3641100" or
        (intExpr(1000000) radix intExpr( 9)) <> "1783661" or
        (intExpr(1000000) radix intExpr(10)) <> "1000000" or
        (intExpr(1000000) radix intExpr(11)) <> "623351" or
        (intExpr(1000000) radix intExpr(12)) <> "402854" or
        (intExpr(1000000) radix intExpr(13)) <> "290221" or
        (intExpr(1000000) radix intExpr(14)) <> "1c0608" or
        (intExpr(1000000) radix intExpr(15)) <> "14b46a" or
        (intExpr(1000000) radix intExpr(16)) <> "f4240" or
        (intExpr(1000000) radix intExpr(17)) <> "bg939" or
        (intExpr(1000000) radix intExpr(18)) <> "9987a" or
        (intExpr(1000000) radix intExpr(19)) <> "7cf1b" or
        (intExpr(1000000) radix intExpr(20)) <> "65000" or
        (intExpr(1000000) radix intExpr(21)) <> "52kc1" or
        (intExpr(1000000) radix intExpr(22)) <> "45k2c" or
        (intExpr(1000000) radix intExpr(23)) <> "3d486" or
        (intExpr(1000000) radix intExpr(24)) <> "3082g" or
        (intExpr(1000000) radix intExpr(25)) <> "2e000" or
        (intExpr(1000000) radix intExpr(26)) <> "24n7e" or
        (intExpr(1000000) radix intExpr(27)) <> "1nlk1" or
        (intExpr(1000000) radix intExpr(28)) <> "1hfe8" or
        (intExpr(1000000) radix intExpr(29)) <> "1c01m" or
        (intExpr(1000000) radix intExpr(30)) <> "1713a" or
        (intExpr(1000000) radix intExpr(31)) <> "12hi2" or
        (intExpr(1000000) radix intExpr(32)) <> "ugi0" or
        (intExpr(1000000) radix intExpr(33)) <> "rr91" or
        (intExpr(1000000) radix intExpr(34)) <> "pf1q" or
        (intExpr(1000000) radix intExpr(35)) <> "nbbf" or
        (intExpr(1000000) radix intExpr(36)) <> "lfls" then
      writeln(" ***** The radix operator does not work correct.");
      okay := FALSE;
    end if;
    if  (1000000 RADIX  2) <> "11110100001001000000" or
        (1000000 RADIX  3) <> "1212210202001" or
        (1000000 RADIX  4) <> "3310021000" or
        (1000000 RADIX  5) <> "224000000" or
        (1000000 RADIX  6) <> "33233344" or
        (1000000 RADIX  7) <> "11333311" or
        (1000000 RADIX  8) <> "3641100" or
        (1000000 RADIX  9) <> "1783661" or
        (1000000 RADIX 10) <> "1000000" or
        (1000000 RADIX 11) <> "623351" or
        (1000000 RADIX 12) <> "402854" or
        (1000000 RADIX 13) <> "290221" or
        (1000000 RADIX 14) <> "1C0608" or
        (1000000 RADIX 15) <> "14B46A" or
        (1000000 RADIX 16) <> "F4240" or
        (1000000 RADIX 17) <> "BG939" or
        (1000000 RADIX 18) <> "9987A" or
        (1000000 RADIX 19) <> "7CF1B" or
        (1000000 RADIX 20) <> "65000" or
        (1000000 RADIX 21) <> "52KC1" or
        (1000000 RADIX 22) <> "45K2C" or
        (1000000 RADIX 23) <> "3D486" or
        (1000000 RADIX 24) <> "3082G" or
        (1000000 RADIX 25) <> "2E000" or
        (1000000 RADIX 26) <> "24N7E" or
        (1000000 RADIX 27) <> "1NLK1" or
        (1000000 RADIX 28) <> "1HFE8" or
        (1000000 RADIX 29) <> "1C01M" or
        (1000000 RADIX 30) <> "1713A" or
        (1000000 RADIX 31) <> "12HI2" or
        (1000000 RADIX 32) <> "UGI0" or
        (1000000 RADIX 33) <> "RR91" or
        (1000000 RADIX 34) <> "PF1Q" or
        (1000000 RADIX 35) <> "NBBF" or
        (1000000 RADIX 36) <> "LFLS" then
      writeln(" ***** The RADIX operator does not work correct.");
      okay := FALSE;
    end if;
    if  (intExpr(1000000) RADIX  2) <> "11110100001001000000" or
        (intExpr(1000000) RADIX  3) <> "1212210202001" or
        (intExpr(1000000) RADIX  4) <> "3310021000" or
        (intExpr(1000000) RADIX  5) <> "224000000" or
        (intExpr(1000000) RADIX  6) <> "33233344" or
        (intExpr(1000000) RADIX  7) <> "11333311" or
        (intExpr(1000000) RADIX  8) <> "3641100" or
        (intExpr(1000000) RADIX  9) <> "1783661" or
        (intExpr(1000000) RADIX 10) <> "1000000" or
        (intExpr(1000000) RADIX 11) <> "623351" or
        (intExpr(1000000) RADIX 12) <> "402854" or
        (intExpr(1000000) RADIX 13) <> "290221" or
        (intExpr(1000000) RADIX 14) <> "1C0608" or
        (intExpr(1000000) RADIX 15) <> "14B46A" or
        (intExpr(1000000) RADIX 16) <> "F4240" or
        (intExpr(1000000) RADIX 17) <> "BG939" or
        (intExpr(1000000) RADIX 18) <> "9987A" or
        (intExpr(1000000) RADIX 19) <> "7CF1B" or
        (intExpr(1000000) RADIX 20) <> "65000" or
        (intExpr(1000000) RADIX 21) <> "52KC1" or
        (intExpr(1000000) RADIX 22) <> "45K2C" or
        (intExpr(1000000) RADIX 23) <> "3D486" or
        (intExpr(1000000) RADIX 24) <> "3082G" or
        (intExpr(1000000) RADIX 25) <> "2E000" or
        (intExpr(1000000) RADIX 26) <> "24N7E" or
        (intExpr(1000000) RADIX 27) <> "1NLK1" or
        (intExpr(1000000) RADIX 28) <> "1HFE8" or
        (intExpr(1000000) RADIX 29) <> "1C01M" or
        (intExpr(1000000) RADIX 30) <> "1713A" or
        (intExpr(1000000) RADIX 31) <> "12HI2" or
        (intExpr(1000000) RADIX 32) <> "UGI0" or
        (intExpr(1000000) RADIX 33) <> "RR91" or
        (intExpr(1000000) RADIX 34) <> "PF1Q" or
        (intExpr(1000000) RADIX 35) <> "NBBF" or
        (intExpr(1000000) RADIX 36) <> "LFLS" then
      writeln(" ***** The RADIX operator does not work correct.");
      okay := FALSE;
    end if;
    if  (1000000 RADIX intExpr( 2)) <> "11110100001001000000" or
        (1000000 RADIX intExpr( 3)) <> "1212210202001" or
        (1000000 RADIX intExpr( 4)) <> "3310021000" or
        (1000000 RADIX intExpr( 5)) <> "224000000" or
        (1000000 RADIX intExpr( 6)) <> "33233344" or
        (1000000 RADIX intExpr( 7)) <> "11333311" or
        (1000000 RADIX intExpr( 8)) <> "3641100" or
        (1000000 RADIX intExpr( 9)) <> "1783661" or
        (1000000 RADIX intExpr(10)) <> "1000000" or
        (1000000 RADIX intExpr(11)) <> "623351" or
        (1000000 RADIX intExpr(12)) <> "402854" or
        (1000000 RADIX intExpr(13)) <> "290221" or
        (1000000 RADIX intExpr(14)) <> "1C0608" or
        (1000000 RADIX intExpr(15)) <> "14B46A" or
        (1000000 RADIX intExpr(16)) <> "F4240" or
        (1000000 RADIX intExpr(17)) <> "BG939" or
        (1000000 RADIX intExpr(18)) <> "9987A" or
        (1000000 RADIX intExpr(19)) <> "7CF1B" or
        (1000000 RADIX intExpr(20)) <> "65000" or
        (1000000 RADIX intExpr(21)) <> "52KC1" or
        (1000000 RADIX intExpr(22)) <> "45K2C" or
        (1000000 RADIX intExpr(23)) <> "3D486" or
        (1000000 RADIX intExpr(24)) <> "3082G" or
        (1000000 RADIX intExpr(25)) <> "2E000" or
        (1000000 RADIX intExpr(26)) <> "24N7E" or
        (1000000 RADIX intExpr(27)) <> "1NLK1" or
        (1000000 RADIX intExpr(28)) <> "1HFE8" or
        (1000000 RADIX intExpr(29)) <> "1C01M" or
        (1000000 RADIX intExpr(30)) <> "1713A" or
        (1000000 RADIX intExpr(31)) <> "12HI2" or
        (1000000 RADIX intExpr(32)) <> "UGI0" or
        (1000000 RADIX intExpr(33)) <> "RR91" or
        (1000000 RADIX intExpr(34)) <> "PF1Q" or
        (1000000 RADIX intExpr(35)) <> "NBBF" or
        (1000000 RADIX intExpr(36)) <> "LFLS" then
      writeln(" ***** The RADIX operator does not work correct.");
      okay := FALSE;
    end if;
    if  (intExpr(1000000) RADIX intExpr( 2)) <> "11110100001001000000" or
        (intExpr(1000000) RADIX intExpr( 3)) <> "1212210202001" or
        (intExpr(1000000) RADIX intExpr( 4)) <> "3310021000" or
        (intExpr(1000000) RADIX intExpr( 5)) <> "224000000" or
        (intExpr(1000000) RADIX intExpr( 6)) <> "33233344" or
        (intExpr(1000000) RADIX intExpr( 7)) <> "11333311" or
        (intExpr(1000000) RADIX intExpr( 8)) <> "3641100" or
        (intExpr(1000000) RADIX intExpr( 9)) <> "1783661" or
        (intExpr(1000000) RADIX intExpr(10)) <> "1000000" or
        (intExpr(1000000) RADIX intExpr(11)) <> "623351" or
        (intExpr(1000000) RADIX intExpr(12)) <> "402854" or
        (intExpr(1000000) RADIX intExpr(13)) <> "290221" or
        (intExpr(1000000) RADIX intExpr(14)) <> "1C0608" or
        (intExpr(1000000) RADIX intExpr(15)) <> "14B46A" or
        (intExpr(1000000) RADIX intExpr(16)) <> "F4240" or
        (intExpr(1000000) RADIX intExpr(17)) <> "BG939" or
        (intExpr(1000000) RADIX intExpr(18)) <> "9987A" or
        (intExpr(1000000) RADIX intExpr(19)) <> "7CF1B" or
        (intExpr(1000000) RADIX intExpr(20)) <> "65000" or
        (intExpr(1000000) RADIX intExpr(21)) <> "52KC1" or
        (intExpr(1000000) RADIX intExpr(22)) <> "45K2C" or
        (intExpr(1000000) RADIX intExpr(23)) <> "3D486" or
        (intExpr(1000000) RADIX intExpr(24)) <> "3082G" or
        (intExpr(1000000) RADIX intExpr(25)) <> "2E000" or
        (intExpr(1000000) RADIX intExpr(26)) <> "24N7E" or
        (intExpr(1000000) RADIX intExpr(27)) <> "1NLK1" or
        (intExpr(1000000) RADIX intExpr(28)) <> "1HFE8" or
        (intExpr(1000000) RADIX intExpr(29)) <> "1C01M" or
        (intExpr(1000000) RADIX intExpr(30)) <> "1713A" or
        (intExpr(1000000) RADIX intExpr(31)) <> "12HI2" or
        (intExpr(1000000) RADIX intExpr(32)) <> "UGI0" or
        (intExpr(1000000) RADIX intExpr(33)) <> "RR91" or
        (intExpr(1000000) RADIX intExpr(34)) <> "PF1Q" or
        (intExpr(1000000) RADIX intExpr(35)) <> "NBBF" or
        (intExpr(1000000) RADIX intExpr(36)) <> "LFLS" then
      writeln(" ***** The RADIX operator 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          "+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 plus sign 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  integer("11110100001001000000", 2)  <>  1000000 or
        integer("1212210202001", 3)         <>  1000000 or
        integer("3310021000", 4)            <>  1000000 or
        integer("224000000", 5)             <>  1000000 or
        integer("33233344", 6)              <>  1000000 or
        integer("11333311", 7)              <>  1000000 or
        integer("3641100", 8)               <>  1000000 or
        integer("1783661", 9)               <>  1000000 or
        integer("1000000", 10)              <>  1000000 or
        integer("623351", 11)               <>  1000000 or
        integer("402854", 12)               <>  1000000 or
        integer("290221", 13)               <>  1000000 or
        integer("1C0608", 14)               <>  1000000 or
        integer("14B46A", 15)               <>  1000000 or
        integer("F4240", 16)                <>  1000000 or
        integer("BG939", 17)                <>  1000000 or
        integer("9987A", 18)                <>  1000000 or
        integer("7CF1B", 19)                <>  1000000 or
        integer("65000", 20)                <>  1000000 or
        integer("52KC1", 21)                <>  1000000 or
        integer("45K2C", 22)                <>  1000000 or
        integer("3D486", 23)                <>  1000000 or
        integer("3082G", 24)                <>  1000000 or
        integer("2E000", 25)                <>  1000000 or
        integer("24N7E", 26)                <>  1000000 or
        integer("1NLK1", 27)                <>  1000000 or
        integer("1HFE8", 28)                <>  1000000 or
        integer("1C01M", 29)                <>  1000000 or
        integer("1713A", 30)                <>  1000000 or
        integer("12HI2", 31)                <>  1000000 or
        integer("UGI0", 32)                 <>  1000000 or
        integer("RR91", 33)                 <>  1000000 or
        integer("PF1Q", 34)                 <>  1000000 or
        integer("NBBF", 35)                 <>  1000000 or
        integer("LFLS", 36)                 <>  1000000 or
        integer("+11110100001001000000", 2) <>  1000000 or
        integer("+1212210202001", 3)        <>  1000000 or
        integer("+3310021000", 4)           <>  1000000 or
        integer("+224000000", 5)            <>  1000000 or
        integer("+33233344", 6)             <>  1000000 or
        integer("+11333311", 7)             <>  1000000 or
        integer("+3641100", 8)              <>  1000000 or
        integer("+1783661", 9)              <>  1000000 or
        integer("+1000000", 10)             <>  1000000 or
        integer("+623351", 11)              <>  1000000 or
        integer("+402854", 12)              <>  1000000 or
        integer("+290221", 13)              <>  1000000 or
        integer("+1C0608", 14)              <>  1000000 or
        integer("+14B46A", 15)              <>  1000000 or
        integer("+F4240", 16)               <>  1000000 or
        integer("+BG939", 17)               <>  1000000 or
        integer("+9987A", 18)               <>  1000000 or
        integer("+7CF1B", 19)               <>  1000000 or
        integer("+65000", 20)               <>  1000000 or
        integer("+52KC1", 21)               <>  1000000 or
        integer("+45K2C", 22)               <>  1000000 or
        integer("+3D486", 23)               <>  1000000 or
        integer("+3082G", 24)               <>  1000000 or
        integer("+2E000", 25)               <>  1000000 or
        integer("+24N7E", 26)               <>  1000000 or
        integer("+1NLK1", 27)               <>  1000000 or
        integer("+1HFE8", 28)               <>  1000000 or
        integer("+1C01M", 29)               <>  1000000 or
        integer("+1713A", 30)               <>  1000000 or
        integer("+12HI2", 31)               <>  1000000 or
        integer("+UGI0", 32)                <>  1000000 or
        integer("+RR91", 33)                <>  1000000 or
        integer("+PF1Q", 34)                <>  1000000 or
        integer("+NBBF", 35)                <>  1000000 or
        integer("+LFLS", 36)                <>  1000000 or
        integer("-11110100001001000000", 2) <> -1000000 or
        integer("-1212210202001", 3)        <> -1000000 or
        integer("-3310021000", 4)           <> -1000000 or
        integer("-224000000", 5)            <> -1000000 or
        integer("-33233344", 6)             <> -1000000 or
        integer("-11333311", 7)             <> -1000000 or
        integer("-3641100", 8)              <> -1000000 or
        integer("-1783661", 9)              <> -1000000 or
        integer("-1000000", 10)             <> -1000000 or
        integer("-623351", 11)              <> -1000000 or
        integer("-402854", 12)              <> -1000000 or
        integer("-290221", 13)              <> -1000000 or
        integer("-1C0608", 14)              <> -1000000 or
        integer("-14B46A", 15)              <> -1000000 or
        integer("-F4240", 16)               <> -1000000 or
        integer("-BG939", 17)               <> -1000000 or
        integer("-9987A", 18)               <> -1000000 or
        integer("-7CF1B", 19)               <> -1000000 or
        integer("-65000", 20)               <> -1000000 or
        integer("-52KC1", 21)               <> -1000000 or
        integer("-45K2C", 22)               <> -1000000 or
        integer("-3D486", 23)               <> -1000000 or
        integer("-3082G", 24)               <> -1000000 or
        integer("-2E000", 25)               <> -1000000 or
        integer("-24N7E", 26)               <> -1000000 or
        integer("-1NLK1", 27)               <> -1000000 or
        integer("-1HFE8", 28)               <> -1000000 or
        integer("-1C01M", 29)               <> -1000000 or
        integer("-1713A", 30)               <> -1000000 or
        integer("-12HI2", 31)               <> -1000000 or
        integer("-UGI0", 32)                <> -1000000 or
        integer("-RR91", 33)                <> -1000000 or
        integer("-PF1Q", 34)                <> -1000000 or
        integer("-NBBF", 35)                <> -1000000 or
        integer("-LFLS", 36)                <> -1000000 then
      writeln(" ***** Conversion of numeric string with specified radix 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;
    check_based_integer_literal;
    check_bytesBe;
    check_bytesLe;
    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;
