
(********************************************************************)
(*                                                                  *)
(*  chkidx.sd7    Checks the exception INDEX_ERROR.                 *)
(*  Copyright (C) 2020 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";


const func string: striExpr (in string: stri) is
  return stri & str(rand(1, 9))[2 ..];


const func integer: intExpr (in integer: number) is
  return number + length(str(rand(1, 9))[2 ..]);


const func char: charExpr (in char: ch) is
  return chr(ord(ch) + length(str(rand(1, 9))[2 ..]));


const func boolean: raisesIndexError (ref proc: statement) is func
  result
    var boolean: raisesIndexError is FALSE;
  begin
    block
      statement;
    exception
      catch INDEX_ERROR:
        raisesIndexError := TRUE;
    end block;
  end func;


const func boolean: raisesIndexError (ref func char: expression) is func
  result
    var boolean: raisesIndexError is FALSE;
  local
    var char: exprResult is ' ';
  begin
    block
      exprResult := expression;
    exception
      catch INDEX_ERROR:
        raisesIndexError := TRUE;
    end block;
  end func;


const func boolean: raisesIndexError (ref func string: expression) is func
  result
    var boolean: raisesIndexError is FALSE;
  local
    var string: exprResult is "";
  begin
    block
      exprResult := expression;
    exception
      catch INDEX_ERROR:
        raisesIndexError := TRUE;
    end block;
  end func;


const proc: check_string_index is func
  local
    var boolean: okay is TRUE;
  begin
    if  not raisesIndexError("" [integer.first]) or
        not raisesIndexError("" [           -2]) or
        not raisesIndexError("" [           -1]) or
        not raisesIndexError("" [            0]) or
        not raisesIndexError("" [            1]) or
        not raisesIndexError("" [            2]) or
        not raisesIndexError("" [ integer.last]) or
        not raisesIndexError(striExpr("") [integer.first]) or
        not raisesIndexError(striExpr("") [           -2]) or
        not raisesIndexError(striExpr("") [           -1]) or
        not raisesIndexError(striExpr("") [            0]) or
        not raisesIndexError(striExpr("") [            1]) or
        not raisesIndexError(striExpr("") [            2]) or
        not raisesIndexError(striExpr("") [ integer.last]) or
        not raisesIndexError("" [intExpr(integer.first)]) or
        not raisesIndexError("" [intExpr(           -2)]) or
        not raisesIndexError("" [intExpr(           -1)]) or
        not raisesIndexError("" [intExpr(            0)]) or
        not raisesIndexError("" [intExpr(            1)]) or
        not raisesIndexError("" [intExpr(            2)]) or
        not raisesIndexError("" [intExpr( integer.last)]) or
        not raisesIndexError(striExpr("") [intExpr(integer.first)]) or
        not raisesIndexError(striExpr("") [intExpr(           -2)]) or
        not raisesIndexError(striExpr("") [intExpr(           -1)]) or
        not raisesIndexError(striExpr("") [intExpr(            0)]) or
        not raisesIndexError(striExpr("") [intExpr(            1)]) or
        not raisesIndexError(striExpr("") [intExpr(            2)]) or
        not raisesIndexError(striExpr("") [intExpr( integer.last)]) then
      writeln(" ***** String indexing outside of string does not raise INDEX_ERROR. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("1" [integer.first]) or
        not raisesIndexError("1" [           -2]) or
        not raisesIndexError("1" [           -1]) or
        not raisesIndexError("1" [            0]) or
        not raisesIndexError("1" [            2]) or
        not raisesIndexError("1" [            3]) or
        not raisesIndexError("1" [ integer.last]) or
        not raisesIndexError(striExpr("1") [integer.first]) or
        not raisesIndexError(striExpr("1") [           -2]) or
        not raisesIndexError(striExpr("1") [           -1]) or
        not raisesIndexError(striExpr("1") [            0]) or
        not raisesIndexError(striExpr("1") [            2]) or
        not raisesIndexError(striExpr("1") [            3]) or
        not raisesIndexError(striExpr("1") [ integer.last]) or
        not raisesIndexError("1" [intExpr(integer.first)]) or
        not raisesIndexError("1" [intExpr(           -2)]) or
        not raisesIndexError("1" [intExpr(           -1)]) or
        not raisesIndexError("1" [intExpr(            0)]) or
        not raisesIndexError("1" [intExpr(            2)]) or
        not raisesIndexError("1" [intExpr(            3)]) or
        not raisesIndexError("1" [intExpr( integer.last)]) or
        not raisesIndexError(striExpr("1") [intExpr(integer.first)]) or
        not raisesIndexError(striExpr("1") [intExpr(           -2)]) or
        not raisesIndexError(striExpr("1") [intExpr(           -1)]) or
        not raisesIndexError(striExpr("1") [intExpr(            0)]) or
        not raisesIndexError(striExpr("1") [intExpr(            2)]) or
        not raisesIndexError(striExpr("1") [intExpr(            3)]) or
        not raisesIndexError(striExpr("1") [intExpr( integer.last)]) then
      writeln(" ***** String indexing outside of string does not raise INDEX_ERROR. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("1234567890" [integer.first]) or
        not raisesIndexError("1234567890" [           -2]) or
        not raisesIndexError("1234567890" [           -1]) or
        not raisesIndexError("1234567890" [            0]) or
        not raisesIndexError("1234567890" [           11]) or
        not raisesIndexError("1234567890" [           12]) or
        not raisesIndexError("1234567890" [ integer.last]) or
        not raisesIndexError(striExpr("1234567890") [integer.first]) or
        not raisesIndexError(striExpr("1234567890") [           -2]) or
        not raisesIndexError(striExpr("1234567890") [           -1]) or
        not raisesIndexError(striExpr("1234567890") [            0]) or
        not raisesIndexError(striExpr("1234567890") [           11]) or
        not raisesIndexError(striExpr("1234567890") [           12]) or
        not raisesIndexError(striExpr("1234567890") [ integer.last]) or
        not raisesIndexError("1234567890" [intExpr(integer.first)]) or
        not raisesIndexError("1234567890" [intExpr(           -2)]) or
        not raisesIndexError("1234567890" [intExpr(           -1)]) or
        not raisesIndexError("1234567890" [intExpr(            0)]) or
        not raisesIndexError("1234567890" [intExpr(           11)]) or
        not raisesIndexError("1234567890" [intExpr(           12)]) or
        not raisesIndexError("1234567890" [intExpr( integer.last)]) or
        not raisesIndexError(striExpr("1234567890") [intExpr(integer.first)]) or
        not raisesIndexError(striExpr("1234567890") [intExpr(           -2)]) or
        not raisesIndexError(striExpr("1234567890") [intExpr(           -1)]) or
        not raisesIndexError(striExpr("1234567890") [intExpr(            0)]) or
        not raisesIndexError(striExpr("1234567890") [intExpr(           11)]) or
        not raisesIndexError(striExpr("1234567890") [intExpr(           12)]) or
        not raisesIndexError(striExpr("1234567890") [intExpr( integer.last)]) then
      writeln(" ***** String indexing outside of string does not raise INDEX_ERROR. (3)");
      okay := FALSE;
    end if;

    if okay then
      writeln("Index checking for string indexing works correct.");
    end if;
  end func;


const func string: headOfEmptyString (in integer: stop) is
  return ""[ .. stop];


const func string: headOfString1 (in integer: stop) is
  return "1"[ .. stop];


const func string: headFunction (in integer: stop) is
  return "1234567890"[ .. stop];


const func string: headFunction (in string: stri, in integer: stop) is
  return stri[ .. stop];


const proc: check_string_head is func
  local
    var boolean: okay is TRUE;
    var boolean: ok is TRUE;
    var string: stri is "";
  begin
    if  not raisesIndexError("" [ .. integer.first ]) or
        not raisesIndexError("" [ ..            -5 ]) or
        not raisesIndexError("" [ ..            -1 ]) or
        not raisesIndexError("1" [ .. integer.first ]) or
        not raisesIndexError("1" [ ..            -5 ]) or
        not raisesIndexError("1" [ ..            -1 ]) or
        not raisesIndexError("1234567890" [ .. integer.first ]) or
        not raisesIndexError("1234567890" [ ..            -5 ]) or
        not raisesIndexError("1234567890" [ ..            -1 ]) then
      writeln(" ***** STRING [ .. STOP ] does not work correct. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [ .. intExpr(integer.first) ]) or
        not raisesIndexError("" [ .. intExpr(           -5) ]) or
        not raisesIndexError("" [ .. intExpr(           -1) ]) or
        not raisesIndexError("1" [ .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ .. intExpr(           -1) ]) then
      writeln(" ***** STRING [ .. STOP ] does not work correct. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ .. integer.first ]) or
        not raisesIndexError(striExpr("") [ ..            -5 ]) or
        not raisesIndexError(striExpr("") [ ..            -1 ]) or
        not raisesIndexError(striExpr("1") [ .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ ..            -1 ]) then
      writeln(" ***** STRING [ .. STOP ] does not work correct. (3)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ .. intExpr(           -1) ]) then
      writeln(" ***** STRING [ .. STOP ] does not work correct. (4)");
      okay := FALSE;
    end if;

    ok := raisesIndexError(stri := "" [ .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ ..            -1 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ .. STOP ] does not work correct. (1)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := "" [ .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ .. intExpr(           -1) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ .. STOP ] does not work correct. (2)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ ..            -1 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ .. STOP ] does not work correct. (3)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ .. intExpr(           -1) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ .. STOP ] does not work correct. (4)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(headOfEmptyString(integer.first)) or
        not raisesIndexError(headOfEmptyString(           -5)) or
        not raisesIndexError(headOfEmptyString(           -1)) or
        not raisesIndexError(headOfEmptyString(intExpr(integer.first))) or
        not raisesIndexError(headOfEmptyString(intExpr(           -5))) or
        not raisesIndexError(headOfEmptyString(intExpr(           -1))) then
      writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(headOfString1(integer.first)) or
        not raisesIndexError(headOfString1(           -5)) or
        not raisesIndexError(headOfString1(           -1)) or
        not raisesIndexError(headOfString1(intExpr(integer.first))) or
        not raisesIndexError(headOfString1(intExpr(           -5))) or
        not raisesIndexError(headOfString1(intExpr(           -1))) then
      writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(headFunction(integer.first)) or
        not raisesIndexError(headFunction(           -5)) or
        not raisesIndexError(headFunction(           -1)) or
        not raisesIndexError(headFunction(intExpr(integer.first))) or
        not raisesIndexError(headFunction(intExpr(           -5))) or
        not raisesIndexError(headFunction(intExpr(           -1))) then
      writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (3)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(headFunction("", integer.first)) or
        not raisesIndexError(headFunction("",            -5)) or
        not raisesIndexError(headFunction("",            -1)) or
        not raisesIndexError(headFunction("1", integer.first)) or
        not raisesIndexError(headFunction("1",            -5)) or
        not raisesIndexError(headFunction("1",            -1)) or
        not raisesIndexError(headFunction("1234567890", integer.first)) or
        not raisesIndexError(headFunction("1234567890",            -5)) or
        not raisesIndexError(headFunction("1234567890",            -1)) then
      writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (5)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(headFunction("", intExpr(integer.first))) or
        not raisesIndexError(headFunction("", intExpr(           -5))) or
        not raisesIndexError(headFunction("", intExpr(           -1))) or
        not raisesIndexError(headFunction("1", intExpr(integer.first))) or
        not raisesIndexError(headFunction("1", intExpr(           -5))) or
        not raisesIndexError(headFunction("1", intExpr(           -1))) or
        not raisesIndexError(headFunction("1234567890", intExpr(integer.first))) or
        not raisesIndexError(headFunction("1234567890", intExpr(           -5))) or
        not raisesIndexError(headFunction("1234567890", intExpr(           -1))) then
      writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (6)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(headFunction(striExpr(""), integer.first)) or
        not raisesIndexError(headFunction(striExpr(""),            -5)) or
        not raisesIndexError(headFunction(striExpr(""),            -1)) or
        not raisesIndexError(headFunction(striExpr("1"), integer.first)) or
        not raisesIndexError(headFunction(striExpr("1"),            -5)) or
        not raisesIndexError(headFunction(striExpr("1"),            -1)) or
        not raisesIndexError(headFunction(striExpr("1234567890"), integer.first)) or
        not raisesIndexError(headFunction(striExpr("1234567890"),            -5)) or
        not raisesIndexError(headFunction(striExpr("1234567890"),            -1)) then
      writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (7)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(headFunction(striExpr(""), intExpr(integer.first))) or
        not raisesIndexError(headFunction(striExpr(""), intExpr(           -5))) or
        not raisesIndexError(headFunction(striExpr(""), intExpr(           -1))) or
        not raisesIndexError(headFunction(striExpr("1"), intExpr(integer.first))) or
        not raisesIndexError(headFunction(striExpr("1"), intExpr(           -5))) or
        not raisesIndexError(headFunction(striExpr("1"), intExpr(           -1))) or
        not raisesIndexError(headFunction(striExpr("1234567890"), intExpr(integer.first))) or
        not raisesIndexError(headFunction(striExpr("1234567890"), intExpr(           -5))) or
        not raisesIndexError(headFunction(striExpr("1234567890"), intExpr(           -1))) then
      writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (8)");
      okay := FALSE;
    end if;

    if okay then
      writeln("Index checking for string head works correct.");
    end if;
  end func;


const func string: tailOfEmptyString (in integer: stop) is
  return ""[stop .. ];


const func string: tailOfString1 (in integer: stop) is
  return "1"[stop .. ];


const func string: tailFunction (in integer: start) is
  return "1234567890"[start .. ];


const func string: tailFunction (in string: stri, in integer: start) is
  return stri[start .. ];


const proc: check_string_tail is func
  local
    var boolean: okay is TRUE;
    var boolean: ok is TRUE;
    var string: stri is "";
  begin
    if  not raisesIndexError("" [ integer.first .. ]) or
        not raisesIndexError("" [            -5 .. ]) or
        not raisesIndexError("" [            -1 .. ]) or
        not raisesIndexError("" [             0 .. ]) or
        not raisesIndexError("1" [ integer.first .. ]) or
        not raisesIndexError("1" [            -5 .. ]) or
        not raisesIndexError("1" [            -1 .. ]) or
        not raisesIndexError("1" [             0 .. ]) or
        not raisesIndexError("1234567890" [ integer.first .. ]) or
        not raisesIndexError("1234567890" [            -5 .. ]) or
        not raisesIndexError("1234567890" [            -1 .. ]) or
        not raisesIndexError("1234567890" [             0 .. ]) then
      writeln(" ***** STRING [ START .. ] does not work correct. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [ intExpr(integer.first) .. ]) or
        not raisesIndexError("" [ intExpr(           -5) .. ]) or
        not raisesIndexError("" [ intExpr(           -1) .. ]) or
        not raisesIndexError("" [ intExpr(            0) .. ]) or
        not raisesIndexError("1" [ intExpr(integer.first) .. ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. ]) or
        not raisesIndexError("1" [ intExpr(            0) .. ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. ]) then
      writeln(" ***** STRING [ START .. ] does not work correct. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ integer.first .. ]) or
        not raisesIndexError(striExpr("") [            -5 .. ]) or
        not raisesIndexError(striExpr("") [            -1 .. ]) or
        not raisesIndexError(striExpr("") [             0 .. ]) or
        not raisesIndexError(striExpr("1") [ integer.first .. ]) or
        not raisesIndexError(striExpr("1") [            -5 .. ]) or
        not raisesIndexError(striExpr("1") [            -1 .. ]) or
        not raisesIndexError(striExpr("1") [             0 .. ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. ]) then
      writeln(" ***** STRING [ START .. ] does not work correct. (3)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ intExpr(integer.first) .. ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) .. ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. ]) then
      writeln(" ***** STRING [ START .. ] does not work correct. (4)");
      okay := FALSE;
    end if;

    ok := raisesIndexError(stri := "" [ integer.first .. ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. ]) and ok;
    ok := raisesIndexError(stri := "" [             0 .. ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first .. ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. ] does not work correct. (1)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) .. ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. ] does not work correct. (2)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. ] does not work correct. (3)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. ] does not work correct. (4)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(tailOfEmptyString(integer.first)) or
        not raisesIndexError(tailOfEmptyString(           -5)) or
        not raisesIndexError(tailOfEmptyString(           -1)) or
        not raisesIndexError(tailOfEmptyString(            0)) or
        not raisesIndexError(tailOfEmptyString(intExpr(integer.first))) or
        not raisesIndexError(tailOfEmptyString(intExpr(           -5))) or
        not raisesIndexError(tailOfEmptyString(intExpr(           -1))) or
        not raisesIndexError(tailOfEmptyString(intExpr(            0))) then
      writeln(" ***** STRING [ START .. ] via a function does not work correct. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(tailOfString1(integer.first)) or
        not raisesIndexError(tailOfString1(           -5)) or
        not raisesIndexError(tailOfString1(           -1)) or
        not raisesIndexError(tailOfString1(            0)) or
        not raisesIndexError(tailOfString1(intExpr(integer.first))) or
        not raisesIndexError(tailOfString1(intExpr(           -5))) or
        not raisesIndexError(tailOfString1(intExpr(           -1))) or
        not raisesIndexError(tailOfString1(intExpr(            0))) then
      writeln(" ***** STRING [ START .. ] via a function does not work correct. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(tailFunction(integer.first)) or
        not raisesIndexError(tailFunction(           -5)) or
        not raisesIndexError(tailFunction(           -1)) or
        not raisesIndexError(tailFunction(            0)) or
        not raisesIndexError(tailFunction(intExpr(integer.first))) or
        not raisesIndexError(tailFunction(intExpr(           -5))) or
        not raisesIndexError(tailFunction(intExpr(           -1))) or
        not raisesIndexError(tailFunction(intExpr(            0))) then
      writeln(" ***** STRING [ START .. ] via a function does not work correct. (3)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(tailFunction("", integer.first)) or
        not raisesIndexError(tailFunction("",            -5)) or
        not raisesIndexError(tailFunction("",            -1)) or
        not raisesIndexError(tailFunction("",             0)) or
        not raisesIndexError(tailFunction("1", integer.first)) or
        not raisesIndexError(tailFunction("1",            -5)) or
        not raisesIndexError(tailFunction("1",            -1)) or
        not raisesIndexError(tailFunction("1",             0)) or
        not raisesIndexError(tailFunction("1234567890", integer.first)) or
        not raisesIndexError(tailFunction("1234567890",            -5)) or
        not raisesIndexError(tailFunction("1234567890",            -1)) or
        not raisesIndexError(tailFunction("1234567890",             0)) then
      writeln(" ***** STRING [ START .. ] via a function does not work correct. (5)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(tailFunction("", intExpr(integer.first))) or
        not raisesIndexError(tailFunction("", intExpr(           -5))) or
        not raisesIndexError(tailFunction("", intExpr(           -1))) or
        not raisesIndexError(tailFunction("", intExpr(            0))) or
        not raisesIndexError(tailFunction("1", intExpr(integer.first))) or
        not raisesIndexError(tailFunction("1", intExpr(           -5))) or
        not raisesIndexError(tailFunction("1", intExpr(           -1))) or
        not raisesIndexError(tailFunction("1", intExpr(            0))) or
        not raisesIndexError(tailFunction("1234567890", intExpr(integer.first))) or
        not raisesIndexError(tailFunction("1234567890", intExpr(           -5))) or
        not raisesIndexError(tailFunction("1234567890", intExpr(           -1))) or
        not raisesIndexError(tailFunction("1234567890", intExpr(            0))) then
      writeln(" ***** STRING [ START .. ] via a function does not work correct. (6)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(tailFunction(striExpr(""), integer.first)) or
        not raisesIndexError(tailFunction(striExpr(""),            -5)) or
        not raisesIndexError(tailFunction(striExpr(""),            -1)) or
        not raisesIndexError(tailFunction(striExpr(""),             0)) or
        not raisesIndexError(tailFunction(striExpr("1"), integer.first)) or
        not raisesIndexError(tailFunction(striExpr("1"),            -5)) or
        not raisesIndexError(tailFunction(striExpr("1"),            -1)) or
        not raisesIndexError(tailFunction(striExpr("1"),             0)) or
        not raisesIndexError(tailFunction(striExpr("1234567890"), integer.first)) or
        not raisesIndexError(tailFunction(striExpr("1234567890"),            -5)) or
        not raisesIndexError(tailFunction(striExpr("1234567890"),            -1)) or
        not raisesIndexError(tailFunction(striExpr("1234567890"),             0)) then
      writeln(" ***** STRING [ START .. ] via a function does not work correct. (7)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(tailFunction(striExpr(""), intExpr(integer.first))) or
        not raisesIndexError(tailFunction(striExpr(""), intExpr(           -5))) or
        not raisesIndexError(tailFunction(striExpr(""), intExpr(           -1))) or
        not raisesIndexError(tailFunction(striExpr(""), intExpr(            0))) or
        not raisesIndexError(tailFunction(striExpr("1"), intExpr(integer.first))) or
        not raisesIndexError(tailFunction(striExpr("1"), intExpr(           -5))) or
        not raisesIndexError(tailFunction(striExpr("1"), intExpr(           -1))) or
        not raisesIndexError(tailFunction(striExpr("1"), intExpr(            0))) or
        not raisesIndexError(tailFunction(striExpr("1234567890"), intExpr(integer.first))) or
        not raisesIndexError(tailFunction(striExpr("1234567890"), intExpr(           -5))) or
        not raisesIndexError(tailFunction(striExpr("1234567890"), intExpr(           -1))) or
        not raisesIndexError(tailFunction(striExpr("1234567890"), intExpr(            0))) then
      writeln(" ***** STRING [ START .. ] via a function does not work correct. (8)");
      okay := FALSE;
    end if;

    if okay then
      writeln("Index checking for string tail works correct.");
    end if;
  end func;


const func boolean: check_string_range_expr_1 is func
  result
    var boolean: okay is TRUE;
  begin
    if  not raisesIndexError("" [ integer.first .. integer.first ]) or
        not raisesIndexError("" [ integer.first ..            -9 ]) or
        not raisesIndexError("" [ integer.first ..            -6 ]) or
        not raisesIndexError("" [ integer.first ..            -5 ]) or
        not raisesIndexError("" [ integer.first ..            -4 ]) or
        not raisesIndexError("" [ integer.first ..            -1 ]) or
        not raisesIndexError("" [ integer.first ..             0 ]) or
        not raisesIndexError("" [ integer.first ..             1 ]) or
        not raisesIndexError("" [ integer.first ..            15 ]) or
        not raisesIndexError("" [ integer.first ..  integer.last ]) or
        not raisesIndexError("" [            -5 .. integer.first ]) or
        not raisesIndexError("" [            -5 ..            -9 ]) or
        not raisesIndexError("" [            -5 ..            -6 ]) or
        not raisesIndexError("" [            -5 ..            -5 ]) or
        not raisesIndexError("" [            -5 ..            -4 ]) or
        not raisesIndexError("" [            -5 ..            -1 ]) or
        not raisesIndexError("" [            -5 ..             0 ]) or
        not raisesIndexError("" [            -5 ..             1 ]) or
        not raisesIndexError("" [            -5 ..            15 ]) or
        not raisesIndexError("" [            -5 ..  integer.last ]) or
        not raisesIndexError("" [            -1 .. integer.first ]) or
        not raisesIndexError("" [            -1 ..            -9 ]) or
        not raisesIndexError("" [            -1 ..            -6 ]) or
        not raisesIndexError("" [            -1 ..            -1 ]) or
        not raisesIndexError("" [            -1 ..            -4 ]) or
        not raisesIndexError("" [            -1 ..            -1 ]) or
        not raisesIndexError("" [            -1 ..             0 ]) or
        not raisesIndexError("" [            -1 ..             1 ]) or
        not raisesIndexError("" [            -1 ..            15 ]) or
        not raisesIndexError("" [            -1 ..  integer.last ]) or
        not raisesIndexError("" [             0 .. integer.first ]) or
        not raisesIndexError("" [             0 ..            -9 ]) or
        not raisesIndexError("" [             0 ..            -1 ]) or
        not raisesIndexError("" [             0 ..             0 ]) or
        not raisesIndexError("" [             0 ..             1 ]) or
        not raisesIndexError("" [             0 ..            15 ]) or
        not raisesIndexError("" [             0 ..  integer.last ]) or
        not raisesIndexError("" [             1 .. integer.first ]) or
        not raisesIndexError("" [             1 ..            -5 ]) or
        not raisesIndexError("" [             1 ..            -1 ]) or

        not raisesIndexError("" [             5 .. integer.first ]) or
        not raisesIndexError("" [             5 ..            -5 ]) or
        not raisesIndexError("" [             5 ..            -1 ]) or
        not raisesIndexError("" [             5 ..             0 ]) or
        not raisesIndexError("" [             5 ..             1 ]) or
        not raisesIndexError("" [             5 ..             3 ]) or

        not raisesIndexError("" [  integer.last .. integer.first ]) or
        not raisesIndexError("" [  integer.last ..            -5 ]) or
        not raisesIndexError("" [  integer.last ..            -1 ]) or
        not raisesIndexError("" [  integer.last ..             0 ]) or
        not raisesIndexError("" [  integer.last ..             1 ]) or
        not raisesIndexError("" [  integer.last ..             4 ]) or
        not raisesIndexError("" [  integer.last ..             5 ]) or
        not raisesIndexError("" [  integer.last ..             6 ]) or
        not raisesIndexError("" [  integer.last ..            15 ]) or

        not raisesIndexError("1" [ integer.first .. integer.first ]) or
        not raisesIndexError("1" [ integer.first ..            -9 ]) or
        not raisesIndexError("1" [ integer.first ..            -5 ]) or
        not raisesIndexError("1" [ integer.first ..            -1 ]) or
        not raisesIndexError("1" [ integer.first ..             0 ]) or
        not raisesIndexError("1" [ integer.first ..             1 ]) or
        not raisesIndexError("1" [ integer.first ..             2 ]) or
        not raisesIndexError("1" [ integer.first ..            15 ]) or
        not raisesIndexError("1" [ integer.first ..  integer.last ]) or
        not raisesIndexError("1" [            -5 .. integer.first ]) or
        not raisesIndexError("1" [            -5 ..            -9 ]) or
        not raisesIndexError("1" [            -5 ..            -5 ]) or
        not raisesIndexError("1" [            -5 ..            -1 ]) or
        not raisesIndexError("1" [            -5 ..             0 ]) or
        not raisesIndexError("1" [            -5 ..             1 ]) or
        not raisesIndexError("1" [            -5 ..             2 ]) or
        not raisesIndexError("1" [            -5 ..            15 ]) or
        not raisesIndexError("1" [            -5 ..  integer.last ]) or
        not raisesIndexError("1" [            -1 .. integer.first ]) or
        not raisesIndexError("1" [            -1 ..            -9 ]) or
        not raisesIndexError("1" [            -1 ..            -5 ]) or
        not raisesIndexError("1" [            -1 ..            -1 ]) or
        not raisesIndexError("1" [            -1 ..             0 ]) or
        not raisesIndexError("1" [            -1 ..             1 ]) or
        not raisesIndexError("1" [            -1 ..             2 ]) or
        not raisesIndexError("1" [            -1 ..            15 ]) or
        not raisesIndexError("1" [            -1 ..  integer.last ]) or
        not raisesIndexError("1" [             0 .. integer.first ]) or
        not raisesIndexError("1" [             0 ..            -5 ]) or
        not raisesIndexError("1" [             0 ..            -1 ]) or
        not raisesIndexError("1" [             0 ..             0 ]) or
        not raisesIndexError("1" [             0 ..             1 ]) or
        not raisesIndexError("1" [             0 ..             2 ]) or
        not raisesIndexError("1" [             0 ..            15 ]) or
        not raisesIndexError("1" [             0 ..  integer.last ]) or
        not raisesIndexError("1" [             1 .. integer.first ]) or
        not raisesIndexError("1" [             1 ..            -5 ]) or
        not raisesIndexError("1" [             1 ..            -1 ]) or

        not raisesIndexError("1" [             2 .. integer.first ]) or
        not raisesIndexError("1" [             2 ..            -5 ]) or
        not raisesIndexError("1" [             2 ..            -1 ]) or
        not raisesIndexError("1" [             2 ..             0 ]) or

        not raisesIndexError("1" [             5 .. integer.first ]) or
        not raisesIndexError("1" [             5 ..            -5 ]) or
        not raisesIndexError("1" [             5 ..            -1 ]) or
        not raisesIndexError("1" [             5 ..             0 ]) or
        not raisesIndexError("1" [             5 ..             1 ]) or
        not raisesIndexError("1" [             5 ..             3 ]) or

        not raisesIndexError("1" [  integer.last .. integer.first ]) or
        not raisesIndexError("1" [  integer.last ..            -5 ]) or
        not raisesIndexError("1" [  integer.last ..            -1 ]) or
        not raisesIndexError("1" [  integer.last ..             0 ]) or
        not raisesIndexError("1" [  integer.last ..             1 ]) or
        not raisesIndexError("1" [  integer.last ..             4 ]) or
        not raisesIndexError("1" [  integer.last ..             5 ]) or
        not raisesIndexError("1" [  integer.last ..             6 ]) or
        not raisesIndexError("1" [  integer.last ..            15 ]) or

        not raisesIndexError("1234567890" [ integer.first .. integer.first ]) or
        not raisesIndexError("1234567890" [ integer.first ..            -9 ]) or
        not raisesIndexError("1234567890" [ integer.first ..            -5 ]) or
        not raisesIndexError("1234567890" [ integer.first ..            -1 ]) or
        not raisesIndexError("1234567890" [ integer.first ..             0 ]) or
        not raisesIndexError("1234567890" [ integer.first ..             1 ]) or
        not raisesIndexError("1234567890" [ integer.first ..             5 ]) or
        not raisesIndexError("1234567890" [ integer.first ..             9 ]) or
        not raisesIndexError("1234567890" [ integer.first ..            10 ]) or
        not raisesIndexError("1234567890" [ integer.first ..            11 ]) or
        not raisesIndexError("1234567890" [ integer.first ..            15 ]) or
        not raisesIndexError("1234567890" [ integer.first ..  integer.last ]) or
        not raisesIndexError("1234567890" [            -5 .. integer.first ]) or
        not raisesIndexError("1234567890" [            -5 ..            -9 ]) or
        not raisesIndexError("1234567890" [            -5 ..            -5 ]) or
        not raisesIndexError("1234567890" [            -5 ..            -1 ]) or
        not raisesIndexError("1234567890" [            -5 ..             0 ]) or
        not raisesIndexError("1234567890" [            -5 ..             1 ]) or
        not raisesIndexError("1234567890" [            -5 ..             5 ]) or
        not raisesIndexError("1234567890" [            -5 ..             9 ]) or
        not raisesIndexError("1234567890" [            -5 ..            10 ]) or
        not raisesIndexError("1234567890" [            -5 ..            11 ]) or
        not raisesIndexError("1234567890" [            -5 ..            15 ]) or
        not raisesIndexError("1234567890" [            -5 ..  integer.last ]) or
        not raisesIndexError("1234567890" [            -1 .. integer.first ]) or
        not raisesIndexError("1234567890" [            -1 ..            -9 ]) or
        not raisesIndexError("1234567890" [            -1 ..            -5 ]) or
        not raisesIndexError("1234567890" [            -1 ..            -1 ]) or
        not raisesIndexError("1234567890" [            -1 ..             0 ]) or
        not raisesIndexError("1234567890" [            -1 ..             1 ]) or
        not raisesIndexError("1234567890" [            -1 ..             5 ]) or
        not raisesIndexError("1234567890" [            -1 ..             9 ]) or
        not raisesIndexError("1234567890" [            -1 ..            10 ]) or
        not raisesIndexError("1234567890" [            -1 ..            11 ]) or
        not raisesIndexError("1234567890" [            -1 ..            15 ]) or
        not raisesIndexError("1234567890" [            -1 ..  integer.last ]) or
        not raisesIndexError("1234567890" [             0 .. integer.first ]) or
        not raisesIndexError("1234567890" [             0 ..            -5 ]) or
        not raisesIndexError("1234567890" [             0 ..            -1 ]) or
        not raisesIndexError("1234567890" [             0 ..             0 ]) or
        not raisesIndexError("1234567890" [             0 ..             1 ]) or
        not raisesIndexError("1234567890" [             0 ..             5 ]) or
        not raisesIndexError("1234567890" [             0 ..             9 ]) or
        not raisesIndexError("1234567890" [             0 ..            10 ]) or
        not raisesIndexError("1234567890" [             0 ..            11 ]) or
        not raisesIndexError("1234567890" [             0 ..            15 ]) or
        not raisesIndexError("1234567890" [             0 ..  integer.last ]) or
        not raisesIndexError("1234567890" [             1 .. integer.first ]) or
        not raisesIndexError("1234567890" [             1 ..            -5 ]) or
        not raisesIndexError("1234567890" [             1 ..            -1 ]) or

        not raisesIndexError("1234567890" [             5 .. integer.first ]) or
        not raisesIndexError("1234567890" [             5 ..            -5 ]) or
        not raisesIndexError("1234567890" [             5 ..            -1 ]) or
        not raisesIndexError("1234567890" [             5 ..             0 ]) or
        not raisesIndexError("1234567890" [             5 ..             1 ]) or
        not raisesIndexError("1234567890" [             5 ..             3 ]) or

        not raisesIndexError("1234567890" [            10 .. integer.first ]) or
        not raisesIndexError("1234567890" [            10 ..            -5 ]) or
        not raisesIndexError("1234567890" [            10 ..            -1 ]) or
        not raisesIndexError("1234567890" [            10 ..             0 ]) or
        not raisesIndexError("1234567890" [            10 ..             1 ]) or
        not raisesIndexError("1234567890" [            10 ..             8 ]) or

        not raisesIndexError("1234567890" [            11 .. integer.first ]) or
        not raisesIndexError("1234567890" [            11 ..            -5 ]) or
        not raisesIndexError("1234567890" [            11 ..            -1 ]) or
        not raisesIndexError("1234567890" [            11 ..             0 ]) or
        not raisesIndexError("1234567890" [            11 ..             1 ]) or
        not raisesIndexError("1234567890" [            11 ..             5 ]) or
        not raisesIndexError("1234567890" [            11 ..             9 ]) or

        not raisesIndexError("1234567890" [            15 .. integer.first ]) or
        not raisesIndexError("1234567890" [            15 ..            -5 ]) or
        not raisesIndexError("1234567890" [            15 ..            -1 ]) or
        not raisesIndexError("1234567890" [            15 ..             0 ]) or
        not raisesIndexError("1234567890" [            15 ..             1 ]) or
        not raisesIndexError("1234567890" [            15 ..             5 ]) or
        not raisesIndexError("1234567890" [            15 ..            10 ]) or
        not raisesIndexError("1234567890" [            15 ..            11 ]) or
        not raisesIndexError("1234567890" [            15 ..            13 ]) or

        not raisesIndexError("1234567890" [  integer.last .. integer.first ]) or
        not raisesIndexError("1234567890" [  integer.last ..            -5 ]) or
        not raisesIndexError("1234567890" [  integer.last ..            -1 ]) or
        not raisesIndexError("1234567890" [  integer.last ..             0 ]) or
        not raisesIndexError("1234567890" [  integer.last ..             1 ]) or
        not raisesIndexError("1234567890" [  integer.last ..             5 ]) or
        not raisesIndexError("1234567890" [  integer.last ..            10 ]) or
        not raisesIndexError("1234567890" [  integer.last ..            11 ]) or
        not raisesIndexError("1234567890" [  integer.last ..            15 ]) or
        not raisesIndexError("1234567890" [  integer.last ..            20 ]) then
      writeln(" ***** STRING [ START .. STOP ] does not work correct. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [ integer.first .. intExpr(integer.first) ]) or
        not raisesIndexError("" [ integer.first .. intExpr(           -9) ]) or
        not raisesIndexError("" [ integer.first .. intExpr(           -6) ]) or
        not raisesIndexError("" [ integer.first .. intExpr(           -5) ]) or
        not raisesIndexError("" [ integer.first .. intExpr(           -4) ]) or
        not raisesIndexError("" [ integer.first .. intExpr(           -1) ]) or
        not raisesIndexError("" [ integer.first .. intExpr(            0) ]) or
        not raisesIndexError("" [ integer.first .. intExpr(            1) ]) or
        not raisesIndexError("" [ integer.first .. intExpr(           15) ]) or
        not raisesIndexError("" [ integer.first .. intExpr( integer.last) ]) or
        not raisesIndexError("" [            -5 .. intExpr(integer.first) ]) or
        not raisesIndexError("" [            -5 .. intExpr(           -9) ]) or
        not raisesIndexError("" [            -5 .. intExpr(           -6) ]) or
        not raisesIndexError("" [            -5 .. intExpr(           -5) ]) or
        not raisesIndexError("" [            -5 .. intExpr(           -4) ]) or
        not raisesIndexError("" [            -5 .. intExpr(           -1) ]) or
        not raisesIndexError("" [            -5 .. intExpr(            0) ]) or
        not raisesIndexError("" [            -5 .. intExpr(            1) ]) or
        not raisesIndexError("" [            -5 .. intExpr(           15) ]) or
        not raisesIndexError("" [            -5 .. intExpr( integer.last) ]) or
        not raisesIndexError("" [            -1 .. intExpr(integer.first) ]) or
        not raisesIndexError("" [            -1 .. intExpr(           -9) ]) or
        not raisesIndexError("" [            -1 .. intExpr(           -6) ]) or
        not raisesIndexError("" [            -1 .. intExpr(           -5) ]) or
        not raisesIndexError("" [            -1 .. intExpr(           -4) ]) or
        not raisesIndexError("" [            -1 .. intExpr(           -1) ]) or
        not raisesIndexError("" [            -1 .. intExpr(            0) ]) or
        not raisesIndexError("" [            -1 .. intExpr(            1) ]) or
        not raisesIndexError("" [            -1 .. intExpr(           15) ]) or
        not raisesIndexError("" [            -1 .. intExpr( integer.last) ]) or
        not raisesIndexError("" [             0 .. intExpr(integer.first) ]) or
        not raisesIndexError("" [             0 .. intExpr(           -9) ]) or
        not raisesIndexError("" [             0 .. intExpr(           -1) ]) or
        not raisesIndexError("" [             0 .. intExpr(            0) ]) or
        not raisesIndexError("" [             0 .. intExpr(            1) ]) or
        not raisesIndexError("" [             0 .. intExpr(           15) ]) or
        not raisesIndexError("" [             0 .. intExpr( integer.last) ]) or
        not raisesIndexError("" [             1 .. intExpr(integer.first) ]) or
        not raisesIndexError("" [             1 .. intExpr(           -5) ]) or
        not raisesIndexError("" [             1 .. intExpr(           -1) ]) or

        not raisesIndexError("" [             5 .. intExpr(integer.first) ]) or
        not raisesIndexError("" [             5 .. intExpr(           -5) ]) or
        not raisesIndexError("" [             5 .. intExpr(           -1) ]) or
        not raisesIndexError("" [             5 .. intExpr(            0) ]) or
        not raisesIndexError("" [             5 .. intExpr(            1) ]) or
        not raisesIndexError("" [             5 .. intExpr(            3) ]) or

        not raisesIndexError("" [  integer.last .. intExpr(integer.first) ]) or
        not raisesIndexError("" [  integer.last .. intExpr(           -5) ]) or
        not raisesIndexError("" [  integer.last .. intExpr(           -1) ]) or
        not raisesIndexError("" [  integer.last .. intExpr(            0) ]) or
        not raisesIndexError("" [  integer.last .. intExpr(            1) ]) or
        not raisesIndexError("" [  integer.last .. intExpr(            4) ]) or
        not raisesIndexError("" [  integer.last .. intExpr(            5) ]) or
        not raisesIndexError("" [  integer.last .. intExpr(            6) ]) or
        not raisesIndexError("" [  integer.last .. intExpr(           15) ]) or

        not raisesIndexError("1" [ integer.first .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ integer.first .. intExpr(           -9) ]) or
        not raisesIndexError("1" [ integer.first .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ integer.first .. intExpr(           -1) ]) or
        not raisesIndexError("1" [ integer.first .. intExpr(            0) ]) or
        not raisesIndexError("1" [ integer.first .. intExpr(            1) ]) or
        not raisesIndexError("1" [ integer.first .. intExpr(            2) ]) or
        not raisesIndexError("1" [ integer.first .. intExpr(           15) ]) or
        not raisesIndexError("1" [ integer.first .. intExpr( integer.last) ]) or
        not raisesIndexError("1" [            -5 .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [            -5 .. intExpr(           -9) ]) or
        not raisesIndexError("1" [            -5 .. intExpr(           -5) ]) or
        not raisesIndexError("1" [            -5 .. intExpr(           -1) ]) or
        not raisesIndexError("1" [            -5 .. intExpr(            0) ]) or
        not raisesIndexError("1" [            -5 .. intExpr(            1) ]) or
        not raisesIndexError("1" [            -5 .. intExpr(            2) ]) or
        not raisesIndexError("1" [            -5 .. intExpr(           15) ]) or
        not raisesIndexError("1" [            -5 .. intExpr( integer.last) ]) or
        not raisesIndexError("1" [            -1 .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [            -1 .. intExpr(           -9) ]) or
        not raisesIndexError("1" [            -1 .. intExpr(           -5) ]) or
        not raisesIndexError("1" [            -1 .. intExpr(           -1) ]) or
        not raisesIndexError("1" [            -1 .. intExpr(            0) ]) or
        not raisesIndexError("1" [            -1 .. intExpr(            1) ]) or
        not raisesIndexError("1" [            -1 .. intExpr(            2) ]) or
        not raisesIndexError("1" [            -1 .. intExpr(           15) ]) or
        not raisesIndexError("1" [            -1 .. intExpr( integer.last) ]) or
        not raisesIndexError("1" [             0 .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [             0 .. intExpr(           -5) ]) or
        not raisesIndexError("1" [             0 .. intExpr(           -1) ]) or
        not raisesIndexError("1" [             0 .. intExpr(            0) ]) or
        not raisesIndexError("1" [             0 .. intExpr(            1) ]) or
        not raisesIndexError("1" [             0 .. intExpr(            2) ]) or
        not raisesIndexError("1" [             0 .. intExpr(           15) ]) or
        not raisesIndexError("1" [             0 .. intExpr( integer.last) ]) or
        not raisesIndexError("1" [             1 .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [             1 .. intExpr(           -5) ]) or
        not raisesIndexError("1" [             1 .. intExpr(           -1) ]) or

        not raisesIndexError("1" [             2 .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [             2 .. intExpr(           -5) ]) or
        not raisesIndexError("1" [             2 .. intExpr(           -1) ]) or
        not raisesIndexError("1" [             2 .. intExpr(            0) ]) or

        not raisesIndexError("1" [             5 .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [             5 .. intExpr(           -5) ]) or
        not raisesIndexError("1" [             5 .. intExpr(           -1) ]) or
        not raisesIndexError("1" [             5 .. intExpr(            0) ]) or
        not raisesIndexError("1" [             5 .. intExpr(            1) ]) or
        not raisesIndexError("1" [             5 .. intExpr(            3) ]) or

        not raisesIndexError("1" [  integer.last .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [  integer.last .. intExpr(           -5) ]) or
        not raisesIndexError("1" [  integer.last .. intExpr(           -1) ]) or
        not raisesIndexError("1" [  integer.last .. intExpr(            0) ]) or
        not raisesIndexError("1" [  integer.last .. intExpr(            1) ]) or
        not raisesIndexError("1" [  integer.last .. intExpr(            4) ]) or
        not raisesIndexError("1" [  integer.last .. intExpr(            5) ]) or
        not raisesIndexError("1" [  integer.last .. intExpr(            6) ]) or
        not raisesIndexError("1" [  integer.last .. intExpr(           15) ]) or

        not raisesIndexError("1234567890" [ integer.first .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(            9) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ integer.first .. intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(            9) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [            -5 .. intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(            9) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [            -1 .. intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(            9) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [             0 .. intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [             1 .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [             1 .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [             1 .. intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [             5 .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [             5 .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [             5 .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [             5 .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [             5 .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [             5 .. intExpr(            3) ]) or

        not raisesIndexError("1234567890" [            10 .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            10 .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            10 .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [            10 .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [            10 .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [            10 .. intExpr(            8) ]) or

        not raisesIndexError("1234567890" [            11 .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            11 .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            11 .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [            11 .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [            11 .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [            11 .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [            11 .. intExpr(            9) ]) or

        not raisesIndexError("1234567890" [            15 .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            15 .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            15 .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [            15 .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [            15 .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [            15 .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [            15 .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [            15 .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [            15 .. intExpr(           13) ]) or

        not raisesIndexError("1234567890" [  integer.last .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [  integer.last .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [  integer.last .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [  integer.last .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [  integer.last .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [  integer.last .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [  integer.last .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [  integer.last .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [  integer.last .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [  integer.last .. intExpr(           20) ]) then
      writeln(" ***** STRING [ START .. STOP ] does not work correct. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [ intExpr(integer.first) .. integer.first ]) or
        not raisesIndexError("" [ intExpr(integer.first) ..            -9 ]) or
        not raisesIndexError("" [ intExpr(integer.first) ..            -6 ]) or
        not raisesIndexError("" [ intExpr(integer.first) ..            -5 ]) or
        not raisesIndexError("" [ intExpr(integer.first) ..            -4 ]) or
        not raisesIndexError("" [ intExpr(integer.first) ..            -1 ]) or
        not raisesIndexError("" [ intExpr(integer.first) ..             0 ]) or
        not raisesIndexError("" [ intExpr(integer.first) ..             1 ]) or
        not raisesIndexError("" [ intExpr(integer.first) ..            15 ]) or
        not raisesIndexError("" [ intExpr(integer.first) ..  integer.last ]) or
        not raisesIndexError("" [ intExpr(           -5) .. integer.first ]) or
        not raisesIndexError("" [ intExpr(           -5) ..            -9 ]) or
        not raisesIndexError("" [ intExpr(           -5) ..            -6 ]) or
        not raisesIndexError("" [ intExpr(           -5) ..            -5 ]) or
        not raisesIndexError("" [ intExpr(           -5) ..            -4 ]) or
        not raisesIndexError("" [ intExpr(           -5) ..            -1 ]) or
        not raisesIndexError("" [ intExpr(           -5) ..             0 ]) or
        not raisesIndexError("" [ intExpr(           -5) ..             1 ]) or
        not raisesIndexError("" [ intExpr(           -5) ..            15 ]) or
        not raisesIndexError("" [ intExpr(           -5) ..  integer.last ]) or
        not raisesIndexError("" [ intExpr(           -1) .. integer.first ]) or
        not raisesIndexError("" [ intExpr(           -1) ..            -9 ]) or
        not raisesIndexError("" [ intExpr(           -1) ..            -6 ]) or
        not raisesIndexError("" [ intExpr(           -1) ..            -5 ]) or
        not raisesIndexError("" [ intExpr(           -1) ..            -4 ]) or
        not raisesIndexError("" [ intExpr(           -1) ..            -1 ]) or
        not raisesIndexError("" [ intExpr(           -1) ..             0 ]) or
        not raisesIndexError("" [ intExpr(           -1) ..             1 ]) or
        not raisesIndexError("" [ intExpr(           -1) ..            15 ]) or
        not raisesIndexError("" [ intExpr(           -1) ..  integer.last ]) or
        not raisesIndexError("" [ intExpr(            0) .. integer.first ]) or
        not raisesIndexError("" [ intExpr(            0) ..            -9 ]) or
        not raisesIndexError("" [ intExpr(            0) ..            -1 ]) or
        not raisesIndexError("" [ intExpr(            0) ..             0 ]) or
        not raisesIndexError("" [ intExpr(            0) ..             1 ]) or
        not raisesIndexError("" [ intExpr(            0) ..            15 ]) or
        not raisesIndexError("" [ intExpr(            0) ..  integer.last ]) or
        not raisesIndexError("" [ intExpr(            1) .. integer.first ]) or
        not raisesIndexError("" [ intExpr(            1) ..            -5 ]) or
        not raisesIndexError("" [ intExpr(            1) ..            -1 ]) or

        not raisesIndexError("" [ intExpr(            5) .. integer.first ]) or
        not raisesIndexError("" [ intExpr(            5) ..            -5 ]) or
        not raisesIndexError("" [ intExpr(            5) ..            -1 ]) or
        not raisesIndexError("" [ intExpr(            5) ..             0 ]) or
        not raisesIndexError("" [ intExpr(            5) ..             1 ]) or
        not raisesIndexError("" [ intExpr(            5) ..             3 ]) or

        not raisesIndexError("" [ intExpr( integer.last) .. integer.first ]) or
        not raisesIndexError("" [ intExpr( integer.last) ..            -5 ]) or
        not raisesIndexError("" [ intExpr( integer.last) ..            -1 ]) or
        not raisesIndexError("" [ intExpr( integer.last) ..             0 ]) or
        not raisesIndexError("" [ intExpr( integer.last) ..             1 ]) or
        not raisesIndexError("" [ intExpr( integer.last) ..             4 ]) or
        not raisesIndexError("" [ intExpr( integer.last) ..             5 ]) or
        not raisesIndexError("" [ intExpr( integer.last) ..             6 ]) or
        not raisesIndexError("" [ intExpr( integer.last) ..            15 ]) or

        not raisesIndexError("1" [ intExpr(integer.first) .. integer.first ]) or
        not raisesIndexError("1" [ intExpr(integer.first) ..            -9 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) ..            -5 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) ..            -1 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) ..             0 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) ..             1 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) ..             2 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) ..            15 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) ..  integer.last ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. integer.first ]) or
        not raisesIndexError("1" [ intExpr(           -5) ..            -9 ]) or
        not raisesIndexError("1" [ intExpr(           -5) ..            -5 ]) or
        not raisesIndexError("1" [ intExpr(           -5) ..            -1 ]) or
        not raisesIndexError("1" [ intExpr(           -5) ..             0 ]) or
        not raisesIndexError("1" [ intExpr(           -5) ..             1 ]) or
        not raisesIndexError("1" [ intExpr(           -5) ..             2 ]) or
        not raisesIndexError("1" [ intExpr(           -5) ..            15 ]) or
        not raisesIndexError("1" [ intExpr(           -5) ..  integer.last ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. integer.first ]) or
        not raisesIndexError("1" [ intExpr(           -1) ..            -9 ]) or
        not raisesIndexError("1" [ intExpr(           -1) ..            -5 ]) or
        not raisesIndexError("1" [ intExpr(           -1) ..            -1 ]) or
        not raisesIndexError("1" [ intExpr(           -1) ..             0 ]) or
        not raisesIndexError("1" [ intExpr(           -1) ..             1 ]) or
        not raisesIndexError("1" [ intExpr(           -1) ..             2 ]) or
        not raisesIndexError("1" [ intExpr(           -1) ..            15 ]) or
        not raisesIndexError("1" [ intExpr(           -1) ..  integer.last ]) or
        not raisesIndexError("1" [ intExpr(            0) .. integer.first ]) or
        not raisesIndexError("1" [ intExpr(            0) ..            -5 ]) or
        not raisesIndexError("1" [ intExpr(            0) ..            -1 ]) or
        not raisesIndexError("1" [ intExpr(            0) ..             0 ]) or
        not raisesIndexError("1" [ intExpr(            0) ..             1 ]) or
        not raisesIndexError("1" [ intExpr(            0) ..             2 ]) or
        not raisesIndexError("1" [ intExpr(            0) ..            15 ]) or
        not raisesIndexError("1" [ intExpr(            0) ..  integer.last ]) or
        not raisesIndexError("1" [ intExpr(            1) .. integer.first ]) or
        not raisesIndexError("1" [ intExpr(            1) ..            -5 ]) or
        not raisesIndexError("1" [ intExpr(            1) ..            -1 ]) or

        not raisesIndexError("1" [ intExpr(            2) .. integer.first ]) or
        not raisesIndexError("1" [ intExpr(            2) ..            -5 ]) or
        not raisesIndexError("1" [ intExpr(            2) ..            -1 ]) or
        not raisesIndexError("1" [ intExpr(            2) ..             0 ]) or

        not raisesIndexError("1" [ intExpr(            5) .. integer.first ]) or
        not raisesIndexError("1" [ intExpr(            5) ..            -5 ]) or
        not raisesIndexError("1" [ intExpr(            5) ..            -1 ]) or
        not raisesIndexError("1" [ intExpr(            5) ..             0 ]) or
        not raisesIndexError("1" [ intExpr(            5) ..             1 ]) or
        not raisesIndexError("1" [ intExpr(            5) ..             3 ]) or

        not raisesIndexError("1" [ intExpr( integer.last) .. integer.first ]) or
        not raisesIndexError("1" [ intExpr( integer.last) ..            -5 ]) or
        not raisesIndexError("1" [ intExpr( integer.last) ..            -1 ]) or
        not raisesIndexError("1" [ intExpr( integer.last) ..             0 ]) or
        not raisesIndexError("1" [ intExpr( integer.last) ..             1 ]) or
        not raisesIndexError("1" [ intExpr( integer.last) ..             4 ]) or
        not raisesIndexError("1" [ intExpr( integer.last) ..             5 ]) or
        not raisesIndexError("1" [ intExpr( integer.last) ..             6 ]) or
        not raisesIndexError("1" [ intExpr( integer.last) ..            15 ]) or

        not raisesIndexError("1234567890" [ intExpr(integer.first) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..            -9 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..             5 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..             9 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..            10 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..            11 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..            15 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) ..  integer.last ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..            -9 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..             5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..             9 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..            10 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..            11 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..            15 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) ..  integer.last ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..            -9 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..             5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..             9 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..            10 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..            11 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..            15 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) ..  integer.last ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..             5 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..             9 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..            10 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..            11 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..            15 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) ..  integer.last ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) ..            -1 ]) or

        not raisesIndexError("1234567890" [ intExpr(            5) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) ..            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) ..             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) ..             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) ..             3 ]) or

        not raisesIndexError("1234567890" [ intExpr(           10) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) ..            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) ..             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) ..             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) ..             8 ]) or

        not raisesIndexError("1234567890" [ intExpr(           11) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) ..            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) ..             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) ..             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) ..             5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) ..             9 ]) or

        not raisesIndexError("1234567890" [ intExpr(           15) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) ..            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) ..             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) ..             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) ..             5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) ..            10 ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) ..            11 ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) ..            13 ]) or

        not raisesIndexError("1234567890" [ intExpr( integer.last) .. integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) ..            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) ..            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) ..             0 ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) ..             1 ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) ..             5 ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) ..            10 ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) ..            11 ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) ..            15 ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) ..            20 ]) then
      writeln(" ***** STRING [ START .. STOP ] does not work correct. (3)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [ intExpr(integer.first) .. intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(integer.first) .. intExpr(           -9) ]) or
        not raisesIndexError("" [ intExpr(integer.first) .. intExpr(           -6) ]) or
        not raisesIndexError("" [ intExpr(integer.first) .. intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(integer.first) .. intExpr(           -4) ]) or
        not raisesIndexError("" [ intExpr(integer.first) .. intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr(integer.first) .. intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr(integer.first) .. intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr(integer.first) .. intExpr(           15) ]) or
        not raisesIndexError("" [ intExpr(integer.first) .. intExpr( integer.last) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr(           -9) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr(           -6) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr(           -4) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr(           15) ]) or
        not raisesIndexError("" [ intExpr(           -5) .. intExpr( integer.last) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr(           -9) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr(           -6) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr(           -4) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr(           15) ]) or
        not raisesIndexError("" [ intExpr(           -1) .. intExpr( integer.last) ]) or
        not raisesIndexError("" [ intExpr(            0) .. intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(            0) .. intExpr(           -9) ]) or
        not raisesIndexError("" [ intExpr(            0) .. intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr(            0) .. intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr(            0) .. intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr(            0) .. intExpr(           15) ]) or
        not raisesIndexError("" [ intExpr(            0) .. intExpr( integer.last) ]) or
        not raisesIndexError("" [ intExpr(            1) .. intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(            1) .. intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(            1) .. intExpr(           -1) ]) or

        not raisesIndexError("" [ intExpr(            5) .. intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(            5) .. intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(            5) .. intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr(            5) .. intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr(            5) .. intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr(            5) .. intExpr(            3) ]) or

        not raisesIndexError("" [ intExpr( integer.last) .. intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr( integer.last) .. intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr( integer.last) .. intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr( integer.last) .. intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr( integer.last) .. intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr( integer.last) .. intExpr(            4) ]) or
        not raisesIndexError("" [ intExpr( integer.last) .. intExpr(            5) ]) or
        not raisesIndexError("" [ intExpr( integer.last) .. intExpr(            6) ]) or
        not raisesIndexError("" [ intExpr( integer.last) .. intExpr(           15) ]) or

        not raisesIndexError("1" [ intExpr(integer.first) .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) .. intExpr(           -9) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) .. intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) .. intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) .. intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) .. intExpr(            2) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) .. intExpr(           15) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) .. intExpr( integer.last) ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. intExpr(           -9) ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. intExpr(            2) ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. intExpr(           15) ]) or
        not raisesIndexError("1" [ intExpr(           -5) .. intExpr( integer.last) ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. intExpr(           -9) ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. intExpr(            2) ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. intExpr(           15) ]) or
        not raisesIndexError("1" [ intExpr(           -1) .. intExpr( integer.last) ]) or
        not raisesIndexError("1" [ intExpr(            0) .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(            0) .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(            0) .. intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(            0) .. intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr(            0) .. intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr(            0) .. intExpr(            2) ]) or
        not raisesIndexError("1" [ intExpr(            0) .. intExpr(           15) ]) or
        not raisesIndexError("1" [ intExpr(            0) .. intExpr( integer.last) ]) or
        not raisesIndexError("1" [ intExpr(            1) .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(            1) .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(            1) .. intExpr(           -1) ]) or

        not raisesIndexError("1" [ intExpr(            2) .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(            2) .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(            2) .. intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(            2) .. intExpr(            0) ]) or

        not raisesIndexError("1" [ intExpr(            5) .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(            5) .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(            5) .. intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(            5) .. intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr(            5) .. intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr(            5) .. intExpr(            3) ]) or

        not raisesIndexError("1" [ intExpr( integer.last) .. intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) .. intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) .. intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) .. intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) .. intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) .. intExpr(            4) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) .. intExpr(            5) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) .. intExpr(            6) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) .. intExpr(           15) ]) or

        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(            9) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) .. intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(            9) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) .. intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(            9) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) .. intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(            9) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) .. intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) .. intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ intExpr(            5) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) .. intExpr(            3) ]) or

        not raisesIndexError("1234567890" [ intExpr(           10) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) .. intExpr(            8) ]) or

        not raisesIndexError("1234567890" [ intExpr(           11) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) .. intExpr(            9) ]) or

        not raisesIndexError("1234567890" [ intExpr(           15) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) .. intExpr(           13) ]) or

        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(            5) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(           10) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) .. intExpr(           20) ]) then
      writeln(" ***** STRING [ START .. STOP ] does not work correct. (4)");
      okay := FALSE;
    end if;
  end func;


const func boolean: check_string_range_expr_2 is func
  result
    var boolean: okay is TRUE;
  begin
    if  not raisesIndexError(striExpr("") [ integer.first .. integer.first ]) or
        not raisesIndexError(striExpr("") [ integer.first ..            -9 ]) or
        not raisesIndexError(striExpr("") [ integer.first ..            -6 ]) or
        not raisesIndexError(striExpr("") [ integer.first ..            -5 ]) or
        not raisesIndexError(striExpr("") [ integer.first ..            -4 ]) or
        not raisesIndexError(striExpr("") [ integer.first ..            -1 ]) or
        not raisesIndexError(striExpr("") [ integer.first ..             0 ]) or
        not raisesIndexError(striExpr("") [ integer.first ..             1 ]) or
        not raisesIndexError(striExpr("") [ integer.first ..            15 ]) or
        not raisesIndexError(striExpr("") [ integer.first ..  integer.last ]) or
        not raisesIndexError(striExpr("") [            -5 .. integer.first ]) or
        not raisesIndexError(striExpr("") [            -5 ..            -9 ]) or
        not raisesIndexError(striExpr("") [            -5 ..            -6 ]) or
        not raisesIndexError(striExpr("") [            -5 ..            -5 ]) or
        not raisesIndexError(striExpr("") [            -5 ..            -4 ]) or
        not raisesIndexError(striExpr("") [            -5 ..            -1 ]) or
        not raisesIndexError(striExpr("") [            -5 ..             0 ]) or
        not raisesIndexError(striExpr("") [            -5 ..             1 ]) or
        not raisesIndexError(striExpr("") [            -5 ..            15 ]) or
        not raisesIndexError(striExpr("") [            -5 ..  integer.last ]) or
        not raisesIndexError(striExpr("") [            -1 .. integer.first ]) or
        not raisesIndexError(striExpr("") [            -1 ..            -9 ]) or
        not raisesIndexError(striExpr("") [            -1 ..            -6 ]) or
        not raisesIndexError(striExpr("") [            -1 ..            -1 ]) or
        not raisesIndexError(striExpr("") [            -1 ..            -4 ]) or
        not raisesIndexError(striExpr("") [            -1 ..            -1 ]) or
        not raisesIndexError(striExpr("") [            -1 ..             0 ]) or
        not raisesIndexError(striExpr("") [            -1 ..             1 ]) or
        not raisesIndexError(striExpr("") [            -1 ..            15 ]) or
        not raisesIndexError(striExpr("") [            -1 ..  integer.last ]) or
        not raisesIndexError(striExpr("") [             0 .. integer.first ]) or
        not raisesIndexError(striExpr("") [             0 ..            -9 ]) or
        not raisesIndexError(striExpr("") [             0 ..            -1 ]) or
        not raisesIndexError(striExpr("") [             0 ..             0 ]) or
        not raisesIndexError(striExpr("") [             0 ..             1 ]) or
        not raisesIndexError(striExpr("") [             0 ..            15 ]) or
        not raisesIndexError(striExpr("") [             0 ..  integer.last ]) or
        not raisesIndexError(striExpr("") [             1 .. integer.first ]) or
        not raisesIndexError(striExpr("") [             1 ..            -5 ]) or
        not raisesIndexError(striExpr("") [             1 ..            -1 ]) or

        not raisesIndexError(striExpr("") [             5 .. integer.first ]) or
        not raisesIndexError(striExpr("") [             5 ..            -5 ]) or
        not raisesIndexError(striExpr("") [             5 ..            -1 ]) or
        not raisesIndexError(striExpr("") [             5 ..             0 ]) or
        not raisesIndexError(striExpr("") [             5 ..             1 ]) or
        not raisesIndexError(striExpr("") [             5 ..             3 ]) or

        not raisesIndexError(striExpr("") [  integer.last .. integer.first ]) or
        not raisesIndexError(striExpr("") [  integer.last ..            -5 ]) or
        not raisesIndexError(striExpr("") [  integer.last ..            -1 ]) or
        not raisesIndexError(striExpr("") [  integer.last ..             0 ]) or
        not raisesIndexError(striExpr("") [  integer.last ..             1 ]) or
        not raisesIndexError(striExpr("") [  integer.last ..             4 ]) or
        not raisesIndexError(striExpr("") [  integer.last ..             5 ]) or
        not raisesIndexError(striExpr("") [  integer.last ..             6 ]) or
        not raisesIndexError(striExpr("") [  integer.last ..            15 ]) or

        not raisesIndexError(striExpr("1") [ integer.first .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ integer.first ..            -9 ]) or
        not raisesIndexError(striExpr("1") [ integer.first ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ integer.first ..            -1 ]) or
        not raisesIndexError(striExpr("1") [ integer.first ..             0 ]) or
        not raisesIndexError(striExpr("1") [ integer.first ..             1 ]) or
        not raisesIndexError(striExpr("1") [ integer.first ..             2 ]) or
        not raisesIndexError(striExpr("1") [ integer.first ..            15 ]) or
        not raisesIndexError(striExpr("1") [ integer.first ..  integer.last ]) or
        not raisesIndexError(striExpr("1") [            -5 .. integer.first ]) or
        not raisesIndexError(striExpr("1") [            -5 ..            -9 ]) or
        not raisesIndexError(striExpr("1") [            -5 ..            -5 ]) or
        not raisesIndexError(striExpr("1") [            -5 ..            -1 ]) or
        not raisesIndexError(striExpr("1") [            -5 ..             0 ]) or
        not raisesIndexError(striExpr("1") [            -5 ..             1 ]) or
        not raisesIndexError(striExpr("1") [            -5 ..             2 ]) or
        not raisesIndexError(striExpr("1") [            -5 ..            15 ]) or
        not raisesIndexError(striExpr("1") [            -5 ..  integer.last ]) or
        not raisesIndexError(striExpr("1") [            -1 .. integer.first ]) or
        not raisesIndexError(striExpr("1") [            -1 ..            -9 ]) or
        not raisesIndexError(striExpr("1") [            -1 ..            -5 ]) or
        not raisesIndexError(striExpr("1") [            -1 ..            -1 ]) or
        not raisesIndexError(striExpr("1") [            -1 ..             0 ]) or
        not raisesIndexError(striExpr("1") [            -1 ..             1 ]) or
        not raisesIndexError(striExpr("1") [            -1 ..             2 ]) or
        not raisesIndexError(striExpr("1") [            -1 ..            15 ]) or
        not raisesIndexError(striExpr("1") [            -1 ..  integer.last ]) or
        not raisesIndexError(striExpr("1") [             0 .. integer.first ]) or
        not raisesIndexError(striExpr("1") [             0 ..            -5 ]) or
        not raisesIndexError(striExpr("1") [             0 ..            -1 ]) or
        not raisesIndexError(striExpr("1") [             0 ..             0 ]) or
        not raisesIndexError(striExpr("1") [             0 ..             1 ]) or
        not raisesIndexError(striExpr("1") [             0 ..             2 ]) or
        not raisesIndexError(striExpr("1") [             0 ..            15 ]) or
        not raisesIndexError(striExpr("1") [             0 ..  integer.last ]) or
        not raisesIndexError(striExpr("1") [             1 .. integer.first ]) or
        not raisesIndexError(striExpr("1") [             1 ..            -5 ]) or
        not raisesIndexError(striExpr("1") [             1 ..            -1 ]) or

        not raisesIndexError(striExpr("1") [             2 .. integer.first ]) or
        not raisesIndexError(striExpr("1") [             2 ..            -5 ]) or
        not raisesIndexError(striExpr("1") [             2 ..            -1 ]) or
        not raisesIndexError(striExpr("1") [             2 ..             0 ]) or

        not raisesIndexError(striExpr("1") [             5 .. integer.first ]) or
        not raisesIndexError(striExpr("1") [             5 ..            -5 ]) or
        not raisesIndexError(striExpr("1") [             5 ..            -1 ]) or
        not raisesIndexError(striExpr("1") [             5 ..             0 ]) or
        not raisesIndexError(striExpr("1") [             5 ..             1 ]) or
        not raisesIndexError(striExpr("1") [             5 ..             3 ]) or

        not raisesIndexError(striExpr("1") [  integer.last .. integer.first ]) or
        not raisesIndexError(striExpr("1") [  integer.last ..            -5 ]) or
        not raisesIndexError(striExpr("1") [  integer.last ..            -1 ]) or
        not raisesIndexError(striExpr("1") [  integer.last ..             0 ]) or
        not raisesIndexError(striExpr("1") [  integer.last ..             1 ]) or
        not raisesIndexError(striExpr("1") [  integer.last ..             4 ]) or
        not raisesIndexError(striExpr("1") [  integer.last ..             5 ]) or
        not raisesIndexError(striExpr("1") [  integer.last ..             6 ]) or
        not raisesIndexError(striExpr("1") [  integer.last ..            15 ]) or

        not raisesIndexError(striExpr("1234567890") [ integer.first .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..             9 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first ..  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..             9 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 ..  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..             9 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 ..  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..             9 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 ..  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [             1 .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [             1 ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [             1 ..            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [             5 .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [             5 ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [             5 ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [             5 ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [             5 ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [             5 ..             3 ]) or

        not raisesIndexError(striExpr("1234567890") [            10 .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            10 ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            10 ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [            10 ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [            10 ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [            10 ..             8 ]) or

        not raisesIndexError(striExpr("1234567890") [            11 .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            11 ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            11 ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [            11 ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [            11 ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [            11 ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [            11 ..             9 ]) or

        not raisesIndexError(striExpr("1234567890") [            15 .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            15 ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            15 ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [            15 ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [            15 ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [            15 ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [            15 ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [            15 ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [            15 ..            13 ]) or

        not raisesIndexError(striExpr("1234567890") [  integer.last .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last ..            20 ]) then
      writeln(" ***** STRING [ START .. STOP ] does not work correct. (5)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ integer.first .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ integer.first .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [ integer.first .. intExpr(           -6) ]) or
        not raisesIndexError(striExpr("") [ integer.first .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ integer.first .. intExpr(           -4) ]) or
        not raisesIndexError(striExpr("") [ integer.first .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ integer.first .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ integer.first .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ integer.first .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [ integer.first .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr(           -6) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr(           -4) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [            -5 .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr(           -6) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr(           -4) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [            -1 .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [             0 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [             0 .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [             0 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [             0 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [             0 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [             0 .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [             0 .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [             1 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [             1 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [             1 .. intExpr(           -1) ]) or

        not raisesIndexError(striExpr("") [             5 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [             5 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [             5 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [             5 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [             5 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [             5 .. intExpr(            3) ]) or

        not raisesIndexError(striExpr("") [  integer.last .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [  integer.last .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [  integer.last .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [  integer.last .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [  integer.last .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [  integer.last .. intExpr(            4) ]) or
        not raisesIndexError(striExpr("") [  integer.last .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("") [  integer.last .. intExpr(            6) ]) or
        not raisesIndexError(striExpr("") [  integer.last .. intExpr(           15) ]) or

        not raisesIndexError(striExpr("1") [ integer.first .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ integer.first .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [ integer.first .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ integer.first .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ integer.first .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ integer.first .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ integer.first .. intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [ integer.first .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [ integer.first .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [            -5 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [            -5 .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [            -5 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [            -5 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [            -5 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [            -5 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [            -5 .. intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [            -5 .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [            -5 .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [            -1 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [            -1 .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [            -1 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [            -1 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [            -1 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [            -1 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [            -1 .. intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [            -1 .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [            -1 .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [             0 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [             0 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [             0 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [             0 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [             0 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [             0 .. intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [             0 .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [             0 .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [             1 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [             1 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [             1 .. intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [             2 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [             2 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [             2 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [             2 .. intExpr(            0) ]) or

        not raisesIndexError(striExpr("1") [             5 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [             5 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [             5 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [             5 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [             5 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [             5 .. intExpr(            3) ]) or

        not raisesIndexError(striExpr("1") [  integer.last .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [  integer.last .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [  integer.last .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [  integer.last .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [  integer.last .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [  integer.last .. intExpr(            4) ]) or
        not raisesIndexError(striExpr("1") [  integer.last .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1") [  integer.last .. intExpr(            6) ]) or
        not raisesIndexError(striExpr("1") [  integer.last .. intExpr(           15) ]) or

        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(            9) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(            9) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(            9) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(            9) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [             1 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [             1 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [             1 .. intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [             5 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [             5 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [             5 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [             5 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [             5 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [             5 .. intExpr(            3) ]) or

        not raisesIndexError(striExpr("1234567890") [            10 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            10 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            10 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [            10 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [            10 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [            10 .. intExpr(            8) ]) or

        not raisesIndexError(striExpr("1234567890") [            11 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            11 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            11 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [            11 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [            11 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [            11 .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [            11 .. intExpr(            9) ]) or

        not raisesIndexError(striExpr("1234567890") [            15 .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 .. intExpr(           13) ]) or

        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last .. intExpr(           20) ]) then
      writeln(" ***** STRING [ START .. STOP ] does not work correct. (6)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ intExpr(integer.first) .. integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) ..            -9 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) ..            -6 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) ..            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) ..            -4 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) ..            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) ..             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) ..             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) ..            15 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) ..  integer.last ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) ..            -9 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) ..            -6 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) ..            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) ..            -4 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) ..            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) ..             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) ..             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) ..            15 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) ..  integer.last ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) ..            -9 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) ..            -6 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) ..            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) ..            -4 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) ..            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) ..             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) ..             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) ..            15 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) ..  integer.last ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) .. integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) ..            -9 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) ..            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) ..             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) ..             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) ..            15 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) ..  integer.last ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) .. integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) ..            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) ..            -1 ]) or

        not raisesIndexError(striExpr("") [ intExpr(            5) .. integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) ..            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) ..            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) ..             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) ..             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) ..             3 ]) or

        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) ..            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) ..            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) ..             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) ..             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) ..             4 ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) ..             5 ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) ..             6 ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) ..            15 ]) or

        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) ..            -9 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) ..            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) ..             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) ..             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) ..             2 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) ..            15 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) ..  integer.last ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) ..            -9 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) ..            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) ..             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) ..             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) ..             2 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) ..            15 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) ..  integer.last ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) ..            -9 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) ..            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) ..             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) ..             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) ..             2 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) ..            15 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) ..  integer.last ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) ..            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) ..             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) ..             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) ..             2 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) ..            15 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) ..  integer.last ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) ..            -1 ]) or

        not raisesIndexError(striExpr("1") [ intExpr(            2) .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) ..            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) ..             0 ]) or

        not raisesIndexError(striExpr("1") [ intExpr(            5) .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) ..            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) ..             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) ..             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) ..             3 ]) or

        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) ..            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) ..            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) ..             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) ..             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) ..             4 ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) ..             5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) ..             6 ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) ..            15 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..             9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) ..  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..             9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) ..  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..             9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) ..  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..             9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) ..  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) ..            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) ..             3 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) ..             8 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) ..             9 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) ..            13 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) ..            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) ..            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) ..             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) ..             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) ..             5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) ..            10 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) ..            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) ..            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) ..            20 ]) then
      writeln(" ***** STRING [ START .. STOP ] does not work correct. (7)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr(           -6) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr(           -4) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr(           -6) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr(           -4) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr(           -6) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr(           -4) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) .. intExpr(           -1) ]) or

        not raisesIndexError(striExpr("") [ intExpr(            5) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            5) .. intExpr(            3) ]) or

        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. intExpr(            4) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. intExpr(            6) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) .. intExpr(           15) ]) or

        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) .. intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [ intExpr(            2) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) .. intExpr(            0) ]) or

        not raisesIndexError(striExpr("1") [ intExpr(            5) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            5) .. intExpr(            3) ]) or

        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. intExpr(            4) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. intExpr(            6) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) .. intExpr(           15) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(            9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(            9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(            9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(            9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) .. intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) .. intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) .. intExpr(            3) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) .. intExpr(            8) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) .. intExpr(            9) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) .. intExpr(           13) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(            5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           20) ]) then
      writeln(" ***** STRING [ START .. STOP ] does not work correct. (8)");
      okay := FALSE;
    end if;
  end func;


const func boolean: check_string_range_assign_1 is func
  result
    var boolean: okay is TRUE;
  local
    var boolean: ok is TRUE;
    var string: stri is "";
  begin
    ok := raisesIndexError(stri := "" [ integer.first .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first ..            -6 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first ..            -4 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first ..            15 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 ..            -6 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 ..            -4 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 ..            15 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 ..            -6 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 ..            -4 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 ..            15 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [             0 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [             0 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 ..            15 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [             1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [             1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [             1 ..            -1 ]) and ok;

    ok := raisesIndexError(stri := "" [             5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [             5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [             5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [             5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [             5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [             5 ..             3 ]) and ok;

    ok := raisesIndexError(stri := "" [  integer.last .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last ..             4 ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last ..             5 ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last ..             6 ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last ..            15 ]) and ok;

    ok := raisesIndexError(stri := "1" [ integer.first .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first ..             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 ..             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 ..             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 ..             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 ..            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [             2 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 ..             0 ]) and ok;

    ok := raisesIndexError(stri := "1" [             5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 ..             3 ]) and ok;

    ok := raisesIndexError(stri := "1" [  integer.last .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last ..             4 ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last ..             6 ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last ..            15 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ integer.first .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..             9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..             9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..             9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..             9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 ..            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [             5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 ..             3 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            10 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 ..             8 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            11 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 ..             9 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            15 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 ..            13 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [  integer.last .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last ..            20 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (1)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [             1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [             1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [             1 .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "" [             5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [             5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [             5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [             5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [             5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [             5 .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := "" [  integer.last .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last .. intExpr(            4) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last .. intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last .. intExpr(           15) ]) and ok;

    ok := raisesIndexError(stri := "1" [ integer.first .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [             2 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 .. intExpr(            0) ]) and ok;

    ok := raisesIndexError(stri := "1" [             5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [             5 .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := "1" [  integer.last .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last .. intExpr(            4) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last .. intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last .. intExpr(           15) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [             5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            10 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 .. intExpr(            8) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            11 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 .. intExpr(            9) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            15 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 .. intExpr(           13) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last .. intExpr(           20) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (2)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) ..            -6 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) ..            -4 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) ..            -6 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) ..            -4 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) ..            -6 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) ..            -4 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) ..            -1 ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr(            5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) ..             3 ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) ..             4 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) ..             5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) ..             6 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) ..            15 ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) ..             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) ..             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) ..             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) ..             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) ..            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(            2) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) ..             0 ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(            5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) ..             3 ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) ..             4 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) ..             6 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) ..            15 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..             9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..             9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..             9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..             9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) ..            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) ..             3 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) ..             8 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) ..             9 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) ..            13 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) ..             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) ..             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) ..             5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) ..            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) ..            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) ..            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) ..            20 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (3)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr(            5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            5) .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. intExpr(            4) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) .. intExpr(           15) ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(            2) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) .. intExpr(            0) ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(            5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            5) .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. intExpr(            4) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) .. intExpr(           15) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) .. intExpr(            8) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) .. intExpr(            9) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) .. intExpr(           13) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) .. intExpr(           20) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (4)");
      okay := FALSE;
    end if;
  end func;


const func boolean: check_string_range_assign_2 is func
  result
    var boolean: okay is TRUE;
  local
    var boolean: ok is TRUE;
    var string: stri is "";
  begin
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first ..            -6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first ..            -4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 ..            -6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 ..            -4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 ..            -6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 ..            -4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 ..            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [             5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 ..             3 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [  integer.last .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last ..             4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last ..             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last ..            15 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first ..             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 ..             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 ..             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 ..             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 ..            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [             2 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 ..             0 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [             5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 ..             3 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last ..             4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last ..             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last ..            15 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..             9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..             9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..             9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..             9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 ..            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [             5 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 ..             3 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            10 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 ..             8 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            11 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 ..             9 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 ..            13 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last ..            20 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (5)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [             5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             5 .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [  integer.last .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last .. intExpr(            4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last .. intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last .. intExpr(           15) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [             2 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 .. intExpr(            0) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [             5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             5 .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. intExpr(            4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last .. intExpr(           15) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [             5 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            10 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 .. intExpr(            8) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            11 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 .. intExpr(            9) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 .. intExpr(           13) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last .. intExpr(           20) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (6)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) ..            -6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) ..            -4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) ..            -6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) ..            -4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) ..            -6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) ..            -4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) ..            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) ..             3 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) ..             4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) ..             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) ..            15 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) ..             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) ..             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) ..             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) ..             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) ..            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) ..             0 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) ..             3 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) ..             4 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) ..             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) ..            15 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..             9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..             9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..             9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..             9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) ..  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) ..            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) ..             3 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) ..             8 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) ..             9 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) ..            13 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) ..            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) ..            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) ..             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) ..             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) ..             5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) ..            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) ..            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) ..            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) ..            20 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (7)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr(           -6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr(           -4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            5) .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. intExpr(            4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) .. intExpr(           15) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) .. intExpr(            0) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            5) .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. intExpr(            4) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) .. intExpr(           15) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(            9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) .. intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(            3) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(            8) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(            9) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(           13) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(            5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr(           20) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (8)");
      okay := FALSE;
    end if;
  end func;


const func string: rangeFunction (in string: stri, in integer: start, in integer: stop) is
  return stri[start .. stop];


const func boolean: check_string_range_func_1 is func
  result
    var boolean: okay is TRUE;
  begin
    if  not raisesIndexError(rangeFunction("", integer.first, integer.first)) or
        not raisesIndexError(rangeFunction("", integer.first,            -9)) or
        not raisesIndexError(rangeFunction("", integer.first,            -6)) or
        not raisesIndexError(rangeFunction("", integer.first,            -5)) or
        not raisesIndexError(rangeFunction("", integer.first,            -4)) or
        not raisesIndexError(rangeFunction("", integer.first,            -1)) or
        not raisesIndexError(rangeFunction("", integer.first,             0)) or
        not raisesIndexError(rangeFunction("", integer.first,             1)) or
        not raisesIndexError(rangeFunction("", integer.first,            15)) or
        not raisesIndexError(rangeFunction("", integer.first,  integer.last)) or
        not raisesIndexError(rangeFunction("",            -5, integer.first)) or
        not raisesIndexError(rangeFunction("",            -5,            -9)) or
        not raisesIndexError(rangeFunction("",            -5,            -6)) or
        not raisesIndexError(rangeFunction("",            -5,            -5)) or
        not raisesIndexError(rangeFunction("",            -5,            -4)) or
        not raisesIndexError(rangeFunction("",            -5,            -1)) or
        not raisesIndexError(rangeFunction("",            -5,             0)) or
        not raisesIndexError(rangeFunction("",            -5,             1)) or
        not raisesIndexError(rangeFunction("",            -5,            15)) or
        not raisesIndexError(rangeFunction("",            -5,  integer.last)) or
        not raisesIndexError(rangeFunction("",            -1, integer.first)) or
        not raisesIndexError(rangeFunction("",            -1,            -9)) or
        not raisesIndexError(rangeFunction("",            -1,            -6)) or
        not raisesIndexError(rangeFunction("",            -1,            -5)) or
        not raisesIndexError(rangeFunction("",            -1,            -4)) or
        not raisesIndexError(rangeFunction("",            -1,            -1)) or
        not raisesIndexError(rangeFunction("",            -1,             0)) or
        not raisesIndexError(rangeFunction("",            -1,             1)) or
        not raisesIndexError(rangeFunction("",            -1,            15)) or
        not raisesIndexError(rangeFunction("",            -1,  integer.last)) or
        not raisesIndexError(rangeFunction("",             0, integer.first)) or
        not raisesIndexError(rangeFunction("",             0,            -9)) or
        not raisesIndexError(rangeFunction("",             0,            -1)) or
        not raisesIndexError(rangeFunction("",             0,             0)) or
        not raisesIndexError(rangeFunction("",             0,             1)) or
        not raisesIndexError(rangeFunction("",             0,            15)) or
        not raisesIndexError(rangeFunction("",             0,  integer.last)) or
        not raisesIndexError(rangeFunction("",             1, integer.first)) or
        not raisesIndexError(rangeFunction("",             1,            -5)) or
        not raisesIndexError(rangeFunction("",             1,            -1)) or

        not raisesIndexError(rangeFunction("",             5, integer.first)) or
        not raisesIndexError(rangeFunction("",             5,            -5)) or
        not raisesIndexError(rangeFunction("",             5,            -1)) or
        not raisesIndexError(rangeFunction("",             5,             0)) or
        not raisesIndexError(rangeFunction("",             5,             1)) or
        not raisesIndexError(rangeFunction("",             5,             3)) or

        not raisesIndexError(rangeFunction("",  integer.last, integer.first)) or
        not raisesIndexError(rangeFunction("",  integer.last,            -5)) or
        not raisesIndexError(rangeFunction("",  integer.last,            -1)) or
        not raisesIndexError(rangeFunction("",  integer.last,             0)) or
        not raisesIndexError(rangeFunction("",  integer.last,             1)) or
        not raisesIndexError(rangeFunction("",  integer.last,             4)) or
        not raisesIndexError(rangeFunction("",  integer.last,             5)) or
        not raisesIndexError(rangeFunction("",  integer.last,             6)) or
        not raisesIndexError(rangeFunction("",  integer.last,            15)) or

        not raisesIndexError(rangeFunction("1", integer.first, integer.first)) or
        not raisesIndexError(rangeFunction("1", integer.first,            -9)) or
        not raisesIndexError(rangeFunction("1", integer.first,            -5)) or
        not raisesIndexError(rangeFunction("1", integer.first,            -1)) or
        not raisesIndexError(rangeFunction("1", integer.first,             0)) or
        not raisesIndexError(rangeFunction("1", integer.first,             1)) or
        not raisesIndexError(rangeFunction("1", integer.first,             2)) or
        not raisesIndexError(rangeFunction("1", integer.first,            15)) or
        not raisesIndexError(rangeFunction("1", integer.first,  integer.last)) or
        not raisesIndexError(rangeFunction("1",            -5, integer.first)) or
        not raisesIndexError(rangeFunction("1",            -5,            -9)) or
        not raisesIndexError(rangeFunction("1",            -5,            -5)) or
        not raisesIndexError(rangeFunction("1",            -5,            -1)) or
        not raisesIndexError(rangeFunction("1",            -5,             0)) or
        not raisesIndexError(rangeFunction("1",            -5,             1)) or
        not raisesIndexError(rangeFunction("1",            -5,             2)) or
        not raisesIndexError(rangeFunction("1",            -5,            15)) or
        not raisesIndexError(rangeFunction("1",            -5,  integer.last)) or
        not raisesIndexError(rangeFunction("1",            -1, integer.first)) or
        not raisesIndexError(rangeFunction("1",            -1,            -9)) or
        not raisesIndexError(rangeFunction("1",            -1,            -5)) or
        not raisesIndexError(rangeFunction("1",            -1,            -1)) or
        not raisesIndexError(rangeFunction("1",            -1,             0)) or
        not raisesIndexError(rangeFunction("1",            -1,             1)) or
        not raisesIndexError(rangeFunction("1",            -1,             2)) or
        not raisesIndexError(rangeFunction("1",            -1,            15)) or
        not raisesIndexError(rangeFunction("1",            -1,  integer.last)) or
        not raisesIndexError(rangeFunction("1",             0, integer.first)) or
        not raisesIndexError(rangeFunction("1",             0,            -5)) or
        not raisesIndexError(rangeFunction("1",             0,            -1)) or
        not raisesIndexError(rangeFunction("1",             0,             0)) or
        not raisesIndexError(rangeFunction("1",             0,             1)) or
        not raisesIndexError(rangeFunction("1",             0,             2)) or
        not raisesIndexError(rangeFunction("1",             0,            15)) or
        not raisesIndexError(rangeFunction("1",             0,  integer.last)) or
        not raisesIndexError(rangeFunction("1",             1, integer.first)) or
        not raisesIndexError(rangeFunction("1",             1,            -5)) or
        not raisesIndexError(rangeFunction("1",             1,            -1)) or

        not raisesIndexError(rangeFunction("1",             2, integer.first)) or
        not raisesIndexError(rangeFunction("1",             2,            -5)) or
        not raisesIndexError(rangeFunction("1",             2,            -1)) or
        not raisesIndexError(rangeFunction("1",             2,             0)) or

        not raisesIndexError(rangeFunction("1",             5, integer.first)) or
        not raisesIndexError(rangeFunction("1",             5,            -5)) or
        not raisesIndexError(rangeFunction("1",             5,            -1)) or
        not raisesIndexError(rangeFunction("1",             5,             0)) or
        not raisesIndexError(rangeFunction("1",             5,             1)) or
        not raisesIndexError(rangeFunction("1",             5,             3)) or

        not raisesIndexError(rangeFunction("1",  integer.last, integer.first)) or
        not raisesIndexError(rangeFunction("1",  integer.last,            -5)) or
        not raisesIndexError(rangeFunction("1",  integer.last,            -1)) or
        not raisesIndexError(rangeFunction("1",  integer.last,             0)) or
        not raisesIndexError(rangeFunction("1",  integer.last,             1)) or
        not raisesIndexError(rangeFunction("1",  integer.last,             4)) or
        not raisesIndexError(rangeFunction("1",  integer.last,             5)) or
        not raisesIndexError(rangeFunction("1",  integer.last,             6)) or
        not raisesIndexError(rangeFunction("1",  integer.last,            15)) or

        not raisesIndexError(rangeFunction("1234567890", integer.first, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,            -9)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,            -5)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,            -1)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,             0)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,             1)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,             5)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,             9)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,            10)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,            11)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,            15)) or
        not raisesIndexError(rangeFunction("1234567890", integer.first,  integer.last)) or
        not raisesIndexError(rangeFunction("1234567890",            -5, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,            -9)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,            -5)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,            -1)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,             0)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,             1)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,             5)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,             9)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,            10)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,            11)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,            15)) or
        not raisesIndexError(rangeFunction("1234567890",            -5,  integer.last)) or
        not raisesIndexError(rangeFunction("1234567890",            -1, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,            -9)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,            -5)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,            -1)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,             0)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,             1)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,             5)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,             9)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,            10)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,            11)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,            15)) or
        not raisesIndexError(rangeFunction("1234567890",            -1,  integer.last)) or
        not raisesIndexError(rangeFunction("1234567890",             0, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890",             0,            -5)) or
        not raisesIndexError(rangeFunction("1234567890",             0,            -1)) or
        not raisesIndexError(rangeFunction("1234567890",             0,             0)) or
        not raisesIndexError(rangeFunction("1234567890",             0,             1)) or
        not raisesIndexError(rangeFunction("1234567890",             0,             5)) or
        not raisesIndexError(rangeFunction("1234567890",             0,             9)) or
        not raisesIndexError(rangeFunction("1234567890",             0,            10)) or
        not raisesIndexError(rangeFunction("1234567890",             0,            11)) or
        not raisesIndexError(rangeFunction("1234567890",             0,            15)) or
        not raisesIndexError(rangeFunction("1234567890",             0,  integer.last)) or
        not raisesIndexError(rangeFunction("1234567890",             1, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890",             1,            -5)) or
        not raisesIndexError(rangeFunction("1234567890",             1,            -1)) or

        not raisesIndexError(rangeFunction("1234567890",             5, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890",             5,            -5)) or
        not raisesIndexError(rangeFunction("1234567890",             5,            -1)) or
        not raisesIndexError(rangeFunction("1234567890",             5,             0)) or
        not raisesIndexError(rangeFunction("1234567890",             5,             1)) or
        not raisesIndexError(rangeFunction("1234567890",             5,             3)) or

        not raisesIndexError(rangeFunction("1234567890",            10, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890",            10,            -5)) or
        not raisesIndexError(rangeFunction("1234567890",            10,            -1)) or
        not raisesIndexError(rangeFunction("1234567890",            10,             0)) or
        not raisesIndexError(rangeFunction("1234567890",            10,             1)) or
        not raisesIndexError(rangeFunction("1234567890",            10,             8)) or

        not raisesIndexError(rangeFunction("1234567890",            11, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890",            11,            -5)) or
        not raisesIndexError(rangeFunction("1234567890",            11,            -1)) or
        not raisesIndexError(rangeFunction("1234567890",            11,             0)) or
        not raisesIndexError(rangeFunction("1234567890",            11,             1)) or
        not raisesIndexError(rangeFunction("1234567890",            11,             5)) or
        not raisesIndexError(rangeFunction("1234567890",            11,             9)) or

        not raisesIndexError(rangeFunction("1234567890",            15, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890",            15,            -5)) or
        not raisesIndexError(rangeFunction("1234567890",            15,            -1)) or
        not raisesIndexError(rangeFunction("1234567890",            15,             0)) or
        not raisesIndexError(rangeFunction("1234567890",            15,             1)) or
        not raisesIndexError(rangeFunction("1234567890",            15,             5)) or
        not raisesIndexError(rangeFunction("1234567890",            15,            10)) or
        not raisesIndexError(rangeFunction("1234567890",            15,            11)) or
        not raisesIndexError(rangeFunction("1234567890",            15,            13)) or

        not raisesIndexError(rangeFunction("1234567890",  integer.last, integer.first)) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last,            -5)) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last,            -1)) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last,             0)) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last,             1)) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last,             5)) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last,            10)) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last,            11)) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last,            15)) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last,            20)) then
      writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(rangeFunction("", integer.first, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("", integer.first, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("", integer.first, intExpr(           -6))) or
        not raisesIndexError(rangeFunction("", integer.first, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("", integer.first, intExpr(           -4))) or
        not raisesIndexError(rangeFunction("", integer.first, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("", integer.first, intExpr(            0))) or
        not raisesIndexError(rangeFunction("", integer.first, intExpr(            1))) or
        not raisesIndexError(rangeFunction("", integer.first, intExpr(           15))) or
        not raisesIndexError(rangeFunction("", integer.first, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr(           -6))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr(           -4))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr(            0))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr(            1))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr(           15))) or
        not raisesIndexError(rangeFunction("",            -5, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr(           -6))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr(           -4))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr(            0))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr(            1))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr(           15))) or
        not raisesIndexError(rangeFunction("",            -1, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("",             0, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("",             0, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("",             0, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("",             0, intExpr(            0))) or
        not raisesIndexError(rangeFunction("",             0, intExpr(            1))) or
        not raisesIndexError(rangeFunction("",             0, intExpr(           15))) or
        not raisesIndexError(rangeFunction("",             0, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("",             1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("",             1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("",             1, intExpr(           -1))) or

        not raisesIndexError(rangeFunction("",             5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("",             5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("",             5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("",             5, intExpr(            0))) or
        not raisesIndexError(rangeFunction("",             5, intExpr(            1))) or
        not raisesIndexError(rangeFunction("",             5, intExpr(            3))) or

        not raisesIndexError(rangeFunction("",  integer.last, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("",  integer.last, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("",  integer.last, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("",  integer.last, intExpr(            0))) or
        not raisesIndexError(rangeFunction("",  integer.last, intExpr(            1))) or
        not raisesIndexError(rangeFunction("",  integer.last, intExpr(            4))) or
        not raisesIndexError(rangeFunction("",  integer.last, intExpr(            5))) or
        not raisesIndexError(rangeFunction("",  integer.last, intExpr(            6))) or
        not raisesIndexError(rangeFunction("",  integer.last, intExpr(           15))) or

        not raisesIndexError(rangeFunction("1", integer.first, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1", integer.first, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1", integer.first, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1", integer.first, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1", integer.first, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1", integer.first, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1", integer.first, intExpr(            2))) or
        not raisesIndexError(rangeFunction("1", integer.first, intExpr(           15))) or
        not raisesIndexError(rangeFunction("1", integer.first, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1",            -5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1",            -5, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1",            -5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1",            -5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1",            -5, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1",            -5, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1",            -5, intExpr(            2))) or
        not raisesIndexError(rangeFunction("1",            -5, intExpr(           15))) or
        not raisesIndexError(rangeFunction("1",            -5, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1",            -1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1",            -1, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1",            -1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1",            -1, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1",            -1, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1",            -1, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1",            -1, intExpr(            2))) or
        not raisesIndexError(rangeFunction("1",            -1, intExpr(           15))) or
        not raisesIndexError(rangeFunction("1",            -1, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1",             0, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1",             0, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1",             0, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1",             0, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1",             0, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1",             0, intExpr(            2))) or
        not raisesIndexError(rangeFunction("1",             0, intExpr(           15))) or
        not raisesIndexError(rangeFunction("1",             0, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1",             1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1",             1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1",             1, intExpr(           -1))) or

        not raisesIndexError(rangeFunction("1",             2, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1",             2, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1",             2, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1",             2, intExpr(            0))) or

        not raisesIndexError(rangeFunction("1",             5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1",             5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1",             5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1",             5, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1",             5, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1",             5, intExpr(            3))) or

        not raisesIndexError(rangeFunction("1",  integer.last, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1",  integer.last, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1",  integer.last, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1",  integer.last, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1",  integer.last, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1",  integer.last, intExpr(            4))) or
        not raisesIndexError(rangeFunction("1",  integer.last, intExpr(            5))) or
        not raisesIndexError(rangeFunction("1",  integer.last, intExpr(            6))) or
        not raisesIndexError(rangeFunction("1",  integer.last, intExpr(           15))) or

        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(            9))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890", integer.first, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(            9))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890",            -5, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(            9))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890",            -1, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(            9))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890",             0, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1234567890",             1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890",             1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890",             1, intExpr(           -1))) or

        not raisesIndexError(rangeFunction("1234567890",             5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890",             5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890",             5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890",             5, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890",             5, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890",             5, intExpr(            3))) or

        not raisesIndexError(rangeFunction("1234567890",            10, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890",            10, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890",            10, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890",            10, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890",            10, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890",            10, intExpr(            8))) or

        not raisesIndexError(rangeFunction("1234567890",            11, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890",            11, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890",            11, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890",            11, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890",            11, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890",            11, intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890",            11, intExpr(            9))) or

        not raisesIndexError(rangeFunction("1234567890",            15, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890",            15, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890",            15, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890",            15, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890",            15, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890",            15, intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890",            15, intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890",            15, intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890",            15, intExpr(           13))) or

        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890",  integer.last, intExpr(           20))) then
      writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(rangeFunction("", intExpr(integer.first), integer.first)) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first),            -9)) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first),            -6)) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first),            -5)) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first),            -4)) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first),            -1)) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first),             0)) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first),             1)) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first),            15)) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first),  integer.last)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), integer.first)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5),            -9)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5),            -6)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5),            -5)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5),            -4)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5),            -1)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5),             0)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5),             1)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5),            15)) or
        not raisesIndexError(rangeFunction("", intExpr(           -5),  integer.last)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), integer.first)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1),            -9)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1),            -6)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1),            -5)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1),            -4)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1),            -1)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1),             0)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1),             1)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1),            15)) or
        not raisesIndexError(rangeFunction("", intExpr(           -1),  integer.last)) or
        not raisesIndexError(rangeFunction("", intExpr(            0), integer.first)) or
        not raisesIndexError(rangeFunction("", intExpr(            0),            -9)) or
        not raisesIndexError(rangeFunction("", intExpr(            0),            -1)) or
        not raisesIndexError(rangeFunction("", intExpr(            0),             0)) or
        not raisesIndexError(rangeFunction("", intExpr(            0),             1)) or
        not raisesIndexError(rangeFunction("", intExpr(            0),            15)) or
        not raisesIndexError(rangeFunction("", intExpr(            0),  integer.last)) or
        not raisesIndexError(rangeFunction("", intExpr(            1), integer.first)) or
        not raisesIndexError(rangeFunction("", intExpr(            1),            -5)) or
        not raisesIndexError(rangeFunction("", intExpr(            1),            -1)) or

        not raisesIndexError(rangeFunction("", intExpr(            5), integer.first)) or
        not raisesIndexError(rangeFunction("", intExpr(            5),            -5)) or
        not raisesIndexError(rangeFunction("", intExpr(            5),            -1)) or
        not raisesIndexError(rangeFunction("", intExpr(            5),             0)) or
        not raisesIndexError(rangeFunction("", intExpr(            5),             1)) or
        not raisesIndexError(rangeFunction("", intExpr(            5),             3)) or

        not raisesIndexError(rangeFunction("", intExpr( integer.last), integer.first)) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last),            -5)) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last),            -1)) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last),             0)) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last),             1)) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last),             4)) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last),             5)) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last),             6)) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last),            15)) or

        not raisesIndexError(rangeFunction("1", intExpr(integer.first), integer.first)) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first),            -9)) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first),            -5)) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first),            -1)) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first),             0)) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first),             1)) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first),             2)) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first),            15)) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first),  integer.last)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), integer.first)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5),            -9)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5),            -5)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5),            -1)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5),             0)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5),             1)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5),             2)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5),            15)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5),  integer.last)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), integer.first)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1),            -9)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1),            -5)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1),            -1)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1),             0)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1),             1)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1),             2)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1),            15)) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1),  integer.last)) or
        not raisesIndexError(rangeFunction("1", intExpr(            0), integer.first)) or
        not raisesIndexError(rangeFunction("1", intExpr(            0),            -5)) or
        not raisesIndexError(rangeFunction("1", intExpr(            0),            -1)) or
        not raisesIndexError(rangeFunction("1", intExpr(            0),             0)) or
        not raisesIndexError(rangeFunction("1", intExpr(            0),             1)) or
        not raisesIndexError(rangeFunction("1", intExpr(            0),             2)) or
        not raisesIndexError(rangeFunction("1", intExpr(            0),            15)) or
        not raisesIndexError(rangeFunction("1", intExpr(            0),  integer.last)) or
        not raisesIndexError(rangeFunction("1", intExpr(            1), integer.first)) or
        not raisesIndexError(rangeFunction("1", intExpr(            1),            -5)) or
        not raisesIndexError(rangeFunction("1", intExpr(            1),            -1)) or

        not raisesIndexError(rangeFunction("1", intExpr(            2), integer.first)) or
        not raisesIndexError(rangeFunction("1", intExpr(            2),            -5)) or
        not raisesIndexError(rangeFunction("1", intExpr(            2),            -1)) or
        not raisesIndexError(rangeFunction("1", intExpr(            2),             0)) or

        not raisesIndexError(rangeFunction("1", intExpr(            5), integer.first)) or
        not raisesIndexError(rangeFunction("1", intExpr(            5),            -5)) or
        not raisesIndexError(rangeFunction("1", intExpr(            5),            -1)) or
        not raisesIndexError(rangeFunction("1", intExpr(            5),             0)) or
        not raisesIndexError(rangeFunction("1", intExpr(            5),             1)) or
        not raisesIndexError(rangeFunction("1", intExpr(            5),             3)) or

        not raisesIndexError(rangeFunction("1", intExpr( integer.last), integer.first)) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last),            -5)) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last),            -1)) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last),             0)) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last),             1)) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last),             4)) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last),             5)) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last),             6)) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last),            15)) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),            -9)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),            -1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),             0)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),             1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),             5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),             9)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),            10)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),            11)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),            15)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first),  integer.last)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),            -9)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),            -1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),             0)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),             1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),             5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),             9)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),            10)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),            11)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),            15)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5),  integer.last)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),            -9)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),            -1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),             0)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),             1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),             5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),             9)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),            10)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),            11)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),            15)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1),  integer.last)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),            -1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),             0)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),             1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),             5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),             9)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),            10)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),            11)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),            15)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0),  integer.last)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            1), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            1),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            1),            -1)) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(            5), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5),            -1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5),             0)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5),             1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5),             3)) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(           10), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10),            -1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10),             0)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10),             1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10),             8)) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(           11), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11),            -1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11),             0)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11),             1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11),             5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11),             9)) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15),            -1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15),             0)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15),             1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15),             5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15),            10)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15),            11)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15),            13)) or

        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), integer.first)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last),            -5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last),            -1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last),             0)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last),             1)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last),             5)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last),            10)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last),            11)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last),            15)) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last),            20)) then
      writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (3)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr(           -6))) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr(           -4))) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr(           15))) or
        not raisesIndexError(rangeFunction("", intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr(           -6))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr(           -4))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr(           15))) or
        not raisesIndexError(rangeFunction("", intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr(           -6))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr(           -4))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr(           15))) or
        not raisesIndexError(rangeFunction("", intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("", intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("", intExpr(            0), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("", intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("", intExpr(            0), intExpr(            0))) or
        not raisesIndexError(rangeFunction("", intExpr(            0), intExpr(            1))) or
        not raisesIndexError(rangeFunction("", intExpr(            0), intExpr(           15))) or
        not raisesIndexError(rangeFunction("", intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("", intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("", intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("", intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(rangeFunction("", intExpr(            5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("", intExpr(            5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("", intExpr(            5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("", intExpr(            5), intExpr(            0))) or
        not raisesIndexError(rangeFunction("", intExpr(            5), intExpr(            1))) or
        not raisesIndexError(rangeFunction("", intExpr(            5), intExpr(            3))) or

        not raisesIndexError(rangeFunction("", intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last), intExpr(            0))) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last), intExpr(            1))) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last), intExpr(            4))) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last), intExpr(            5))) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last), intExpr(            6))) or
        not raisesIndexError(rangeFunction("", intExpr( integer.last), intExpr(           15))) or

        not raisesIndexError(rangeFunction("1", intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first), intExpr(            2))) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first), intExpr(           15))) or
        not raisesIndexError(rangeFunction("1", intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), intExpr(            2))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), intExpr(           15))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), intExpr(            2))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), intExpr(           15))) or
        not raisesIndexError(rangeFunction("1", intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1", intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1", intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1", intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1", intExpr(            0), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1", intExpr(            0), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1", intExpr(            0), intExpr(            2))) or
        not raisesIndexError(rangeFunction("1", intExpr(            0), intExpr(           15))) or
        not raisesIndexError(rangeFunction("1", intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1", intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1", intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1", intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(rangeFunction("1", intExpr(            2), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1", intExpr(            2), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1", intExpr(            2), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1", intExpr(            2), intExpr(            0))) or

        not raisesIndexError(rangeFunction("1", intExpr(            5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1", intExpr(            5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1", intExpr(            5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1", intExpr(            5), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1", intExpr(            5), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1", intExpr(            5), intExpr(            3))) or

        not raisesIndexError(rangeFunction("1", intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last), intExpr(            4))) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last), intExpr(            5))) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last), intExpr(            6))) or
        not raisesIndexError(rangeFunction("1", intExpr( integer.last), intExpr(           15))) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(            9))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(            9))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(            9))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(            9))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(            5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(            5), intExpr(            3))) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(           10), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           10), intExpr(            8))) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(           11), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11), intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           11), intExpr(            9))) or

        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr(           15), intExpr(           13))) or

        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(           -1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(            0))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(            1))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(            5))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(           10))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(           11))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(           15))) or
        not raisesIndexError(rangeFunction("1234567890", intExpr( integer.last), intExpr(           20))) then
      writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (4)");
      okay := FALSE;
    end if;
  end func;


const func boolean: check_string_range_func_2 is func
  result
    var boolean: okay is TRUE;
  begin
    if  not raisesIndexError(rangeFunction(striExpr(""), integer.first, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first,            -9)) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first,            -6)) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first,            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first,            -4)) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first,            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first,             0)) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first,             1)) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first,            15)) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5,            -9)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5,            -6)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5,            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5,            -4)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5,            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5,             0)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5,             1)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5,            15)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1,            -9)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1,            -6)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1,            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1,            -4)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1,            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1,             0)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1,             1)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1,            15)) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr(""),             0, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""),             0,            -9)) or
        not raisesIndexError(rangeFunction(striExpr(""),             0,            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""),             0,             0)) or
        not raisesIndexError(rangeFunction(striExpr(""),             0,             1)) or
        not raisesIndexError(rangeFunction(striExpr(""),             0,            15)) or
        not raisesIndexError(rangeFunction(striExpr(""),             0,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr(""),             1, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""),             1,            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""),             1,            -1)) or

        not raisesIndexError(rangeFunction(striExpr(""),             5, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""),             5,            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""),             5,            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""),             5,             0)) or
        not raisesIndexError(rangeFunction(striExpr(""),             5,             1)) or
        not raisesIndexError(rangeFunction(striExpr(""),             5,             3)) or

        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last,            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last,            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last,             0)) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last,             1)) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last,             4)) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last,             5)) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last,             6)) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last,            15)) or

        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first,            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first,             2)) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first,            15)) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5,            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5,             2)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5,            15)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1,            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1,             2)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1,            15)) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0,             2)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0,            15)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             1, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             1,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             1,            -1)) or

        not raisesIndexError(rangeFunction(striExpr("1"),             2, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             2,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             2,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             2,             0)) or

        not raisesIndexError(rangeFunction(striExpr("1"),             5, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5,             3)) or

        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last,             4)) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last,             5)) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last,             6)) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last,            15)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,             9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,             9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,             9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,             9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0,  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             1, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             1,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             1,            -1)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5,             3)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10,             8)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11,             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11,             9)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15,             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15,            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15,            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15,            13)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last,            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last,            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last,             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last,             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last,             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last,            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last,            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last,            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last,            20)) then
      writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (5)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr(           -6))) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr(           -4))) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr(""), integer.first, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr(           -6))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr(           -4))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -5, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr(           -6))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr(           -4))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr(""),            -1, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr(""),             0, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""),             0, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr(""),             0, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""),             0, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""),             0, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""),             0, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr(""),             0, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr(""),             1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""),             1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""),             1, intExpr(           -1))) or

        not raisesIndexError(rangeFunction(striExpr(""),             5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""),             5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""),             5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""),             5, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""),             5, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""),             5, intExpr(            3))) or

        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, intExpr(            4))) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, intExpr(            6))) or
        not raisesIndexError(rangeFunction(striExpr(""),  integer.last, intExpr(           15))) or

        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, intExpr(            2))) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1"), integer.first, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, intExpr(            2))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -5, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, intExpr(            2))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1"),            -1, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0, intExpr(            2))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             0, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             1, intExpr(           -1))) or

        not raisesIndexError(rangeFunction(striExpr("1"),             2, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             2, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             2, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             2, intExpr(            0))) or

        not raisesIndexError(rangeFunction(striExpr("1"),             5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),             5, intExpr(            3))) or

        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, intExpr(            4))) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, intExpr(            6))) or
        not raisesIndexError(rangeFunction(striExpr("1"),  integer.last, intExpr(           15))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(            9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), integer.first, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(            9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -5, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(            9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            -1, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(            9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             0, intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             1, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             1, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             1, intExpr(           -1))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),             5, intExpr(            3))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            10, intExpr(            8))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11, intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            11, intExpr(            9))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),            15, intExpr(           13))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"),  integer.last, intExpr(           20))) then
      writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (6)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first),            -9)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first),            -6)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first),            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first),            -4)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first),            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first),             0)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first),             1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first),            15)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5),            -9)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5),            -6)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5),            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5),            -4)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5),            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5),             0)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5),             1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5),            15)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1),            -9)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1),            -6)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1),            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1),            -4)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1),            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1),             0)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1),             1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1),            15)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0),            -9)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0),            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0),             0)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0),             1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0),            15)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            1), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            1),            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            1),            -1)) or

        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5),            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5),            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5),             0)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5),             1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5),             3)) or

        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last),            -5)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last),            -1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last),             0)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last),             1)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last),             4)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last),             5)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last),             6)) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last),            15)) or

        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first),            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first),             2)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first),            15)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5),            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5),             2)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5),            15)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1),            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1),             2)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1),            15)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0),             2)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0),            15)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            1), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            1),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            1),            -1)) or

        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            2), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            2),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            2),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            2),             0)) or

        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5),             3)) or

        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last),             4)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last),             5)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last),             6)) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last),            15)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),             9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),             9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),            -9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),             9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),             9)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0),  integer.last)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            1), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            1),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            1),            -1)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5),             3)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10),             8)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11),             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11),             9)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15),             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15),            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15),            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15),            13)) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), integer.first)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last),            -5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last),            -1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last),             0)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last),             1)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last),             5)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last),            10)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last),            11)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last),            15)) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last),            20)) then
      writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (7)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr(           -6))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr(           -4))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr(           -6))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr(           -4))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr(           -6))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr(           -4))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr(            5), intExpr(            3))) or

        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), intExpr(            4))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), intExpr(            6))) or
        not raisesIndexError(rangeFunction(striExpr(""), intExpr( integer.last), intExpr(           15))) or

        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), intExpr(            2))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), intExpr(            2))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), intExpr(            2))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0), intExpr(            2))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            2), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            2), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            2), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            2), intExpr(            0))) or

        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5), intExpr(            3))) or

        not raisesIndexError(rangeFunction(striExpr("1"), intExpr(            5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last), intExpr(            4))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last), intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last), intExpr(            6))) or
        not raisesIndexError(rangeFunction(striExpr("1"), intExpr( integer.last), intExpr(           15))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(            9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(            9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(            9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(            9))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(            3))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(            8))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(            9))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(           13))) or

        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(           -1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(            0))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(            1))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(            5))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(           10))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(           11))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(           15))) or
        not raisesIndexError(rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(           20))) then
      writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (8)");
      okay := FALSE;
    end if;
  end func;


const proc: check_string_range is func
  local
    var boolean: okay is TRUE;
  begin
    if not check_string_range_expr_1 then
      okay := FALSE;
    end if;

    if not check_string_range_expr_2 then
      okay := FALSE;
    end if;

    if not check_string_range_assign_1 then
      okay := FALSE;
    end if;

    if not check_string_range_assign_2 then
      okay := FALSE;
    end if;

    if not check_string_range_func_1 then
      okay := FALSE;
    end if;

    if not check_string_range_func_2 then
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [-2147483643 .. pred(-2147483647)]) or
        not raisesIndexError("" [-2147483644 .. pred(-2147483647)]) or
        not raisesIndexError("" [-2147483645 .. pred(-2147483647)]) or
        not raisesIndexError("" [-2147483646 .. pred(-2147483647)]) or
        not raisesIndexError("" [-2147483647 .. pred(-2147483647)]) or
        not raisesIndexError("" [pred(-2147483647) .. pred(-2147483647)]) or
        not raisesIndexError("" [-2147483643 .. -2147483647]) or
        not raisesIndexError("" [-2147483644 .. -2147483647]) or
        not raisesIndexError("" [-2147483645 .. -2147483647]) or
        not raisesIndexError("" [-2147483646 .. -2147483647]) or
        not raisesIndexError("" [-2147483647 .. -2147483647]) or
        not raisesIndexError("" [pred(-2147483647) .. -2147483647]) or
        not raisesIndexError("" [-2147483643 .. -1]) or
        not raisesIndexError("" [-2147483644 .. -1]) or
        not raisesIndexError("" [-2147483645 .. -1]) or
        not raisesIndexError("" [-2147483646 .. -1]) or
        not raisesIndexError("" [-2147483647 .. -1]) or
        not raisesIndexError("" [pred(-2147483647) .. -1]) or
        not raisesIndexError("" [-2147483643 .. 0]) or
        not raisesIndexError("" [-2147483644 .. 0]) or
        not raisesIndexError("" [-2147483645 .. 0]) or
        not raisesIndexError("" [-2147483646 .. 0]) or
        not raisesIndexError("" [-2147483647 .. 0]) or
        not raisesIndexError("" [pred(-2147483647) .. 0]) or
        not raisesIndexError("" [-2147483643 .. 1]) or
        not raisesIndexError("" [-2147483644 .. 1]) or
        not raisesIndexError("" [-2147483645 .. 1]) or
        not raisesIndexError("" [-2147483646 .. 1]) or
        not raisesIndexError("" [-2147483647 .. 1]) or
        not raisesIndexError("" [pred(-2147483647) .. 1]) or
        not raisesIndexError("" [-2147483643 .. 2147483647]) or
        not raisesIndexError("" [-2147483644 .. 2147483647]) or
        not raisesIndexError("" [-2147483645 .. 2147483647]) or
        not raisesIndexError("" [-2147483646 .. 2147483647]) or
        not raisesIndexError("" [-2147483647 .. 2147483647]) or
        not raisesIndexError("" [pred(-2147483647) .. 2147483647]) or
        not raisesIndexError("1" [-2147483643 .. pred(-2147483647)]) or
        not raisesIndexError("1" [-2147483644 .. pred(-2147483647)]) or
        not raisesIndexError("1" [-2147483645 .. pred(-2147483647)]) or
        not raisesIndexError("1" [-2147483646 .. pred(-2147483647)]) or
        not raisesIndexError("1" [-2147483647 .. pred(-2147483647)]) or
        not raisesIndexError("1" [pred(-2147483647) .. pred(-2147483647)]) or
        not raisesIndexError("1" [-2147483643 .. -2147483647]) or
        not raisesIndexError("1" [-2147483644 .. -2147483647]) or
        not raisesIndexError("1" [-2147483645 .. -2147483647]) or
        not raisesIndexError("1" [-2147483646 .. -2147483647]) or
        not raisesIndexError("1" [-2147483647 .. -2147483647]) or
        not raisesIndexError("1" [pred(-2147483647) .. -2147483647]) or
        not raisesIndexError("1" [-2147483643 .. -1]) or
        not raisesIndexError("1" [-2147483644 .. -1]) or
        not raisesIndexError("1" [-2147483645 .. -1]) or
        not raisesIndexError("1" [-2147483646 .. -1]) or
        not raisesIndexError("1" [-2147483647 .. -1]) or
        not raisesIndexError("1" [pred(-2147483647) .. -1]) or
        not raisesIndexError("1" [-2147483643 .. 0]) or
        not raisesIndexError("1" [-2147483644 .. 0]) or
        not raisesIndexError("1" [-2147483645 .. 0]) or
        not raisesIndexError("1" [-2147483646 .. 0]) or
        not raisesIndexError("1" [-2147483647 .. 0]) or
        not raisesIndexError("1" [pred(-2147483647) .. 0]) or
        not raisesIndexError("1" [-2147483643 .. 1]) or
        not raisesIndexError("1" [-2147483644 .. 1]) or
        not raisesIndexError("1" [-2147483645 .. 1]) or
        not raisesIndexError("1" [-2147483646 .. 1]) or
        not raisesIndexError("1" [-2147483647 .. 1]) or
        not raisesIndexError("1" [pred(-2147483647) .. 1]) or
        not raisesIndexError("1" [-2147483643 .. 2]) or
        not raisesIndexError("1" [-2147483644 .. 2]) or
        not raisesIndexError("1" [-2147483645 .. 2]) or
        not raisesIndexError("1" [-2147483646 .. 2]) or
        not raisesIndexError("1" [-2147483647 .. 2]) or
        not raisesIndexError("1" [pred(-2147483647) .. 2]) or
        not raisesIndexError("1" [-2147483643 .. 2147483647]) or
        not raisesIndexError("1" [-2147483644 .. 2147483647]) or
        not raisesIndexError("1" [-2147483645 .. 2147483647]) or
        not raisesIndexError("1" [-2147483646 .. 2147483647]) or
        not raisesIndexError("1" [-2147483647 .. 2147483647]) or
        not raisesIndexError("1" [pred(-2147483647) .. 2147483647]) or
        not raisesIndexError("12" [-2147483643 .. pred(-2147483647)]) or
        not raisesIndexError("12" [-2147483644 .. pred(-2147483647)]) or
        not raisesIndexError("12" [-2147483645 .. pred(-2147483647)]) or
        not raisesIndexError("12" [-2147483646 .. pred(-2147483647)]) or
        not raisesIndexError("12" [-2147483647 .. pred(-2147483647)]) or
        not raisesIndexError("12" [pred(-2147483647) .. pred(-2147483647)]) or
        not raisesIndexError("12" [-2147483643 .. -2147483647]) or
        not raisesIndexError("12" [-2147483644 .. -2147483647]) or
        not raisesIndexError("12" [-2147483645 .. -2147483647]) or
        not raisesIndexError("12" [-2147483646 .. -2147483647]) or
        not raisesIndexError("12" [-2147483647 .. -2147483647]) or
        not raisesIndexError("12" [pred(-2147483647) .. -2147483647]) or
        not raisesIndexError("12" [-2147483643 .. -1]) or
        not raisesIndexError("12" [-2147483644 .. -1]) or
        not raisesIndexError("12" [-2147483645 .. -1]) or
        not raisesIndexError("12" [-2147483646 .. -1]) or
        not raisesIndexError("12" [-2147483647 .. -1]) or
        not raisesIndexError("12" [pred(-2147483647) .. -1]) or
        not raisesIndexError("12" [-2147483643 .. 0]) or
        not raisesIndexError("12" [-2147483644 .. 0]) or
        not raisesIndexError("12" [-2147483645 .. 0]) or
        not raisesIndexError("12" [-2147483646 .. 0]) or
        not raisesIndexError("12" [-2147483647 .. 0]) or
        not raisesIndexError("12" [pred(-2147483647) .. 0]) or
        not raisesIndexError("12" [-2147483643 .. 1]) or
        not raisesIndexError("12" [-2147483644 .. 1]) or
        not raisesIndexError("12" [-2147483645 .. 1]) or
        not raisesIndexError("12" [-2147483646 .. 1]) or
        not raisesIndexError("12" [-2147483647 .. 1]) or
        not raisesIndexError("12" [pred(-2147483647) .. 1]) or
        not raisesIndexError("12" [-2147483643 .. 2]) or
        not raisesIndexError("12" [-2147483644 .. 2]) or
        not raisesIndexError("12" [-2147483645 .. 2]) or
        not raisesIndexError("12" [-2147483646 .. 2]) or
        not raisesIndexError("12" [-2147483647 .. 2]) or
        not raisesIndexError("12" [pred(-2147483647) .. 2]) or
        not raisesIndexError("12" [-2147483643 .. 3]) or
        not raisesIndexError("12" [-2147483644 .. 3]) or
        not raisesIndexError("12" [-2147483645 .. 3]) or
        not raisesIndexError("12" [-2147483646 .. 3]) or
        not raisesIndexError("12" [-2147483647 .. 3]) or
        not raisesIndexError("12" [pred(-2147483647) .. 3]) or
        not raisesIndexError("12" [-2147483643 .. 2147483647]) or
        not raisesIndexError("12" [-2147483644 .. 2147483647]) or
        not raisesIndexError("12" [-2147483645 .. 2147483647]) or
        not raisesIndexError("12" [-2147483646 .. 2147483647]) or
        not raisesIndexError("12" [-2147483647 .. 2147483647]) or
        not raisesIndexError("12" [pred(-2147483647) .. 2147483647]) then
      writeln(" ***** STRING [ START .. STOP ] with 32-bit maximums does not work correct.");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [-9223372036854775803 ..        integer.first]) or
        not raisesIndexError("" [-9223372036854775804 ..        integer.first]) or
        not raisesIndexError("" [-9223372036854775805 ..        integer.first]) or
        not raisesIndexError("" [-9223372036854775806 ..        integer.first]) or
        not raisesIndexError("" [-9223372036854775807 ..        integer.first]) or
        not raisesIndexError("" [       integer.first ..        integer.first]) or
        not raisesIndexError("" [-9223372036854775803 .. -9223372036854775807]) or
        not raisesIndexError("" [-9223372036854775804 .. -9223372036854775807]) or
        not raisesIndexError("" [-9223372036854775805 .. -9223372036854775807]) or
        not raisesIndexError("" [-9223372036854775806 .. -9223372036854775807]) or
        not raisesIndexError("" [-9223372036854775807 .. -9223372036854775807]) or
        not raisesIndexError("" [       integer.first .. -9223372036854775807]) or
        not raisesIndexError("" [-9223372036854775803 ..                   -1]) or
        not raisesIndexError("" [-9223372036854775804 ..                   -1]) or
        not raisesIndexError("" [-9223372036854775805 ..                   -1]) or
        not raisesIndexError("" [-9223372036854775806 ..                   -1]) or
        not raisesIndexError("" [-9223372036854775807 ..                   -1]) or
        not raisesIndexError("" [       integer.first ..                   -1]) or
        not raisesIndexError("" [-9223372036854775803 ..                    0]) or
        not raisesIndexError("" [-9223372036854775804 ..                    0]) or
        not raisesIndexError("" [-9223372036854775805 ..                    0]) or
        not raisesIndexError("" [-9223372036854775806 ..                    0]) or
        not raisesIndexError("" [-9223372036854775807 ..                    0]) or
        not raisesIndexError("" [       integer.first ..                    0]) or
        not raisesIndexError("" [-9223372036854775803 ..                    1]) or
        not raisesIndexError("" [-9223372036854775804 ..                    1]) or
        not raisesIndexError("" [-9223372036854775805 ..                    1]) or
        not raisesIndexError("" [-9223372036854775806 ..                    1]) or
        not raisesIndexError("" [-9223372036854775807 ..                    1]) or
        not raisesIndexError("" [       integer.first ..                    1]) or
        not raisesIndexError("" [-9223372036854775803 ..         integer.last]) or
        not raisesIndexError("" [-9223372036854775804 ..         integer.last]) or
        not raisesIndexError("" [-9223372036854775805 ..         integer.last]) or
        not raisesIndexError("" [-9223372036854775806 ..         integer.last]) or
        not raisesIndexError("" [-9223372036854775807 ..         integer.last]) or
        not raisesIndexError("" [       integer.first ..         integer.last]) or
        not raisesIndexError("1" [-9223372036854775803 ..        integer.first]) or
        not raisesIndexError("1" [-9223372036854775804 ..        integer.first]) or
        not raisesIndexError("1" [-9223372036854775805 ..        integer.first]) or
        not raisesIndexError("1" [-9223372036854775806 ..        integer.first]) or
        not raisesIndexError("1" [-9223372036854775807 ..        integer.first]) or
        not raisesIndexError("1" [       integer.first ..        integer.first]) or
        not raisesIndexError("1" [-9223372036854775803 .. -9223372036854775807]) or
        not raisesIndexError("1" [-9223372036854775804 .. -9223372036854775807]) or
        not raisesIndexError("1" [-9223372036854775805 .. -9223372036854775807]) or
        not raisesIndexError("1" [-9223372036854775806 .. -9223372036854775807]) or
        not raisesIndexError("1" [-9223372036854775807 .. -9223372036854775807]) or
        not raisesIndexError("1" [       integer.first .. -9223372036854775807]) or
        not raisesIndexError("1" [-9223372036854775803 ..                   -1]) or
        not raisesIndexError("1" [-9223372036854775804 ..                   -1]) or
        not raisesIndexError("1" [-9223372036854775805 ..                   -1]) or
        not raisesIndexError("1" [-9223372036854775806 ..                   -1]) or
        not raisesIndexError("1" [-9223372036854775807 ..                   -1]) or
        not raisesIndexError("1" [       integer.first ..                   -1]) or
        not raisesIndexError("1" [-9223372036854775803 ..                    0]) or
        not raisesIndexError("1" [-9223372036854775804 ..                    0]) or
        not raisesIndexError("1" [-9223372036854775805 ..                    0]) or
        not raisesIndexError("1" [-9223372036854775806 ..                    0]) or
        not raisesIndexError("1" [-9223372036854775807 ..                    0]) or
        not raisesIndexError("1" [       integer.first ..                    0]) or
        not raisesIndexError("1" [-9223372036854775803 ..                    1]) or
        not raisesIndexError("1" [-9223372036854775804 ..                    1]) or
        not raisesIndexError("1" [-9223372036854775805 ..                    1]) or
        not raisesIndexError("1" [-9223372036854775806 ..                    1]) or
        not raisesIndexError("1" [-9223372036854775807 ..                    1]) or
        not raisesIndexError("1" [       integer.first ..                    1]) or
        not raisesIndexError("1" [-9223372036854775803 ..                    2]) or
        not raisesIndexError("1" [-9223372036854775804 ..                    2]) or
        not raisesIndexError("1" [-9223372036854775805 ..                    2]) or
        not raisesIndexError("1" [-9223372036854775806 ..                    2]) or
        not raisesIndexError("1" [-9223372036854775807 ..                    2]) or
        not raisesIndexError("1" [       integer.first ..                    2]) or
        not raisesIndexError("1" [-9223372036854775803 ..         integer.last]) or
        not raisesIndexError("1" [-9223372036854775804 ..         integer.last]) or
        not raisesIndexError("1" [-9223372036854775805 ..         integer.last]) or
        not raisesIndexError("1" [-9223372036854775806 ..         integer.last]) or
        not raisesIndexError("1" [-9223372036854775807 ..         integer.last]) or
        not raisesIndexError("1" [       integer.first ..         integer.last]) or
        not raisesIndexError("12" [-9223372036854775803 ..        integer.first]) or
        not raisesIndexError("12" [-9223372036854775804 ..        integer.first]) or
        not raisesIndexError("12" [-9223372036854775805 ..        integer.first]) or
        not raisesIndexError("12" [-9223372036854775806 ..        integer.first]) or
        not raisesIndexError("12" [-9223372036854775807 ..        integer.first]) or
        not raisesIndexError("12" [       integer.first ..        integer.first]) or
        not raisesIndexError("12" [-9223372036854775803 .. -9223372036854775807]) or
        not raisesIndexError("12" [-9223372036854775804 .. -9223372036854775807]) or
        not raisesIndexError("12" [-9223372036854775805 .. -9223372036854775807]) or
        not raisesIndexError("12" [-9223372036854775806 .. -9223372036854775807]) or
        not raisesIndexError("12" [-9223372036854775807 .. -9223372036854775807]) or
        not raisesIndexError("12" [       integer.first .. -9223372036854775807]) or
        not raisesIndexError("12" [-9223372036854775803 ..                   -1]) or
        not raisesIndexError("12" [-9223372036854775804 ..                   -1]) or
        not raisesIndexError("12" [-9223372036854775805 ..                   -1]) or
        not raisesIndexError("12" [-9223372036854775806 ..                   -1]) or
        not raisesIndexError("12" [-9223372036854775807 ..                   -1]) or
        not raisesIndexError("12" [       integer.first ..                   -1]) or
        not raisesIndexError("12" [-9223372036854775803 ..                    0]) or
        not raisesIndexError("12" [-9223372036854775804 ..                    0]) or
        not raisesIndexError("12" [-9223372036854775805 ..                    0]) or
        not raisesIndexError("12" [-9223372036854775806 ..                    0]) or
        not raisesIndexError("12" [-9223372036854775807 ..                    0]) or
        not raisesIndexError("12" [       integer.first ..                    0]) or
        not raisesIndexError("12" [-9223372036854775803 ..                    1]) or
        not raisesIndexError("12" [-9223372036854775804 ..                    1]) or
        not raisesIndexError("12" [-9223372036854775805 ..                    1]) or
        not raisesIndexError("12" [-9223372036854775806 ..                    1]) or
        not raisesIndexError("12" [-9223372036854775807 ..                    1]) or
        not raisesIndexError("12" [       integer.first ..                    1]) or
        not raisesIndexError("12" [-9223372036854775803 ..                    2]) or
        not raisesIndexError("12" [-9223372036854775804 ..                    2]) or
        not raisesIndexError("12" [-9223372036854775805 ..                    2]) or
        not raisesIndexError("12" [-9223372036854775806 ..                    2]) or
        not raisesIndexError("12" [-9223372036854775807 ..                    2]) or
        not raisesIndexError("12" [       integer.first ..                    2]) or
        not raisesIndexError("12" [-9223372036854775803 ..                    3]) or
        not raisesIndexError("12" [-9223372036854775804 ..                    3]) or
        not raisesIndexError("12" [-9223372036854775805 ..                    3]) or
        not raisesIndexError("12" [-9223372036854775806 ..                    3]) or
        not raisesIndexError("12" [-9223372036854775807 ..                    3]) or
        not raisesIndexError("12" [       integer.first ..                    3]) or
        not raisesIndexError("12" [-9223372036854775803 ..         integer.last]) or
        not raisesIndexError("12" [-9223372036854775804 ..         integer.last]) or
        not raisesIndexError("12" [-9223372036854775805 ..         integer.last]) or
        not raisesIndexError("12" [-9223372036854775806 ..         integer.last]) or
        not raisesIndexError("12" [-9223372036854775807 ..         integer.last]) or
        not raisesIndexError("12" [       integer.first ..         integer.last]) then
      writeln(" ***** STRING [ START .. STOP ] with 64-bit maximums does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Index checking for string range works correct.");
    end if;
  end func;


const func boolean: check_string_substr_expr_1 is func
  result
    var boolean: okay is TRUE;
  begin
    if  not raisesIndexError("" [ integer.first len integer.first ]) or
        not raisesIndexError("" [ integer.first len            -9 ]) or
        not raisesIndexError("" [ integer.first len            -5 ]) or
        not raisesIndexError("" [ integer.first len            -1 ]) or
        not raisesIndexError("" [ integer.first len             0 ]) or
        not raisesIndexError("" [ integer.first len             1 ]) or
        not raisesIndexError("" [ integer.first len             6 ]) or
        not raisesIndexError("" [ integer.first len             7 ]) or
        not raisesIndexError("" [ integer.first len             8 ]) or
        not raisesIndexError("" [ integer.first len            20 ]) or
        not raisesIndexError("" [ integer.first len  integer.last ]) or
        not raisesIndexError("" [            -5 len integer.first ]) or
        not raisesIndexError("" [            -5 len            -9 ]) or
        not raisesIndexError("" [            -5 len            -5 ]) or
        not raisesIndexError("" [            -5 len            -1 ]) or
        not raisesIndexError("" [            -5 len             0 ]) or
        not raisesIndexError("" [            -5 len             1 ]) or
        not raisesIndexError("" [            -5 len             6 ]) or
        not raisesIndexError("" [            -5 len             7 ]) or
        not raisesIndexError("" [            -5 len             8 ]) or
        not raisesIndexError("" [            -5 len            20 ]) or
        not raisesIndexError("" [            -5 len  integer.last ]) or
        not raisesIndexError("" [            -1 len integer.first ]) or
        not raisesIndexError("" [            -1 len            -9 ]) or
        not raisesIndexError("" [            -1 len            -5 ]) or
        not raisesIndexError("" [            -1 len            -1 ]) or
        not raisesIndexError("" [            -1 len             0 ]) or
        not raisesIndexError("" [            -1 len             1 ]) or
        not raisesIndexError("" [            -1 len             6 ]) or
        not raisesIndexError("" [            -1 len             7 ]) or
        not raisesIndexError("" [            -1 len             8 ]) or
        not raisesIndexError("" [            -1 len            20 ]) or
        not raisesIndexError("" [            -1 len  integer.last ]) or
        not raisesIndexError("" [             0 len integer.first ]) or
        not raisesIndexError("" [             0 len            -5 ]) or
        not raisesIndexError("" [             0 len            -1 ]) or
        not raisesIndexError("" [             0 len             0 ]) or
        not raisesIndexError("" [             0 len             1 ]) or
        not raisesIndexError("" [             0 len             2 ]) or
        not raisesIndexError("" [             0 len            15 ]) or
        not raisesIndexError("" [             0 len  integer.last ]) or
        not raisesIndexError("" [             1 len integer.first ]) or
        not raisesIndexError("" [             1 len            -5 ]) or
        not raisesIndexError("" [             1 len            -1 ]) or

        not raisesIndexError("" [             2 len integer.first ]) or
        not raisesIndexError("" [             2 len            -5 ]) or
        not raisesIndexError("" [             2 len            -1 ]) or

        not raisesIndexError("" [            15 len integer.first ]) or
        not raisesIndexError("" [            15 len            -5 ]) or
        not raisesIndexError("" [            15 len            -1 ]) or

        not raisesIndexError("" [  integer.last len integer.first ]) or
        not raisesIndexError("" [  integer.last len            -5 ]) or
        not raisesIndexError("" [  integer.last len            -1 ]) or

        not raisesIndexError("1" [ integer.first len integer.first ]) or
        not raisesIndexError("1" [ integer.first len            -9 ]) or
        not raisesIndexError("1" [ integer.first len            -5 ]) or
        not raisesIndexError("1" [ integer.first len            -1 ]) or
        not raisesIndexError("1" [ integer.first len             0 ]) or
        not raisesIndexError("1" [ integer.first len             1 ]) or
        not raisesIndexError("1" [ integer.first len             6 ]) or
        not raisesIndexError("1" [ integer.first len             7 ]) or
        not raisesIndexError("1" [ integer.first len             8 ]) or
        not raisesIndexError("1" [ integer.first len            10 ]) or
        not raisesIndexError("1" [ integer.first len  integer.last ]) or
        not raisesIndexError("1" [            -5 len integer.first ]) or
        not raisesIndexError("1" [            -5 len            -9 ]) or
        not raisesIndexError("1" [            -5 len            -5 ]) or
        not raisesIndexError("1" [            -5 len            -1 ]) or
        not raisesIndexError("1" [            -5 len             0 ]) or
        not raisesIndexError("1" [            -5 len             1 ]) or
        not raisesIndexError("1" [            -5 len             6 ]) or
        not raisesIndexError("1" [            -5 len             7 ]) or
        not raisesIndexError("1" [            -5 len             8 ]) or
        not raisesIndexError("1" [            -5 len            10 ]) or
        not raisesIndexError("1" [            -5 len  integer.last ]) or
        not raisesIndexError("1" [            -1 len integer.first ]) or
        not raisesIndexError("1" [            -1 len            -9 ]) or
        not raisesIndexError("1" [            -1 len            -5 ]) or
        not raisesIndexError("1" [            -1 len            -1 ]) or
        not raisesIndexError("1" [            -1 len             0 ]) or
        not raisesIndexError("1" [            -1 len             1 ]) or
        not raisesIndexError("1" [            -1 len             6 ]) or
        not raisesIndexError("1" [            -1 len             7 ]) or
        not raisesIndexError("1" [            -1 len             8 ]) or
        not raisesIndexError("1" [            -1 len            10 ]) or
        not raisesIndexError("1" [            -1 len  integer.last ]) or
        not raisesIndexError("1" [             0 len integer.first ]) or
        not raisesIndexError("1" [             0 len            -5 ]) or
        not raisesIndexError("1" [             0 len            -1 ]) or
        not raisesIndexError("1" [             0 len             0 ]) or
        not raisesIndexError("1" [             0 len             1 ]) or
        not raisesIndexError("1" [             0 len             2 ]) or
        not raisesIndexError("1" [             0 len             3 ]) or
        not raisesIndexError("1" [             0 len            15 ]) or
        not raisesIndexError("1" [             0 len  integer.last ]) or
        not raisesIndexError("1" [             1 len integer.first ]) or
        not raisesIndexError("1" [             1 len            -5 ]) or
        not raisesIndexError("1" [             1 len            -1 ]) or

        not raisesIndexError("1" [             2 len integer.first ]) or
        not raisesIndexError("1" [             2 len            -5 ]) or
        not raisesIndexError("1" [             2 len            -1 ]) or

        not raisesIndexError("1" [            15 len integer.first ]) or
        not raisesIndexError("1" [            15 len            -5 ]) or
        not raisesIndexError("1" [            15 len            -1 ]) or

        not raisesIndexError("1" [  integer.last len integer.first ]) or
        not raisesIndexError("1" [  integer.last len            -5 ]) or
        not raisesIndexError("1" [  integer.last len            -1 ]) or

        not raisesIndexError("1234567890" [ integer.first len integer.first ]) or
        not raisesIndexError("1234567890" [ integer.first len            -9 ]) or
        not raisesIndexError("1234567890" [ integer.first len            -5 ]) or
        not raisesIndexError("1234567890" [ integer.first len            -1 ]) or
        not raisesIndexError("1234567890" [ integer.first len             0 ]) or
        not raisesIndexError("1234567890" [ integer.first len             1 ]) or
        not raisesIndexError("1234567890" [ integer.first len             6 ]) or
        not raisesIndexError("1234567890" [ integer.first len             7 ]) or
        not raisesIndexError("1234567890" [ integer.first len             8 ]) or
        not raisesIndexError("1234567890" [ integer.first len            11 ]) or
        not raisesIndexError("1234567890" [ integer.first len            15 ]) or
        not raisesIndexError("1234567890" [ integer.first len            16 ]) or
        not raisesIndexError("1234567890" [ integer.first len            17 ]) or
        not raisesIndexError("1234567890" [ integer.first len            20 ]) or
        not raisesIndexError("1234567890" [ integer.first len  integer.last ]) or
        not raisesIndexError("1234567890" [            -5 len integer.first ]) or
        not raisesIndexError("1234567890" [            -5 len            -9 ]) or
        not raisesIndexError("1234567890" [            -5 len            -5 ]) or
        not raisesIndexError("1234567890" [            -5 len            -1 ]) or
        not raisesIndexError("1234567890" [            -5 len             0 ]) or
        not raisesIndexError("1234567890" [            -5 len             1 ]) or
        not raisesIndexError("1234567890" [            -5 len             6 ]) or
        not raisesIndexError("1234567890" [            -5 len             7 ]) or
        not raisesIndexError("1234567890" [            -5 len             8 ]) or
        not raisesIndexError("1234567890" [            -5 len            11 ]) or
        not raisesIndexError("1234567890" [            -5 len            15 ]) or
        not raisesIndexError("1234567890" [            -5 len            16 ]) or
        not raisesIndexError("1234567890" [            -5 len            17 ]) or
        not raisesIndexError("1234567890" [            -5 len            20 ]) or
        not raisesIndexError("1234567890" [            -5 len  integer.last ]) or
        not raisesIndexError("1234567890" [            -1 len integer.first ]) or
        not raisesIndexError("1234567890" [            -1 len            -9 ]) or
        not raisesIndexError("1234567890" [            -1 len            -5 ]) or
        not raisesIndexError("1234567890" [            -1 len            -1 ]) or
        not raisesIndexError("1234567890" [            -1 len             0 ]) or
        not raisesIndexError("1234567890" [            -1 len             1 ]) or
        not raisesIndexError("1234567890" [            -1 len             6 ]) or
        not raisesIndexError("1234567890" [            -1 len             7 ]) or
        not raisesIndexError("1234567890" [            -1 len             8 ]) or
        not raisesIndexError("1234567890" [            -1 len            11 ]) or
        not raisesIndexError("1234567890" [            -1 len            15 ]) or
        not raisesIndexError("1234567890" [            -1 len            16 ]) or
        not raisesIndexError("1234567890" [            -1 len            17 ]) or
        not raisesIndexError("1234567890" [            -1 len            20 ]) or
        not raisesIndexError("1234567890" [            -1 len  integer.last ]) or
        not raisesIndexError("1234567890" [             0 len integer.first ]) or
        not raisesIndexError("1234567890" [             0 len            -5 ]) or
        not raisesIndexError("1234567890" [             0 len            -1 ]) or
        not raisesIndexError("1234567890" [             0 len             0 ]) or
        not raisesIndexError("1234567890" [             0 len             1 ]) or
        not raisesIndexError("1234567890" [             0 len             2 ]) or
        not raisesIndexError("1234567890" [             0 len             3 ]) or
        not raisesIndexError("1234567890" [             0 len             6 ]) or
        not raisesIndexError("1234567890" [             0 len            10 ]) or
        not raisesIndexError("1234567890" [             0 len            11 ]) or
        not raisesIndexError("1234567890" [             0 len            12 ]) or
        not raisesIndexError("1234567890" [             0 len            15 ]) or
        not raisesIndexError("1234567890" [             0 len  integer.last ]) or
        not raisesIndexError("1234567890" [             1 len integer.first ]) or
        not raisesIndexError("1234567890" [             1 len            -5 ]) or
        not raisesIndexError("1234567890" [             1 len            -1 ]) or

        not raisesIndexError("1234567890" [             2 len integer.first ]) or
        not raisesIndexError("1234567890" [             2 len            -5 ]) or
        not raisesIndexError("1234567890" [             2 len            -1 ]) or

        not raisesIndexError("1234567890" [             5 len integer.first ]) or
        not raisesIndexError("1234567890" [             5 len            -5 ]) or
        not raisesIndexError("1234567890" [             5 len            -1 ]) or

        not raisesIndexError("1234567890" [             9 len integer.first ]) or
        not raisesIndexError("1234567890" [             9 len            -5 ]) or
        not raisesIndexError("1234567890" [             9 len            -1 ]) or

        not raisesIndexError("1234567890" [            10 len integer.first ]) or
        not raisesIndexError("1234567890" [            10 len            -5 ]) or
        not raisesIndexError("1234567890" [            10 len            -1 ]) or

        not raisesIndexError("1234567890" [            11 len integer.first ]) or
        not raisesIndexError("1234567890" [            11 len            -5 ]) or
        not raisesIndexError("1234567890" [            11 len            -1 ]) or

        not raisesIndexError("1234567890" [            15 len integer.first ]) or
        not raisesIndexError("1234567890" [            15 len            -5 ]) or
        not raisesIndexError("1234567890" [            15 len            -1 ]) or

        not raisesIndexError("1234567890" [  integer.last len integer.first ]) or
        not raisesIndexError("1234567890" [  integer.last len            -5 ]) or
        not raisesIndexError("1234567890" [  integer.last len            -1 ]) then
      writeln(" ***** STRING [ START len LENGTH ] does not work correct. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [ integer.first len intExpr(integer.first) ]) or
        not raisesIndexError("" [ integer.first len intExpr(           -9) ]) or
        not raisesIndexError("" [ integer.first len intExpr(           -5) ]) or
        not raisesIndexError("" [ integer.first len intExpr(           -1) ]) or
        not raisesIndexError("" [ integer.first len intExpr(            0) ]) or
        not raisesIndexError("" [ integer.first len intExpr(            1) ]) or
        not raisesIndexError("" [ integer.first len intExpr(            6) ]) or
        not raisesIndexError("" [ integer.first len intExpr(            7) ]) or
        not raisesIndexError("" [ integer.first len intExpr(            8) ]) or
        not raisesIndexError("" [ integer.first len intExpr(           20) ]) or
        not raisesIndexError("" [ integer.first len intExpr( integer.last) ]) or
        not raisesIndexError("" [            -5 len intExpr(integer.first) ]) or
        not raisesIndexError("" [            -5 len intExpr(           -9) ]) or
        not raisesIndexError("" [            -5 len intExpr(           -5) ]) or
        not raisesIndexError("" [            -5 len intExpr(           -1) ]) or
        not raisesIndexError("" [            -5 len intExpr(            0) ]) or
        not raisesIndexError("" [            -5 len intExpr(            1) ]) or
        not raisesIndexError("" [            -5 len intExpr(            6) ]) or
        not raisesIndexError("" [            -5 len intExpr(            7) ]) or
        not raisesIndexError("" [            -5 len intExpr(            8) ]) or
        not raisesIndexError("" [            -5 len intExpr(           20) ]) or
        not raisesIndexError("" [            -5 len intExpr( integer.last) ]) or
        not raisesIndexError("" [            -1 len intExpr(integer.first) ]) or
        not raisesIndexError("" [            -1 len intExpr(           -9) ]) or
        not raisesIndexError("" [            -1 len intExpr(           -5) ]) or
        not raisesIndexError("" [            -1 len intExpr(           -1) ]) or
        not raisesIndexError("" [            -1 len intExpr(            0) ]) or
        not raisesIndexError("" [            -1 len intExpr(            1) ]) or
        not raisesIndexError("" [            -1 len intExpr(            6) ]) or
        not raisesIndexError("" [            -1 len intExpr(            7) ]) or
        not raisesIndexError("" [            -1 len intExpr(            8) ]) or
        not raisesIndexError("" [            -1 len intExpr(           20) ]) or
        not raisesIndexError("" [            -1 len intExpr( integer.last) ]) or
        not raisesIndexError("" [             0 len intExpr(integer.first) ]) or
        not raisesIndexError("" [             0 len intExpr(           -5) ]) or
        not raisesIndexError("" [             0 len intExpr(           -1) ]) or
        not raisesIndexError("" [             0 len intExpr(            0) ]) or
        not raisesIndexError("" [             0 len intExpr(            1) ]) or
        not raisesIndexError("" [             0 len intExpr(            2) ]) or
        not raisesIndexError("" [             0 len intExpr(           15) ]) or
        not raisesIndexError("" [             0 len intExpr( integer.last) ]) or
        not raisesIndexError("" [             1 len intExpr(integer.first) ]) or
        not raisesIndexError("" [             1 len intExpr(           -5) ]) or
        not raisesIndexError("" [             1 len intExpr(           -1) ]) or

        not raisesIndexError("" [             2 len intExpr(integer.first) ]) or
        not raisesIndexError("" [             2 len intExpr(           -5) ]) or
        not raisesIndexError("" [             2 len intExpr(           -1) ]) or

        not raisesIndexError("" [            15 len intExpr(integer.first) ]) or
        not raisesIndexError("" [            15 len intExpr(           -5) ]) or
        not raisesIndexError("" [            15 len intExpr(           -1) ]) or

        not raisesIndexError("" [  integer.last len intExpr(integer.first) ]) or
        not raisesIndexError("" [  integer.last len intExpr(           -5) ]) or
        not raisesIndexError("" [  integer.last len intExpr(           -1) ]) or

        not raisesIndexError("1" [ integer.first len intExpr(integer.first) ]) or
        not raisesIndexError("1" [ integer.first len intExpr(           -9) ]) or
        not raisesIndexError("1" [ integer.first len intExpr(           -5) ]) or
        not raisesIndexError("1" [ integer.first len intExpr(           -1) ]) or
        not raisesIndexError("1" [ integer.first len intExpr(            0) ]) or
        not raisesIndexError("1" [ integer.first len intExpr(            1) ]) or
        not raisesIndexError("1" [ integer.first len intExpr(            6) ]) or
        not raisesIndexError("1" [ integer.first len intExpr(            7) ]) or
        not raisesIndexError("1" [ integer.first len intExpr(            8) ]) or
        not raisesIndexError("1" [ integer.first len intExpr(           10) ]) or
        not raisesIndexError("1" [ integer.first len intExpr( integer.last) ]) or
        not raisesIndexError("1" [            -5 len intExpr(integer.first) ]) or
        not raisesIndexError("1" [            -5 len intExpr(           -9) ]) or
        not raisesIndexError("1" [            -5 len intExpr(           -5) ]) or
        not raisesIndexError("1" [            -5 len intExpr(           -1) ]) or
        not raisesIndexError("1" [            -5 len intExpr(            0) ]) or
        not raisesIndexError("1" [            -5 len intExpr(            1) ]) or
        not raisesIndexError("1" [            -5 len intExpr(            6) ]) or
        not raisesIndexError("1" [            -5 len intExpr(            7) ]) or
        not raisesIndexError("1" [            -5 len intExpr(            8) ]) or
        not raisesIndexError("1" [            -5 len intExpr(           10) ]) or
        not raisesIndexError("1" [            -5 len intExpr( integer.last) ]) or
        not raisesIndexError("1" [            -1 len intExpr(integer.first) ]) or
        not raisesIndexError("1" [            -1 len intExpr(           -9) ]) or
        not raisesIndexError("1" [            -1 len intExpr(           -5) ]) or
        not raisesIndexError("1" [            -1 len intExpr(           -1) ]) or
        not raisesIndexError("1" [            -1 len intExpr(            0) ]) or
        not raisesIndexError("1" [            -1 len intExpr(            1) ]) or
        not raisesIndexError("1" [            -1 len intExpr(            6) ]) or
        not raisesIndexError("1" [            -1 len intExpr(            7) ]) or
        not raisesIndexError("1" [            -1 len intExpr(            8) ]) or
        not raisesIndexError("1" [            -1 len intExpr(           10) ]) or
        not raisesIndexError("1" [            -1 len intExpr( integer.last) ]) or
        not raisesIndexError("1" [             0 len intExpr(integer.first) ]) or
        not raisesIndexError("1" [             0 len intExpr(           -5) ]) or
        not raisesIndexError("1" [             0 len intExpr(           -1) ]) or
        not raisesIndexError("1" [             0 len intExpr(            0) ]) or
        not raisesIndexError("1" [             0 len intExpr(            1) ]) or
        not raisesIndexError("1" [             0 len intExpr(            2) ]) or
        not raisesIndexError("1" [             0 len intExpr(            3) ]) or
        not raisesIndexError("1" [             0 len intExpr(           15) ]) or
        not raisesIndexError("1" [             0 len intExpr( integer.last) ]) or
        not raisesIndexError("1" [             1 len intExpr(integer.first) ]) or
        not raisesIndexError("1" [             1 len intExpr(           -5) ]) or
        not raisesIndexError("1" [             1 len intExpr(           -1) ]) or

        not raisesIndexError("1" [             2 len intExpr(integer.first) ]) or
        not raisesIndexError("1" [             2 len intExpr(           -5) ]) or
        not raisesIndexError("1" [             2 len intExpr(           -1) ]) or

        not raisesIndexError("1" [            15 len intExpr(integer.first) ]) or
        not raisesIndexError("1" [            15 len intExpr(           -5) ]) or
        not raisesIndexError("1" [            15 len intExpr(           -1) ]) or

        not raisesIndexError("1" [  integer.last len intExpr(integer.first) ]) or
        not raisesIndexError("1" [  integer.last len intExpr(           -5) ]) or
        not raisesIndexError("1" [  integer.last len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ integer.first len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(            6) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(            7) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(            8) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(           16) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(           17) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr(           20) ]) or
        not raisesIndexError("1234567890" [ integer.first len intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(            0) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(            1) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(            6) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(            7) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(            8) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(           11) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(           15) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(           16) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(           17) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr(           20) ]) or
        not raisesIndexError("1234567890" [            -5 len intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(            0) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(            1) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(            6) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(            7) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(            8) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(           11) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(           15) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(           16) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(           17) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr(           20) ]) or
        not raisesIndexError("1234567890" [            -1 len intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(            0) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(            1) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(            2) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(            3) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(            6) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(           10) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(           11) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(           12) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr(           15) ]) or
        not raisesIndexError("1234567890" [             0 len intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [             1 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [             1 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [             1 len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [             2 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [             2 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [             2 len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [             5 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [             5 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [             5 len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [             9 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [             9 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [             9 len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [            10 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            10 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            10 len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [            11 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            11 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            11 len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [            15 len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [            15 len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [            15 len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [  integer.last len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [  integer.last len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [  integer.last len intExpr(           -1) ]) then
      writeln(" ***** STRING [ START len LENGTH ] does not work correct. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [ intExpr(integer.first) len integer.first ]) or
        not raisesIndexError("" [ intExpr(integer.first) len            -9 ]) or
        not raisesIndexError("" [ intExpr(integer.first) len            -5 ]) or
        not raisesIndexError("" [ intExpr(integer.first) len            -1 ]) or
        not raisesIndexError("" [ intExpr(integer.first) len             0 ]) or
        not raisesIndexError("" [ intExpr(integer.first) len             1 ]) or
        not raisesIndexError("" [ intExpr(integer.first) len             6 ]) or
        not raisesIndexError("" [ intExpr(integer.first) len             7 ]) or
        not raisesIndexError("" [ intExpr(integer.first) len             8 ]) or
        not raisesIndexError("" [ intExpr(integer.first) len            20 ]) or
        not raisesIndexError("" [ intExpr(integer.first) len  integer.last ]) or
        not raisesIndexError("" [ intExpr(           -5) len integer.first ]) or
        not raisesIndexError("" [ intExpr(           -5) len            -9 ]) or
        not raisesIndexError("" [ intExpr(           -5) len            -5 ]) or
        not raisesIndexError("" [ intExpr(           -5) len            -1 ]) or
        not raisesIndexError("" [ intExpr(           -5) len             0 ]) or
        not raisesIndexError("" [ intExpr(           -5) len             1 ]) or
        not raisesIndexError("" [ intExpr(           -5) len             6 ]) or
        not raisesIndexError("" [ intExpr(           -5) len             7 ]) or
        not raisesIndexError("" [ intExpr(           -5) len             8 ]) or
        not raisesIndexError("" [ intExpr(           -5) len            20 ]) or
        not raisesIndexError("" [ intExpr(           -5) len  integer.last ]) or
        not raisesIndexError("" [ intExpr(           -1) len integer.first ]) or
        not raisesIndexError("" [ intExpr(           -1) len            -9 ]) or
        not raisesIndexError("" [ intExpr(           -1) len            -5 ]) or
        not raisesIndexError("" [ intExpr(           -1) len            -1 ]) or
        not raisesIndexError("" [ intExpr(           -1) len             0 ]) or
        not raisesIndexError("" [ intExpr(           -1) len             1 ]) or
        not raisesIndexError("" [ intExpr(           -1) len             6 ]) or
        not raisesIndexError("" [ intExpr(           -1) len             7 ]) or
        not raisesIndexError("" [ intExpr(           -1) len             8 ]) or
        not raisesIndexError("" [ intExpr(           -1) len            20 ]) or
        not raisesIndexError("" [ intExpr(           -1) len  integer.last ]) or
        not raisesIndexError("" [ intExpr(            0) len integer.first ]) or
        not raisesIndexError("" [ intExpr(            0) len            -5 ]) or
        not raisesIndexError("" [ intExpr(            0) len            -1 ]) or
        not raisesIndexError("" [ intExpr(            0) len             0 ]) or
        not raisesIndexError("" [ intExpr(            0) len             1 ]) or
        not raisesIndexError("" [ intExpr(            0) len             2 ]) or
        not raisesIndexError("" [ intExpr(            0) len            15 ]) or
        not raisesIndexError("" [ intExpr(            0) len  integer.last ]) or
        not raisesIndexError("" [ intExpr(            1) len integer.first ]) or
        not raisesIndexError("" [ intExpr(            1) len            -5 ]) or
        not raisesIndexError("" [ intExpr(            1) len            -1 ]) or

        not raisesIndexError("" [ intExpr(            2) len integer.first ]) or
        not raisesIndexError("" [ intExpr(            2) len            -5 ]) or
        not raisesIndexError("" [ intExpr(            2) len            -1 ]) or

        not raisesIndexError("" [ intExpr(           15) len integer.first ]) or
        not raisesIndexError("" [ intExpr(           15) len            -5 ]) or
        not raisesIndexError("" [ intExpr(           15) len            -1 ]) or

        not raisesIndexError("" [ intExpr( integer.last) len integer.first ]) or
        not raisesIndexError("" [ intExpr( integer.last) len            -5 ]) or
        not raisesIndexError("" [ intExpr( integer.last) len            -1 ]) or

        not raisesIndexError("1" [ intExpr(integer.first) len integer.first ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len            -9 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len            -5 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len            -1 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len             0 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len             1 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len             6 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len             7 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len             8 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len            10 ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len  integer.last ]) or
        not raisesIndexError("1" [ intExpr(           -5) len integer.first ]) or
        not raisesIndexError("1" [ intExpr(           -5) len            -9 ]) or
        not raisesIndexError("1" [ intExpr(           -5) len            -5 ]) or
        not raisesIndexError("1" [ intExpr(           -5) len            -1 ]) or
        not raisesIndexError("1" [ intExpr(           -5) len             0 ]) or
        not raisesIndexError("1" [ intExpr(           -5) len             1 ]) or
        not raisesIndexError("1" [ intExpr(           -5) len             6 ]) or
        not raisesIndexError("1" [ intExpr(           -5) len             7 ]) or
        not raisesIndexError("1" [ intExpr(           -5) len             8 ]) or
        not raisesIndexError("1" [ intExpr(           -5) len            10 ]) or
        not raisesIndexError("1" [ intExpr(           -5) len  integer.last ]) or
        not raisesIndexError("1" [ intExpr(           -1) len integer.first ]) or
        not raisesIndexError("1" [ intExpr(           -1) len            -9 ]) or
        not raisesIndexError("1" [ intExpr(           -1) len            -5 ]) or
        not raisesIndexError("1" [ intExpr(           -1) len            -1 ]) or
        not raisesIndexError("1" [ intExpr(           -1) len             0 ]) or
        not raisesIndexError("1" [ intExpr(           -1) len             1 ]) or
        not raisesIndexError("1" [ intExpr(           -1) len             6 ]) or
        not raisesIndexError("1" [ intExpr(           -1) len             7 ]) or
        not raisesIndexError("1" [ intExpr(           -1) len             8 ]) or
        not raisesIndexError("1" [ intExpr(           -1) len            10 ]) or
        not raisesIndexError("1" [ intExpr(           -1) len  integer.last ]) or
        not raisesIndexError("1" [ intExpr(            0) len integer.first ]) or
        not raisesIndexError("1" [ intExpr(            0) len            -5 ]) or
        not raisesIndexError("1" [ intExpr(            0) len            -1 ]) or
        not raisesIndexError("1" [ intExpr(            0) len             0 ]) or
        not raisesIndexError("1" [ intExpr(            0) len             1 ]) or
        not raisesIndexError("1" [ intExpr(            0) len             2 ]) or
        not raisesIndexError("1" [ intExpr(            0) len             3 ]) or
        not raisesIndexError("1" [ intExpr(            0) len            15 ]) or
        not raisesIndexError("1" [ intExpr(            0) len  integer.last ]) or
        not raisesIndexError("1" [ intExpr(            1) len integer.first ]) or
        not raisesIndexError("1" [ intExpr(            1) len            -5 ]) or
        not raisesIndexError("1" [ intExpr(            1) len            -1 ]) or

        not raisesIndexError("1" [ intExpr(            2) len integer.first ]) or
        not raisesIndexError("1" [ intExpr(            2) len            -5 ]) or
        not raisesIndexError("1" [ intExpr(            2) len            -1 ]) or

        not raisesIndexError("1" [ intExpr(           15) len integer.first ]) or
        not raisesIndexError("1" [ intExpr(           15) len            -5 ]) or
        not raisesIndexError("1" [ intExpr(           15) len            -1 ]) or

        not raisesIndexError("1" [ intExpr( integer.last) len integer.first ]) or
        not raisesIndexError("1" [ intExpr( integer.last) len            -5 ]) or
        not raisesIndexError("1" [ intExpr( integer.last) len            -1 ]) or

        not raisesIndexError("1234567890" [ intExpr(integer.first) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len            -9 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len             6 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len             7 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len             8 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len            11 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len            15 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len            16 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len            17 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len            20 ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len  integer.last ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len            -9 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len             6 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len             7 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len             8 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len            11 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len            15 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len            16 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len            17 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len            20 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len  integer.last ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len            -9 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len             6 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len             7 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len             8 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len            11 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len            15 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len            16 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len            17 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len            20 ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len  integer.last ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len            -1 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len             0 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len             1 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len             2 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len             3 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len             6 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len            10 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len            11 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len            12 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len            15 ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len  integer.last ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) len            -1 ]) or

        not raisesIndexError("1234567890" [ intExpr(            2) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(            2) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(            2) len            -1 ]) or

        not raisesIndexError("1234567890" [ intExpr(            5) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) len            -1 ]) or

        not raisesIndexError("1234567890" [ intExpr(            9) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(            9) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(            9) len            -1 ]) or

        not raisesIndexError("1234567890" [ intExpr(           10) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) len            -1 ]) or

        not raisesIndexError("1234567890" [ intExpr(           11) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) len            -1 ]) or

        not raisesIndexError("1234567890" [ intExpr(           15) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) len            -1 ]) or

        not raisesIndexError("1234567890" [ intExpr( integer.last) len integer.first ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) len            -5 ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) len            -1 ]) then
      writeln(" ***** STRING [ START len LENGTH ] does not work correct. (3)");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [ intExpr(integer.first) len intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr(           -9) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr(            6) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr(            7) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr(            8) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr(           20) ]) or
        not raisesIndexError("" [ intExpr(integer.first) len intExpr( integer.last) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(           -9) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(            6) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(            7) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(            8) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr(           20) ]) or
        not raisesIndexError("" [ intExpr(           -5) len intExpr( integer.last) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(           -9) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(            6) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(            7) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(            8) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr(           20) ]) or
        not raisesIndexError("" [ intExpr(           -1) len intExpr( integer.last) ]) or
        not raisesIndexError("" [ intExpr(            0) len intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(            0) len intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(            0) len intExpr(           -1) ]) or
        not raisesIndexError("" [ intExpr(            0) len intExpr(            0) ]) or
        not raisesIndexError("" [ intExpr(            0) len intExpr(            1) ]) or
        not raisesIndexError("" [ intExpr(            0) len intExpr(            2) ]) or
        not raisesIndexError("" [ intExpr(            0) len intExpr(           15) ]) or
        not raisesIndexError("" [ intExpr(            0) len intExpr( integer.last) ]) or
        not raisesIndexError("" [ intExpr(            1) len intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(            1) len intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(            1) len intExpr(           -1) ]) or

        not raisesIndexError("" [ intExpr(            2) len intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(            2) len intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(            2) len intExpr(           -1) ]) or

        not raisesIndexError("" [ intExpr(           15) len intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr(           15) len intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr(           15) len intExpr(           -1) ]) or

        not raisesIndexError("" [ intExpr( integer.last) len intExpr(integer.first) ]) or
        not raisesIndexError("" [ intExpr( integer.last) len intExpr(           -5) ]) or
        not raisesIndexError("" [ intExpr( integer.last) len intExpr(           -1) ]) or

        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(           -9) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(            6) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(            7) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(            8) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr(           10) ]) or
        not raisesIndexError("1" [ intExpr(integer.first) len intExpr( integer.last) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(           -9) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(            6) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(            7) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(            8) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr(           10) ]) or
        not raisesIndexError("1" [ intExpr(           -5) len intExpr( integer.last) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(           -9) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(            6) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(            7) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(            8) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr(           10) ]) or
        not raisesIndexError("1" [ intExpr(           -1) len intExpr( integer.last) ]) or
        not raisesIndexError("1" [ intExpr(            0) len intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(            0) len intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(            0) len intExpr(           -1) ]) or
        not raisesIndexError("1" [ intExpr(            0) len intExpr(            0) ]) or
        not raisesIndexError("1" [ intExpr(            0) len intExpr(            1) ]) or
        not raisesIndexError("1" [ intExpr(            0) len intExpr(            2) ]) or
        not raisesIndexError("1" [ intExpr(            0) len intExpr(            3) ]) or
        not raisesIndexError("1" [ intExpr(            0) len intExpr(           15) ]) or
        not raisesIndexError("1" [ intExpr(            0) len intExpr( integer.last) ]) or
        not raisesIndexError("1" [ intExpr(            1) len intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(            1) len intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(            1) len intExpr(           -1) ]) or

        not raisesIndexError("1" [ intExpr(            2) len intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(            2) len intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(            2) len intExpr(           -1) ]) or

        not raisesIndexError("1" [ intExpr(           15) len intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr(           15) len intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr(           15) len intExpr(           -1) ]) or

        not raisesIndexError("1" [ intExpr( integer.last) len intExpr(integer.first) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) len intExpr(           -5) ]) or
        not raisesIndexError("1" [ intExpr( integer.last) len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(            6) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(            7) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(            8) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(           16) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(           17) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr(           20) ]) or
        not raisesIndexError("1234567890" [ intExpr(integer.first) len intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(            6) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(            7) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(            8) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(           16) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(           17) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr(           20) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -5) len intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(           -9) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(            6) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(            7) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(            8) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(           16) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(           17) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr(           20) ]) or
        not raisesIndexError("1234567890" [ intExpr(           -1) len intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(           -1) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(            0) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(            1) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(            2) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(            3) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(            6) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(           10) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(           11) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(           12) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr(           15) ]) or
        not raisesIndexError("1234567890" [ intExpr(            0) len intExpr( integer.last) ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(            1) len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ intExpr(            2) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(            2) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(            2) len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ intExpr(            5) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(            5) len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ intExpr(            9) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(            9) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(            9) len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ intExpr(           10) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           10) len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ intExpr(           11) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           11) len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ intExpr(           15) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr(           15) len intExpr(           -1) ]) or

        not raisesIndexError("1234567890" [ intExpr( integer.last) len intExpr(integer.first) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) len intExpr(           -5) ]) or
        not raisesIndexError("1234567890" [ intExpr( integer.last) len intExpr(           -1) ]) then
      writeln(" ***** STRING [ START len LENGTH ] does not work correct. (4)");
      okay := FALSE;
    end if;
  end func;


const func boolean: check_string_substr_expr_2 is func
  result
    var boolean: okay is TRUE;
  begin
    if  not raisesIndexError(striExpr("") [ integer.first len integer.first ]) or
        not raisesIndexError(striExpr("") [ integer.first len            -9 ]) or
        not raisesIndexError(striExpr("") [ integer.first len            -5 ]) or
        not raisesIndexError(striExpr("") [ integer.first len            -1 ]) or
        not raisesIndexError(striExpr("") [ integer.first len             0 ]) or
        not raisesIndexError(striExpr("") [ integer.first len             1 ]) or
        not raisesIndexError(striExpr("") [ integer.first len             6 ]) or
        not raisesIndexError(striExpr("") [ integer.first len             7 ]) or
        not raisesIndexError(striExpr("") [ integer.first len             8 ]) or
        not raisesIndexError(striExpr("") [ integer.first len            20 ]) or
        not raisesIndexError(striExpr("") [ integer.first len  integer.last ]) or
        not raisesIndexError(striExpr("") [            -5 len integer.first ]) or
        not raisesIndexError(striExpr("") [            -5 len            -9 ]) or
        not raisesIndexError(striExpr("") [            -5 len            -5 ]) or
        not raisesIndexError(striExpr("") [            -5 len            -1 ]) or
        not raisesIndexError(striExpr("") [            -5 len             0 ]) or
        not raisesIndexError(striExpr("") [            -5 len             1 ]) or
        not raisesIndexError(striExpr("") [            -5 len             6 ]) or
        not raisesIndexError(striExpr("") [            -5 len             7 ]) or
        not raisesIndexError(striExpr("") [            -5 len             8 ]) or
        not raisesIndexError(striExpr("") [            -5 len            20 ]) or
        not raisesIndexError(striExpr("") [            -5 len  integer.last ]) or
        not raisesIndexError(striExpr("") [            -1 len integer.first ]) or
        not raisesIndexError(striExpr("") [            -1 len            -9 ]) or
        not raisesIndexError(striExpr("") [            -1 len            -5 ]) or
        not raisesIndexError(striExpr("") [            -1 len            -1 ]) or
        not raisesIndexError(striExpr("") [            -1 len             0 ]) or
        not raisesIndexError(striExpr("") [            -1 len             1 ]) or
        not raisesIndexError(striExpr("") [            -1 len             6 ]) or
        not raisesIndexError(striExpr("") [            -1 len             7 ]) or
        not raisesIndexError(striExpr("") [            -1 len             8 ]) or
        not raisesIndexError(striExpr("") [            -1 len            20 ]) or
        not raisesIndexError(striExpr("") [            -1 len  integer.last ]) or
        not raisesIndexError(striExpr("") [             0 len integer.first ]) or
        not raisesIndexError(striExpr("") [             0 len            -5 ]) or
        not raisesIndexError(striExpr("") [             0 len            -1 ]) or
        not raisesIndexError(striExpr("") [             0 len             0 ]) or
        not raisesIndexError(striExpr("") [             0 len             1 ]) or
        not raisesIndexError(striExpr("") [             0 len             2 ]) or
        not raisesIndexError(striExpr("") [             0 len            15 ]) or
        not raisesIndexError(striExpr("") [             0 len  integer.last ]) or
        not raisesIndexError(striExpr("") [             1 len integer.first ]) or
        not raisesIndexError(striExpr("") [             1 len            -5 ]) or
        not raisesIndexError(striExpr("") [             1 len            -1 ]) or

        not raisesIndexError(striExpr("") [             2 len integer.first ]) or
        not raisesIndexError(striExpr("") [             2 len            -5 ]) or
        not raisesIndexError(striExpr("") [             2 len            -1 ]) or

        not raisesIndexError(striExpr("") [            15 len integer.first ]) or
        not raisesIndexError(striExpr("") [            15 len            -5 ]) or
        not raisesIndexError(striExpr("") [            15 len            -1 ]) or

        not raisesIndexError(striExpr("") [  integer.last len integer.first ]) or
        not raisesIndexError(striExpr("") [  integer.last len            -5 ]) or
        not raisesIndexError(striExpr("") [  integer.last len            -1 ]) or

        not raisesIndexError(striExpr("1") [ integer.first len integer.first ]) or
        not raisesIndexError(striExpr("1") [ integer.first len            -9 ]) or
        not raisesIndexError(striExpr("1") [ integer.first len            -5 ]) or
        not raisesIndexError(striExpr("1") [ integer.first len            -1 ]) or
        not raisesIndexError(striExpr("1") [ integer.first len             0 ]) or
        not raisesIndexError(striExpr("1") [ integer.first len             1 ]) or
        not raisesIndexError(striExpr("1") [ integer.first len             6 ]) or
        not raisesIndexError(striExpr("1") [ integer.first len             7 ]) or
        not raisesIndexError(striExpr("1") [ integer.first len             8 ]) or
        not raisesIndexError(striExpr("1") [ integer.first len            10 ]) or
        not raisesIndexError(striExpr("1") [ integer.first len  integer.last ]) or
        not raisesIndexError(striExpr("1") [            -5 len integer.first ]) or
        not raisesIndexError(striExpr("1") [            -5 len            -9 ]) or
        not raisesIndexError(striExpr("1") [            -5 len            -5 ]) or
        not raisesIndexError(striExpr("1") [            -5 len            -1 ]) or
        not raisesIndexError(striExpr("1") [            -5 len             0 ]) or
        not raisesIndexError(striExpr("1") [            -5 len             1 ]) or
        not raisesIndexError(striExpr("1") [            -5 len             6 ]) or
        not raisesIndexError(striExpr("1") [            -5 len             7 ]) or
        not raisesIndexError(striExpr("1") [            -5 len             8 ]) or
        not raisesIndexError(striExpr("1") [            -5 len            10 ]) or
        not raisesIndexError(striExpr("1") [            -5 len  integer.last ]) or
        not raisesIndexError(striExpr("1") [            -1 len integer.first ]) or
        not raisesIndexError(striExpr("1") [            -1 len            -9 ]) or
        not raisesIndexError(striExpr("1") [            -1 len            -5 ]) or
        not raisesIndexError(striExpr("1") [            -1 len            -1 ]) or
        not raisesIndexError(striExpr("1") [            -1 len             0 ]) or
        not raisesIndexError(striExpr("1") [            -1 len             1 ]) or
        not raisesIndexError(striExpr("1") [            -1 len             6 ]) or
        not raisesIndexError(striExpr("1") [            -1 len             7 ]) or
        not raisesIndexError(striExpr("1") [            -1 len             8 ]) or
        not raisesIndexError(striExpr("1") [            -1 len            10 ]) or
        not raisesIndexError(striExpr("1") [            -1 len  integer.last ]) or
        not raisesIndexError(striExpr("1") [             0 len integer.first ]) or
        not raisesIndexError(striExpr("1") [             0 len            -5 ]) or
        not raisesIndexError(striExpr("1") [             0 len            -1 ]) or
        not raisesIndexError(striExpr("1") [             0 len             0 ]) or
        not raisesIndexError(striExpr("1") [             0 len             1 ]) or
        not raisesIndexError(striExpr("1") [             0 len             2 ]) or
        not raisesIndexError(striExpr("1") [             0 len             3 ]) or
        not raisesIndexError(striExpr("1") [             0 len            15 ]) or
        not raisesIndexError(striExpr("1") [             0 len  integer.last ]) or
        not raisesIndexError(striExpr("1") [             1 len integer.first ]) or
        not raisesIndexError(striExpr("1") [             1 len            -5 ]) or
        not raisesIndexError(striExpr("1") [             1 len            -1 ]) or

        not raisesIndexError(striExpr("1") [             2 len integer.first ]) or
        not raisesIndexError(striExpr("1") [             2 len            -5 ]) or
        not raisesIndexError(striExpr("1") [             2 len            -1 ]) or

        not raisesIndexError(striExpr("1") [            15 len integer.first ]) or
        not raisesIndexError(striExpr("1") [            15 len            -5 ]) or
        not raisesIndexError(striExpr("1") [            15 len            -1 ]) or

        not raisesIndexError(striExpr("1") [  integer.last len integer.first ]) or
        not raisesIndexError(striExpr("1") [  integer.last len            -5 ]) or
        not raisesIndexError(striExpr("1") [  integer.last len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ integer.first len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len             6 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len             7 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len             8 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len            16 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len            17 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len            20 ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len             0 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len             1 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len             6 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len             7 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len             8 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len            11 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len            15 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len            16 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len            17 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len            20 ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len             0 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len             1 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len             6 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len             7 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len             8 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len            11 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len            15 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len            16 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len            17 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len            20 ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len             0 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len             1 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len             2 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len             3 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len             6 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len            10 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len            11 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len            12 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len            15 ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [             1 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [             1 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [             1 len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [             2 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [             2 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [             2 len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [             5 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [             5 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [             5 len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [             9 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [             9 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [             9 len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [            10 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            10 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            10 len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [            11 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            11 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            11 len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [            15 len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [            15 len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [            15 len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [  integer.last len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last len            -1 ]) then
      writeln(" ***** STRING [ START len LENGTH ] does not work correct. (5)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ integer.first len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr(            6) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr(            7) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr(            8) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr(           20) ]) or
        not raisesIndexError(striExpr("") [ integer.first len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(            6) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(            7) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(            8) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr(           20) ]) or
        not raisesIndexError(striExpr("") [            -5 len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(            6) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(            7) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(            8) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr(           20) ]) or
        not raisesIndexError(striExpr("") [            -1 len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [             0 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [             0 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [             0 len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [             0 len intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [             0 len intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [             0 len intExpr(            2) ]) or
        not raisesIndexError(striExpr("") [             0 len intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [             0 len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [             1 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [             1 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [             1 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("") [             2 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [             2 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [             2 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("") [            15 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [            15 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [            15 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("") [  integer.last len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [  integer.last len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [  integer.last len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [ integer.first len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr(           10) ]) or
        not raisesIndexError(striExpr("1") [ integer.first len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr(           10) ]) or
        not raisesIndexError(striExpr("1") [            -5 len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr(           10) ]) or
        not raisesIndexError(striExpr("1") [            -1 len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [             0 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [             0 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [             0 len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [             0 len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [             0 len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [             0 len intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [             0 len intExpr(            3) ]) or
        not raisesIndexError(striExpr("1") [             0 len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [             0 len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [             1 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [             1 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [             1 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [             2 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [             2 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [             2 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [            15 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [            15 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [            15 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [  integer.last len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [  integer.last len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [  integer.last len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(           16) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(           17) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr(           20) ]) or
        not raisesIndexError(striExpr("1234567890") [ integer.first len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(           16) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(           17) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr(           20) ]) or
        not raisesIndexError(striExpr("1234567890") [            -5 len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(           16) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(           17) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr(           20) ]) or
        not raisesIndexError(striExpr("1234567890") [            -1 len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(            2) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(            3) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(           12) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [             0 len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [             1 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [             1 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [             1 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [             2 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [             2 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [             2 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [             5 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [             5 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [             5 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [             9 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [             9 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [             9 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [            10 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            10 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            10 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [            11 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            11 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            11 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [            15 len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [            15 len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [  integer.last len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [  integer.last len intExpr(           -1) ]) then
      writeln(" ***** STRING [ START len LENGTH ] does not work correct. (6)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ intExpr(integer.first) len integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len            -9 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len             6 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len             7 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len             8 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len            20 ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len  integer.last ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len            -9 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len             6 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len             7 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len             8 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len            20 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len  integer.last ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len            -9 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len             6 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len             7 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len             8 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len            20 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len  integer.last ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len            -1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len             0 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len             1 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len             2 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len            15 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len  integer.last ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) len integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) len            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) len            -1 ]) or

        not raisesIndexError(striExpr("") [ intExpr(            2) len integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(            2) len            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(            2) len            -1 ]) or

        not raisesIndexError(striExpr("") [ intExpr(           15) len integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr(           15) len            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr(           15) len            -1 ]) or

        not raisesIndexError(striExpr("") [ intExpr( integer.last) len integer.first ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) len            -5 ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) len            -1 ]) or

        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len            -9 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len             6 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len             7 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len             8 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len            10 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len  integer.last ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len            -9 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len             6 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len             7 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len             8 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len            10 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len  integer.last ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len            -9 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len             6 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len             7 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len             8 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len            10 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len  integer.last ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len            -1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len             0 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len             1 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len             2 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len             3 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len            15 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len  integer.last ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) len integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) len            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) len            -1 ]) or

        not raisesIndexError(striExpr("1") [ intExpr(            2) len integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) len            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) len            -1 ]) or

        not raisesIndexError(striExpr("1") [ intExpr(           15) len integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           15) len            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           15) len            -1 ]) or

        not raisesIndexError(striExpr("1") [ intExpr( integer.last) len integer.first ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) len            -5 ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len             6 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len             7 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len             8 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len            16 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len            17 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len            20 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len             6 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len             7 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len             8 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len            16 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len            17 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len            20 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len            -9 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len             6 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len             7 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len             8 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len            16 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len            17 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len            20 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len            -1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len             0 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len             1 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len             2 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len             3 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len             6 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len            10 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len            11 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len            12 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len            15 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len  integer.last ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(            2) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            2) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            2) len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(            9) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            9) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            9) len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) len            -1 ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) len integer.first ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) len            -5 ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) len            -1 ]) then
      writeln(" ***** STRING [ START len LENGTH ] does not work correct. (7)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(            7) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(            8) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr(           20) ]) or
        not raisesIndexError(striExpr("") [ intExpr(integer.first) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(            7) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(            8) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr(           20) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -5) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(            7) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(            8) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr(           20) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           -1) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len intExpr(            2) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len intExpr(           15) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            0) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            1) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("") [ intExpr(            2) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            2) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(            2) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("") [ intExpr(           15) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           15) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr(           15) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("") [ intExpr( integer.last) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("") [ intExpr( integer.last) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr(           10) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(integer.first) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr(           10) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -5) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr(           10) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           -1) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len intExpr(            2) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len intExpr(            3) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            0) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            1) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [ intExpr(            2) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(            2) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [ intExpr(           15) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           15) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr(           15) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1") [ intExpr( integer.last) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1") [ intExpr( integer.last) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(           16) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(           17) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr(           20) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(integer.first) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(           16) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(           17) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr(           20) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -5) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(           -9) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(            7) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(            8) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(           16) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(           17) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr(           20) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           -1) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(           -1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(            0) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(            1) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(            2) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(            3) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(            6) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(           10) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(           11) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(           12) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr(           15) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            0) len intExpr( integer.last) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            1) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(            2) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            2) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            2) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            5) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(            9) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            9) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(            9) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           10) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           11) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr(           15) len intExpr(           -1) ]) or

        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) len intExpr(integer.first) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) len intExpr(           -5) ]) or
        not raisesIndexError(striExpr("1234567890") [ intExpr( integer.last) len intExpr(           -1) ]) then
      writeln(" ***** STRING [ START len LENGTH ] does not work correct. (8)");
      okay := FALSE;
    end if;
  end func;


const func boolean: check_string_substr_assign_1 is func
  result
    var boolean: okay is TRUE;
  local
    var boolean: ok is TRUE;
    var string: stri is "";
  begin
    ok := raisesIndexError(stri := "" [ integer.first len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len             6 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len             7 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len             8 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len            20 ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len             0 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len             1 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len             6 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len             7 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len             8 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len            20 ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len             0 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len             1 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len             6 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len             7 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len             8 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len            20 ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len             0 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len             1 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len             2 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len            15 ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [             1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [             1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [             1 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "" [             2 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [             2 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [             2 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "" [            15 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [            15 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [            15 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "" [  integer.last len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [ integer.first len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len             6 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len             7 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len             8 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len            10 ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len             6 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len             7 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len             8 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len            10 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len             6 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len             7 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len             8 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len            10 ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len             3 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [             2 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [            15 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [            15 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [            15 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [  integer.last len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ integer.first len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len             6 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len             7 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len             8 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len            16 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len            17 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len            20 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len             6 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len             7 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len             8 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len            16 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len            17 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len            20 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len             6 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len             7 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len             8 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len            16 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len            17 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len            20 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len             2 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len             3 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len             6 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len            12 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [             2 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             2 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             2 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [             5 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [             9 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             9 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             9 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            10 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            11 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            15 len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [  integer.last len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last len            -1 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (1)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "" [ integer.first len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "" [            -5 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "" [            -1 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [             0 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [             1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [             1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [             1 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "" [             2 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [             2 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [             2 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "" [            15 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [            15 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [            15 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "" [  integer.last len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [  integer.last len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1" [ integer.first len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -5 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1" [            -1 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len intExpr(            3) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [             0 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [             1 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [             2 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [             2 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [            15 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [            15 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [            15 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [  integer.last len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [  integer.last len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ integer.first len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -5 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            -1 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(            3) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(           12) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             0 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             1 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [             2 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             2 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             2 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [             5 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             5 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [             9 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             9 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [             9 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            10 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            10 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            11 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            11 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [            15 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [            15 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [  integer.last len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [  integer.last len intExpr(           -1) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (2)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len             6 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len             7 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len             8 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len            20 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len             6 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len             7 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len             8 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len            20 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len            -9 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len             6 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len             7 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len             8 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len            20 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len             0 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len             1 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len             2 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len            15 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr(            2) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            2) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            2) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr(           15) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           15) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           15) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr( integer.last) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len             6 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len             7 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len             8 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len            10 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len             6 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len             7 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len             8 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len            10 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len             6 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len             7 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len             8 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len            10 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len             0 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len             1 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len             2 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len             3 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len            15 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(            2) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(           15) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           15) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           15) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len             6 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len             7 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len             8 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len            16 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len            17 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len            20 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len             6 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len             7 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len             8 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len            16 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len            17 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len            20 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len            -9 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len             6 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len             7 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len             8 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len            16 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len            17 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len            20 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len            -1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len             0 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len             1 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len             2 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len             3 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len             6 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len            10 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len            11 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len            12 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len            15 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(            2) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            2) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            2) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(            9) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            9) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            9) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) len            -1 ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) len integer.first ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) len            -5 ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) len            -1 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (3)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(integer.first) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -5) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           -1) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            0) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            1) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr(            2) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            2) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(            2) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr(           15) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           15) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr(           15) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "" [ intExpr( integer.last) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "" [ intExpr( integer.last) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(integer.first) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -5) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           -1) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len intExpr(            3) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            0) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            1) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(            2) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(            2) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr(           15) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           15) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr(           15) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1" [ intExpr( integer.last) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(integer.first) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -5) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           -1) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(            3) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(           12) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            0) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            1) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(            2) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            2) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            2) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            5) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(            9) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            9) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(            9) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           10) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           11) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr(           15) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := "1234567890" [ intExpr( integer.last) len intExpr(           -1) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (4)");
      okay := FALSE;
    end if;
  end func;


const func boolean: check_string_substr_assign_2 is func
  result
    var boolean: okay is TRUE;
  local
    var boolean: ok is TRUE;
    var string: stri is "";
  begin
    ok := raisesIndexError(stri := striExpr("") [ integer.first len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [             2 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             2 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             2 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [            15 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            15 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            15 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [  integer.last len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ integer.first len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len             3 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [             2 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [            15 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            15 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            15 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [  integer.last len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len            16 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len            17 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len            16 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len            17 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len            16 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len            17 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len             3 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len            12 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [             2 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             2 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             2 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [             5 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [             9 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             9 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             9 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            10 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            11 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            15 len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last len            -1 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (5)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ integer.first len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -5 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            -1 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             0 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             1 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [             2 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             2 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [             2 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [            15 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            15 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [            15 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [  integer.last len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [  integer.last len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ integer.first len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -5 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            -1 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len intExpr(            3) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             0 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             1 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [             2 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [             2 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [            15 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            15 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [            15 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [  integer.last len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [  integer.last len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ integer.first len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -5 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            -1 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(            3) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(           12) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             0 len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             1 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [             2 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             2 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             2 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [             5 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             5 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [             9 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             9 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [             9 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            10 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            10 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            11 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            11 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [            15 len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [            15 len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [  integer.last len intExpr(           -1) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (6)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr(            2) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            2) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            2) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr(           15) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           15) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           15) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len             3 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           15) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           15) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           15) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len            16 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len            17 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len            16 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len            17 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len            -9 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len             7 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len             8 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len            16 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len            17 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len            20 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len            -1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len             0 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len             1 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len             2 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len             3 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len             6 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len            10 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len            11 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len            12 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len            15 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len  integer.last ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            2) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            2) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            2) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            9) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            9) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            9) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) len            -1 ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) len integer.first ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) len            -5 ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) len            -1 ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (7)");
      okay := FALSE;
    end if;

    ok := TRUE;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(integer.first) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -5) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           -1) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            0) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            1) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr(            2) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            2) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(            2) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr(           15) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           15) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr(           15) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("") [ intExpr( integer.last) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(integer.first) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -5) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           -1) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len intExpr(            3) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            0) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            1) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(            2) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           15) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           15) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr(           15) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1") [ intExpr( integer.last) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(integer.first) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -5) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(           -9) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(            7) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(            8) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(           16) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(           17) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr(           20) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           -1) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(           -1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(            0) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(            1) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(            2) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(            3) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(            6) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(           10) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(           11) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(           12) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr(           15) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            0) len intExpr( integer.last) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            1) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            2) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            2) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            2) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            5) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            9) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            9) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(            9) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           10) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           11) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr(           15) len intExpr(           -1) ]) and ok;

    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) len intExpr(integer.first) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) len intExpr(           -5) ]) and ok;
    ok := raisesIndexError(stri := striExpr("1234567890") [ intExpr( integer.last) len intExpr(           -1) ]) and ok;
    if not ok then
      writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (8)");
      okay := FALSE;
    end if;
  end func;


const func string: substrFunction (in string: stri, in integer: start) is
  return stri[start len 1];


const func string: substrFunction (in string: stri, in integer: start, in integer: length) is
  return stri[start len length];


const func boolean: check_string_substr_func_1 is func
  result
    var boolean: okay is TRUE;
  begin
    if  not raisesIndexError(substrFunction("", integer.first)) or
        not raisesIndexError(substrFunction("",            -5)) or
        not raisesIndexError(substrFunction("",            -1)) or
        not raisesIndexError(substrFunction("",             0)) or
        not raisesIndexError(substrFunction("1", integer.first)) or
        not raisesIndexError(substrFunction("1",            -5)) or
        not raisesIndexError(substrFunction("1",            -1)) or
        not raisesIndexError(substrFunction("1",             0)) or
        not raisesIndexError(substrFunction("1234567890", integer.first)) or
        not raisesIndexError(substrFunction("1234567890",            -5)) or
        not raisesIndexError(substrFunction("1234567890",            -1)) or
        not raisesIndexError(substrFunction("1234567890",             0)) then
      writeln(" ***** STRING [ START len 1 ] via a function does not work correct. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction("", intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", intExpr(           -5))) or
        not raisesIndexError(substrFunction("", intExpr(           -1))) or
        not raisesIndexError(substrFunction("", intExpr(            0))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1))) or
        not raisesIndexError(substrFunction("1", intExpr(            0))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0))) then
      writeln(" ***** STRING [ START len 1 ] via a function does not work correct. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction(striExpr(""), integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1)) or
        not raisesIndexError(substrFunction(striExpr(""),             0)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1)) or
        not raisesIndexError(substrFunction(striExpr("1"),             0)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0)) then
      writeln(" ***** STRING [ START len 1 ] via a function does not work correct. (3)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0))) then
      writeln(" ***** STRING [ START len 1 ] via a function does not work correct. (4)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction("", integer.first, integer.first)) or
        not raisesIndexError(substrFunction("", integer.first,            -9)) or
        not raisesIndexError(substrFunction("", integer.first,            -5)) or
        not raisesIndexError(substrFunction("", integer.first,            -1)) or
        not raisesIndexError(substrFunction("", integer.first,             0)) or
        not raisesIndexError(substrFunction("", integer.first,             1)) or
        not raisesIndexError(substrFunction("", integer.first,             6)) or
        not raisesIndexError(substrFunction("", integer.first,             7)) or
        not raisesIndexError(substrFunction("", integer.first,             8)) or
        not raisesIndexError(substrFunction("", integer.first,            20)) or
        not raisesIndexError(substrFunction("", integer.first,  integer.last)) or
        not raisesIndexError(substrFunction("",            -5, integer.first)) or
        not raisesIndexError(substrFunction("",            -5,            -9)) or
        not raisesIndexError(substrFunction("",            -5,            -5)) or
        not raisesIndexError(substrFunction("",            -5,            -1)) or
        not raisesIndexError(substrFunction("",            -5,             0)) or
        not raisesIndexError(substrFunction("",            -5,             1)) or
        not raisesIndexError(substrFunction("",            -5,             6)) or
        not raisesIndexError(substrFunction("",            -5,             7)) or
        not raisesIndexError(substrFunction("",            -5,             8)) or
        not raisesIndexError(substrFunction("",            -5,            20)) or
        not raisesIndexError(substrFunction("",            -5,  integer.last)) or
        not raisesIndexError(substrFunction("",            -1, integer.first)) or
        not raisesIndexError(substrFunction("",            -1,            -9)) or
        not raisesIndexError(substrFunction("",            -1,            -5)) or
        not raisesIndexError(substrFunction("",            -1,            -1)) or
        not raisesIndexError(substrFunction("",            -1,             0)) or
        not raisesIndexError(substrFunction("",            -1,             1)) or
        not raisesIndexError(substrFunction("",            -1,             6)) or
        not raisesIndexError(substrFunction("",            -1,             7)) or
        not raisesIndexError(substrFunction("",            -1,             8)) or
        not raisesIndexError(substrFunction("",            -1,            20)) or
        not raisesIndexError(substrFunction("",            -1,  integer.last)) or
        not raisesIndexError(substrFunction("",             0, integer.first)) or
        not raisesIndexError(substrFunction("",             0,            -5)) or
        not raisesIndexError(substrFunction("",             0,            -1)) or
        not raisesIndexError(substrFunction("",             0,             0)) or
        not raisesIndexError(substrFunction("",             0,             1)) or
        not raisesIndexError(substrFunction("",             0,             2)) or
        not raisesIndexError(substrFunction("",             0,            15)) or
        not raisesIndexError(substrFunction("",             0,  integer.last)) or
        not raisesIndexError(substrFunction("",             1, integer.first)) or
        not raisesIndexError(substrFunction("",             1,            -5)) or
        not raisesIndexError(substrFunction("",             1,            -1)) or

        not raisesIndexError(substrFunction("",             2, integer.first)) or
        not raisesIndexError(substrFunction("",             2,            -5)) or
        not raisesIndexError(substrFunction("",             2,            -1)) or

        not raisesIndexError(substrFunction("",            15, integer.first)) or
        not raisesIndexError(substrFunction("",            15,            -5)) or
        not raisesIndexError(substrFunction("",            15,            -1)) or

        not raisesIndexError(substrFunction("",  integer.last, integer.first)) or
        not raisesIndexError(substrFunction("",  integer.last,            -5)) or
        not raisesIndexError(substrFunction("",  integer.last,            -1)) or

        not raisesIndexError(substrFunction("1", integer.first, integer.first)) or
        not raisesIndexError(substrFunction("1", integer.first,            -9)) or
        not raisesIndexError(substrFunction("1", integer.first,            -5)) or
        not raisesIndexError(substrFunction("1", integer.first,            -1)) or
        not raisesIndexError(substrFunction("1", integer.first,             0)) or
        not raisesIndexError(substrFunction("1", integer.first,             1)) or
        not raisesIndexError(substrFunction("1", integer.first,             6)) or
        not raisesIndexError(substrFunction("1", integer.first,             7)) or
        not raisesIndexError(substrFunction("1", integer.first,             8)) or
        not raisesIndexError(substrFunction("1", integer.first,            10)) or
        not raisesIndexError(substrFunction("1", integer.first,  integer.last)) or
        not raisesIndexError(substrFunction("1",            -5, integer.first)) or
        not raisesIndexError(substrFunction("1",            -5,            -9)) or
        not raisesIndexError(substrFunction("1",            -5,            -5)) or
        not raisesIndexError(substrFunction("1",            -5,            -1)) or
        not raisesIndexError(substrFunction("1",            -5,             0)) or
        not raisesIndexError(substrFunction("1",            -5,             1)) or
        not raisesIndexError(substrFunction("1",            -5,             6)) or
        not raisesIndexError(substrFunction("1",            -5,             7)) or
        not raisesIndexError(substrFunction("1",            -5,             8)) or
        not raisesIndexError(substrFunction("1",            -5,            10)) or
        not raisesIndexError(substrFunction("1",            -5,  integer.last)) or
        not raisesIndexError(substrFunction("1",            -1, integer.first)) or
        not raisesIndexError(substrFunction("1",            -1,            -9)) or
        not raisesIndexError(substrFunction("1",            -1,            -5)) or
        not raisesIndexError(substrFunction("1",            -1,            -1)) or
        not raisesIndexError(substrFunction("1",            -1,             0)) or
        not raisesIndexError(substrFunction("1",            -1,             1)) or
        not raisesIndexError(substrFunction("1",            -1,             6)) or
        not raisesIndexError(substrFunction("1",            -1,             7)) or
        not raisesIndexError(substrFunction("1",            -1,             8)) or
        not raisesIndexError(substrFunction("1",            -1,            10)) or
        not raisesIndexError(substrFunction("1",            -1,  integer.last)) or
        not raisesIndexError(substrFunction("1",             0, integer.first)) or
        not raisesIndexError(substrFunction("1",             0,            -5)) or
        not raisesIndexError(substrFunction("1",             0,             0)) or
        not raisesIndexError(substrFunction("1",             0,             1)) or
        not raisesIndexError(substrFunction("1",             0,             2)) or
        not raisesIndexError(substrFunction("1",             0,             3)) or
        not raisesIndexError(substrFunction("1",             0,            15)) or
        not raisesIndexError(substrFunction("1",             0,  integer.last)) or
        not raisesIndexError(substrFunction("1",             1, integer.first)) or
        not raisesIndexError(substrFunction("1",             1,            -5)) or
        not raisesIndexError(substrFunction("1",             1,            -1)) or

        not raisesIndexError(substrFunction("1",             2, integer.first)) or
        not raisesIndexError(substrFunction("1",             2,            -5)) or
        not raisesIndexError(substrFunction("1",             2,            -1)) or

        not raisesIndexError(substrFunction("1",            15, integer.first)) or
        not raisesIndexError(substrFunction("1",            15,            -5)) or
        not raisesIndexError(substrFunction("1",            15,            -1)) or

        not raisesIndexError(substrFunction("1",  integer.last, integer.first)) or
        not raisesIndexError(substrFunction("1",  integer.last,            -5)) or
        not raisesIndexError(substrFunction("1",  integer.last,            -1)) or

        not raisesIndexError(substrFunction("1234567890", integer.first, integer.first)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,            -9)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,            -5)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,            -1)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,             0)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,             1)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,             6)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,             7)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,             8)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,            11)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,            15)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,            16)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,            17)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,            20)) or
        not raisesIndexError(substrFunction("1234567890", integer.first,  integer.last)) or
        not raisesIndexError(substrFunction("1234567890",            -5, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",            -5,            -9)) or
        not raisesIndexError(substrFunction("1234567890",            -5,            -5)) or
        not raisesIndexError(substrFunction("1234567890",            -5,            -1)) or
        not raisesIndexError(substrFunction("1234567890",            -5,             0)) or
        not raisesIndexError(substrFunction("1234567890",            -5,             1)) or
        not raisesIndexError(substrFunction("1234567890",            -5,             6)) or
        not raisesIndexError(substrFunction("1234567890",            -5,             7)) or
        not raisesIndexError(substrFunction("1234567890",            -5,             8)) or
        not raisesIndexError(substrFunction("1234567890",            -5,            11)) or
        not raisesIndexError(substrFunction("1234567890",            -5,            15)) or
        not raisesIndexError(substrFunction("1234567890",            -5,            16)) or
        not raisesIndexError(substrFunction("1234567890",            -5,            17)) or
        not raisesIndexError(substrFunction("1234567890",            -5,            20)) or
        not raisesIndexError(substrFunction("1234567890",            -5,  integer.last)) or
        not raisesIndexError(substrFunction("1234567890",            -1, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",            -1,            -9)) or
        not raisesIndexError(substrFunction("1234567890",            -1,            -5)) or
        not raisesIndexError(substrFunction("1234567890",            -1,            -1)) or
        not raisesIndexError(substrFunction("1234567890",            -1,             0)) or
        not raisesIndexError(substrFunction("1234567890",            -1,             1)) or
        not raisesIndexError(substrFunction("1234567890",            -1,             6)) or
        not raisesIndexError(substrFunction("1234567890",            -1,             7)) or
        not raisesIndexError(substrFunction("1234567890",            -1,             8)) or
        not raisesIndexError(substrFunction("1234567890",            -1,            11)) or
        not raisesIndexError(substrFunction("1234567890",            -1,            15)) or
        not raisesIndexError(substrFunction("1234567890",            -1,            16)) or
        not raisesIndexError(substrFunction("1234567890",            -1,            17)) or
        not raisesIndexError(substrFunction("1234567890",            -1,            20)) or
        not raisesIndexError(substrFunction("1234567890",            -1,  integer.last)) or
        not raisesIndexError(substrFunction("1234567890",             0, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",             0,            -5)) or
        not raisesIndexError(substrFunction("1234567890",             0,            -1)) or
        not raisesIndexError(substrFunction("1234567890",             0,             0)) or
        not raisesIndexError(substrFunction("1234567890",             0,             1)) or
        not raisesIndexError(substrFunction("1234567890",             0,             2)) or
        not raisesIndexError(substrFunction("1234567890",             0,             3)) or
        not raisesIndexError(substrFunction("1234567890",             0,             6)) or
        not raisesIndexError(substrFunction("1234567890",             0,            10)) or
        not raisesIndexError(substrFunction("1234567890",             0,            11)) or
        not raisesIndexError(substrFunction("1234567890",             0,            12)) or
        not raisesIndexError(substrFunction("1234567890",             0,            15)) or
        not raisesIndexError(substrFunction("1234567890",             0,  integer.last)) or
        not raisesIndexError(substrFunction("1234567890",             1, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",             1,            -5)) or
        not raisesIndexError(substrFunction("1234567890",             1,            -1)) or

        not raisesIndexError(substrFunction("1234567890",             2, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",             2,            -5)) or
        not raisesIndexError(substrFunction("1234567890",             2,            -1)) or

        not raisesIndexError(substrFunction("1234567890",             5, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",             5,            -5)) or
        not raisesIndexError(substrFunction("1234567890",             5,            -1)) or

        not raisesIndexError(substrFunction("1234567890",             9, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",             9,            -5)) or
        not raisesIndexError(substrFunction("1234567890",             9,            -1)) or

        not raisesIndexError(substrFunction("1234567890",            10, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",            10,            -5)) or
        not raisesIndexError(substrFunction("1234567890",            10,            -1)) or

        not raisesIndexError(substrFunction("1234567890",            11, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",            11,            -5)) or
        not raisesIndexError(substrFunction("1234567890",            11,            -1)) or

        not raisesIndexError(substrFunction("1234567890",            15, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",            15,            -5)) or
        not raisesIndexError(substrFunction("1234567890",            15,            -1)) or

        not raisesIndexError(substrFunction("1234567890",  integer.last, integer.first)) or
        not raisesIndexError(substrFunction("1234567890",  integer.last,            -5)) or
        not raisesIndexError(substrFunction("1234567890",  integer.last,            -1)) then
      writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (1)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction("", integer.first, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr(           -9))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr(           -5))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr(           -1))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr(            0))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr(            1))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr(            6))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr(            7))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr(            8))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr(           20))) or
        not raisesIndexError(substrFunction("", integer.first, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(           -9))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(           -5))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(           -1))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(            0))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(            1))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(            6))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(            7))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(            8))) or
        not raisesIndexError(substrFunction("",            -5, intExpr(           20))) or
        not raisesIndexError(substrFunction("",            -5, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(           -9))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(           -5))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(           -1))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(            0))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(            1))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(            6))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(            7))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(            8))) or
        not raisesIndexError(substrFunction("",            -1, intExpr(           20))) or
        not raisesIndexError(substrFunction("",            -1, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("",             0, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("",             0, intExpr(           -5))) or
        not raisesIndexError(substrFunction("",             0, intExpr(           -1))) or
        not raisesIndexError(substrFunction("",             0, intExpr(            0))) or
        not raisesIndexError(substrFunction("",             0, intExpr(            1))) or
        not raisesIndexError(substrFunction("",             0, intExpr(            2))) or
        not raisesIndexError(substrFunction("",             0, intExpr(           15))) or
        not raisesIndexError(substrFunction("",             0, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("",             1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("",             1, intExpr(           -5))) or
        not raisesIndexError(substrFunction("",             1, intExpr(           -1))) or

        not raisesIndexError(substrFunction("",             2, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("",             2, intExpr(           -5))) or
        not raisesIndexError(substrFunction("",             2, intExpr(           -1))) or

        not raisesIndexError(substrFunction("",            15, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("",            15, intExpr(           -5))) or
        not raisesIndexError(substrFunction("",            15, intExpr(           -1))) or

        not raisesIndexError(substrFunction("",  integer.last, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("",  integer.last, intExpr(           -5))) or
        not raisesIndexError(substrFunction("",  integer.last, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1", integer.first, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr(           -9))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr(           -1))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr(            0))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr(            1))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr(            6))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr(            7))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr(            8))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr(           10))) or
        not raisesIndexError(substrFunction("1", integer.first, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(           -9))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(           -1))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(            0))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(            1))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(            6))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(            7))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(            8))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr(           10))) or
        not raisesIndexError(substrFunction("1",            -5, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(           -9))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(           -1))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(            0))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(            1))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(            6))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(            7))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(            8))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr(           10))) or
        not raisesIndexError(substrFunction("1",            -1, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1",             0, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1",             0, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1",             0, intExpr(           -1))) or
        not raisesIndexError(substrFunction("1",             0, intExpr(            0))) or
        not raisesIndexError(substrFunction("1",             0, intExpr(            1))) or
        not raisesIndexError(substrFunction("1",             0, intExpr(            2))) or
        not raisesIndexError(substrFunction("1",             0, intExpr(            3))) or
        not raisesIndexError(substrFunction("1",             0, intExpr(           15))) or
        not raisesIndexError(substrFunction("1",             0, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1",             1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1",             1, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1",             1, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1",             2, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1",             2, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1",             2, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1",            15, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1",            15, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1",            15, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1",  integer.last, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1",  integer.last, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1",  integer.last, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(           -9))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(           -1))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(            0))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(            1))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(            6))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(            7))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(            8))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(           11))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(           15))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(           16))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(           17))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr(           20))) or
        not raisesIndexError(substrFunction("1234567890", integer.first, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(           -9))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(           -1))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(            0))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(            1))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(            6))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(            7))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(            8))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(           11))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(           15))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(           16))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(           17))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr(           20))) or
        not raisesIndexError(substrFunction("1234567890",            -5, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(           -9))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(           -1))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(            0))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(            1))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(            6))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(            7))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(            8))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(           11))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(           15))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(           16))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(           17))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr(           20))) or
        not raisesIndexError(substrFunction("1234567890",            -1, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(           -1))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(            0))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(            1))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(            2))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(            3))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(            6))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(           10))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(           11))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(           12))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr(           15))) or
        not raisesIndexError(substrFunction("1234567890",             0, intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1234567890",             1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",             1, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",             1, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890",             2, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",             2, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",             2, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890",             5, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",             5, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",             5, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890",             9, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",             9, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",             9, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890",            10, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",            10, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",            10, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890",            11, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",            11, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",            11, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890",            15, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",            15, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",            15, intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890",  integer.last, intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890",  integer.last, intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890",  integer.last, intExpr(           -1))) then
      writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (2)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction("", intExpr(integer.first), integer.first)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),            -9)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),            -5)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),            -1)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),             0)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),             1)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),             6)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),             7)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),             8)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),            20)) or
        not raisesIndexError(substrFunction("", intExpr(integer.first),  integer.last)) or
        not raisesIndexError(substrFunction("", intExpr(           -5), integer.first)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),            -9)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),            -5)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),            -1)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),             0)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),             1)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),             6)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),             7)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),             8)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),            20)) or
        not raisesIndexError(substrFunction("", intExpr(           -5),  integer.last)) or
        not raisesIndexError(substrFunction("", intExpr(           -1), integer.first)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),            -9)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),            -5)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),            -1)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),             0)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),             1)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),             6)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),             7)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),             8)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),            20)) or
        not raisesIndexError(substrFunction("", intExpr(           -1),  integer.last)) or
        not raisesIndexError(substrFunction("", intExpr(            0), integer.first)) or
        not raisesIndexError(substrFunction("", intExpr(            0),            -5)) or
        not raisesIndexError(substrFunction("", intExpr(            0),            -1)) or
        not raisesIndexError(substrFunction("", intExpr(            0),             0)) or
        not raisesIndexError(substrFunction("", intExpr(            0),             1)) or
        not raisesIndexError(substrFunction("", intExpr(            0),             2)) or
        not raisesIndexError(substrFunction("", intExpr(            0),            15)) or
        not raisesIndexError(substrFunction("", intExpr(            0),  integer.last)) or
        not raisesIndexError(substrFunction("", intExpr(            1), integer.first)) or
        not raisesIndexError(substrFunction("", intExpr(            1),            -5)) or
        not raisesIndexError(substrFunction("", intExpr(            1),            -1)) or

        not raisesIndexError(substrFunction("", intExpr(            2), integer.first)) or
        not raisesIndexError(substrFunction("", intExpr(            2),            -5)) or
        not raisesIndexError(substrFunction("", intExpr(            2),            -1)) or

        not raisesIndexError(substrFunction("", intExpr(           15), integer.first)) or
        not raisesIndexError(substrFunction("", intExpr(           15),            -5)) or
        not raisesIndexError(substrFunction("", intExpr(           15),            -1)) or

        not raisesIndexError(substrFunction("", intExpr( integer.last), integer.first)) or
        not raisesIndexError(substrFunction("", intExpr( integer.last),            -5)) or
        not raisesIndexError(substrFunction("", intExpr( integer.last),            -1)) or

        not raisesIndexError(substrFunction("1", intExpr(integer.first), integer.first)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),            -9)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),            -5)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),            -1)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),             0)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),             1)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),             6)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),             7)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),             8)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),            10)) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first),  integer.last)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), integer.first)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),            -9)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),            -5)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),            -1)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),             0)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),             1)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),             6)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),             7)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),             8)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),            10)) or
        not raisesIndexError(substrFunction("1", intExpr(           -5),  integer.last)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), integer.first)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),            -9)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),            -5)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),            -1)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),             0)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),             1)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),             6)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),             7)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),             8)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),            10)) or
        not raisesIndexError(substrFunction("1", intExpr(           -1),  integer.last)) or
        not raisesIndexError(substrFunction("1", intExpr(            0), integer.first)) or
        not raisesIndexError(substrFunction("1", intExpr(            0),            -5)) or
        not raisesIndexError(substrFunction("1", intExpr(            0),             0)) or
        not raisesIndexError(substrFunction("1", intExpr(            0),             1)) or
        not raisesIndexError(substrFunction("1", intExpr(            0),             2)) or
        not raisesIndexError(substrFunction("1", intExpr(            0),             3)) or
        not raisesIndexError(substrFunction("1", intExpr(            0),            15)) or
        not raisesIndexError(substrFunction("1", intExpr(            0),  integer.last)) or
        not raisesIndexError(substrFunction("1", intExpr(            1), integer.first)) or
        not raisesIndexError(substrFunction("1", intExpr(            1),            -5)) or
        not raisesIndexError(substrFunction("1", intExpr(            1),            -1)) or

        not raisesIndexError(substrFunction("1", intExpr(            2), integer.first)) or
        not raisesIndexError(substrFunction("1", intExpr(            2),            -5)) or
        not raisesIndexError(substrFunction("1", intExpr(            2),            -1)) or

        not raisesIndexError(substrFunction("1", intExpr(           15), integer.first)) or
        not raisesIndexError(substrFunction("1", intExpr(           15),            -5)) or
        not raisesIndexError(substrFunction("1", intExpr(           15),            -1)) or

        not raisesIndexError(substrFunction("1", intExpr( integer.last), integer.first)) or
        not raisesIndexError(substrFunction("1", intExpr( integer.last),            -5)) or
        not raisesIndexError(substrFunction("1", intExpr( integer.last),            -1)) or

        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),            -9)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),            -1)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),             0)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),             1)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),             6)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),             7)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),             8)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),            11)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),            15)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),            16)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),            17)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),            20)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first),  integer.last)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),            -9)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),            -1)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),             0)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),             1)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),             6)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),             7)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),             8)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),            11)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),            15)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),            16)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),            17)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),            20)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5),  integer.last)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),            -9)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),            -1)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),             0)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),             1)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),             6)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),             7)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),             8)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),            11)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),            15)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),            16)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),            17)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),            20)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1),  integer.last)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),            -1)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),             0)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),             1)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),             2)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),             3)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),             6)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),            10)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),            11)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),            12)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),            15)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0),  integer.last)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            1), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            1),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            1),            -1)) or

        not raisesIndexError(substrFunction("1234567890", intExpr(            2), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            2),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            2),            -1)) or

        not raisesIndexError(substrFunction("1234567890", intExpr(            5), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            5),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            5),            -1)) or

        not raisesIndexError(substrFunction("1234567890", intExpr(            9), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            9),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            9),            -1)) or

        not raisesIndexError(substrFunction("1234567890", intExpr(           10), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           10),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           10),            -1)) or

        not raisesIndexError(substrFunction("1234567890", intExpr(           11), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           11),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           11),            -1)) or

        not raisesIndexError(substrFunction("1234567890", intExpr(           15), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           15),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           15),            -1)) or

        not raisesIndexError(substrFunction("1234567890", intExpr( integer.last), integer.first)) or
        not raisesIndexError(substrFunction("1234567890", intExpr( integer.last),            -5)) or
        not raisesIndexError(substrFunction("1234567890", intExpr( integer.last),            -1)) then
      writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (3)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(            6))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(            7))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(            8))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr(           20))) or
        not raisesIndexError(substrFunction("", intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(            6))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(            7))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(            8))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr(           20))) or
        not raisesIndexError(substrFunction("", intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(            6))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(            7))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(            8))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr(           20))) or
        not raisesIndexError(substrFunction("", intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("", intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(substrFunction("", intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(substrFunction("", intExpr(            0), intExpr(            0))) or
        not raisesIndexError(substrFunction("", intExpr(            0), intExpr(            1))) or
        not raisesIndexError(substrFunction("", intExpr(            0), intExpr(            2))) or
        not raisesIndexError(substrFunction("", intExpr(            0), intExpr(           15))) or
        not raisesIndexError(substrFunction("", intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("", intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(substrFunction("", intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(substrFunction("", intExpr(            2), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", intExpr(            2), intExpr(           -5))) or
        not raisesIndexError(substrFunction("", intExpr(            2), intExpr(           -1))) or

        not raisesIndexError(substrFunction("", intExpr(           15), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", intExpr(           15), intExpr(           -5))) or
        not raisesIndexError(substrFunction("", intExpr(           15), intExpr(           -1))) or

        not raisesIndexError(substrFunction("", intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("", intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(substrFunction("", intExpr( integer.last), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(            6))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(            7))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(            8))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr(           10))) or
        not raisesIndexError(substrFunction("1", intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(            6))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(            7))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(            8))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr(           10))) or
        not raisesIndexError(substrFunction("1", intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(            6))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(            7))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(            8))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr(           10))) or
        not raisesIndexError(substrFunction("1", intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1", intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(substrFunction("1", intExpr(            0), intExpr(            0))) or
        not raisesIndexError(substrFunction("1", intExpr(            0), intExpr(            1))) or
        not raisesIndexError(substrFunction("1", intExpr(            0), intExpr(            2))) or
        not raisesIndexError(substrFunction("1", intExpr(            0), intExpr(            3))) or
        not raisesIndexError(substrFunction("1", intExpr(            0), intExpr(           15))) or
        not raisesIndexError(substrFunction("1", intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1", intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1", intExpr(            2), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", intExpr(            2), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", intExpr(            2), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1", intExpr(           15), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", intExpr(           15), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", intExpr(           15), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1", intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1", intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1", intExpr( integer.last), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(            6))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(            7))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(            8))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(           11))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(           15))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(           16))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(           17))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr(           20))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(            6))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(            7))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(            8))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(           11))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(           15))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(           16))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(           17))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr(           20))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(            6))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(            7))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(            8))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(           11))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(           15))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(           16))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(           17))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr(           20))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(            0))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(            1))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(            2))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(            3))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(            6))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(           10))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(           11))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(           12))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr(           15))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890", intExpr(            2), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            2), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            2), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890", intExpr(            5), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            5), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            5), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890", intExpr(            9), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            9), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(            9), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890", intExpr(           10), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           10), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           10), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890", intExpr(           11), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           11), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           11), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890", intExpr(           15), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           15), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr(           15), intExpr(           -1))) or

        not raisesIndexError(substrFunction("1234567890", intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(substrFunction("1234567890", intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(substrFunction("1234567890", intExpr( integer.last), intExpr(           -1))) then
      writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (4)");
      okay := FALSE;
    end if;
  end func;


const func boolean: check_string_substr_func_2 is func
  result
    var boolean: okay is TRUE;
  begin
    if  not raisesIndexError(substrFunction(striExpr(""), integer.first, integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,            -9)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,            -5)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,            -1)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,             0)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,             1)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,             6)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,             7)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,             8)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,            20)) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,            -9)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,            -5)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,            -1)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,             0)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,             1)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,             6)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,             7)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,             8)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,            20)) or
        not raisesIndexError(substrFunction(striExpr(""),            -5,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,            -9)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,            -5)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,            -1)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,             0)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,             1)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,             6)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,             7)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,             8)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,            20)) or
        not raisesIndexError(substrFunction(striExpr(""),            -1,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr(""),             0, integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""),             0,            -5)) or
        not raisesIndexError(substrFunction(striExpr(""),             0,            -1)) or
        not raisesIndexError(substrFunction(striExpr(""),             0,             0)) or
        not raisesIndexError(substrFunction(striExpr(""),             0,             1)) or
        not raisesIndexError(substrFunction(striExpr(""),             0,             2)) or
        not raisesIndexError(substrFunction(striExpr(""),             0,            15)) or
        not raisesIndexError(substrFunction(striExpr(""),             0,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr(""),             1, integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""),             1,            -5)) or
        not raisesIndexError(substrFunction(striExpr(""),             1,            -1)) or

        not raisesIndexError(substrFunction(striExpr(""),             2, integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""),             2,            -5)) or
        not raisesIndexError(substrFunction(striExpr(""),             2,            -1)) or

        not raisesIndexError(substrFunction(striExpr(""),            15, integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""),            15,            -5)) or
        not raisesIndexError(substrFunction(striExpr(""),            15,            -1)) or

        not raisesIndexError(substrFunction(striExpr(""),  integer.last, integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""),  integer.last,            -5)) or
        not raisesIndexError(substrFunction(striExpr(""),  integer.last,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1"), integer.first, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,            -9)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,            -1)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,             0)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,             1)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,             6)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,             7)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,             8)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,            10)) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,            -9)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,            -1)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,             0)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,             1)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,             6)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,             7)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,             8)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,            10)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,            -9)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,            -1)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,             0)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,             1)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,             6)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,             7)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,             8)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,            10)) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"),             0,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"),             0,             0)) or
        not raisesIndexError(substrFunction(striExpr("1"),             0,             1)) or
        not raisesIndexError(substrFunction(striExpr("1"),             0,             2)) or
        not raisesIndexError(substrFunction(striExpr("1"),             0,             3)) or
        not raisesIndexError(substrFunction(striExpr("1"),             0,            15)) or
        not raisesIndexError(substrFunction(striExpr("1"),             0,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1"),             1, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"),             1,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"),             1,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1"),             2, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"),             2,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"),             2,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1"),            15, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"),            15,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"),            15,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1"),  integer.last, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"),  integer.last,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"),  integer.last,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,            -9)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,            -1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,             0)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,             1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,             6)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,             7)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,             8)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,            11)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,            15)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,            16)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,            17)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,            20)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,            -9)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,            -1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,             0)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,             1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,             6)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,             7)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,             8)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,            11)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,            15)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,            16)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,            17)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,            20)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,            -9)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,            -1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,             0)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,             1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,             6)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,             7)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,             8)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,            11)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,            15)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,            16)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,            17)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,            20)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,            -1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,             0)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,             1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,             2)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,             3)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,             6)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,            10)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,            11)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,            12)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,            15)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0,  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             1, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             1,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             1,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),             2, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             2,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             2,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),             5, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             5,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             5,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),             9, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             9,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             9,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),            10, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            10,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            10,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),            11, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            11,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            11,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),            15, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            15,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            15,            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),  integer.last, integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),  integer.last,            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),  integer.last,            -1)) then
      writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (5)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr(""), integer.first, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr(""),            -5, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr(""),            -1, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr(""),             0, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""),             0, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""),             0, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr(""),             0, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr(""),             0, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr(""),             0, intExpr(            2))) or
        not raisesIndexError(substrFunction(striExpr(""),             0, intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr(""),             0, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr(""),             1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""),             1, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""),             1, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr(""),             2, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""),             2, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""),             2, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr(""),            15, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""),            15, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""),            15, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr(""),  integer.last, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""),  integer.last, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""),  integer.last, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr(           10))) or
        not raisesIndexError(substrFunction(striExpr("1"), integer.first, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr(           10))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -5, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr(           10))) or
        not raisesIndexError(substrFunction(striExpr("1"),            -1, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, intExpr(            2))) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, intExpr(            3))) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1"),             0, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1"),             1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"),             1, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"),             1, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1"),             2, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"),             2, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"),             2, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1"),            15, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"),            15, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"),            15, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1"),  integer.last, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"),  integer.last, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"),  integer.last, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(           11))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(           16))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(           17))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), integer.first, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(           11))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(           16))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(           17))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -5, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(           11))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(           16))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(           17))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            -1, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(            2))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(            3))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(           10))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(           11))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(           12))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             0, intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             1, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             1, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             1, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),             2, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             2, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             2, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),             5, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             5, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             5, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),             9, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             9, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),             9, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),            10, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            10, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            10, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),            11, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            11, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            11, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),            15, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            15, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),            15, intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"),  integer.last, intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),  integer.last, intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"),  integer.last, intExpr(           -1))) then
      writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (6)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),            -9)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),            -5)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),            -1)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),             0)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),             1)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),             6)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),             7)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),             8)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),            20)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),            -9)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),            -5)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),            -1)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),             0)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),             1)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),             6)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),             7)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),             8)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),            20)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),            -9)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),            -5)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),            -1)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),             0)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),             1)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),             6)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),             7)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),             8)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),            20)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0), integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0),            -5)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0),            -1)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0),             0)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0),             1)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0),             2)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0),            15)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            1), integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            1),            -5)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            1),            -1)) or

        not raisesIndexError(substrFunction(striExpr(""), intExpr(            2), integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            2),            -5)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            2),            -1)) or

        not raisesIndexError(substrFunction(striExpr(""), intExpr(           15), integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           15),            -5)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           15),            -1)) or

        not raisesIndexError(substrFunction(striExpr(""), intExpr( integer.last), integer.first)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr( integer.last),            -5)) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr( integer.last),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),            -9)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),            -1)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),             0)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),             1)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),             6)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),             7)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),             8)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),            10)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),            -9)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),            -1)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),             0)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),             1)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),             6)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),             7)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),             8)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),            10)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),            -9)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),            -1)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),             0)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),             1)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),             6)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),             7)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),             8)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),            10)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0),             0)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0),             1)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0),             2)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0),             3)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0),            15)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            1), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            1),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            1),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            2), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            2),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            2),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           15), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           15),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           15),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1"), intExpr( integer.last), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr( integer.last),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr( integer.last),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),            -9)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),            -1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),             0)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),             1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),             6)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),             7)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),             8)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),            11)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),            15)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),            16)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),            17)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),            20)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),            -9)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),            -1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),             0)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),             1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),             6)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),             7)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),             8)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),            11)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),            15)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),            16)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),            17)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),            20)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),            -9)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),            -1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),             0)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),             1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),             6)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),             7)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),             8)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),            11)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),            15)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),            16)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),            17)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),            20)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),            -1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),             0)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),             1)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),             2)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),             3)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),             6)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),            10)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),            11)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),            12)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),            15)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0),  integer.last)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            1), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            1),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            1),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            2), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            2),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            2),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            5), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            5),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            5),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            9), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            9),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            9),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           10), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           10),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           10),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           11), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           11),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           11),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           15), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           15),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           15),            -1)) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr( integer.last), integer.first)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr( integer.last),            -5)) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr( integer.last),            -1)) then
      writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (7)");
      okay := FALSE;
    end if;

    if  not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0), intExpr(            2))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0), intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr(""), intExpr(            2), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            2), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(            2), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr(""), intExpr(           15), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           15), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr(           15), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr(""), intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr(""), intExpr( integer.last), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr(           10))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr(           10))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr(           10))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), intExpr(            2))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), intExpr(            3))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            2), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            2), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(            2), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           15), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           15), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr(           15), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1"), intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1"), intExpr( integer.last), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           11))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           16))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           17))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(integer.first), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           11))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           16))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           17))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -5), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           -9))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(            7))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(            8))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           11))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           16))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           17))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr(           20))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           -1), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(           -1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(            0))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(            1))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(            2))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(            3))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(            6))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(           10))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(           11))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(           12))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr(           15))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            0), intExpr( integer.last))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            1), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            1), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            1), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            2), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            2), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            2), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            5), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            5), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            5), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            9), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            9), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(            9), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           10), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           10), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           10), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           11), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           11), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           11), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           15), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           15), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr(           15), intExpr(           -1))) or

        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(integer.first))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(           -5))) or
        not raisesIndexError(substrFunction(striExpr("1234567890"), intExpr( integer.last), intExpr(           -1))) then
      writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (8)");
      okay := FALSE;
    end if;
  end func;


const proc: check_string_substr is func
  local
    var boolean: okay is TRUE;
  begin
    if not check_string_substr_expr_1 then
      okay := FALSE;
    end if;

    if not check_string_substr_expr_2 then
      okay := FALSE;
    end if;

    if not check_string_substr_assign_1 then
      okay := FALSE;
    end if;

    if not check_string_substr_assign_2 then
      okay := FALSE;
    end if;

    if not check_string_substr_func_1 then
      okay := FALSE;
    end if;

    if not check_string_substr_func_2 then
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [-2147483643 len 2147483647]) or
        not raisesIndexError("" [-2147483644 len 2147483647]) or
        not raisesIndexError("" [-2147483645 len 2147483647]) or
        not raisesIndexError("" [-2147483646 len 2147483647]) or
        not raisesIndexError("" [-2147483647 len 2147483647]) or
        not raisesIndexError("" [pred(-2147483647) len 2147483647]) or
        not raisesIndexError("1" [-2147483643 len 2147483647]) or
        not raisesIndexError("1" [-2147483644 len 2147483647]) or
        not raisesIndexError("1" [-2147483645 len 2147483647]) or
        not raisesIndexError("1" [-2147483646 len 2147483647]) or
        not raisesIndexError("1" [-2147483647 len 2147483647]) or
        not raisesIndexError("1" [pred(-2147483647) len 2147483647]) or
        not raisesIndexError("12" [-2147483643 len 2147483647]) or
        not raisesIndexError("12" [-2147483644 len 2147483647]) or
        not raisesIndexError("12" [-2147483645 len 2147483647]) or
        not raisesIndexError("12" [-2147483646 len 2147483647]) or
        not raisesIndexError("12" [-2147483647 len 2147483647]) or
        not raisesIndexError("12" [pred(-2147483647) len 2147483647]) or
        not raisesIndexError("123" [-2147483643 len 2147483647]) or
        not raisesIndexError("123" [-2147483644 len 2147483647]) or
        not raisesIndexError("123" [-2147483645 len 2147483647]) or
        not raisesIndexError("123" [-2147483646 len 2147483647]) or
        not raisesIndexError("123" [-2147483647 len 2147483647]) or
        not raisesIndexError("123" [pred(-2147483647) len 2147483647]) or
        not raisesIndexError("1234" [-2147483643 len 2147483647]) or
        not raisesIndexError("1234" [-2147483644 len 2147483647]) or
        not raisesIndexError("1234" [-2147483645 len 2147483647]) or
        not raisesIndexError("1234" [-2147483646 len 2147483647]) or
        not raisesIndexError("1234" [-2147483647 len 2147483647]) or
        not raisesIndexError("1234" [pred(-2147483647) len 2147483647]) then
      writeln(" ***** STRING [ START len LENGTH ] with 32-bit maximums does not work correct.");
      okay := FALSE;
    end if;

    if  not raisesIndexError("" [-9223372036854775803 len integer.last]) or
        not raisesIndexError("" [-9223372036854775804 len integer.last]) or
        not raisesIndexError("" [-9223372036854775805 len integer.last]) or
        not raisesIndexError("" [-9223372036854775806 len integer.last]) or
        not raisesIndexError("" [-9223372036854775807 len integer.last]) or
        not raisesIndexError("" [       integer.first len integer.last]) or
        not raisesIndexError("1" [-9223372036854775803 len integer.last]) or
        not raisesIndexError("1" [-9223372036854775804 len integer.last]) or
        not raisesIndexError("1" [-9223372036854775805 len integer.last]) or
        not raisesIndexError("1" [-9223372036854775806 len integer.last]) or
        not raisesIndexError("1" [-9223372036854775807 len integer.last]) or
        not raisesIndexError("1" [       integer.first len integer.last]) or
        not raisesIndexError("12" [-9223372036854775803 len integer.last]) or
        not raisesIndexError("12" [-9223372036854775804 len integer.last]) or
        not raisesIndexError("12" [-9223372036854775805 len integer.last]) or
        not raisesIndexError("12" [-9223372036854775806 len integer.last]) or
        not raisesIndexError("12" [-9223372036854775807 len integer.last]) or
        not raisesIndexError("12" [       integer.first len integer.last]) or
        not raisesIndexError("123" [-9223372036854775803 len integer.last]) or
        not raisesIndexError("123" [-9223372036854775804 len integer.last]) or
        not raisesIndexError("123" [-9223372036854775805 len integer.last]) or
        not raisesIndexError("123" [-9223372036854775806 len integer.last]) or
        not raisesIndexError("123" [-9223372036854775807 len integer.last]) or
        not raisesIndexError("123" [       integer.first len integer.last]) or
        not raisesIndexError("1234" [-9223372036854775803 len integer.last]) or
        not raisesIndexError("1234" [-9223372036854775804 len integer.last]) or
        not raisesIndexError("1234" [-9223372036854775805 len integer.last]) or
        not raisesIndexError("1234" [-9223372036854775806 len integer.last]) or
        not raisesIndexError("1234" [-9223372036854775807 len integer.last]) or
        not raisesIndexError("1234" [       integer.first len integer.last]) then
      writeln(" ***** STRING [ START len LENGTH ] with 64-bit maximums does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Index checking for string substr works correct.");
    end if;
  end func;


const proc: check_string_assign_at is func
  local
    var boolean: okay is TRUE;
    var string: stri is "";
  begin
    stri := "abcd";
    if  not raisesIndexError(stri @:= [            0] 'x') or
        not raisesIndexError(stri @:= [           -1] 'x') or
        not raisesIndexError(stri @:= [           -2] 'x') or
        not raisesIndexError(stri @:= [integer.first] 'x') or
        not raisesIndexError(stri @:= [            0] "") or
        not raisesIndexError(stri @:= [           -1] "") or
        not raisesIndexError(stri @:= [           -2] "") or
        not raisesIndexError(stri @:= [integer.first] "") or
        not raisesIndexError(stri @:= [            0] "x") or
        not raisesIndexError(stri @:= [           -1] "x") or
        not raisesIndexError(stri @:= [           -2] "x") or
        not raisesIndexError(stri @:= [integer.first] "x") or
        not raisesIndexError(stri @:= [            0] "xy") or
        not raisesIndexError(stri @:= [           -1] "xy") or
        not raisesIndexError(stri @:= [           -2] "xy") or
        not raisesIndexError(stri @:= [integer.first] "xy") or
        not raisesIndexError(stri @:= [            0] "xyz") or
        not raisesIndexError(stri @:= [           -1] "xyz") or
        not raisesIndexError(stri @:= [           -2] "xyz") or
        not raisesIndexError(stri @:= [integer.first] "xyz") or
        not raisesIndexError(stri @:= [intExpr(            0)] 'x') or
        not raisesIndexError(stri @:= [intExpr(           -1)] 'x') or
        not raisesIndexError(stri @:= [intExpr(           -2)] 'x') or
        not raisesIndexError(stri @:= [intExpr(integer.first)] 'x') or
        not raisesIndexError(stri @:= [intExpr(            0)] "") or
        not raisesIndexError(stri @:= [intExpr(           -1)] "") or
        not raisesIndexError(stri @:= [intExpr(           -2)] "") or
        not raisesIndexError(stri @:= [intExpr(integer.first)] "") or
        not raisesIndexError(stri @:= [intExpr(            0)] "x") or
        not raisesIndexError(stri @:= [intExpr(           -1)] "x") or
        not raisesIndexError(stri @:= [intExpr(           -2)] "x") or
        not raisesIndexError(stri @:= [intExpr(integer.first)] "x") or
        not raisesIndexError(stri @:= [intExpr(            0)] "xy") or
        not raisesIndexError(stri @:= [intExpr(           -1)] "xy") or
        not raisesIndexError(stri @:= [intExpr(           -2)] "xy") or
        not raisesIndexError(stri @:= [intExpr(integer.first)] "xy") or
        not raisesIndexError(stri @:= [intExpr(            0)] "xyz") or
        not raisesIndexError(stri @:= [intExpr(           -1)] "xyz") or
        not raisesIndexError(stri @:= [intExpr(           -2)] "xyz") or
        not raisesIndexError(stri @:= [intExpr(integer.first)] "xyz")  or
        not raisesIndexError(stri @:= [            0] charExpr('x')) or
        not raisesIndexError(stri @:= [           -1] charExpr('x')) or
        not raisesIndexError(stri @:= [           -2] charExpr('x')) or
        not raisesIndexError(stri @:= [integer.first] charExpr('x')) or
        not raisesIndexError(stri @:= [            0] striExpr("")) or
        not raisesIndexError(stri @:= [           -1] striExpr("")) or
        not raisesIndexError(stri @:= [           -2] striExpr("")) or
        not raisesIndexError(stri @:= [integer.first] striExpr("")) or
        not raisesIndexError(stri @:= [            0] striExpr("x")) or
        not raisesIndexError(stri @:= [           -1] striExpr("x")) or
        not raisesIndexError(stri @:= [           -2] striExpr("x")) or
        not raisesIndexError(stri @:= [integer.first] striExpr("x")) or
        not raisesIndexError(stri @:= [            0] striExpr("xy")) or
        not raisesIndexError(stri @:= [           -1] striExpr("xy")) or
        not raisesIndexError(stri @:= [           -2] striExpr("xy")) or
        not raisesIndexError(stri @:= [integer.first] striExpr("xy")) or
        not raisesIndexError(stri @:= [            0] striExpr("xyz")) or
        not raisesIndexError(stri @:= [           -1] striExpr("xyz")) or
        not raisesIndexError(stri @:= [           -2] striExpr("xyz")) or
        not raisesIndexError(stri @:= [integer.first] striExpr("xyz")) or
        not raisesIndexError(stri @:= [intExpr(            0)] charExpr('x')) or
        not raisesIndexError(stri @:= [intExpr(           -1)] charExpr('x')) or
        not raisesIndexError(stri @:= [intExpr(           -2)] charExpr('x')) or
        not raisesIndexError(stri @:= [intExpr(integer.first)] charExpr('x')) or
        not raisesIndexError(stri @:= [intExpr(            0)] striExpr("")) or
        not raisesIndexError(stri @:= [intExpr(           -1)] striExpr("")) or
        not raisesIndexError(stri @:= [intExpr(           -2)] striExpr("")) or
        not raisesIndexError(stri @:= [intExpr(integer.first)] striExpr("")) or
        not raisesIndexError(stri @:= [intExpr(            0)] striExpr("x")) or
        not raisesIndexError(stri @:= [intExpr(           -1)] striExpr("x")) or
        not raisesIndexError(stri @:= [intExpr(           -2)] striExpr("x")) or
        not raisesIndexError(stri @:= [intExpr(integer.first)] striExpr("x")) or
        not raisesIndexError(stri @:= [intExpr(            0)] striExpr("xy")) or
        not raisesIndexError(stri @:= [intExpr(           -1)] striExpr("xy")) or
        not raisesIndexError(stri @:= [intExpr(           -2)] striExpr("xy")) or
        not raisesIndexError(stri @:= [intExpr(integer.first)] striExpr("xy")) or
        not raisesIndexError(stri @:= [intExpr(            0)] striExpr("xyz")) or
        not raisesIndexError(stri @:= [intExpr(           -1)] striExpr("xyz")) or
        not raisesIndexError(stri @:= [intExpr(           -2)] striExpr("xyz")) or
        not raisesIndexError(stri @:= [intExpr(integer.first)] striExpr("xyz")) then
      writeln(" ***** @:= with zero or negative index does not raise INDEX_ERROR.");
      okay := FALSE;
    end if;

    stri := "abcd";
    if  not raisesIndexError(stri @:= [           5] 'x') or
        not raisesIndexError(stri @:= [           6] 'x') or
        not raisesIndexError(stri @:= [integer.last] 'x') or
        not raisesIndexError(stri @:= [           6] "") or
        not raisesIndexError(stri @:= [           7] "") or
        not raisesIndexError(stri @:= [integer.last] "") or
        not raisesIndexError(stri @:= [           5] "x") or
        not raisesIndexError(stri @:= [           6] "x") or
        not raisesIndexError(stri @:= [integer.last] "x") or
        not raisesIndexError(stri @:= [           4] "xy") or
        not raisesIndexError(stri @:= [           5] "xy") or
        not raisesIndexError(stri @:= [           6] "xy") or
        not raisesIndexError(stri @:= [integer.last] "xy") or
        not raisesIndexError(stri @:= [           3] "xyz") or
        not raisesIndexError(stri @:= [           4] "xyz") or
        not raisesIndexError(stri @:= [           5] "xyz") or
        not raisesIndexError(stri @:= [           6] "xyz") or
        not raisesIndexError(stri @:= [integer.last] "xyz") or
        not raisesIndexError(stri @:= [           2] "xyz0") or
        not raisesIndexError(stri @:= [           3] "xyz0") or
        not raisesIndexError(stri @:= [           4] "xyz0") or
        not raisesIndexError(stri @:= [           5] "xyz0") or
        not raisesIndexError(stri @:= [           6] "xyz0") or
        not raisesIndexError(stri @:= [integer.last] "xyz0") or
        not raisesIndexError(stri @:= [           1] "xyz01") or
        not raisesIndexError(stri @:= [           2] "xyz01") or
        not raisesIndexError(stri @:= [           3] "xyz01") or
        not raisesIndexError(stri @:= [           4] "xyz01") or
        not raisesIndexError(stri @:= [           5] "xyz01") or
        not raisesIndexError(stri @:= [           6] "xyz01") or
        not raisesIndexError(stri @:= [integer.last] "xyz01") or
        not raisesIndexError(stri @:= [intExpr(           5)] 'x') or
        not raisesIndexError(stri @:= [intExpr(           6)] 'x') or
        not raisesIndexError(stri @:= [intExpr(integer.last)] 'x') or
        not raisesIndexError(stri @:= [intExpr(           6)] "") or
        not raisesIndexError(stri @:= [intExpr(           7)] "") or
        not raisesIndexError(stri @:= [intExpr(integer.last)] "") or
        not raisesIndexError(stri @:= [intExpr(           5)] "x") or
        not raisesIndexError(stri @:= [intExpr(           6)] "x") or
        not raisesIndexError(stri @:= [intExpr(integer.last)] "x") or
        not raisesIndexError(stri @:= [intExpr(           4)] "xy") or
        not raisesIndexError(stri @:= [intExpr(           5)] "xy") or
        not raisesIndexError(stri @:= [intExpr(           6)] "xy") or
        not raisesIndexError(stri @:= [intExpr(integer.last)] "xy") or
        not raisesIndexError(stri @:= [intExpr(           3)] "xyz") or
        not raisesIndexError(stri @:= [intExpr(           4)] "xyz") or
        not raisesIndexError(stri @:= [intExpr(           5)] "xyz") or
        not raisesIndexError(stri @:= [intExpr(           6)] "xyz") or
        not raisesIndexError(stri @:= [intExpr(integer.last)] "xyz") or
        not raisesIndexError(stri @:= [intExpr(           2)] "xyz0") or
        not raisesIndexError(stri @:= [intExpr(           3)] "xyz0") or
        not raisesIndexError(stri @:= [intExpr(           4)] "xyz0") or
        not raisesIndexError(stri @:= [intExpr(           5)] "xyz0") or
        not raisesIndexError(stri @:= [intExpr(           6)] "xyz0") or
        not raisesIndexError(stri @:= [intExpr(integer.last)] "xyz0") or
        not raisesIndexError(stri @:= [intExpr(           1)] "xyz01") or
        not raisesIndexError(stri @:= [intExpr(           2)] "xyz01") or
        not raisesIndexError(stri @:= [intExpr(           3)] "xyz01") or
        not raisesIndexError(stri @:= [intExpr(           4)] "xyz01") or
        not raisesIndexError(stri @:= [intExpr(           5)] "xyz01") or
        not raisesIndexError(stri @:= [intExpr(           6)] "xyz01") or
        not raisesIndexError(stri @:= [intExpr(integer.last)] "xyz01") or
        not raisesIndexError(stri @:= [           5] charExpr('x')) or
        not raisesIndexError(stri @:= [           6] charExpr('x')) or
        not raisesIndexError(stri @:= [integer.last] charExpr('x')) or
        not raisesIndexError(stri @:= [           6] striExpr("")) or
        not raisesIndexError(stri @:= [           7] striExpr("")) or
        not raisesIndexError(stri @:= [integer.last] striExpr("")) or
        not raisesIndexError(stri @:= [           5] striExpr("x")) or
        not raisesIndexError(stri @:= [           6] striExpr("x")) or
        not raisesIndexError(stri @:= [integer.last] striExpr("x")) or
        not raisesIndexError(stri @:= [           4] striExpr("xy")) or
        not raisesIndexError(stri @:= [           5] striExpr("xy")) or
        not raisesIndexError(stri @:= [           6] striExpr("xy")) or
        not raisesIndexError(stri @:= [integer.last] striExpr("xy")) or
        not raisesIndexError(stri @:= [           3] striExpr("xyz")) or
        not raisesIndexError(stri @:= [           4] striExpr("xyz")) or
        not raisesIndexError(stri @:= [           5] striExpr("xyz")) or
        not raisesIndexError(stri @:= [           6] striExpr("xyz")) or
        not raisesIndexError(stri @:= [integer.last] striExpr("xyz")) or
        not raisesIndexError(stri @:= [           2] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [           3] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [           4] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [           5] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [           6] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [integer.last] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [           1] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [           2] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [           3] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [           4] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [           5] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [           6] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [integer.last] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [intExpr(           5)] charExpr('x')) or
        not raisesIndexError(stri @:= [intExpr(           6)] charExpr('x')) or
        not raisesIndexError(stri @:= [intExpr(integer.last)] charExpr('x')) or
        not raisesIndexError(stri @:= [intExpr(           6)] striExpr("")) or
        not raisesIndexError(stri @:= [intExpr(           7)] striExpr("")) or
        not raisesIndexError(stri @:= [intExpr(integer.last)] striExpr("")) or
        not raisesIndexError(stri @:= [intExpr(           5)] striExpr("x")) or
        not raisesIndexError(stri @:= [intExpr(           6)] striExpr("x")) or
        not raisesIndexError(stri @:= [intExpr(integer.last)] striExpr("x")) or
        not raisesIndexError(stri @:= [intExpr(           4)] striExpr("xy")) or
        not raisesIndexError(stri @:= [intExpr(           5)] striExpr("xy")) or
        not raisesIndexError(stri @:= [intExpr(           6)] striExpr("xy")) or
        not raisesIndexError(stri @:= [intExpr(integer.last)] striExpr("xy")) or
        not raisesIndexError(stri @:= [intExpr(           3)] striExpr("xyz")) or
        not raisesIndexError(stri @:= [intExpr(           4)] striExpr("xyz")) or
        not raisesIndexError(stri @:= [intExpr(           5)] striExpr("xyz")) or
        not raisesIndexError(stri @:= [intExpr(           6)] striExpr("xyz")) or
        not raisesIndexError(stri @:= [intExpr(integer.last)] striExpr("xyz")) or
        not raisesIndexError(stri @:= [intExpr(           2)] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [intExpr(           3)] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [intExpr(           4)] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [intExpr(           5)] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [intExpr(           6)] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [intExpr(integer.last)] striExpr("xyz0")) or
        not raisesIndexError(stri @:= [intExpr(           1)] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [intExpr(           2)] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [intExpr(           3)] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [intExpr(           4)] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [intExpr(           5)] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [intExpr(           6)] striExpr("xyz01")) or
        not raisesIndexError(stri @:= [intExpr(integer.last)] striExpr("xyz01")) then
      writeln(" ***** @:= with destination positions beyond the length does not raise INDEX_ERROR.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Index checking for string @:= works correct.");
    end if;
  end func;


const proc: main is func

  local
    var string: stri is "";
  begin
    writeln;
    check_string_index;
    check_string_head;
    check_string_tail;
    check_string_range;
    check_string_substr;
    check_string_assign_at;
  end func;
