"Fossies" - the Fresh Open Source Software Archive

Member "seed7/prg/chkstr.sd7" (19 Dec 2020, 1186622 Bytes) of package /linux/misc/seed7_05_20210223.tgz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the last Fossies "Diffs" side-by-side code changes report for "chkstr.sd7": 05_20200830_vs_05_20200929.

    1 
    2 (********************************************************************)
    3 (*                                                                  *)
    4 (*  chkstr.sd7    Checks string literals and operations             *)
    5 (*  Copyright (C) 1992 - 1994, 2004, 2007 - 2009 Thomas Mertes      *)
    6 (*                2011 - 2020 Thomas Mertes                         *)
    7 (*                                                                  *)
    8 (*  This program is free software; you can redistribute it and/or   *)
    9 (*  modify it under the terms of the GNU General Public License as  *)
   10 (*  published by the Free Software Foundation; either version 2 of  *)
   11 (*  the License, or (at your option) any later version.             *)
   12 (*                                                                  *)
   13 (*  This program is distributed in the hope that it will be useful, *)
   14 (*  but WITHOUT ANY WARRANTY; without even the implied warranty of  *)
   15 (*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   *)
   16 (*  GNU General Public License for more details.                    *)
   17 (*                                                                  *)
   18 (*  You should have received a copy of the GNU General Public       *)
   19 (*  License along with this program; if not, write to the           *)
   20 (*  Free Software Foundation, Inc., 51 Franklin Street,             *)
   21 (*  Fifth Floor, Boston, MA  02110-1301, USA.                       *)
   22 (*                                                                  *)
   23 (********************************************************************)
   24 
   25 
   26 $ include "seed7_05.s7i";
   27   include "stdio.s7i";
   28 
   29 
   30 const func string: striExpr (in string: stri) is
   31   return stri & str(rand(1, 9))[2 ..];
   32 
   33 
   34 const func integer: intExpr (in integer: number) is
   35   return number + length(str(rand(1, 9))[2 ..]);
   36 
   37 
   38 const func char: charExpr (in char: ch) is
   39   return chr(ord(ch) + length(str(rand(1, 9))[2 ..]));
   40 
   41 
   42 const func boolean: boolExpr (in boolean: okay) is
   43   return boolean(ord(okay) + length(str(rand(1, 9))[2 ..]));
   44 
   45 
   46 const func boolean: raisesRangeError (ref proc: statement) is func
   47   result
   48     var boolean: raisesRangeError is FALSE;
   49   begin
   50     block
   51       statement;
   52     exception
   53       catch RANGE_ERROR:
   54         raisesRangeError := TRUE;
   55     end block;
   56   end func;
   57 
   58 
   59 const func boolean: raisesRangeError (ref func string: expression) is func
   60   result
   61     var boolean: raisesRangeError is FALSE;
   62   local
   63     var string: exprResult is "";
   64   begin
   65     block
   66       exprResult := expression;
   67     exception
   68       catch RANGE_ERROR:
   69         raisesRangeError := TRUE;
   70     end block;
   71   end func;
   72 
   73 
   74 const func boolean: raisesRangeError (ref func integer: expression) is func
   75   result
   76     var boolean: raisesRangeError is FALSE;
   77   local
   78     var integer: exprResult is 0;
   79   begin
   80     block
   81       exprResult := expression;
   82     exception
   83       catch RANGE_ERROR:
   84         raisesRangeError := TRUE;
   85     end block;
   86   end func;
   87 
   88 
   89 const proc: check_string_literal is func
   90   local
   91     var boolean: okay is TRUE;
   92   begin
   93     if  ord("\""[1]) <> 34 or
   94         ord("\'"[1]) <> 39 or
   95         ord("\\"[1]) <> 92 or
   96         ord("\a"[1]) <>  7 or
   97         ord("\b"[1]) <>  8 or
   98         ord("\e"[1]) <> 27 or
   99         ord("\f"[1]) <> 12 or
  100         ord("\n"[1]) <> 10 or
  101         ord("\r"[1]) <> 13 or
  102         ord("\t"[1]) <>  9 or
  103         ord("\v"[1]) <> 11 then
  104       writeln("Basic escape sequences do not work correct.");
  105       okay := FALSE;
  106     end if;
  107     if "\ \"   <> ""   or "\
  108 \"             <> ""   or "\
  109           \"   <> ""   or
  110        "a\ \"  <> "a"  or "a\
  111 \"             <> "a"  or "a\
  112           \"   <> "a"  or
  113        "\ \b"  <> "b"  or "\
  114 \b"            <> "b"  or "\
  115           \b"  <> "b"  or
  116        "a\ \b" <> "ab" or "a\
  117 \b"            <> "ab" or "a\
  118           \b"  <> "ab" then
  119       writeln("Escape sequences to skip white space do not work correct.");
  120       okay := FALSE;
  121     end if;
  122     if  ord("\A"[1]) <>  1 or
  123         ord("\B"[1]) <>  2 or
  124         ord("\C"[1]) <>  3 or
  125         ord("\D"[1]) <>  4 or
  126         ord("\E"[1]) <>  5 or
  127         ord("\F"[1]) <>  6 or
  128         ord("\G"[1]) <>  7 or
  129         ord("\H"[1]) <>  8 or
  130         ord("\I"[1]) <>  9 or
  131         ord("\J"[1]) <> 10 or
  132         ord("\K"[1]) <> 11 or
  133         ord("\L"[1]) <> 12 or
  134         ord("\M"[1]) <> 13 or
  135         ord("\N"[1]) <> 14 or
  136         ord("\O"[1]) <> 15 or
  137         ord("\P"[1]) <> 16 or
  138         ord("\Q"[1]) <> 17 or
  139         ord("\R"[1]) <> 18 or
  140         ord("\S"[1]) <> 19 or
  141         ord("\T"[1]) <> 20 or
  142         ord("\U"[1]) <> 21 or
  143         ord("\V"[1]) <> 22 or
  144         ord("\W"[1]) <> 23 or
  145         ord("\X"[1]) <> 24 or
  146         ord("\Y"[1]) <> 25 or
  147         ord("\Z"[1]) <> 26 then
  148       writeln("Escape sequences for control characters do not work correct.");
  149       okay := FALSE;
  150     end if;
  151     if "\1;\2;\3;\4;\5;\6;\7;\8;\9;\10;\11;\12;\13;\
  152         \\14;\15;\16;\17;\18;\19;\20;\21;\22;\23;\24;\25;\26;" <>
  153         "\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z" then
  154       writeln("Decimal numeric escape sequences do not work correct.");
  155       okay := FALSE;
  156     end if;
  157     if "\2#1;\2#10;\2#11;\2#100;\2#101;\2#110;\2#111;\2#1000;\
  158         \\2#1001;\2#1010;\2#1011;\2#1100;\2#1101;\2#1110;\
  159         \\2#1111;\2#10000;\2#10001;\2#10010;\2#10011;\2#10100;\
  160         \\2#10101;\2#10110;\2#10111;\2#11000;\2#11001;\2#11010;" <>
  161         "\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z" then
  162       writeln("Binary numeric escape sequences do not work correct.");
  163       okay := FALSE;
  164     end if;
  165     if "\8#1;\8#2;\8#3;\8#4;\8#5;\8#6;\8#7;\8#10;\8#11;\8#12;\
  166         \\8#13;\8#14;\8#15;\8#16;\8#17;\8#20;\8#21;\8#22;\8#23;\
  167         \\8#24;\8#25;\8#26;\8#27;\8#30;\8#31;\8#32;" <>
  168         "\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z" then
  169       writeln("Octal numeric escape sequences do not work correct.");
  170       okay := FALSE;
  171     end if;
  172     if "\16#1;\16#2;\16#3;\16#4;\16#5;\16#6;\16#7;\16#8;\16#9;\16#a;\
  173         \\16#b;\16#c;\16#d;\16#e;\16#f;\16#10;\16#11;\16#12;\16#13;\
  174         \\16#14;\16#15;\16#16;\16#17;\16#18;\16#19;\16#1a;" <>
  175         "\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z" then
  176       writeln("Hexadecimal numeric escape sequences do not work correct.");
  177       okay := FALSE;
  178     end if;
  179     if  ord("\16#7;"[1])       <>        7 or
  180         ord("\16#8;"[1])       <>        8 or
  181         ord("\16#f;"[1])       <>       15 or
  182         ord("\16#10;"[1])      <>       16 or
  183         ord("\16#1f;"[1])      <>       31 or
  184         ord("\16#20;"[1])      <>       32 or
  185         ord("\16#3f;"[1])      <>       63 or
  186         ord("\16#40;"[1])      <>       64 or
  187         ord("\16#7f;"[1])      <>      127 or
  188         ord("\16#80;"[1])      <>      128 or
  189         ord("\16#ff;"[1])      <>      255 or
  190         ord("\16#100;"[1])     <>      256 or
  191         ord("\16#1ff;"[1])     <>      511 or
  192         ord("\16#200;"[1])     <>      512 or
  193         ord("\16#3ff;"[1])     <>     1023 or
  194         ord("\16#400;"[1])     <>     1024 or
  195         ord("\16#7ff;"[1])     <>     2047 or
  196         ord("\16#800;"[1])     <>     2048 or
  197         ord("\16#fff;"[1])     <>     4095 or
  198         ord("\16#1000;"[1])    <>     4096 or
  199         ord("\16#1fff;"[1])    <>     8191 or
  200         ord("\16#2000;"[1])    <>     8192 or
  201         ord("\16#3fff;"[1])    <>    16383 or
  202         ord("\16#4000;"[1])    <>    16384 or
  203         ord("\16#7fff;"[1])    <>    32767 or
  204         ord("\16#8000;"[1])    <>    32768 or
  205         ord("\16#ffff;"[1])    <>    65535 or
  206         ord("\16#10000;"[1])   <>    65536 or
  207         ord("\16#1ffff;"[1])   <>   131071 or
  208         ord("\16#20000;"[1])   <>   131072 or
  209         ord("\16#3ffff;"[1])   <>   262143 or
  210         ord("\16#40000;"[1])   <>   262144 or
  211         ord("\16#7ffff;"[1])   <>   524287 or
  212         ord("\16#80000;"[1])   <>   524288 or
  213         ord("\16#fffff;"[1])   <>  1048575 or
  214         ord("\16#100000;"[1])  <>  1048576 or
  215         ord("\16#1fffff;"[1])  <>  2097151 or
  216         ord("\16#200000;"[1])  <>  2097152 or
  217         ord("\16#3fffff;"[1])  <>  4194303 or
  218         ord("\16#400000;"[1])  <>  4194304 or
  219         ord("\16#7fffff;"[1])  <>  8388607 or
  220         ord("\16#800000;"[1])  <>  8388608 or
  221         ord("\16#ffffff;"[1])  <> 16777215 or
  222         ord("\16#1000000;"[1]) <> 16777216 or
  223         ord("\16#1ffffff;"[1]) <> 33554431 or
  224         ord("\16#2000000;"[1]) <> 33554432 then
  225       writeln("String escape sequences do not work correct.");
  226       okay := FALSE;
  227     end if;
  228 
  229     if literal("\0;\1;\2;\3;\4;\5;\6;\a\b\t\n\v\f\r\14;\15;\16;\
  230                \\17;\18;\19;\20;\21;\22;\23;\24;\25;\26;\e\28;\29;\30;\31;\
  231                \ !\"#$%&'()*+,-./0123456789:;<=>?\
  232                \@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\
  233                \`abcdefghijklmnopqrstuvwxyz{|}~\127;\
  234                \\128;\129;\130;\131;\132;\133;\134;\135;\136;\137;\138;\139;\140;\141;\142;\143;\
  235                \\144;\145;\146;\147;\148;\149;\150;\151;\152;\153;\154;\155;\156;\157;\158;\159;\
  236                \\160;¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿\
  237                \ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß\
  238                \àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\
  239                \\256;\257;\258;\259;\260;\300;\350;\400;\450;\500;\550;\600;\650;\700;\800;\900;\
  240                \\1000;\1100;\1200;\1300;\1400;\1500;\1600;\1700;\1800;\1900;\2000;\
  241                \\2200;\2400;\2600;\2800;\3000;\3200;\3400;\3600;\3800;\4000;\4333;\
  242                \\4666;\5000;\5500;\6000;\6500;\7000;\7500;\8000;\8500;\9000;\10000;\
  243                \\11000;\12000;\13000;\14000;\15000;\16000;\17000;\18000;\19000;\20000;\
  244                \\22000;\24000;\26000;\28000;\30000;\32000;\34000;\36000;\38000;\40000;\
  245                \\43333;\46666;\50000;\55000;\60000;\65000;\70000;\80000;\90000;\100000;") <>
  246         "\"\\0;\\1;\\2;\\3;\\4;\\5;\\6;\\a\\b\\t\\n\\v\\f\\r\\14;\\15;\\16;\
  247         \\\17;\\18;\\19;\\20;\\21;\\22;\\23;\\24;\\25;\\26;\\e\\28;\\29;\\30;\\31;\
  248         \ !\\\"#$%&'()*+,-./0123456789:;<=>?\
  249         \@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_\
  250         \`abcdefghijklmnopqrstuvwxyz{|}~\\127;\
  251         \\\128;\\129;\\130;\\131;\\132;\\133;\\134;\\135;\\136;\\137;\\138;\\139;\\140;\\141;\\142;\\143;\
  252         \\\144;\\145;\\146;\\147;\\148;\\149;\\150;\\151;\\152;\\153;\\154;\\155;\\156;\\157;\\158;\\159;\
  253         \\\160;¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿\
  254         \ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß\
  255         \àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\
  256         \\\256;\\257;\\258;\\259;\\260;\\300;\\350;\\400;\\450;\\500;\\550;\\600;\\650;\\700;\\800;\\900;\
  257         \\\1000;\\1100;\\1200;\\1300;\\1400;\\1500;\\1600;\\1700;\\1800;\\1900;\\2000;\
  258         \\\2200;\\2400;\\2600;\\2800;\\3000;\\3200;\\3400;\\3600;\\3800;\\4000;\\4333;\
  259         \\\4666;\\5000;\\5500;\\6000;\\6500;\\7000;\\7500;\\8000;\\8500;\\9000;\\10000;\
  260         \\\11000;\\12000;\\13000;\\14000;\\15000;\\16000;\\17000;\\18000;\\19000;\\20000;\
  261         \\\22000;\\24000;\\26000;\\28000;\\30000;\\32000;\\34000;\\36000;\\38000;\\40000;\
  262         \\\43333;\\46666;\\50000;\\55000;\\60000;\\65000;\\70000;\\80000;\\90000;\\100000;\"" then
  263       writeln("The literal function does not work correct.");
  264       okay := FALSE;
  265     end if;
  266 
  267     if okay then
  268       writeln("String literals work correct.");
  269     else
  270       writeln(" ***** String literals do not work correct.");
  271       writeln;
  272     end if;
  273   end func;
  274 
  275 
  276 const proc: check_string_comparisons is func
  277   local
  278     const array string: arr1 is [] ("a", "ab", "abc", "abcd", "b", "bb", "bbb", "bbbb");
  279     var array string: arr2 is 0 times "";
  280     var string: name is "";
  281     var integer: index is 0;
  282     var boolean: ok is TRUE;
  283     var boolean: okay is TRUE;
  284   begin
  285     if not ("" = "") or
  286         not ("a" = "a") or
  287         not ("b" = "b") or
  288         not ("aa" = "aa") or
  289         not ("ab" = "ab") or
  290         not ("ba" = "ba") or
  291         not ("aaa" = "aaa") or
  292         not ("abc" = "abc") or
  293         not ("cbc" = "cbc") or
  294         not ("123456789" = "123456789") or
  295         not ("1234567890" = "1234567890") or
  296         not ("abcdefghijklmnopqrstuvwxyz" = "abcdefghijklmnopqrstuvwxyz") or
  297         "" = "a" or
  298         "" = "123456789" or
  299         "a" = "" or
  300         "a" = "b" or
  301         "a" = "aa" or
  302         "a" = "ab" or
  303         "a" = "123456789" or
  304         "b" = "a" or
  305         "aa" = "a" or
  306         "aa" = "ab" or
  307         "aa" = "ba" or
  308         "aa" = "aaa" or
  309         "ab" = "a" or
  310         "ab" = "aa" or
  311         "ab" = "ba" or
  312         "ba" = "aa" or
  313         "ba" = "ab" or
  314         "aaa" = "aa" or
  315         "abc" = "cbc" or
  316         "cbc" = "abc" or
  317         "123456789" = "" or
  318         "123456789" = "a" or
  319         "123456789" = "1234567890" or
  320         "123456789" = "abcdefghijklmnopqrstuvwxyz" or
  321         "1234567890" = "123456789" or
  322         "abcdefghijklmnopqrstuvwxyz" = "123456789" then
  323       writeln(" ***** STRING = STRING does not work correct.");
  324       okay := FALSE;
  325     end if;
  326 
  327     if not (striExpr("") = "") or
  328         not (striExpr("a") = "a") or
  329         not (striExpr("b") = "b") or
  330         not (striExpr("aa") = "aa") or
  331         not (striExpr("ab") = "ab") or
  332         not (striExpr("ba") = "ba") or
  333         not (striExpr("aaa") = "aaa") or
  334         not (striExpr("abc") = "abc") or
  335         not (striExpr("cbc") = "cbc") or
  336         not (striExpr("123456789") = "123456789") or
  337         not (striExpr("1234567890") = "1234567890") or
  338         not (striExpr("abcdefghijklmnopqrstuvwxyz") = "abcdefghijklmnopqrstuvwxyz") or
  339         striExpr("") = "a" or
  340         striExpr("") = "123456789" or
  341         striExpr("a") = "" or
  342         striExpr("a") = "b" or
  343         striExpr("a") = "aa" or
  344         striExpr("a") = "ab" or
  345         striExpr("a") = "123456789" or
  346         striExpr("b") = "a" or
  347         striExpr("aa") = "a" or
  348         striExpr("aa") = "ab" or
  349         striExpr("aa") = "ba" or
  350         striExpr("aa") = "aaa" or
  351         striExpr("ab") = "a" or
  352         striExpr("ab") = "aa" or
  353         striExpr("ab") = "ba" or
  354         striExpr("ba") = "aa" or
  355         striExpr("ba") = "ab" or
  356         striExpr("aaa") = "aa" or
  357         striExpr("abc") = "cbc" or
  358         striExpr("cbc") = "abc" or
  359         striExpr("123456789") = "" or
  360         striExpr("123456789") = "a" or
  361         striExpr("123456789") = "1234567890" or
  362         striExpr("123456789") = "abcdefghijklmnopqrstuvwxyz" or
  363         striExpr("1234567890") = "123456789" or
  364         striExpr("abcdefghijklmnopqrstuvwxyz") = "123456789" then
  365       writeln(" ***** STRING = STRING does not work correct.");
  366       okay := FALSE;
  367     end if;
  368 
  369     if not ("" = striExpr("")) or
  370         not ("a" = striExpr("a")) or
  371         not ("b" = striExpr("b")) or
  372         not ("aa" = striExpr("aa")) or
  373         not ("ab" = striExpr("ab")) or
  374         not ("ba" = striExpr("ba")) or
  375         not ("aaa" = striExpr("aaa")) or
  376         not ("abc" = striExpr("abc")) or
  377         not ("cbc" = striExpr("cbc")) or
  378         not ("123456789" = striExpr("123456789")) or
  379         not ("1234567890" = striExpr("1234567890")) or
  380         not ("abcdefghijklmnopqrstuvwxyz" = striExpr("abcdefghijklmnopqrstuvwxyz")) or
  381         "" = striExpr("a") or
  382         "" = striExpr("123456789") or
  383         "a" = striExpr("") or
  384         "a" = striExpr("b") or
  385         "a" = striExpr("aa") or
  386         "a" = striExpr("ab") or
  387         "a" = striExpr("123456789") or
  388         "b" = striExpr("a") or
  389         "aa" = striExpr("a") or
  390         "aa" = striExpr("ab") or
  391         "aa" = striExpr("ba") or
  392         "aa" = striExpr("aaa") or
  393         "ab" = striExpr("a") or
  394         "ab" = striExpr("aa") or
  395         "ab" = striExpr("ba") or
  396         "ba" = striExpr("aa") or
  397         "ba" = striExpr("ab") or
  398         "aaa" = striExpr("aa") or
  399         "abc" = striExpr("cbc") or
  400         "cbc" = striExpr("abc") or
  401         "123456789" = striExpr("") or
  402         "123456789" = striExpr("a") or
  403         "123456789" = striExpr("1234567890") or
  404         "123456789" = striExpr("abcdefghijklmnopqrstuvwxyz") or
  405         "1234567890" = striExpr("123456789") or
  406         "abcdefghijklmnopqrstuvwxyz" = striExpr("123456789") then
  407       writeln(" ***** STRING = STRING does not work correct.");
  408       okay := FALSE;
  409     end if;
  410 
  411     if not (striExpr("") = striExpr("")) or
  412         not (striExpr("a") = striExpr("a")) or
  413         not (striExpr("b") = striExpr("b")) or
  414         not (striExpr("aa") = striExpr("aa")) or
  415         not (striExpr("ab") = striExpr("ab")) or
  416         not (striExpr("ba") = striExpr("ba")) or
  417         not (striExpr("aaa") = striExpr("aaa")) or
  418         not (striExpr("abc") = striExpr("abc")) or
  419         not (striExpr("cbc") = striExpr("cbc")) or
  420         not (striExpr("123456789") = striExpr("123456789")) or
  421         not (striExpr("1234567890") = striExpr("1234567890")) or
  422         not (striExpr("abcdefghijklmnopqrstuvwxyz") = striExpr("abcdefghijklmnopqrstuvwxyz")) or
  423         striExpr("") = striExpr("a") or
  424         striExpr("") = striExpr("123456789") or
  425         striExpr("a") = striExpr("") or
  426         striExpr("a") = striExpr("b") or
  427         striExpr("a") = striExpr("aa") or
  428         striExpr("a") = striExpr("ab") or
  429         striExpr("a") = striExpr("123456789") or
  430         striExpr("b") = striExpr("a") or
  431         striExpr("aa") = striExpr("a") or
  432         striExpr("aa") = striExpr("ab") or
  433         striExpr("aa") = striExpr("ba") or
  434         striExpr("aa") = striExpr("aaa") or
  435         striExpr("ab") = striExpr("a") or
  436         striExpr("ab") = striExpr("aa") or
  437         striExpr("ab") = striExpr("ba") or
  438         striExpr("ba") = striExpr("aa") or
  439         striExpr("ba") = striExpr("ab") or
  440         striExpr("aaa") = striExpr("aa") or
  441         striExpr("abc") = striExpr("cbc") or
  442         striExpr("cbc") = striExpr("abc") or
  443         striExpr("123456789") = striExpr("") or
  444         striExpr("123456789") = striExpr("a") or
  445         striExpr("123456789") = striExpr("1234567890") or
  446         striExpr("123456789") = striExpr("abcdefghijklmnopqrstuvwxyz") or
  447         striExpr("1234567890") = striExpr("123456789") or
  448         striExpr("abcdefghijklmnopqrstuvwxyz") = striExpr("123456789") then
  449       writeln(" ***** STRING = STRING does not work correct.");
  450       okay := FALSE;
  451     end if;
  452 
  453     if "" <> "" or
  454         "a" <> "a" or
  455         "b" <> "b" or
  456         "aa" <> "aa" or
  457         "ab" <> "ab" or
  458         "ba" <> "ba" or
  459         "aaa" <> "aaa" or
  460         "abc" <> "abc" or
  461         "cbc" <> "cbc" or
  462         "123456789" <> "123456789" or
  463         "1234567890" <> "1234567890" or
  464         "abcdefghijklmnopqrstuvwxyz" <> "abcdefghijklmnopqrstuvwxyz" or
  465         not ("" <> "a") or
  466         not ("" <> "123456789") or
  467         not ("a" <> "") or
  468         not ("a" <> "b") or
  469         not ("a" <> "aa") or
  470         not ("a" <> "ab") or
  471         not ("a" <> "123456789") or
  472         not ("b" <> "a") or
  473         not ("aa" <> "a") or
  474         not ("aa" <> "ab") or
  475         not ("aa" <> "ba") or
  476         not ("aa" <> "aaa") or
  477         not ("ab" <> "a") or
  478         not ("ab" <> "aa") or
  479         not ("ab" <> "ba") or
  480         not ("ba" <> "aa") or
  481         not ("ba" <> "ab") or
  482         not ("aaa" <> "aa") or
  483         not ("abc" <> "cbc") or
  484         not ("cbc" <> "abc") or
  485         not ("123456789" <> "") or
  486         not ("123456789" <> "a") or
  487         not ("123456789" <> "1234567890") or
  488         not ("123456789" <> "abcdefghijklmnopqrstuvwxyz") or
  489         not ("1234567890" <> "123456789") or
  490         not ("abcdefghijklmnopqrstuvwxyz" <> "123456789") then
  491       writeln(" ***** STRING <> STRING does not work correct.");
  492       okay := FALSE;
  493     end if;
  494 
  495     if striExpr("") <> "" or
  496         striExpr("a") <> "a" or
  497         striExpr("b") <> "b" or
  498         striExpr("aa") <> "aa" or
  499         striExpr("ab") <> "ab" or
  500         striExpr("ba") <> "ba" or
  501         striExpr("aaa") <> "aaa" or
  502         striExpr("abc") <> "abc" or
  503         striExpr("cbc") <> "cbc" or
  504         striExpr("123456789") <> "123456789" or
  505         striExpr("1234567890") <> "1234567890" or
  506         striExpr("abcdefghijklmnopqrstuvwxyz") <> "abcdefghijklmnopqrstuvwxyz" or
  507         not (striExpr("") <> "a") or
  508         not (striExpr("") <> "123456789") or
  509         not (striExpr("a") <> "") or
  510         not (striExpr("a") <> "b") or
  511         not (striExpr("a") <> "aa") or
  512         not (striExpr("a") <> "ab") or
  513         not (striExpr("a") <> "123456789") or
  514         not (striExpr("b") <> "a") or
  515         not (striExpr("aa") <> "a") or
  516         not (striExpr("aa") <> "ab") or
  517         not (striExpr("aa") <> "ba") or
  518         not (striExpr("aa") <> "aaa") or
  519         not (striExpr("ab") <> "a") or
  520         not (striExpr("ab") <> "aa") or
  521         not (striExpr("ab") <> "ba") or
  522         not (striExpr("ba") <> "aa") or
  523         not (striExpr("ba") <> "ab") or
  524         not (striExpr("aaa") <> "aa") or
  525         not (striExpr("abc") <> "cbc") or
  526         not (striExpr("cbc") <> "abc") or
  527         not (striExpr("123456789") <> "") or
  528         not (striExpr("123456789") <> "a") or
  529         not (striExpr("123456789") <> "1234567890") or
  530         not (striExpr("123456789") <> "abcdefghijklmnopqrstuvwxyz") or
  531         not (striExpr("1234567890") <> "123456789") or
  532         not (striExpr("abcdefghijklmnopqrstuvwxyz") <> "123456789") then
  533       writeln(" ***** STRING <> STRING does not work correct.");
  534       okay := FALSE;
  535     end if;
  536 
  537     if "" <> striExpr("") or
  538         "a" <> striExpr("a") or
  539         "b" <> striExpr("b") or
  540         "aa" <> striExpr("aa") or
  541         "ab" <> striExpr("ab") or
  542         "ba" <> striExpr("ba") or
  543         "aaa" <> striExpr("aaa") or
  544         "abc" <> striExpr("abc") or
  545         "cbc" <> striExpr("cbc") or
  546         "123456789" <> striExpr("123456789") or
  547         "1234567890" <> striExpr("1234567890") or
  548         "abcdefghijklmnopqrstuvwxyz" <> striExpr("abcdefghijklmnopqrstuvwxyz") or
  549         not ("" <> striExpr("a")) or
  550         not ("" <> striExpr("123456789")) or
  551         not ("a" <> striExpr("")) or
  552         not ("a" <> striExpr("b")) or
  553         not ("a" <> striExpr("aa")) or
  554         not ("a" <> striExpr("ab")) or
  555         not ("a" <> striExpr("123456789")) or
  556         not ("b" <> striExpr("a")) or
  557         not ("aa" <> striExpr("a")) or
  558         not ("aa" <> striExpr("ab")) or
  559         not ("aa" <> striExpr("ba")) or
  560         not ("aa" <> striExpr("aaa")) or
  561         not ("ab" <> striExpr("a")) or
  562         not ("ab" <> striExpr("aa")) or
  563         not ("ab" <> striExpr("ba")) or
  564         not ("ba" <> striExpr("aa")) or
  565         not ("ba" <> striExpr("ab")) or
  566         not ("aaa" <> striExpr("aa")) or
  567         not ("abc" <> striExpr("cbc")) or
  568         not ("cbc" <> striExpr("abc")) or
  569         not ("123456789" <> striExpr("")) or
  570         not ("123456789" <> striExpr("a")) or
  571         not ("123456789" <> striExpr("1234567890")) or
  572         not ("123456789" <> striExpr("abcdefghijklmnopqrstuvwxyz")) or
  573         not ("1234567890" <> striExpr("123456789")) or
  574         not ("abcdefghijklmnopqrstuvwxyz" <> striExpr("123456789")) then
  575       writeln(" ***** STRING <> STRING does not work correct.");
  576       okay := FALSE;
  577     end if;
  578 
  579     if striExpr("") <> striExpr("") or
  580         striExpr("a") <> striExpr("a") or
  581         striExpr("b") <> striExpr("b") or
  582         striExpr("aa") <> striExpr("aa") or
  583         striExpr("ab") <> striExpr("ab") or
  584         striExpr("ba") <> striExpr("ba") or
  585         striExpr("aaa") <> striExpr("aaa") or
  586         striExpr("abc") <> striExpr("abc") or
  587         striExpr("cbc") <> striExpr("cbc") or
  588         striExpr("123456789") <> striExpr("123456789") or
  589         striExpr("1234567890") <> striExpr("1234567890") or
  590         striExpr("abcdefghijklmnopqrstuvwxyz") <> striExpr("abcdefghijklmnopqrstuvwxyz") or
  591         not (striExpr("") <> striExpr("a")) or
  592         not (striExpr("") <> striExpr("123456789")) or
  593         not (striExpr("a") <> striExpr("")) or
  594         not (striExpr("a") <> striExpr("b")) or
  595         not (striExpr("a") <> striExpr("aa")) or
  596         not (striExpr("a") <> striExpr("ab")) or
  597         not (striExpr("a") <> striExpr("123456789")) or
  598         not (striExpr("b") <> striExpr("a")) or
  599         not (striExpr("aa") <> striExpr("a")) or
  600         not (striExpr("aa") <> striExpr("ab")) or
  601         not (striExpr("aa") <> striExpr("ba")) or
  602         not (striExpr("aa") <> striExpr("aaa")) or
  603         not (striExpr("ab") <> striExpr("a")) or
  604         not (striExpr("ab") <> striExpr("aa")) or
  605         not (striExpr("ab") <> striExpr("ba")) or
  606         not (striExpr("ba") <> striExpr("aa")) or
  607         not (striExpr("ba") <> striExpr("ab")) or
  608         not (striExpr("aaa") <> striExpr("aa")) or
  609         not (striExpr("abc") <> striExpr("cbc")) or
  610         not (striExpr("cbc") <> striExpr("abc")) or
  611         not (striExpr("123456789") <> striExpr("")) or
  612         not (striExpr("123456789") <> striExpr("a")) or
  613         not (striExpr("123456789") <> striExpr("1234567890")) or
  614         not (striExpr("123456789") <> striExpr("abcdefghijklmnopqrstuvwxyz")) or
  615         not (striExpr("1234567890") <> striExpr("123456789")) or
  616         not (striExpr("abcdefghijklmnopqrstuvwxyz") <> striExpr("123456789")) then
  617       writeln(" ***** STRING <> STRING does not work correct.");
  618       okay := FALSE;
  619     end if;
  620 
  621     if  not (
  622         not (""      > ""      ) and
  623         not (""      > "0"     ) and
  624         not (""      > "00"    ) and
  625         not (""      > "01"    ) and
  626         not (""      > "02"    ) and
  627         not (""      > "1"     ) and
  628         not (""      > "10"    ) and
  629         not (""      > "11"    ) and
  630         not (""      > "12"    ) and
  631         not (""      > "2"     ) and
  632         not (""      > "20"    ) and
  633         not (""      > "21"    ) and
  634         not (""      > "22"    ) and
  635         not (""      > "22222" ) and
  636              "1"     > ""        and
  637              "1"     > "0"       and
  638              "1"     > "00"      and
  639              "1"     > "01"      and
  640              "1"     > "02"      and
  641              "1"     > "0234"    and
  642         not ("1"     > "1"     ) and
  643         not ("1"     > "10"    ) and
  644         not ("1"     > "11"    ) and
  645         not ("1"     > "110"   ) and
  646         not ("1"     > "111"   ) and
  647         not ("1"     > "112"   ) and
  648         not ("1"     > "12"    ) and
  649         not ("1"     > "2"     ) and
  650         not ("1"     > "20"    ) and
  651         not ("1"     > "21"    ) and
  652         not ("1"     > "22"    ) and
  653              "123"   > ""        and
  654              "123"   > "0"       and
  655              "123"   > "1"       and
  656              "123"   > "11"      and
  657              "123"   > "12"      and
  658              "123"   > "122"     and
  659              "123"   > "1222"    and
  660              "123"   > "1223"    and
  661              "123"   > "1224"    and
  662         not ("123"   > "123"   ) and
  663         not ("123"   > "124"   ) and
  664         not ("123"   > "13"    ) and
  665         not ("123"   > "2"     ) and
  666         not ("123"   > "21"    ) and
  667         not ("123"   > "22"    ) and
  668         not ("123"   > "222"   ) and
  669         not ("123"   > "2222"  ) and
  670         not (""      > ""      ) and
  671              "0"     > ""        and
  672              "00"    > ""        and
  673              "01"    > ""        and
  674              "02"    > ""        and
  675              "1"     > ""        and
  676              "10"    > ""        and
  677              "11"    > ""        and
  678              "12"    > ""        and
  679              "2"     > ""        and
  680              "20"    > ""        and
  681              "21"    > ""        and
  682              "22"    > ""        and
  683              "22222" > ""        and
  684         not (""      > "1"     ) and
  685         not ("0"     > "1"     ) and
  686         not ("00"    > "1"     ) and
  687         not ("01"    > "1"     ) and
  688         not ("02"    > "1"     ) and
  689         not ("0234"  > "1"     ) and
  690         not ("1"     > "1"     ) and
  691              "10"    > "1"       and
  692              "11"    > "1"       and
  693              "110"   > "1"       and
  694              "111"   > "1"       and
  695              "112"   > "1"       and
  696              "12"    > "1"       and
  697              "2"     > "1"       and
  698              "20"    > "1"       and
  699              "21"    > "1"       and
  700              "22"    > "1"       and
  701         not (""      > "123"   ) and
  702         not ("0"     > "123"   ) and
  703         not ("1"     > "123"   ) and
  704         not ("11"    > "123"   ) and
  705         not ("12"    > "123"   ) and
  706         not ("122"   > "123"   ) and
  707         not ("1222"  > "123"   ) and
  708         not ("1223"  > "123"   ) and
  709         not ("1224"  > "123"   ) and
  710         not ("123"   > "123"   ) and
  711              "124"   > "123"     and
  712              "13"    > "123"     and
  713              "2"     > "123"     and
  714              "21"    > "123"     and
  715              "22"    > "123"     and
  716              "222"   > "123"     and
  717              "2222"  > "123"
  718              ) then
  719       writeln(" ***** STRING > STRING does not work correct.");
  720       okay := FALSE;
  721     end if;
  722 
  723     if  not (
  724         not (striExpr("")      > ""      ) and
  725         not (striExpr("")      > "0"     ) and
  726         not (striExpr("")      > "00"    ) and
  727         not (striExpr("")      > "01"    ) and
  728         not (striExpr("")      > "02"    ) and
  729         not (striExpr("")      > "1"     ) and
  730         not (striExpr("")      > "10"    ) and
  731         not (striExpr("")      > "11"    ) and
  732         not (striExpr("")      > "12"    ) and
  733         not (striExpr("")      > "2"     ) and
  734         not (striExpr("")      > "20"    ) and
  735         not (striExpr("")      > "21"    ) and
  736         not (striExpr("")      > "22"    ) and
  737         not (striExpr("")      > "22222" ) and
  738              striExpr("1")     > ""        and
  739              striExpr("1")     > "0"       and
  740              striExpr("1")     > "00"      and
  741              striExpr("1")     > "01"      and
  742              striExpr("1")     > "02"      and
  743              striExpr("1")     > "0234"    and
  744         not (striExpr("1")     > "1"     ) and
  745         not (striExpr("1")     > "10"    ) and
  746         not (striExpr("1")     > "11"    ) and
  747         not (striExpr("1")     > "110"   ) and
  748         not (striExpr("1")     > "111"   ) and
  749         not (striExpr("1")     > "112"   ) and
  750         not (striExpr("1")     > "12"    ) and
  751         not (striExpr("1")     > "2"     ) and
  752         not (striExpr("1")     > "20"    ) and
  753         not (striExpr("1")     > "21"    ) and
  754         not (striExpr("1")     > "22"    ) and
  755              striExpr("123")   > ""        and
  756              striExpr("123")   > "0"       and
  757              striExpr("123")   > "1"       and
  758              striExpr("123")   > "11"      and
  759              striExpr("123")   > "12"      and
  760              striExpr("123")   > "122"     and
  761              striExpr("123")   > "1222"    and
  762              striExpr("123")   > "1223"    and
  763              striExpr("123")   > "1224"    and
  764         not (striExpr("123")   > "123"   ) and
  765         not (striExpr("123")   > "124"   ) and
  766         not (striExpr("123")   > "13"    ) and
  767         not (striExpr("123")   > "2"     ) and
  768         not (striExpr("123")   > "21"    ) and
  769         not (striExpr("123")   > "22"    ) and
  770         not (striExpr("123")   > "222"   ) and
  771         not (striExpr("123")   > "2222"  ) and
  772         not (striExpr("")      > ""      ) and
  773              striExpr("0")     > ""        and
  774              striExpr("00")    > ""        and
  775              striExpr("01")    > ""        and
  776              striExpr("02")    > ""        and
  777              striExpr("1")     > ""        and
  778              striExpr("10")    > ""        and
  779              striExpr("11")    > ""        and
  780              striExpr("12")    > ""        and
  781              striExpr("2")     > ""        and
  782              striExpr("20")    > ""        and
  783              striExpr("21")    > ""        and
  784              striExpr("22")    > ""        and
  785              striExpr("22222") > ""        and
  786         not (striExpr("")      > "1"     ) and
  787         not (striExpr("0")     > "1"     ) and
  788         not (striExpr("00")    > "1"     ) and
  789         not (striExpr("01")    > "1"     ) and
  790         not (striExpr("02")    > "1"     ) and
  791         not (striExpr("0234")  > "1"     ) and
  792         not (striExpr("1")     > "1"     ) and
  793              striExpr("10")    > "1"       and
  794              striExpr("11")    > "1"       and
  795              striExpr("110")   > "1"       and
  796              striExpr("111")   > "1"       and
  797              striExpr("112")   > "1"       and
  798              striExpr("12")    > "1"       and
  799              striExpr("2")     > "1"       and
  800              striExpr("20")    > "1"       and
  801              striExpr("21")    > "1"       and
  802              striExpr("22")    > "1"       and
  803         not (striExpr("")      > "123"   ) and
  804         not (striExpr("0")     > "123"   ) and
  805         not (striExpr("1")     > "123"   ) and
  806         not (striExpr("11")    > "123"   ) and
  807         not (striExpr("12")    > "123"   ) and
  808         not (striExpr("122")   > "123"   ) and
  809         not (striExpr("1222")  > "123"   ) and
  810         not (striExpr("1223")  > "123"   ) and
  811         not (striExpr("1224")  > "123"   ) and
  812         not (striExpr("123")   > "123"   ) and
  813              striExpr("124")   > "123"     and
  814              striExpr("13")    > "123"     and
  815              striExpr("2")     > "123"     and
  816              striExpr("21")    > "123"     and
  817              striExpr("22")    > "123"     and
  818              striExpr("222")   > "123"     and
  819              striExpr("2222")  > "123"
  820              ) then
  821       writeln(" ***** STRING > STRING does not work correct.");
  822       okay := FALSE;
  823     end if;
  824 
  825     if  not (
  826         not (""      > striExpr("")      ) and
  827         not (""      > striExpr("0")     ) and
  828         not (""      > striExpr("00")    ) and
  829         not (""      > striExpr("01")    ) and
  830         not (""      > striExpr("02")    ) and
  831         not (""      > striExpr("1")     ) and
  832         not (""      > striExpr("10")    ) and
  833         not (""      > striExpr("11")    ) and
  834         not (""      > striExpr("12")    ) and
  835         not (""      > striExpr("2")     ) and
  836         not (""      > striExpr("20")    ) and
  837         not (""      > striExpr("21")    ) and
  838         not (""      > striExpr("22")    ) and
  839         not (""      > striExpr("22222") ) and
  840              "1"     > striExpr("")        and
  841              "1"     > striExpr("0")       and
  842              "1"     > striExpr("00")      and
  843              "1"     > striExpr("01")      and
  844              "1"     > striExpr("02")      and
  845              "1"     > striExpr("0234")    and
  846         not ("1"     > striExpr("1")     ) and
  847         not ("1"     > striExpr("10")    ) and
  848         not ("1"     > striExpr("11")    ) and
  849         not ("1"     > striExpr("110")   ) and
  850         not ("1"     > striExpr("111")   ) and
  851         not ("1"     > striExpr("112")   ) and
  852         not ("1"     > striExpr("12")    ) and
  853         not ("1"     > striExpr("2")     ) and
  854         not ("1"     > striExpr("20")    ) and
  855         not ("1"     > striExpr("21")    ) and
  856         not ("1"     > striExpr("22")    ) and
  857              "123"   > striExpr("")        and
  858              "123"   > striExpr("0")       and
  859              "123"   > striExpr("1")       and
  860              "123"   > striExpr("11")      and
  861              "123"   > striExpr("12")      and
  862              "123"   > striExpr("122")     and
  863              "123"   > striExpr("1222")    and
  864              "123"   > striExpr("1223")    and
  865              "123"   > striExpr("1224")    and
  866         not ("123"   > striExpr("123")   ) and
  867         not ("123"   > striExpr("124")   ) and
  868         not ("123"   > striExpr("13")    ) and
  869         not ("123"   > striExpr("2")     ) and
  870         not ("123"   > striExpr("21")    ) and
  871         not ("123"   > striExpr("22")    ) and
  872         not ("123"   > striExpr("222")   ) and
  873         not ("123"   > striExpr("2222")  ) and
  874         not (""      > striExpr("")      ) and
  875              "0"     > striExpr("")        and
  876              "00"    > striExpr("")        and
  877              "01"    > striExpr("")        and
  878              "02"    > striExpr("")        and
  879              "1"     > striExpr("")        and
  880              "10"    > striExpr("")        and
  881              "11"    > striExpr("")        and
  882              "12"    > striExpr("")        and
  883              "2"     > striExpr("")        and
  884              "20"    > striExpr("")        and
  885              "21"    > striExpr("")        and
  886              "22"    > striExpr("")        and
  887              "22222" > striExpr("")        and
  888         not (""      > striExpr("1")     ) and
  889         not ("0"     > striExpr("1")     ) and
  890         not ("00"    > striExpr("1")     ) and
  891         not ("01"    > striExpr("1")     ) and
  892         not ("02"    > striExpr("1")     ) and
  893         not ("0234"  > striExpr("1")     ) and
  894         not ("1"     > striExpr("1")     ) and
  895              "10"    > striExpr("1")       and
  896              "11"    > striExpr("1")       and
  897              "110"   > striExpr("1")       and
  898              "111"   > striExpr("1")       and
  899              "112"   > striExpr("1")       and
  900              "12"    > striExpr("1")       and
  901              "2"     > striExpr("1")       and
  902              "20"    > striExpr("1")       and
  903              "21"    > striExpr("1")       and
  904              "22"    > striExpr("1")       and
  905         not (""      > striExpr("123")   ) and
  906         not ("0"     > striExpr("123")   ) and
  907         not ("1"     > striExpr("123")   ) and
  908         not ("11"    > striExpr("123")   ) and
  909         not ("12"    > striExpr("123")   ) and
  910         not ("122"   > striExpr("123")   ) and
  911         not ("1222"  > striExpr("123")   ) and
  912         not ("1223"  > striExpr("123")   ) and
  913         not ("1224"  > striExpr("123")   ) and
  914         not ("123"   > striExpr("123")   ) and
  915              "124"   > striExpr("123")     and
  916              "13"    > striExpr("123")     and
  917              "2"     > striExpr("123")     and
  918              "21"    > striExpr("123")     and
  919              "22"    > striExpr("123")     and
  920              "222"   > striExpr("123")    and
  921              "2222"  > striExpr("123")
  922              ) then
  923       writeln(" ***** STRING > STRING does not work correct.");
  924       okay := FALSE;
  925     end if;
  926 
  927     if  not (
  928         not (striExpr("")      > striExpr("")      ) and
  929         not (striExpr("")      > striExpr("0")     ) and
  930         not (striExpr("")      > striExpr("00")    ) and
  931         not (striExpr("")      > striExpr("01")    ) and
  932         not (striExpr("")      > striExpr("02")    ) and
  933         not (striExpr("")      > striExpr("1")     ) and
  934         not (striExpr("")      > striExpr("10")    ) and
  935         not (striExpr("")      > striExpr("11")    ) and
  936         not (striExpr("")      > striExpr("12")    ) and
  937         not (striExpr("")      > striExpr("2")     ) and
  938         not (striExpr("")      > striExpr("20")    ) and
  939         not (striExpr("")      > striExpr("21")    ) and
  940         not (striExpr("")      > striExpr("22")    ) and
  941         not (striExpr("")      > striExpr("22222") ) and
  942              striExpr("1")     > striExpr("")        and
  943              striExpr("1")     > striExpr("0")       and
  944              striExpr("1")     > striExpr("00")      and
  945              striExpr("1")     > striExpr("01")      and
  946              striExpr("1")     > striExpr("02")      and
  947              striExpr("1")     > striExpr("0234")    and
  948         not (striExpr("1")     > striExpr("1")     ) and
  949         not (striExpr("1")     > striExpr("10")    ) and
  950         not (striExpr("1")     > striExpr("11")    ) and
  951         not (striExpr("1")     > striExpr("110")   ) and
  952         not (striExpr("1")     > striExpr("111")   ) and
  953         not (striExpr("1")     > striExpr("112")   ) and
  954         not (striExpr("1")     > striExpr("12")    ) and
  955         not (striExpr("1")     > striExpr("2")     ) and
  956         not (striExpr("1")     > striExpr("20")    ) and
  957         not (striExpr("1")     > striExpr("21")    ) and
  958         not (striExpr("1")     > striExpr("22")    ) and
  959              striExpr("123")   > striExpr("")        and
  960              striExpr("123")   > striExpr("0")       and
  961              striExpr("123")   > striExpr("1")       and
  962              striExpr("123")   > striExpr("11")      and
  963              striExpr("123")   > striExpr("12")      and
  964              striExpr("123")   > striExpr("122")     and
  965              striExpr("123")   > striExpr("1222")    and
  966              striExpr("123")   > striExpr("1223")    and
  967              striExpr("123")   > striExpr("1224")    and
  968         not (striExpr("123")   > striExpr("123")   ) and
  969         not (striExpr("123")   > striExpr("124")   ) and
  970         not (striExpr("123")   > striExpr("13")    ) and
  971         not (striExpr("123")   > striExpr("2")     ) and
  972         not (striExpr("123")   > striExpr("21")    ) and
  973         not (striExpr("123")   > striExpr("22")    ) and
  974         not (striExpr("123")   > striExpr("222")   ) and
  975         not (striExpr("123")   > striExpr("2222")  ) and
  976         not (striExpr("")      > striExpr("")      ) and
  977              striExpr("0")     > striExpr("")        and
  978              striExpr("00")    > striExpr("")        and
  979              striExpr("01")    > striExpr("")        and
  980              striExpr("02")    > striExpr("")        and
  981              striExpr("1")     > striExpr("")        and
  982              striExpr("10")    > striExpr("")        and
  983              striExpr("11")    > striExpr("")        and
  984              striExpr("12")    > striExpr("")        and
  985              striExpr("2")     > striExpr("")        and
  986              striExpr("20")    > striExpr("")        and
  987              striExpr("21")    > striExpr("")        and
  988              striExpr("22")    > striExpr("")        and
  989              striExpr("22222") > striExpr("")        and
  990         not (striExpr("")      > striExpr("1")     ) and
  991         not (striExpr("0")     > striExpr("1")     ) and
  992         not (striExpr("00")    > striExpr("1")     ) and
  993         not (striExpr("01")    > striExpr("1")     ) and
  994         not (striExpr("02")    > striExpr("1")     ) and
  995         not (striExpr("0234")  > striExpr("1")     ) and
  996         not (striExpr("1")     > striExpr("1")     ) and
  997              striExpr("10")    > striExpr("1")       and
  998              striExpr("11")    > striExpr("1")       and
  999              striExpr("110")   > striExpr("1")       and
 1000              striExpr("111")   > striExpr("1")       and
 1001              striExpr("112")   > striExpr("1")       and
 1002              striExpr("12")    > striExpr("1")       and
 1003              striExpr("2")     > striExpr("1")       and
 1004              striExpr("20")    > striExpr("1")       and
 1005              striExpr("21")    > striExpr("1")       and
 1006              striExpr("22")    > striExpr("1")       and
 1007         not (striExpr("")      > striExpr("123")   ) and
 1008         not (striExpr("0")     > striExpr("123")   ) and
 1009         not (striExpr("1")     > striExpr("123")   ) and
 1010         not (striExpr("11")    > striExpr("123")   ) and
 1011         not (striExpr("12")    > striExpr("123")   ) and
 1012         not (striExpr("122")   > striExpr("123")   ) and
 1013         not (striExpr("1222")  > striExpr("123")   ) and
 1014         not (striExpr("1223")  > striExpr("123")   ) and
 1015         not (striExpr("1224")  > striExpr("123")   ) and
 1016         not (striExpr("123")   > striExpr("123")   ) and
 1017              striExpr("124")   > striExpr("123")     and
 1018              striExpr("13")    > striExpr("123")     and
 1019              striExpr("2")     > striExpr("123")     and
 1020              striExpr("21")    > striExpr("123")     and
 1021              striExpr("22")    > striExpr("123")     and
 1022              striExpr("222")   > striExpr("123")     and
 1023              striExpr("2222")  > striExpr("123")
 1024              ) then
 1025       writeln(" ***** STRING > STRING does not work correct.");
 1026       okay := FALSE;
 1027     end if;
 1028 
 1029     if  not (
 1030              ""      >= ""        and
 1031         not (""      >= "0"     ) and
 1032         not (""      >= "00"    ) and
 1033         not (""      >= "01"    ) and
 1034         not (""      >= "02"    ) and
 1035         not (""      >= "1"     ) and
 1036         not (""      >= "10"    ) and
 1037         not (""      >= "11"    ) and
 1038         not (""      >= "12"    ) and
 1039         not (""      >= "2"     ) and
 1040         not (""      >= "20"    ) and
 1041         not (""      >= "21"    ) and
 1042         not (""      >= "22"    ) and
 1043         not (""      >= "22222" ) and
 1044              "1"     >= ""        and
 1045              "1"     >= "0"       and
 1046              "1"     >= "00"      and
 1047              "1"     >= "01"      and
 1048              "1"     >= "02"      and
 1049              "1"     >= "0234"    and
 1050              "1"     >= "1"       and
 1051         not ("1"     >= "10"    ) and
 1052         not ("1"     >= "11"    ) and
 1053         not ("1"     >= "110"   ) and
 1054         not ("1"     >= "111"   ) and
 1055         not ("1"     >= "112"   ) and
 1056         not ("1"     >= "12"    ) and
 1057         not ("1"     >= "2"     ) and
 1058         not ("1"     >= "20"    ) and
 1059         not ("1"     >= "21"    ) and
 1060         not ("1"     >= "22"    ) and
 1061              "123"   >= ""        and
 1062              "123"   >= "0"       and
 1063              "123"   >= "1"       and
 1064              "123"   >= "11"      and
 1065              "123"   >= "12"      and
 1066              "123"   >= "122"     and
 1067              "123"   >= "1222"    and
 1068              "123"   >= "1223"    and
 1069              "123"   >= "1224"    and
 1070              "123"   >= "123"     and
 1071         not ("123"   >= "124"   ) and
 1072         not ("123"   >= "13"    ) and
 1073         not ("123"   >= "2"     ) and
 1074         not ("123"   >= "21"    ) and
 1075         not ("123"   >= "22"    ) and
 1076         not ("123"   >= "222"   ) and
 1077         not ("123"   >= "2222"  ) and
 1078              ""      >= ""        and
 1079              "0"     >= ""        and
 1080              "00"    >= ""        and
 1081              "01"    >= ""        and
 1082              "02"    >= ""        and
 1083              "1"     >= ""        and
 1084              "10"    >= ""        and
 1085              "11"    >= ""        and
 1086              "12"    >= ""        and
 1087              "2"     >= ""        and
 1088              "20"    >= ""        and
 1089              "21"    >= ""        and
 1090              "22"    >= ""        and
 1091              "22222" >= ""        and
 1092         not (""      >= "1"     ) and
 1093         not ("0"     >= "1"     ) and
 1094         not ("00"    >= "1"     ) and
 1095         not ("01"    >= "1"     ) and
 1096         not ("02"    >= "1"     ) and
 1097         not ("0234"  >= "1"     ) and
 1098              "1"     >= "1"       and
 1099              "10"    >= "1"       and
 1100              "11"    >= "1"       and
 1101              "110"   >= "1"       and
 1102              "111"   >= "1"       and
 1103              "112"   >= "1"       and
 1104              "12"    >= "1"       and
 1105              "2"     >= "1"       and
 1106              "20"    >= "1"       and
 1107              "21"    >= "1"       and
 1108              "22"    >= "1"       and
 1109         not (""      >= "123"   ) and
 1110         not ("0"     >= "123"   ) and
 1111         not ("1"     >= "123"   ) and
 1112         not ("11"    >= "123"   ) and
 1113         not ("12"    >= "123"   ) and
 1114         not ("122"   >= "123"   ) and
 1115         not ("1222"  >= "123"   ) and
 1116         not ("1223"  >= "123"   ) and
 1117         not ("1224"  >= "123"   ) and
 1118              "123"   >= "123"     and
 1119              "124"   >= "123"     and
 1120              "13"    >= "123"     and
 1121              "2"     >= "123"     and
 1122              "21"    >= "123"     and
 1123              "22"    >= "123"     and
 1124              "222"   >= "123"     and
 1125              "2222"  >= "123"
 1126              ) then
 1127       writeln(" ***** STRING >= STRING does not work correct.");
 1128       okay := FALSE;
 1129     end if;
 1130 
 1131     if  not (
 1132              striExpr("")      >= ""        and
 1133         not (striExpr("")      >= "0"     ) and
 1134         not (striExpr("")      >= "00"    ) and
 1135         not (striExpr("")      >= "01"    ) and
 1136         not (striExpr("")      >= "02"    ) and
 1137         not (striExpr("")      >= "1"     ) and
 1138         not (striExpr("")      >= "10"    ) and
 1139         not (striExpr("")      >= "11"    ) and
 1140         not (striExpr("")      >= "12"    ) and
 1141         not (striExpr("")      >= "2"     ) and
 1142         not (striExpr("")      >= "20"    ) and
 1143         not (striExpr("")      >= "21"    ) and
 1144         not (striExpr("")      >= "22"    ) and
 1145         not (striExpr("")      >= "22222" ) and
 1146              striExpr("1")     >= ""        and
 1147              striExpr("1")     >= "0"       and
 1148              striExpr("1")     >= "00"      and
 1149              striExpr("1")     >= "01"      and
 1150              striExpr("1")     >= "02"      and
 1151              striExpr("1")     >= "0234"    and
 1152              striExpr("1")     >= "1"       and
 1153         not (striExpr("1")     >= "10"    ) and
 1154         not (striExpr("1")     >= "11"    ) and
 1155         not (striExpr("1")     >= "110"   ) and
 1156         not (striExpr("1")     >= "111"   ) and
 1157         not (striExpr("1")     >= "112"   ) and
 1158         not (striExpr("1")     >= "12"    ) and
 1159         not (striExpr("1")     >= "2"     ) and
 1160         not (striExpr("1")     >= "20"    ) and
 1161         not (striExpr("1")     >= "21"    ) and
 1162         not (striExpr("1")     >= "22"    ) and
 1163              striExpr("123")   >= ""        and
 1164              striExpr("123")   >= "0"       and
 1165              striExpr("123")   >= "1"       and
 1166              striExpr("123")   >= "11"      and
 1167              striExpr("123")   >= "12"      and
 1168              striExpr("123")   >= "122"     and
 1169              striExpr("123")   >= "1222"    and
 1170              striExpr("123")   >= "1223"    and
 1171              striExpr("123")   >= "1224"    and
 1172              striExpr("123")   >= "123"     and
 1173         not (striExpr("123")   >= "124"   ) and
 1174         not (striExpr("123")   >= "13"    ) and
 1175         not (striExpr("123")   >= "2"     ) and
 1176         not (striExpr("123")   >= "21"    ) and
 1177         not (striExpr("123")   >= "22"    ) and
 1178         not (striExpr("123")   >= "222"   ) and
 1179         not (striExpr("123")   >= "2222"  ) and
 1180              striExpr("")      >= ""        and
 1181              striExpr("0")     >= ""        and
 1182              striExpr("00")    >= ""        and
 1183              striExpr("01")    >= ""        and
 1184              striExpr("02")    >= ""        and
 1185              striExpr("1")     >= ""        and
 1186              striExpr("10")    >= ""        and
 1187              striExpr("11")    >= ""        and
 1188              striExpr("12")    >= ""        and
 1189              striExpr("2")     >= ""        and
 1190              striExpr("20")    >= ""        and
 1191              striExpr("21")    >= ""        and
 1192              striExpr("22")    >= ""        and
 1193              striExpr("22222") >= ""        and
 1194         not (striExpr("")      >= "1"     ) and
 1195         not (striExpr("0")     >= "1"     ) and
 1196         not (striExpr("00")    >= "1"     ) and
 1197         not (striExpr("01")    >= "1"     ) and
 1198         not (striExpr("02")    >= "1"     ) and
 1199         not (striExpr("0234")  >= "1"     ) and
 1200              striExpr("1")     >= "1"       and
 1201              striExpr("10")    >= "1"       and
 1202              striExpr("11")    >= "1"       and
 1203              striExpr("110")   >= "1"       and
 1204              striExpr("111")   >= "1"       and
 1205              striExpr("112")   >= "1"       and
 1206              striExpr("12")    >= "1"       and
 1207              striExpr("2")     >= "1"       and
 1208              striExpr("20")    >= "1"       and
 1209              striExpr("21")    >= "1"       and
 1210              striExpr("22")    >= "1"       and
 1211         not (striExpr("")      >= "123"   ) and
 1212         not (striExpr("0")     >= "123"   ) and
 1213         not (striExpr("1")     >= "123"   ) and
 1214         not (striExpr("11")    >= "123"   ) and
 1215         not (striExpr("12")    >= "123"   ) and
 1216         not (striExpr("122")   >= "123"   ) and
 1217         not (striExpr("1222")  >= "123"   ) and
 1218         not (striExpr("1223")  >= "123"   ) and
 1219         not (striExpr("1224")  >= "123"   ) and
 1220              striExpr("123")   >= "123"     and
 1221              striExpr("124")   >= "123"     and
 1222              striExpr("13")    >= "123"     and
 1223              striExpr("2")     >= "123"     and
 1224              striExpr("21")    >= "123"     and
 1225              striExpr("22")    >= "123"     and
 1226              striExpr("222")   >= "123"     and
 1227              striExpr("2222")  >= "123"
 1228              ) then
 1229       writeln(" ***** STRING >= STRING does not work correct.");
 1230       okay := FALSE;
 1231     end if;
 1232 
 1233     if  not (
 1234              ""      >= striExpr("")        and
 1235         not (""      >= striExpr("0")     ) and
 1236         not (""      >= striExpr("00")    ) and
 1237         not (""      >= striExpr("01")    ) and
 1238         not (""      >= striExpr("02")    ) and
 1239         not (""      >= striExpr("1")     ) and
 1240         not (""      >= striExpr("10")    ) and
 1241         not (""      >= striExpr("11")    ) and
 1242         not (""      >= striExpr("12")    ) and
 1243         not (""      >= striExpr("2")     ) and
 1244         not (""      >= striExpr("20")    ) and
 1245         not (""      >= striExpr("21")    ) and
 1246         not (""      >= striExpr("22")    ) and
 1247         not (""      >= striExpr("22222") ) and
 1248              "1"     >= striExpr("")        and
 1249              "1"     >= striExpr("0")       and
 1250              "1"     >= striExpr("00")      and
 1251              "1"     >= striExpr("01")      and
 1252              "1"     >= striExpr("02")      and
 1253              "1"     >= striExpr("0234")    and
 1254              "1"     >= striExpr("1")       and
 1255         not ("1"     >= striExpr("10")    ) and
 1256         not ("1"     >= striExpr("11")    ) and
 1257         not ("1"     >= striExpr("110")   ) and
 1258         not ("1"     >= striExpr("111")   ) and
 1259         not ("1"     >= striExpr("112")   ) and
 1260         not ("1"     >= striExpr("12")    ) and
 1261         not ("1"     >= striExpr("2")     ) and
 1262         not ("1"     >= striExpr("20")    ) and
 1263         not ("1"     >= striExpr("21")    ) and
 1264         not ("1"     >= striExpr("22")    ) and
 1265              "123"   >= striExpr("")        and
 1266              "123"   >= striExpr("0")       and
 1267              "123"   >= striExpr("1")       and
 1268              "123"   >= striExpr("11")      and
 1269              "123"   >= striExpr("12")      and
 1270              "123"   >= striExpr("122")     and
 1271              "123"   >= striExpr("1222")    and
 1272              "123"   >= striExpr("1223")    and
 1273              "123"   >= striExpr("1224")    and
 1274              "123"   >= striExpr("123")     and
 1275         not ("123"   >= striExpr("124")   ) and
 1276         not ("123"   >= striExpr("13")    ) and
 1277         not ("123"   >= striExpr("2")     ) and
 1278         not ("123"   >= striExpr("21")    ) and
 1279         not ("123"   >= striExpr("22")    ) and
 1280         not ("123"   >= striExpr("222")   ) and
 1281         not ("123"   >= striExpr("2222")  ) and
 1282              ""      >= striExpr("")        and
 1283              "0"     >= striExpr("")        and
 1284              "00"    >= striExpr("")        and
 1285              "01"    >= striExpr("")        and
 1286              "02"    >= striExpr("")        and
 1287              "1"     >= striExpr("")        and
 1288              "10"    >= striExpr("")        and
 1289              "11"    >= striExpr("")        and
 1290              "12"    >= striExpr("")        and
 1291              "2"     >= striExpr("")        and
 1292              "20"    >= striExpr("")        and
 1293              "21"    >= striExpr("")        and
 1294              "22"    >= striExpr("")        and
 1295              "22222" >= striExpr("")        and
 1296         not (""      >= striExpr("1")     ) and
 1297         not ("0"     >= striExpr("1")     ) and
 1298         not ("00"    >= striExpr("1")     ) and
 1299         not ("01"    >= striExpr("1")     ) and
 1300         not ("02"    >= striExpr("1")     ) and
 1301         not ("0234"  >= striExpr("1")     ) and
 1302              "1"     >= striExpr("1")       and
 1303              "10"    >= striExpr("1")       and
 1304              "11"    >= striExpr("1")       and
 1305              "110"   >= striExpr("1")       and
 1306              "111"   >= striExpr("1")       and
 1307              "112"   >= striExpr("1")       and
 1308              "12"    >= striExpr("1")       and
 1309              "2"     >= striExpr("1")       and
 1310              "20"    >= striExpr("1")       and
 1311              "21"    >= striExpr("1")       and
 1312              "22"    >= striExpr("1")       and
 1313         not (""      >= striExpr("123")   ) and
 1314         not ("0"     >= striExpr("123")   ) and
 1315         not ("1"     >= striExpr("123")   ) and
 1316         not ("11"    >= striExpr("123")   ) and
 1317         not ("12"    >= striExpr("123")   ) and
 1318         not ("122"   >= striExpr("123")   ) and
 1319         not ("1222"  >= striExpr("123")   ) and
 1320         not ("1223"  >= striExpr("123")   ) and
 1321         not ("1224"  >= striExpr("123")   ) and
 1322              "123"   >= striExpr("123")     and
 1323              "124"   >= striExpr("123")     and
 1324              "13"    >= striExpr("123")     and
 1325              "2"     >= striExpr("123")     and
 1326              "21"    >= striExpr("123")     and
 1327              "22"    >= striExpr("123")     and
 1328              "222"   >= striExpr("123")     and
 1329              "2222"  >= striExpr("123")
 1330              ) then
 1331       writeln(" ***** STRING >= STRING does not work correct.");
 1332       okay := FALSE;
 1333     end if;
 1334 
 1335     if  not (
 1336              striExpr("")      >= striExpr("")        and
 1337         not (striExpr("")      >= striExpr("0")     ) and
 1338         not (striExpr("")      >= striExpr("00")    ) and
 1339         not (striExpr("")      >= striExpr("01")    ) and
 1340         not (striExpr("")      >= striExpr("02")    ) and
 1341         not (striExpr("")      >= striExpr("1")     ) and
 1342         not (striExpr("")      >= striExpr("10")    ) and
 1343         not (striExpr("")      >= striExpr("11")    ) and
 1344         not (striExpr("")      >= striExpr("12")    ) and
 1345         not (striExpr("")      >= striExpr("2")     ) and
 1346         not (striExpr("")      >= striExpr("20")    ) and
 1347         not (striExpr("")      >= striExpr("21")    ) and
 1348         not (striExpr("")      >= striExpr("22")    ) and
 1349         not (striExpr("")      >= striExpr("22222") ) and
 1350              striExpr("1")     >= striExpr("")        and
 1351              striExpr("1")     >= striExpr("0")       and
 1352              striExpr("1")     >= striExpr("00")      and
 1353              striExpr("1")     >= striExpr("01")      and
 1354              striExpr("1")     >= striExpr("02")      and
 1355              striExpr("1")     >= striExpr("0234")    and
 1356              striExpr("1")     >= striExpr("1")       and
 1357         not (striExpr("1")     >= striExpr("10")    ) and
 1358         not (striExpr("1")     >= striExpr("11")    ) and
 1359         not (striExpr("1")     >= striExpr("110")   ) and
 1360         not (striExpr("1")     >= striExpr("111")   ) and
 1361         not (striExpr("1")     >= striExpr("112")   ) and
 1362         not (striExpr("1")     >= striExpr("12")    ) and
 1363         not (striExpr("1")     >= striExpr("2")     ) and
 1364         not (striExpr("1")     >= striExpr("20")    ) and
 1365         not (striExpr("1")     >= striExpr("21")    ) and
 1366         not (striExpr("1")     >= striExpr("22")    ) and
 1367              striExpr("123")   >= striExpr("")        and
 1368              striExpr("123")   >= striExpr("0")       and
 1369              striExpr("123")   >= striExpr("1")       and
 1370              striExpr("123")   >= striExpr("11")      and
 1371              striExpr("123")   >= striExpr("12")      and
 1372              striExpr("123")   >= striExpr("122")     and
 1373              striExpr("123")   >= striExpr("1222")    and
 1374              striExpr("123")   >= striExpr("1223")    and
 1375              striExpr("123")   >= striExpr("1224")    and
 1376              striExpr("123")   >= striExpr("123")     and
 1377         not (striExpr("123")   >= striExpr("124")   ) and
 1378         not (striExpr("123")   >= striExpr("13")    ) and
 1379         not (striExpr("123")   >= striExpr("2")     ) and
 1380         not (striExpr("123")   >= striExpr("21")    ) and
 1381         not (striExpr("123")   >= striExpr("22")    ) and
 1382         not (striExpr("123")   >= striExpr("222")   ) and
 1383         not (striExpr("123")   >= striExpr("2222")  ) and
 1384              striExpr("")      >= striExpr("")        and
 1385              striExpr("0")     >= striExpr("")        and
 1386              striExpr("00")    >= striExpr("")        and
 1387              striExpr("01")    >= striExpr("")        and
 1388              striExpr("02")    >= striExpr("")        and
 1389              striExpr("1")     >= striExpr("")        and
 1390              striExpr("10")    >= striExpr("")        and
 1391              striExpr("11")    >= striExpr("")        and
 1392              striExpr("12")    >= striExpr("")        and
 1393              striExpr("2")     >= striExpr("")        and
 1394              striExpr("20")    >= striExpr("")        and
 1395              striExpr("21")    >= striExpr("")        and
 1396              striExpr("22")    >= striExpr("")        and
 1397              striExpr("22222") >= striExpr("")        and
 1398         not (striExpr("")      >= striExpr("1")     ) and
 1399         not (striExpr("0")     >= striExpr("1")     ) and
 1400         not (striExpr("00")    >= striExpr("1")     ) and
 1401         not (striExpr("01")    >= striExpr("1")     ) and
 1402         not (striExpr("02")    >= striExpr("1")     ) and
 1403         not (striExpr("0234")  >= striExpr("1")     ) and
 1404              striExpr("1")     >= striExpr("1")       and
 1405              striExpr("10")    >= striExpr("1")       and
 1406              striExpr("11")    >= striExpr("1")       and
 1407              striExpr("110")   >= striExpr("1")       and
 1408              striExpr("111")   >= striExpr("1")       and
 1409              striExpr("112")   >= striExpr("1")       and
 1410              striExpr("12")    >= striExpr("1")       and
 1411              striExpr("2")     >= striExpr("1")       and
 1412              striExpr("20")    >= striExpr("1")       and
 1413              striExpr("21")    >= striExpr("1")       and
 1414              striExpr("22")    >= striExpr("1")       and
 1415         not (striExpr("")      >= striExpr("123")   ) and
 1416         not (striExpr("0")     >= striExpr("123")   ) and
 1417         not (striExpr("1")     >= striExpr("123")   ) and
 1418         not (striExpr("11")    >= striExpr("123")   ) and
 1419         not (striExpr("12")    >= striExpr("123")   ) and
 1420         not (striExpr("122")   >= striExpr("123")   ) and
 1421         not (striExpr("1222")  >= striExpr("123")   ) and
 1422         not (striExpr("1223")  >= striExpr("123")   ) and
 1423         not (striExpr("1224")  >= striExpr("123")   ) and
 1424              striExpr("123")   >= striExpr("123")     and
 1425              striExpr("124")   >= striExpr("123")     and
 1426              striExpr("13")    >= striExpr("123")     and
 1427              striExpr("2")     >= striExpr("123")     and
 1428              striExpr("21")    >= striExpr("123")     and
 1429              striExpr("22")    >= striExpr("123")     and
 1430              striExpr("222")   >= striExpr("123")     and
 1431              striExpr("2222")  >= striExpr("123")
 1432              ) then
 1433       writeln(" ***** STRING >= STRING does not work correct.");
 1434       okay := FALSE;
 1435     end if;
 1436 
 1437     if  not (
 1438         not (""      < ""      ) and
 1439         not ("0"     < ""      ) and
 1440         not ("00"    < ""      ) and
 1441         not ("01"    < ""      ) and
 1442         not ("02"    < ""      ) and
 1443         not ("1"     < ""      ) and
 1444         not ("10"    < ""      ) and
 1445         not ("11"    < ""      ) and
 1446         not ("12"    < ""      ) and
 1447         not ("2"     < ""      ) and
 1448         not ("20"    < ""      ) and
 1449         not ("21"    < ""      ) and
 1450         not ("22"    < ""      ) and
 1451         not ("22222" < ""      ) and
 1452              ""      < "1"       and
 1453              "0"     < "1"       and
 1454              "00"    < "1"       and
 1455              "01"    < "1"       and
 1456              "02"    < "1"       and
 1457              "0234"  < "1"       and
 1458         not ("1"     < "1"     ) and
 1459         not ("10"    < "1"     ) and
 1460         not ("11"    < "1"     ) and
 1461         not ("110"   < "1"     ) and
 1462         not ("111"   < "1"     ) and
 1463         not ("112"   < "1"     ) and
 1464         not ("12"    < "1"     ) and
 1465         not ("2"     < "1"     ) and
 1466         not ("20"    < "1"     ) and
 1467         not ("21"    < "1"     ) and
 1468         not ("22"    < "1"     ) and
 1469              ""      < "123"     and
 1470              "0"     < "123"     and
 1471              "1"     < "123"     and
 1472              "11"    < "123"     and
 1473              "12"    < "123"     and
 1474              "122"   < "123"     and
 1475              "1222"  < "123"     and
 1476              "1223"  < "123"     and
 1477              "1224"  < "123"     and
 1478         not ("123"   < "123"   ) and
 1479         not ("124"   < "123"   ) and
 1480         not ("13"    < "123"   ) and
 1481         not ("2"     < "123"   ) and
 1482         not ("21"    < "123"   ) and
 1483         not ("22"    < "123"   ) and
 1484         not ("222"   < "123"   ) and
 1485         not ("2222"  < "123"   ) and
 1486         not (""      < ""      ) and
 1487              ""      < "0"       and
 1488              ""      < "00"      and
 1489              ""      < "01"      and
 1490              ""      < "02"      and
 1491              ""      < "1"       and
 1492              ""      < "10"      and
 1493              ""      < "11"      and
 1494              ""      < "12"      and
 1495              ""      < "2"       and
 1496              ""      < "20"      and
 1497              ""      < "21"      and
 1498              ""      < "22"      and
 1499              ""      < "22222"   and
 1500         not ("1"     < ""      ) and
 1501         not ("1"     < "0"     ) and
 1502         not ("1"     < "00"    ) and
 1503         not ("1"     < "01"    ) and
 1504         not ("1"     < "02"    ) and
 1505         not ("1"     < "0234"  ) and
 1506         not ("1"     < "1"     ) and
 1507              "1"     < "10"      and
 1508              "1"     < "11"      and
 1509              "1"     < "110"     and
 1510              "1"     < "111"     and
 1511              "1"     < "112"     and
 1512              "1"     < "12"      and
 1513              "1"     < "2"       and
 1514              "1"     < "20"      and
 1515              "1"     < "21"      and
 1516              "1"     < "22"      and
 1517         not ("123"   < ""      ) and
 1518         not ("123"   < "0"     ) and
 1519         not ("123"   < "1"     ) and
 1520         not ("123"   < "11"    ) and
 1521         not ("123"   < "12"    ) and
 1522         not ("123"   < "122"   ) and
 1523         not ("123"   < "1222"  ) and
 1524         not ("123"   < "1223"  ) and
 1525         not ("123"   < "1224"  ) and
 1526         not ("123"   < "123"   ) and
 1527              "123"   < "124"     and
 1528              "123"   < "13"      and
 1529              "123"   < "2"       and
 1530              "123"   < "21"      and
 1531              "123"   < "22"      and
 1532              "123"   < "222"     and
 1533              "123"   < "2222"
 1534              ) then
 1535       writeln(" ***** STRING < STRING does not work correct.");
 1536       okay := FALSE;
 1537     end if;
 1538 
 1539     if  not (
 1540         not (striExpr("")      < ""      ) and
 1541         not (striExpr("0")     < ""      ) and
 1542         not (striExpr("00")    < ""      ) and
 1543         not (striExpr("01")    < ""      ) and
 1544         not (striExpr("02")    < ""      ) and
 1545         not (striExpr("1")     < ""      ) and
 1546         not (striExpr("10")    < ""      ) and
 1547         not (striExpr("11")    < ""      ) and
 1548         not (striExpr("12")    < ""      ) and
 1549         not (striExpr("2")     < ""      ) and
 1550         not (striExpr("20")    < ""      ) and
 1551         not (striExpr("21")    < ""      ) and
 1552         not (striExpr("22")    < ""      ) and
 1553         not (striExpr("22222") < ""      ) and
 1554              striExpr("")      < "1"       and
 1555              striExpr("0")     < "1"       and
 1556              striExpr("00")    < "1"       and
 1557              striExpr("01")    < "1"       and
 1558              striExpr("02")    < "1"       and
 1559              striExpr("0234")  < "1"       and
 1560         not (striExpr("1")     < "1"     ) and
 1561         not (striExpr("10")    < "1"     ) and
 1562         not (striExpr("11")    < "1"     ) and
 1563         not (striExpr("110")   < "1"     ) and
 1564         not (striExpr("111")   < "1"     ) and
 1565         not (striExpr("112")   < "1"     ) and
 1566         not (striExpr("12")    < "1"     ) and
 1567         not (striExpr("2")     < "1"     ) and
 1568         not (striExpr("20")    < "1"     ) and
 1569         not (striExpr("21")    < "1"     ) and
 1570         not (striExpr("22")    < "1"     ) and
 1571              striExpr("")      < "123"     and
 1572              striExpr("0")     < "123"     and
 1573              striExpr("1")     < "123"     and
 1574              striExpr("11")    < "123"     and
 1575              striExpr("12")    < "123"     and
 1576              striExpr("122")   < "123"     and
 1577              striExpr("1222")  < "123"     and
 1578              striExpr("1223")  < "123"     and
 1579              striExpr("1224")  < "123"     and
 1580         not (striExpr("123")   < "123"   ) and
 1581         not (striExpr("124")   < "123"   ) and
 1582         not (striExpr("13")    < "123"   ) and
 1583         not (striExpr("2")     < "123"   ) and
 1584         not (striExpr("21")    < "123"   ) and
 1585         not (striExpr("22")    < "123"   ) and
 1586         not (striExpr("222")   < "123"   ) and
 1587         not (striExpr("2222")  < "123"   ) and
 1588         not (striExpr("")      < ""      ) and
 1589              striExpr("")      < "0"       and
 1590              striExpr("")      < "00"      and
 1591              striExpr("")      < "01"      and
 1592              striExpr("")      < "02"      and
 1593              striExpr("")      < "1"       and
 1594              striExpr("")      < "10"      and
 1595              striExpr("")      < "11"      and
 1596              striExpr("")      < "12"      and
 1597              striExpr("")      < "2"       and
 1598              striExpr("")      < "20"      and
 1599              striExpr("")      < "21"      and
 1600              striExpr("")      < "22"      and
 1601              striExpr("")      < "22222"   and
 1602         not (striExpr("1")     < ""      ) and
 1603         not (striExpr("1")     < "0"     ) and
 1604         not (striExpr("1")     < "00"    ) and
 1605         not (striExpr("1")     < "01"    ) and
 1606         not (striExpr("1")     < "02"    ) and
 1607         not (striExpr("1")     < "0234"  ) and
 1608         not (striExpr("1")     < "1"     ) and
 1609              striExpr("1")     < "10"      and
 1610              striExpr("1")     < "11"      and
 1611              striExpr("1")     < "110"     and
 1612              striExpr("1")     < "111"     and
 1613              striExpr("1")     < "112"     and
 1614              striExpr("1")     < "12"      and
 1615              striExpr("1")     < "2"       and
 1616              striExpr("1")     < "20"      and
 1617              striExpr("1")     < "21"      and
 1618              striExpr("1")     < "22"      and
 1619         not (striExpr("123")   < ""      ) and
 1620         not (striExpr("123")   < "0"     ) and
 1621         not (striExpr("123")   < "1"     ) and
 1622         not (striExpr("123")   < "11"    ) and
 1623         not (striExpr("123")   < "12"    ) and
 1624         not (striExpr("123")   < "122"   ) and
 1625         not (striExpr("123")   < "1222"  ) and
 1626         not (striExpr("123")   < "1223"  ) and
 1627         not (striExpr("123")   < "1224"  ) and
 1628         not (striExpr("123")   < "123"   ) and
 1629              striExpr("123")   < "124"     and
 1630              striExpr("123")   < "13"      and
 1631              striExpr("123")   < "2"       and
 1632              striExpr("123")   < "21"      and
 1633              striExpr("123")   < "22"      and
 1634              striExpr("123")   < "222"     and
 1635              striExpr("123")   < "2222"
 1636              ) then
 1637       writeln(" ***** STRING < STRING does not work correct.");
 1638       okay := FALSE;
 1639     end if;
 1640 
 1641     if  not (
 1642         not (""      < striExpr("")      ) and
 1643         not ("0"     < striExpr("")      ) and
 1644         not ("00"    < striExpr("")      ) and
 1645         not ("01"    < striExpr("")      ) and
 1646         not ("02"    < striExpr("")      ) and
 1647         not ("1"     < striExpr("")      ) and
 1648         not ("10"    < striExpr("")      ) and
 1649         not ("11"    < striExpr("")      ) and
 1650         not ("12"    < striExpr("")      ) and
 1651         not ("2"     < striExpr("")      ) and
 1652         not ("20"    < striExpr("")      ) and
 1653         not ("21"    < striExpr("")      ) and
 1654         not ("22"    < striExpr("")      ) and
 1655         not ("22222" < striExpr("")      ) and
 1656              ""      < striExpr("1")       and
 1657              "0"     < striExpr("1")       and
 1658              "00"    < striExpr("1")       and
 1659              "01"    < striExpr("1")       and
 1660              "02"    < striExpr("1")       and
 1661              "0234"  < striExpr("1")       and
 1662         not ("1"     < striExpr("1")     ) and
 1663         not ("10"    < striExpr("1")     ) and
 1664         not ("11"    < striExpr("1")     ) and
 1665         not ("110"   < striExpr("1")     ) and
 1666         not ("111"   < striExpr("1")     ) and
 1667         not ("112"   < striExpr("1")     ) and
 1668         not ("12"    < striExpr("1")     ) and
 1669         not ("2"     < striExpr("1")     ) and
 1670         not ("20"    < striExpr("1")     ) and
 1671         not ("21"    < striExpr("1")     ) and
 1672         not ("22"    < striExpr("1")     ) and
 1673              ""      < striExpr("123")     and
 1674              "0"     < striExpr("123")     and
 1675              "1"     < striExpr("123")     and
 1676              "11"    < striExpr("123")     and
 1677              "12"    < striExpr("123")     and
 1678              "122"   < striExpr("123")     and
 1679              "1222"  < striExpr("123")     and
 1680              "1223"  < striExpr("123")     and
 1681              "1224"  < striExpr("123")     and
 1682         not ("123"   < striExpr("123")   ) and
 1683         not ("124"   < striExpr("123")   ) and
 1684         not ("13"    < striExpr("123")   ) and
 1685         not ("2"     < striExpr("123")   ) and
 1686         not ("21"    < striExpr("123")   ) and
 1687         not ("22"    < striExpr("123")   ) and
 1688         not ("222"   < striExpr("123")   ) and
 1689         not ("2222"  < striExpr("123")   ) and
 1690         not (""      < striExpr("")      ) and
 1691              ""      < striExpr("0")       and
 1692              ""      < striExpr("00")      and
 1693              ""      < striExpr("01")      and
 1694              ""      < striExpr("02")      and
 1695              ""      < striExpr("1")       and
 1696              ""      < striExpr("10")      and
 1697              ""      < striExpr("11")      and
 1698              ""      < striExpr("12")      and
 1699              ""      < striExpr("2")       and
 1700              ""      < striExpr("20")      and
 1701              ""      < striExpr("21")      and
 1702              ""      < striExpr("22")      and
 1703              ""      < striExpr("22222")   and
 1704         not ("1"     < striExpr("")      ) and
 1705         not ("1"     < striExpr("0")     ) and
 1706         not ("1"     < striExpr("00")    ) and
 1707         not ("1"     < striExpr("01")    ) and
 1708         not ("1"     < striExpr("02")    ) and
 1709         not ("1"     < striExpr("0234")  ) and
 1710         not ("1"     < striExpr("1")     ) and
 1711              "1"     < striExpr("10")      and
 1712              "1"     < striExpr("11")      and
 1713              "1"     < striExpr("110")     and
 1714              "1"     < striExpr("111")     and
 1715              "1"     < striExpr("112")     and
 1716              "1"     < striExpr("12")      and
 1717              "1"     < striExpr("2")       and
 1718              "1"     < striExpr("20")      and
 1719              "1"     < striExpr("21")      and
 1720              "1"     < striExpr("22")      and
 1721         not ("123"   < striExpr("")      ) and
 1722         not ("123"   < striExpr("0")     ) and
 1723         not ("123"   < striExpr("1")     ) and
 1724         not ("123"   < striExpr("11")    ) and
 1725         not ("123"   < striExpr("12")    ) and
 1726         not ("123"   < striExpr("122")   ) and
 1727         not ("123"   < striExpr("1222")  ) and
 1728         not ("123"   < striExpr("1223")  ) and
 1729         not ("123"   < striExpr("1224")  ) and
 1730         not ("123"   < striExpr("123")   ) and
 1731              "123"   < striExpr("124")     and
 1732              "123"   < striExpr("13")      and
 1733              "123"   < striExpr("2")       and
 1734              "123"   < striExpr("21")      and
 1735              "123"   < striExpr("22")      and
 1736              "123"   < striExpr("222")     and
 1737              "123"   < striExpr("2222")
 1738              ) then
 1739       writeln(" ***** STRING < STRING does not work correct.");
 1740       okay := FALSE;
 1741     end if;
 1742 
 1743     if  not (
 1744         not (striExpr("")      < striExpr("")      ) and
 1745         not (striExpr("0")     < striExpr("")      ) and
 1746         not (striExpr("00")    < striExpr("")      ) and
 1747         not (striExpr("01")    < striExpr("")      ) and
 1748         not (striExpr("02")    < striExpr("")      ) and
 1749         not (striExpr("1")     < striExpr("")      ) and
 1750         not (striExpr("10")    < striExpr("")      ) and
 1751         not (striExpr("11")    < striExpr("")      ) and
 1752         not (striExpr("12")    < striExpr("")      ) and
 1753         not (striExpr("2")     < striExpr("")      ) and
 1754         not (striExpr("20")    < striExpr("")      ) and
 1755         not (striExpr("21")    < striExpr("")      ) and
 1756         not (striExpr("22")    < striExpr("")      ) and
 1757         not (striExpr("22222") < striExpr("")      ) and
 1758              striExpr("")      < striExpr("1")       and
 1759              striExpr("0")     < striExpr("1")       and
 1760              striExpr("00")    < striExpr("1")       and
 1761              striExpr("01")    < striExpr("1")       and
 1762              striExpr("02")    < striExpr("1")       and
 1763              striExpr("0234")  < striExpr("1")       and
 1764         not (striExpr("1")     < striExpr("1")     ) and
 1765         not (striExpr("10")    < striExpr("1")     ) and
 1766         not (striExpr("11")    < striExpr("1")     ) and
 1767         not (striExpr("110")   < striExpr("1")     ) and
 1768         not (striExpr("111")   < striExpr("1")     ) and
 1769         not (striExpr("112")   < striExpr("1")     ) and
 1770         not (striExpr("12")    < striExpr("1")     ) and
 1771         not (striExpr("2")     < striExpr("1")     ) and
 1772         not (striExpr("20")    < striExpr("1")     ) and
 1773         not (striExpr("21")    < striExpr("1")     ) and
 1774         not (striExpr("22")    < striExpr("1")     ) and
 1775              striExpr("")      < striExpr("123")     and
 1776              striExpr("0")     < striExpr("123")     and
 1777              striExpr("1")     < striExpr("123")     and
 1778              striExpr("11")    < striExpr("123")     and
 1779              striExpr("12")    < striExpr("123")     and
 1780              striExpr("122")   < striExpr("123")     and
 1781              striExpr("1222")  < striExpr("123")     and
 1782              striExpr("1223")  < striExpr("123")     and
 1783              striExpr("1224")  < striExpr("123")     and
 1784         not (striExpr("123")   < striExpr("123")   ) and
 1785         not (striExpr("124")   < striExpr("123")   ) and
 1786         not (striExpr("13")    < striExpr("123")   ) and
 1787         not (striExpr("2")     < striExpr("123")   ) and
 1788         not (striExpr("21")    < striExpr("123")   ) and
 1789         not (striExpr("22")    < striExpr("123")   ) and
 1790         not (striExpr("222")   < striExpr("123")   ) and
 1791         not (striExpr("2222")  < striExpr("123")   ) and
 1792         not (striExpr("")      < striExpr("")      ) and
 1793              striExpr("")      < striExpr("0")       and
 1794              striExpr("")      < striExpr("00")      and
 1795              striExpr("")      < striExpr("01")      and
 1796              striExpr("")      < striExpr("02")      and
 1797              striExpr("")      < striExpr("1")       and
 1798              striExpr("")      < striExpr("10")      and
 1799              striExpr("")      < striExpr("11")      and
 1800              striExpr("")      < striExpr("12")      and
 1801              striExpr("")      < striExpr("2")       and
 1802              striExpr("")      < striExpr("20")      and
 1803              striExpr("")      < striExpr("21")      and
 1804              striExpr("")      < striExpr("22")      and
 1805              striExpr("")      < striExpr("22222")   and
 1806         not (striExpr("1")     < striExpr("")      ) and
 1807         not (striExpr("1")     < striExpr("0")     ) and
 1808         not (striExpr("1")     < striExpr("00")    ) and
 1809         not (striExpr("1")     < striExpr("01")    ) and
 1810         not (striExpr("1")     < striExpr("02")    ) and
 1811         not (striExpr("1")     < striExpr("0234")  ) and
 1812         not (striExpr("1")     < striExpr("1")     ) and
 1813              striExpr("1")     < striExpr("10")      and
 1814              striExpr("1")     < striExpr("11")      and
 1815              striExpr("1")     < striExpr("110")     and
 1816              striExpr("1")     < striExpr("111")     and
 1817              striExpr("1")     < striExpr("112")     and
 1818              striExpr("1")     < striExpr("12")      and
 1819              striExpr("1")     < striExpr("2")       and
 1820              striExpr("1")     < striExpr("20")      and
 1821              striExpr("1")     < striExpr("21")      and
 1822              striExpr("1")     < striExpr("22")      and
 1823         not (striExpr("123")   < striExpr("")      ) and
 1824         not (striExpr("123")   < striExpr("0")     ) and
 1825         not (striExpr("123")   < striExpr("1")     ) and
 1826         not (striExpr("123")   < striExpr("11")    ) and
 1827         not (striExpr("123")   < striExpr("12")    ) and
 1828         not (striExpr("123")   < striExpr("122")   ) and
 1829         not (striExpr("123")   < striExpr("1222")  ) and
 1830         not (striExpr("123")   < striExpr("1223")  ) and
 1831         not (striExpr("123")   < striExpr("1224")  ) and
 1832         not (striExpr("123")   < striExpr("123")   ) and
 1833              striExpr("123")   < striExpr("124")     and
 1834              striExpr("123")   < striExpr("13")      and
 1835              striExpr("123")   < striExpr("2")       and
 1836              striExpr("123")   < striExpr("21")      and
 1837              striExpr("123")   < striExpr("22")      and
 1838              striExpr("123")   < striExpr("222")     and
 1839              striExpr("123")   < striExpr("2222")
 1840              ) then
 1841       writeln(" ***** STRING < STRING does not work correct.");
 1842       okay := FALSE;
 1843     end if;
 1844 
 1845     if  not (
 1846              ""      <= ""        and
 1847         not ("0"     <= ""      ) and
 1848         not ("00"    <= ""      ) and
 1849         not ("01"    <= ""      ) and
 1850         not ("02"    <= ""      ) and
 1851         not ("1"     <= ""      ) and
 1852         not ("10"    <= ""      ) and
 1853         not ("11"    <= ""      ) and
 1854         not ("12"    <= ""      ) and
 1855         not ("2"     <= ""      ) and
 1856         not ("20"    <= ""      ) and
 1857         not ("21"    <= ""      ) and
 1858         not ("22"    <= ""      ) and
 1859         not ("22222" <= ""      ) and
 1860              ""      <= "1"       and
 1861              "0"     <= "1"       and
 1862              "00"    <= "1"       and
 1863              "01"    <= "1"       and
 1864              "02"    <= "1"       and
 1865              "0234"  <= "1"       and
 1866              "1"     <= "1"       and
 1867         not ("10"    <= "1"     ) and
 1868         not ("11"    <= "1"     ) and
 1869         not ("110"   <= "1"     ) and
 1870         not ("111"   <= "1"     ) and
 1871         not ("112"   <= "1"     ) and
 1872         not ("12"    <= "1"     ) and
 1873         not ("2"     <= "1"     ) and
 1874         not ("20"    <= "1"     ) and
 1875         not ("21"    <= "1"     ) and
 1876         not ("22"    <= "1"     ) and
 1877              ""      <= "123"     and
 1878              "0"     <= "123"     and
 1879              "1"     <= "123"     and
 1880              "11"    <= "123"     and
 1881              "12"    <= "123"     and
 1882              "122"   <= "123"     and
 1883              "1222"  <= "123"     and
 1884              "1223"  <= "123"     and
 1885              "1224"  <= "123"     and
 1886              "123"   <= "123"     and
 1887         not ("124"   <= "123"   ) and
 1888         not ("13"    <= "123"   ) and
 1889         not ("2"     <= "123"   ) and
 1890         not ("21"    <= "123"   ) and
 1891         not ("22"    <= "123"   ) and
 1892         not ("222"   <= "123"   ) and
 1893         not ("2222"  <= "123"   ) and
 1894              ""      <= ""        and
 1895              ""      <= "0"       and
 1896              ""      <= "00"      and
 1897              ""      <= "01"      and
 1898              ""      <= "02"      and
 1899              ""      <= "1"       and
 1900              ""      <= "10"      and
 1901              ""      <= "11"      and
 1902              ""      <= "12"      and
 1903              ""      <= "2"       and
 1904              ""      <= "20"      and
 1905              ""      <= "21"      and
 1906              ""      <= "22"      and
 1907              ""      <= "22222"   and
 1908         not ("1"     <= ""      ) and
 1909         not ("1"     <= "0"     ) and
 1910         not ("1"     <= "00"    ) and
 1911         not ("1"     <= "01"    ) and
 1912         not ("1"     <= "02"    ) and
 1913         not ("1"     <= "0234"  ) and
 1914              "1"     <= "1"       and
 1915              "1"     <= "10"      and
 1916              "1"     <= "11"      and
 1917              "1"     <= "110"     and
 1918              "1"     <= "111"     and
 1919              "1"     <= "112"     and
 1920              "1"     <= "12"      and
 1921              "1"     <= "2"       and
 1922              "1"     <= "20"      and
 1923              "1"     <= "21"      and
 1924              "1"     <= "22"      and
 1925         not ("123"   <= ""      ) and
 1926         not ("123"   <= "0"     ) and
 1927         not ("123"   <= "1"     ) and
 1928         not ("123"   <= "11"    ) and
 1929         not ("123"   <= "12"    ) and
 1930         not ("123"   <= "122"   ) and
 1931         not ("123"   <= "1222"  ) and
 1932         not ("123"   <= "1223"  ) and
 1933         not ("123"   <= "1224"  ) and
 1934              "123"   <= "123"     and
 1935              "123"   <= "124"     and
 1936              "123"   <= "13"      and
 1937              "123"   <= "2"       and
 1938              "123"   <= "21"      and
 1939              "123"   <= "22"      and
 1940              "123"   <= "222"     and
 1941              "123"   <= "2222"
 1942              ) then
 1943       writeln(" ***** STRING <= STRING does not work correct.");
 1944       okay := FALSE;
 1945     end if;
 1946 
 1947     if  not (
 1948              striExpr("")      <= ""        and
 1949         not (striExpr("0")     <= ""      ) and
 1950         not (striExpr("00")    <= ""      ) and
 1951         not (striExpr("01")    <= ""      ) and
 1952         not (striExpr("02")    <= ""      ) and
 1953         not (striExpr("1")     <= ""      ) and
 1954         not (striExpr("10")    <= ""      ) and
 1955         not (striExpr("11")    <= ""      ) and
 1956         not (striExpr("12")    <= ""      ) and
 1957         not (striExpr("2")     <= ""      ) and
 1958         not (striExpr("20")    <= ""      ) and
 1959         not (striExpr("21")    <= ""      ) and
 1960         not (striExpr("22")    <= ""      ) and
 1961         not (striExpr("22222") <= ""      ) and
 1962              striExpr("")      <= "1"       and
 1963              striExpr("0")     <= "1"       and
 1964              striExpr("00")    <= "1"       and
 1965              striExpr("01")    <= "1"       and
 1966              striExpr("02")    <= "1"       and
 1967              striExpr("0234")  <= "1"       and
 1968              striExpr("1")     <= "1"       and
 1969         not (striExpr("10")    <= "1"     ) and
 1970         not (striExpr("11")    <= "1"     ) and
 1971         not (striExpr("110")   <= "1"     ) and
 1972         not (striExpr("111")   <= "1"     ) and
 1973         not (striExpr("112")   <= "1"     ) and
 1974         not (striExpr("12")    <= "1"     ) and
 1975         not (striExpr("2")     <= "1"     ) and
 1976         not (striExpr("20")    <= "1"     ) and
 1977         not (striExpr("21")    <= "1"     ) and
 1978         not (striExpr("22")    <= "1"     ) and
 1979              striExpr("")      <= "123"     and
 1980              striExpr("0")     <= "123"     and
 1981              striExpr("1")     <= "123"     and
 1982              striExpr("11")    <= "123"     and
 1983              striExpr("12")    <= "123"     and
 1984              striExpr("122")   <= "123"     and
 1985              striExpr("1222")  <= "123"     and
 1986              striExpr("1223")  <= "123"     and
 1987              striExpr("1224")  <= "123"     and
 1988              striExpr("123")   <= "123"     and
 1989         not (striExpr("124")   <= "123"   ) and
 1990         not (striExpr("13")    <= "123"   ) and
 1991         not (striExpr("2")     <= "123"   ) and
 1992         not (striExpr("21")    <= "123"   ) and
 1993         not (striExpr("22")    <= "123"   ) and
 1994         not (striExpr("222")   <= "123"   ) and
 1995         not (striExpr("2222")  <= "123"   ) and
 1996              striExpr("")      <= ""        and
 1997              striExpr("")      <= "0"       and
 1998              striExpr("")      <= "00"      and
 1999              striExpr("")      <= "01"      and
 2000              striExpr("")      <= "02"      and
 2001              striExpr("")      <= "1"       and
 2002              striExpr("")      <= "10"      and
 2003              striExpr("")      <= "11"      and
 2004              striExpr("")      <= "12"      and
 2005              striExpr("")      <= "2"       and
 2006              striExpr("")      <= "20"      and
 2007              striExpr("")      <= "21"      and
 2008              striExpr("")      <= "22"      and
 2009              striExpr("")      <= "22222"   and
 2010         not (striExpr("1")     <= ""      ) and
 2011         not (striExpr("1")     <= "0"     ) and
 2012         not (striExpr("1")     <= "00"    ) and
 2013         not (striExpr("1")     <= "01"    ) and
 2014         not (striExpr("1")     <= "02"    ) and
 2015         not (striExpr("1")     <= "0234"  ) and
 2016              striExpr("1")     <= "1"       and
 2017              striExpr("1")     <= "10"      and
 2018              striExpr("1")     <= "11"      and
 2019              striExpr("1")     <= "110"     and
 2020              striExpr("1")     <= "111"     and
 2021              striExpr("1")     <= "112"     and
 2022              striExpr("1")     <= "12"      and
 2023              striExpr("1")     <= "2"       and
 2024              striExpr("1")     <= "20"      and
 2025              striExpr("1")     <= "21"      and
 2026              striExpr("1")     <= "22"      and
 2027         not (striExpr("123")   <= ""      ) and
 2028         not (striExpr("123")   <= "0"     ) and
 2029         not (striExpr("123")   <= "1"     ) and
 2030         not (striExpr("123")   <= "11"    ) and
 2031         not (striExpr("123")   <= "12"    ) and
 2032         not (striExpr("123")   <= "122"   ) and
 2033         not (striExpr("123")   <= "1222"  ) and
 2034         not (striExpr("123")   <= "1223"  ) and
 2035         not (striExpr("123")   <= "1224"  ) and
 2036              striExpr("123")   <= "123"     and
 2037              striExpr("123")   <= "124"     and
 2038              striExpr("123")   <= "13"      and
 2039              striExpr("123")   <= "2"       and
 2040              striExpr("123")   <= "21"      and
 2041              striExpr("123")   <= "22"      and
 2042              striExpr("123")   <= "222"     and
 2043              striExpr("123")   <= "2222"
 2044              ) then
 2045       writeln(" ***** STRING <= STRING does not work correct.");
 2046       okay := FALSE;
 2047     end if;
 2048 
 2049     if  not (
 2050              ""      <= striExpr("")        and
 2051         not ("0"     <= striExpr("")      ) and
 2052         not ("00"    <= striExpr("")      ) and
 2053         not ("01"    <= striExpr("")      ) and
 2054         not ("02"    <= striExpr("")      ) and
 2055         not ("1"     <= striExpr("")      ) and
 2056         not ("10"    <= striExpr("")      ) and
 2057         not ("11"    <= striExpr("")      ) and
 2058         not ("12"    <= striExpr("")      ) and
 2059         not ("2"     <= striExpr("")      ) and
 2060         not ("20"    <= striExpr("")      ) and
 2061         not ("21"    <= striExpr("")      ) and
 2062         not ("22"    <= striExpr("")      ) and
 2063         not ("22222" <= striExpr("")      ) and
 2064              ""      <= striExpr("1")       and
 2065              "0"     <= striExpr("1")       and
 2066              "00"    <= striExpr("1")       and
 2067              "01"    <= striExpr("1")       and
 2068              "02"    <= striExpr("1")       and
 2069              "0234"  <= striExpr("1")       and
 2070              "1"     <= striExpr("1")       and
 2071         not ("10"    <= striExpr("1")     ) and
 2072         not ("11"    <= striExpr("1")     ) and
 2073         not ("110"   <= striExpr("1")     ) and
 2074         not ("111"   <= striExpr("1")     ) and
 2075         not ("112"   <= striExpr("1")     ) and
 2076         not ("12"    <= striExpr("1")     ) and
 2077         not ("2"     <= striExpr("1")     ) and
 2078         not ("20"    <= striExpr("1")     ) and
 2079         not ("21"    <= striExpr("1")     ) and
 2080         not ("22"    <= striExpr("1")     ) and
 2081              ""      <= striExpr("123")     and
 2082              "0"     <= striExpr("123")     and
 2083              "1"     <= striExpr("123")     and
 2084              "11"    <= striExpr("123")     and
 2085              "12"    <= striExpr("123")     and
 2086              "122"   <= striExpr("123")     and
 2087              "1222"  <= striExpr("123")     and
 2088              "1223"  <= striExpr("123")     and
 2089              "1224"  <= striExpr("123")     and
 2090              "123"   <= striExpr("123")     and
 2091         not ("124"   <= striExpr("123")   ) and
 2092         not ("13"    <= striExpr("123")   ) and
 2093         not ("2"     <= striExpr("123")   ) and
 2094         not ("21"    <= striExpr("123")   ) and
 2095         not ("22"    <= striExpr("123")   ) and
 2096         not ("222"   <= striExpr("123")   ) and
 2097         not ("2222"  <= striExpr("123")   ) and
 2098              ""      <= striExpr("")        and
 2099              ""      <= striExpr("0")       and
 2100              ""      <= striExpr("00")      and
 2101              ""      <= striExpr("01")      and
 2102              ""      <= striExpr("02")      and
 2103              ""      <= striExpr("1")       and
 2104              ""      <= striExpr("10")      and
 2105              ""      <= striExpr("11")      and
 2106              ""      <= striExpr("12")      and
 2107              ""      <= striExpr("2")       and
 2108              ""      <= striExpr("20")      and
 2109              ""      <= striExpr("21")      and
 2110              ""      <= striExpr("22")      and
 2111              ""      <= striExpr("22222")   and
 2112         not ("1"     <= striExpr("")      ) and
 2113         not ("1"     <= striExpr("0")     ) and
 2114         not ("1"     <= striExpr("00")    ) and
 2115         not ("1"     <= striExpr("01")    ) and
 2116         not ("1"     <= striExpr("02")    ) and
 2117         not ("1"     <= striExpr("0234")  ) and
 2118              "1"     <= striExpr("1")       and
 2119              "1"     <= striExpr("10")      and
 2120              "1"     <= striExpr("11")      and
 2121              "1"     <= striExpr("110")     and
 2122              "1"     <= striExpr("111")     and
 2123              "1"     <= striExpr("112")     and
 2124              "1"     <= striExpr("12")      and
 2125              "1"     <= striExpr("2")       and
 2126              "1"     <= striExpr("20")      and
 2127              "1"     <= striExpr("21")      and
 2128              "1"     <= striExpr("22")      and
 2129         not ("123"   <= striExpr("")      ) and
 2130         not ("123"   <= striExpr("0")     ) and
 2131         not ("123"   <= striExpr("1")     ) and
 2132         not ("123"   <= striExpr("11")    ) and
 2133         not ("123"   <= striExpr("12")    ) and
 2134         not ("123"   <= striExpr("122")   ) and
 2135         not ("123"   <= striExpr("1222")  ) and
 2136         not ("123"   <= striExpr("1223")  ) and
 2137         not ("123"   <= striExpr("1224")  ) and
 2138              "123"   <= striExpr("123")     and
 2139              "123"   <= striExpr("124")     and
 2140              "123"   <= striExpr("13")      and
 2141              "123"   <= striExpr("2")       and
 2142              "123"   <= striExpr("21")      and
 2143              "123"   <= striExpr("22")      and
 2144              "123"   <= striExpr("222")     and
 2145              "123"   <= striExpr("2222")
 2146              ) then
 2147       writeln(" ***** STRING <= STRING does not work correct.");
 2148       okay := FALSE;
 2149     end if;
 2150 
 2151     if  not (
 2152              striExpr("")      <= striExpr("")        and
 2153         not (striExpr("0")     <= striExpr("")      ) and
 2154         not (striExpr("00")    <= striExpr("")      ) and
 2155         not (striExpr("01")    <= striExpr("")      ) and
 2156         not (striExpr("02")    <= striExpr("")      ) and
 2157         not (striExpr("1")     <= striExpr("")      ) and
 2158         not (striExpr("10")    <= striExpr("")      ) and
 2159         not (striExpr("11")    <= striExpr("")      ) and
 2160         not (striExpr("12")    <= striExpr("")      ) and
 2161         not (striExpr("2")     <= striExpr("")      ) and
 2162         not (striExpr("20")    <= striExpr("")      ) and
 2163         not (striExpr("21")    <= striExpr("")      ) and
 2164         not (striExpr("22")    <= striExpr("")      ) and
 2165         not (striExpr("22222") <= striExpr("")      ) and
 2166              striExpr("")      <= striExpr("1")       and
 2167              striExpr("0")     <= striExpr("1")       and
 2168              striExpr("00")    <= striExpr("1")       and
 2169              striExpr("01")    <= striExpr("1")       and
 2170              striExpr("02")    <= striExpr("1")       and
 2171              striExpr("0234")  <= striExpr("1")       and
 2172              striExpr("1")     <= striExpr("1")       and
 2173         not (striExpr("10")    <= striExpr("1")     ) and
 2174         not (striExpr("11")    <= striExpr("1")     ) and
 2175         not (striExpr("110")   <= striExpr("1")     ) and
 2176         not (striExpr("111")   <= striExpr("1")     ) and
 2177         not (striExpr("112")   <= striExpr("1")     ) and
 2178         not (striExpr("12")    <= striExpr("1")     ) and
 2179         not (striExpr("2")     <= striExpr("1")     ) and
 2180         not (striExpr("20")    <= striExpr("1")     ) and
 2181         not (striExpr("21")    <= striExpr("1")     ) and
 2182         not (striExpr("22")    <= striExpr("1")     ) and
 2183              striExpr("")      <= striExpr("123")     and
 2184              striExpr("0")     <= striExpr("123")     and
 2185              striExpr("1")     <= striExpr("123")     and
 2186              striExpr("11")    <= striExpr("123")     and
 2187              striExpr("12")    <= striExpr("123")     and
 2188              striExpr("122")   <= striExpr("123")     and
 2189              striExpr("1222")  <= striExpr("123")     and
 2190              striExpr("1223")  <= striExpr("123")     and
 2191              striExpr("1224")  <= striExpr("123")     and
 2192              striExpr("123")   <= striExpr("123")     and
 2193         not (striExpr("124")   <= striExpr("123")   ) and
 2194         not (striExpr("13")    <= striExpr("123")   ) and
 2195         not (striExpr("2")     <= striExpr("123")   ) and
 2196         not (striExpr("21")    <= striExpr("123")   ) and
 2197         not (striExpr("22")    <= striExpr("123")   ) and
 2198         not (striExpr("222")   <= striExpr("123")   ) and
 2199         not (striExpr("2222")  <= striExpr("123")   ) and
 2200              striExpr("")      <= striExpr("")        and
 2201              striExpr("")      <= striExpr("0")       and
 2202              striExpr("")      <= striExpr("00")      and
 2203              striExpr("")      <= striExpr("01")      and
 2204              striExpr("")      <= striExpr("02")      and
 2205              striExpr("")      <= striExpr("1")       and
 2206              striExpr("")      <= striExpr("10")      and
 2207              striExpr("")      <= striExpr("11")      and
 2208              striExpr("")      <= striExpr("12")      and
 2209              striExpr("")      <= striExpr("2")       and
 2210              striExpr("")      <= striExpr("20")      and
 2211              striExpr("")      <= striExpr("21")      and
 2212              striExpr("")      <= striExpr("22")      and
 2213              striExpr("")      <= striExpr("22222")   and
 2214         not (striExpr("1")     <= striExpr("")      ) and
 2215         not (striExpr("1")     <= striExpr("0")     ) and
 2216         not (striExpr("1")     <= striExpr("00")    ) and
 2217         not (striExpr("1")     <= striExpr("01")    ) and
 2218         not (striExpr("1")     <= striExpr("02")    ) and
 2219         not (striExpr("1")     <= striExpr("0234")  ) and
 2220              striExpr("1")     <= striExpr("1")       and
 2221              striExpr("1")     <= striExpr("10")      and
 2222              striExpr("1")     <= striExpr("11")      and
 2223              striExpr("1")     <= striExpr("110")     and
 2224              striExpr("1")     <= striExpr("111")     and
 2225              striExpr("1")     <= striExpr("112")     and
 2226              striExpr("1")     <= striExpr("12")      and
 2227              striExpr("1")     <= striExpr("2")       and
 2228              striExpr("1")     <= striExpr("20")      and
 2229              striExpr("1")     <= striExpr("21")      and
 2230              striExpr("1")     <= striExpr("22")      and
 2231         not (striExpr("123")   <= striExpr("")      ) and
 2232         not (striExpr("123")   <= striExpr("0")     ) and
 2233         not (striExpr("123")   <= striExpr("1")     ) and
 2234         not (striExpr("123")   <= striExpr("11")    ) and
 2235         not (striExpr("123")   <= striExpr("12")    ) and
 2236         not (striExpr("123")   <= striExpr("122")   ) and
 2237         not (striExpr("123")   <= striExpr("1222")  ) and
 2238         not (striExpr("123")   <= striExpr("1223")  ) and
 2239         not (striExpr("123")   <= striExpr("1224")  ) and
 2240              striExpr("123")   <= striExpr("123")     and
 2241              striExpr("123")   <= striExpr("124")     and
 2242              striExpr("123")   <= striExpr("13")      and
 2243              striExpr("123")   <= striExpr("2")       and
 2244              striExpr("123")   <= striExpr("21")      and
 2245              striExpr("123")   <= striExpr("22")      and
 2246              striExpr("123")   <= striExpr("222")     and
 2247              striExpr("123")   <= striExpr("2222")
 2248              ) then
 2249       writeln(" ***** STRING <= STRING does not work correct.");
 2250       okay := FALSE;
 2251     end if;
 2252 
 2253     if  "\2050;" < "\1152;" or
 2254         "\1152;" > "\2050;" then
 2255       writeln(" ***** \"\\4096;\" < \"\\1152;\" does not work correct.");
 2256       okay := FALSE;
 2257     end if;
 2258     if  "\16#0201;" < "\16#0102;" or
 2259         "\16#0102;" > "\16#0201;" then
 2260       writeln(" ***** \"\\16#0201;\" < \"\\16#0102;\" does not work correct.");
 2261       okay := FALSE;
 2262     end if;
 2263     if  "\16#030201;" < "\16#010203;" or
 2264         "\16#010203;" > "\16#030201;" then
 2265       writeln(" ***** \"\\16#030201;\" < \"\\16#010203;\" does not work correct.");
 2266       okay := FALSE;
 2267     end if;
 2268     if  "\16#04030201;" < "\16#01020304;" or
 2269         "\16#01020304;" > "\16#04030201;" then
 2270       writeln(" ***** \"\\16#04030201;\" < \"\\16#01020304;\" does not work correct.");
 2271       okay := FALSE;
 2272     end if;
 2273     if  compare("",       "")       <>  0 or
 2274         compare("",       "0")      <> -1 or
 2275         compare("",       "00")     <> -1 or
 2276         compare("",       "01")     <> -1 or
 2277         compare("",       "02")     <> -1 or
 2278         compare("",       "1")      <> -1 or
 2279         compare("",       "10")     <> -1 or
 2280         compare("",       "11")     <> -1 or
 2281         compare("",       "12")     <> -1 or
 2282         compare("",       "2")      <> -1 or
 2283         compare("",       "20")     <> -1 or
 2284         compare("",       "21")     <> -1 or
 2285         compare("",       "22")     <> -1 or
 2286         compare("",       "22222")  <> -1 or
 2287         compare("1",      "")       <>  1 or
 2288         compare("1",      "0")      <>  1 or
 2289         compare("1",      "00")     <>  1 or
 2290         compare("1",      "01")     <>  1 or
 2291         compare("1",      "02")     <>  1 or
 2292         compare("1",      "0234")   <>  1 or
 2293         compare("1",      "1")      <>  0 or
 2294         compare("1",      "10")     <> -1 or
 2295         compare("1",      "11")     <> -1 or
 2296         compare("1",      "110")    <> -1 or
 2297         compare("1",      "111")    <> -1 or
 2298         compare("1",      "112")    <> -1 or
 2299         compare("1",      "12")     <> -1 or
 2300         compare("1",      "2")      <> -1 or
 2301         compare("1",      "20")     <> -1 or
 2302         compare("1",      "21")     <> -1 or
 2303         compare("1",      "22")     <> -1 or
 2304         compare("123",    "")       <>  1 or
 2305         compare("123",    "0")      <>  1 or
 2306         compare("123",    "1")      <>  1 or
 2307         compare("123",    "11")     <>  1 or
 2308         compare("123",    "12")     <>  1 or
 2309         compare("123",    "122")    <>  1 or
 2310         compare("123",    "1222")   <>  1 or
 2311         compare("123",    "1223")   <>  1 or
 2312         compare("123",    "1224")   <>  1 or
 2313         compare("123",    "123")    <>  0 or
 2314         compare("123",    "1230")   <> -1 or
 2315         compare("123",    "1231")   <> -1 or
 2316         compare("123",    "1232")   <> -1 or
 2317         compare("123",    "1233")   <> -1 or
 2318         compare("123",    "1234")   <> -1 or
 2319         compare("123",    "124")    <> -1 or
 2320         compare("123",    "13")     <> -1 or
 2321         compare("123",    "2")      <> -1 or
 2322         compare("123",    "21")     <> -1 or
 2323         compare("123",    "22")     <> -1 or
 2324         compare("123",    "222")    <> -1 or
 2325         compare("123",    "2222")   <> -1 or
 2326         compare("",       "")       <>  0 or
 2327         compare("0",      "")       <>  1 or
 2328         compare("00",     "")       <>  1 or
 2329         compare("01",     "")       <>  1 or
 2330         compare("02",     "")       <>  1 or
 2331         compare("1",      "")       <>  1 or
 2332         compare("10",     "")       <>  1 or
 2333         compare("11",     "")       <>  1 or
 2334         compare("12",     "")       <>  1 or
 2335         compare("2",      "")       <>  1 or
 2336         compare("20",     "")       <>  1 or
 2337         compare("21",     "")       <>  1 or
 2338         compare("22",     "")       <>  1 or
 2339         compare("22222",  "")       <>  1 or
 2340         compare("",       "1")      <> -1 or
 2341         compare("0",      "1")      <> -1 or
 2342         compare("00",     "1")      <> -1 or
 2343         compare("01",     "1")      <> -1 or
 2344         compare("02",     "1")      <> -1 or
 2345         compare("0234",   "1")      <> -1 or
 2346         compare("1",      "1")      <>  0 or
 2347         compare("10",     "1")      <>  1 or
 2348         compare("11",     "1")      <>  1 or
 2349         compare("110",    "1")      <>  1 or
 2350         compare("111",    "1")      <>  1 or
 2351         compare("112",    "1")      <>  1 or
 2352         compare("12",     "1")      <>  1 or
 2353         compare("2",      "1")      <>  1 or
 2354         compare("20",     "1")      <>  1 or
 2355         compare("21",     "1")      <>  1 or
 2356         compare("22",     "1")      <>  1 or
 2357         compare("",       "123")    <> -1 or
 2358         compare("0",      "123")    <> -1 or
 2359         compare("1",      "123")    <> -1 or
 2360         compare("11",     "123")    <> -1 or
 2361         compare("12",     "123")    <> -1 or
 2362         compare("122",    "123")    <> -1 or
 2363         compare("1222",   "123")    <> -1 or
 2364         compare("1223",   "123")    <> -1 or
 2365         compare("1224",   "123")    <> -1 or
 2366         compare("123",    "123")    <>  0 or
 2367         compare("1230",   "123")    <>  1 or
 2368         compare("1231",   "123")    <>  1 or
 2369         compare("1232",   "123")    <>  1 or
 2370         compare("1233",   "123")    <>  1 or
 2371         compare("1234",   "123")    <>  1 or
 2372         compare("124",    "123")    <>  1 or
 2373         compare("13",     "123")    <>  1 or
 2374         compare("2",      "123")    <>  1 or
 2375         compare("21",     "123")    <>  1 or
 2376         compare("22",     "123")    <>  1 or
 2377         compare("222",    "123")    <>  1 or
 2378         compare("2222",   "123")    <>  1 then
 2379       writeln(" ***** compare(STRING, STRING) does not work correct.");
 2380       okay := FALSE;
 2381     end if;
 2382     arr2 := sort(arr1);
 2383     for name key index range arr2 do
 2384       ok := ok and name = arr1[index]
 2385     end for;
 2386     if not ok then
 2387       writeln(" ***** Sorting with compare(STRING, STRING) does not work correct.");
 2388       okay := FALSE;
 2389     end if;
 2390     if okay then
 2391       writeln("String comparisons work correct.");
 2392     end if;
 2393   end func;
 2394 
 2395 
 2396 const proc: check_string_length is func
 2397   local
 2398     var boolean: okay is TRUE;
 2399   begin
 2400     if  length("")                            <>  0 or
 2401         length("a")                           <>  1 or
 2402         length("ab")                          <>  2 or
 2403         length("abc")                         <>  3 or
 2404         length("abcdefghijklghijklmnopqxyz")  <> 26 or
 2405         length("\0;")                         <>  1 or
 2406         length("\0;\0;")                      <>  2 or
 2407         length("\0;\0;\0;\0;\0;\0;\0;\0;\0;") <>  9 or
 2408         length(striExpr(""))                            <>  0 or
 2409         length(striExpr("a"))                           <>  1 or
 2410         length(striExpr("ab"))                          <>  2 or
 2411         length(striExpr("abc"))                         <>  3 or
 2412         length(striExpr("abcdefghijklghijklmnopqxyz"))  <> 26 or
 2413         length(striExpr("\0;"))                         <>  1 or
 2414         length(striExpr("\0;\0;"))                      <>  2 or
 2415         length(striExpr("\0;\0;\0;\0;\0;\0;\0;\0;\0;")) <>  9 or
 2416 
 2417         length(         ""  &          "" ) <> 0 or
 2418         length(striExpr("") &          "" ) <> 0 or
 2419         length(         ""  & striExpr("")) <> 0 or
 2420         length(striExpr("") & striExpr("")) <> 0 or
 2421         length(         ""  &          "c" ) <> 1 or
 2422         length(striExpr("") &          "c" ) <> 1 or
 2423         length(         ""  & striExpr("c")) <> 1 or
 2424         length(striExpr("") & striExpr("c")) <> 1 or
 2425         length(         "ab"  &          "" ) <> 2 or
 2426         length(striExpr("ab") &          "" ) <> 2 or
 2427         length(         "ab"  & striExpr("")) <> 2 or
 2428         length(striExpr("ab") & striExpr("")) <> 2 or
 2429         length(         "ab"  &          "c" ) <> 3 or
 2430         length(striExpr("ab") &          "c" ) <> 3 or
 2431         length(         "ab"  & striExpr("c")) <> 3 or
 2432         length(striExpr("ab") & striExpr("c")) <> 3 or
 2433 
 2434         length(         ""  &          ""  &          "" ) <> 0 or
 2435         length(striExpr("") &          ""  &          "" ) <> 0 or
 2436         length(         ""  & striExpr("") &          "" ) <> 0 or
 2437         length(striExpr("") & striExpr("") &          "" ) <> 0 or
 2438         length(         ""  &          ""  & striExpr("")) <> 0 or
 2439         length(striExpr("") &          ""  & striExpr("")) <> 0 or
 2440         length(         ""  & striExpr("") & striExpr("")) <> 0 or
 2441         length(striExpr("") & striExpr("") & striExpr("")) <> 0 or
 2442         length(         ""  &          ""  &          "g" ) <> 1 or
 2443         length(striExpr("") &          ""  &          "g" ) <> 1 or
 2444         length(         ""  & striExpr("") &          "g" ) <> 1 or
 2445         length(striExpr("") & striExpr("") &          "g" ) <> 1 or
 2446         length(         ""  &          ""  & striExpr("g")) <> 1 or
 2447         length(striExpr("") &          ""  & striExpr("g")) <> 1 or
 2448         length(         ""  & striExpr("") & striExpr("g")) <> 1 or
 2449         length(striExpr("") & striExpr("") & striExpr("g")) <> 1 or
 2450         length(         ""  &          "ef"  &          "" ) <> 2 or
 2451         length(striExpr("") &          "ef"  &          "" ) <> 2 or
 2452         length(         ""  & striExpr("ef") &          "" ) <> 2 or
 2453         length(striExpr("") & striExpr("ef") &          "" ) <> 2 or
 2454         length(         ""  &          "ef"  & striExpr("")) <> 2 or
 2455         length(striExpr("") &          "ef"  & striExpr("")) <> 2 or
 2456         length(         ""  & striExpr("ef") & striExpr("")) <> 2 or
 2457         length(striExpr("") & striExpr("ef") & striExpr("")) <> 2 or
 2458         length(         ""  &          "ef"  &          "g" ) <> 3 or
 2459         length(striExpr("") &          "ef"  &          "g" ) <> 3 or
 2460         length(         ""  & striExpr("ef") &          "g" ) <> 3 or
 2461         length(striExpr("") & striExpr("ef") &          "g" ) <> 3 or
 2462         length(         ""  &          "ef"  & striExpr("g")) <> 3 or
 2463         length(striExpr("") &          "ef"  & striExpr("g")) <> 3 or
 2464         length(         ""  & striExpr("ef") & striExpr("g")) <> 3 or
 2465         length(striExpr("") & striExpr("ef") & striExpr("g")) <> 3 or
 2466         length(         "abcd"  &          ""  &          "" ) <> 4 or
 2467         length(striExpr("abcd") &          ""  &          "" ) <> 4 or
 2468         length(         "abcd"  & striExpr("") &          "" ) <> 4 or
 2469         length(striExpr("abcd") & striExpr("") &          "" ) <> 4 or
 2470         length(         "abcd"  &          ""  & striExpr("")) <> 4 or
 2471         length(striExpr("abcd") &          ""  & striExpr("")) <> 4 or
 2472         length(         "abcd"  & striExpr("") & striExpr("")) <> 4 or
 2473         length(striExpr("abcd") & striExpr("") & striExpr("")) <> 4 or
 2474         length(         "abcd"  &          ""  &          "g" ) <> 5 or
 2475         length(striExpr("abcd") &          ""  &          "g" ) <> 5 or
 2476         length(         "abcd"  & striExpr("") &          "g" ) <> 5 or
 2477         length(striExpr("abcd") & striExpr("") &          "g" ) <> 5 or
 2478         length(         "abcd"  &          ""  & striExpr("g")) <> 5 or
 2479         length(striExpr("abcd") &          ""  & striExpr("g")) <> 5 or
 2480         length(         "abcd"  & striExpr("") & striExpr("g")) <> 5 or
 2481         length(striExpr("abcd") & striExpr("") & striExpr("g")) <> 5 or
 2482         length(         "abcd"  &          "ef"  &          "" ) <> 6 or
 2483         length(striExpr("abcd") &          "ef"  &          "" ) <> 6 or
 2484         length(         "abcd"  & striExpr("ef") &          "" ) <> 6 or
 2485         length(striExpr("abcd") & striExpr("ef") &          "" ) <> 6 or
 2486         length(         "abcd"  &          "ef"  & striExpr("")) <> 6 or
 2487         length(striExpr("abcd") &          "ef"  & striExpr("")) <> 6 or
 2488         length(         "abcd"  & striExpr("ef") & striExpr("")) <> 6 or
 2489         length(striExpr("abcd") & striExpr("ef") & striExpr("")) <> 6 or
 2490         length(         "abcd"  &          "ef"  &          "g" ) <> 7 or
 2491         length(striExpr("abcd") &          "ef"  &          "g" ) <> 7 or
 2492         length(         "abcd"  & striExpr("ef") &          "g" ) <> 7 or
 2493         length(striExpr("abcd") & striExpr("ef") &          "g" ) <> 7 or
 2494         length(         "abcd"  &          "ef"  & striExpr("g")) <> 7 or
 2495         length(striExpr("abcd") &          "ef"  & striExpr("g")) <> 7 or
 2496         length(         "abcd"  & striExpr("ef") & striExpr("g")) <> 7 or
 2497         length(striExpr("abcd") & striExpr("ef") & striExpr("g")) <> 7 or
 2498 
 2499         length(         ""  &          ""  &          ""  &          "" ) <> 0 or
 2500         length(striExpr("") &          ""  &          ""  &          "" ) <> 0 or
 2501         length(         ""  & striExpr("") &          ""  &          "" ) <> 0 or
 2502         length(striExpr("") & striExpr("") &          ""  &          "" ) <> 0 or
 2503         length(         ""  &          ""  & striExpr("") &          "" ) <> 0 or
 2504         length(striExpr("") &          ""  & striExpr("") &          "" ) <> 0 or
 2505         length(         ""  & striExpr("") & striExpr("") &          "" ) <> 0 or
 2506         length(striExpr("") & striExpr("") & striExpr("") &          "" ) <> 0 or
 2507         length(         ""  &          ""  &          ""  & striExpr("")) <> 0 or
 2508         length(striExpr("") &          ""  &          ""  & striExpr("")) <> 0 or
 2509         length(         ""  & striExpr("") &          ""  & striExpr("")) <> 0 or
 2510         length(striExpr("") & striExpr("") &          ""  & striExpr("")) <> 0 or
 2511         length(         ""  &          ""  & striExpr("") & striExpr("")) <> 0 or
 2512         length(striExpr("") &          ""  & striExpr("") & striExpr("")) <> 0 or
 2513         length(         ""  & striExpr("") & striExpr("") & striExpr("")) <> 0 or
 2514         length(striExpr("") & striExpr("") & striExpr("") & striExpr("")) <> 0 or
 2515         length(         ""  &          ""  &          ""  &          "o" ) <> 1 or
 2516         length(striExpr("") &          ""  &          ""  &          "o" ) <> 1 or
 2517         length(         ""  & striExpr("") &          ""  &          "o" ) <> 1 or
 2518         length(striExpr("") & striExpr("") &          ""  &          "o" ) <> 1 or
 2519         length(         ""  &          ""  & striExpr("") &          "o" ) <> 1 or
 2520         length(striExpr("") &          ""  & striExpr("") &          "o" ) <> 1 or
 2521         length(         ""  & striExpr("") & striExpr("") &          "o" ) <> 1 or
 2522         length(striExpr("") & striExpr("") & striExpr("") &          "o" ) <> 1 or
 2523         length(         ""  &          ""  &          ""  & striExpr("o")) <> 1 or
 2524         length(striExpr("") &          ""  &          ""  & striExpr("o")) <> 1 or
 2525         length(         ""  & striExpr("") &          ""  & striExpr("o")) <> 1 or
 2526         length(striExpr("") & striExpr("") &          ""  & striExpr("o")) <> 1 or
 2527         length(         ""  &          ""  & striExpr("") & striExpr("o")) <> 1 or
 2528         length(striExpr("") &          ""  & striExpr("") & striExpr("o")) <> 1 or
 2529         length(         ""  & striExpr("") & striExpr("") & striExpr("o")) <> 1 or
 2530         length(striExpr("") & striExpr("") & striExpr("") & striExpr("o")) <> 1 or
 2531         length(         ""  &          ""  &          "mn"  &          "" ) <> 2 or
 2532         length(striExpr("") &          ""  &          "mn"  &          "" ) <> 2 or
 2533         length(         ""  & striExpr("") &          "mn"  &          "" ) <> 2 or
 2534         length(striExpr("") & striExpr("") &          "mn"  &          "" ) <> 2 or
 2535         length(         ""  &          ""  & striExpr("mn") &          "" ) <> 2 or
 2536         length(striExpr("") &          ""  & striExpr("mn") &          "" ) <> 2 or
 2537         length(         ""  & striExpr("") & striExpr("mn") &          "" ) <> 2 or
 2538         length(striExpr("") & striExpr("") & striExpr("mn") &          "" ) <> 2 or
 2539         length(         ""  &          ""  &          "mn"  & striExpr("")) <> 2 or
 2540         length(striExpr("") &          ""  &          "mn"  & striExpr("")) <> 2 or
 2541         length(         ""  & striExpr("") &          "mn"  & striExpr("")) <> 2 or
 2542         length(striExpr("") & striExpr("") &          "mn"  & striExpr("")) <> 2 or
 2543         length(         ""  &          ""  & striExpr("mn") & striExpr("")) <> 2 or
 2544         length(striExpr("") &          ""  & striExpr("mn") & striExpr("")) <> 2 or
 2545         length(         ""  & striExpr("") & striExpr("mn") & striExpr("")) <> 2 or
 2546         length(striExpr("") & striExpr("") & striExpr("mn") & striExpr("")) <> 2 or
 2547         length(         ""  &          ""  &          "mn"  &          "o" ) <> 3 or
 2548         length(striExpr("") &          ""  &          "mn"  &          "o" ) <> 3 or
 2549         length(         ""  & striExpr("") &          "mn"  &          "o" ) <> 3 or
 2550         length(striExpr("") & striExpr("") &          "mn"  &          "o" ) <> 3 or
 2551         length(         ""  &          ""  & striExpr("mn") &          "o" ) <> 3 or
 2552         length(striExpr("") &          ""  & striExpr("mn") &          "o" ) <> 3 or
 2553         length(         ""  & striExpr("") & striExpr("mn") &          "o" ) <> 3 or
 2554         length(striExpr("") & striExpr("") & striExpr("mn") &          "o" ) <> 3 or
 2555         length(         ""  &          ""  &          "mn"  & striExpr("o")) <> 3 or
 2556         length(striExpr("") &          ""  &          "mn"  & striExpr("o")) <> 3 or
 2557         length(         ""  & striExpr("") &          "mn"  & striExpr("o")) <> 3 or
 2558         length(striExpr("") & striExpr("") &          "mn"  & striExpr("o")) <> 3 or
 2559         length(         ""  &          ""  & striExpr("mn") & striExpr("o")) <> 3 or
 2560         length(striExpr("") &          ""  & striExpr("mn") & striExpr("o")) <> 3 or
 2561         length(         ""  & striExpr("") & striExpr("mn") & striExpr("o")) <> 3 or
 2562         length(striExpr("") & striExpr("") & striExpr("mn") & striExpr("o")) <> 3 or
 2563         length(         ""  &          "ijkl"  &          ""  &          "" ) <> 4 or
 2564         length(striExpr("") &          "ijkl"  &          ""  &          "" ) <> 4 or
 2565         length(         ""  & striExpr("ijkl") &          ""  &          "" ) <> 4 or
 2566         length(striExpr("") & striExpr("ijkl") &          ""  &          "" ) <> 4 or
 2567         length(         ""  &          "ijkl"  & striExpr("") &          "" ) <> 4 or
 2568         length(striExpr("") &          "ijkl"  & striExpr("") &          "" ) <> 4 or
 2569         length(         ""  & striExpr("ijkl") & striExpr("") &          "" ) <> 4 or
 2570         length(striExpr("") & striExpr("ijkl") & striExpr("") &          "" ) <> 4 or
 2571         length(         ""  &          "ijkl"  &          ""  & striExpr("")) <> 4 or
 2572         length(striExpr("") &          "ijkl"  &          ""  & striExpr("")) <> 4 or
 2573         length(         ""  & striExpr("ijkl") &          ""  & striExpr("")) <> 4 or
 2574         length(striExpr("") & striExpr("ijkl") &          ""  & striExpr("")) <> 4 or
 2575         length(         ""  &          "ijkl"  & striExpr("") & striExpr("")) <> 4 or
 2576         length(striExpr("") &          "ijkl"  & striExpr("") & striExpr("")) <> 4 or
 2577         length(         ""  & striExpr("ijkl") & striExpr("") & striExpr("")) <> 4 or
 2578         length(striExpr("") & striExpr("ijkl") & striExpr("") & striExpr("")) <> 4 or
 2579         length(         ""  &          "ijkl"  &          ""  &          "o" ) <> 5 or
 2580         length(striExpr("") &          "ijkl"  &          ""  &          "o" ) <> 5 or
 2581         length(         ""  & striExpr("ijkl") &          ""  &          "o" ) <> 5 or
 2582         length(striExpr("") & striExpr("ijkl") &          ""  &          "o" ) <> 5 or
 2583         length(         ""  &          "ijkl"  & striExpr("") &          "o" ) <> 5 or
 2584         length(striExpr("") &          "ijkl"  & striExpr("") &          "o" ) <> 5 or
 2585         length(         ""  & striExpr("ijkl") & striExpr("") &          "o" ) <> 5 or
 2586         length(striExpr("") & striExpr("ijkl") & striExpr("") &          "o" ) <> 5 or
 2587         length(         ""  &          "ijkl"  &          ""  & striExpr("o")) <> 5 or
 2588         length(striExpr("") &          "ijkl"  &          ""  & striExpr("o")) <> 5 or
 2589         length(         ""  & striExpr("ijkl") &          ""  & striExpr("o")) <> 5 or
 2590         length(striExpr("") & striExpr("ijkl") &          ""  & striExpr("o")) <> 5 or
 2591         length(         ""  &          "ijkl"  & striExpr("") & striExpr("o")) <> 5 or
 2592         length(striExpr("") &          "ijkl"  & striExpr("") & striExpr("o")) <> 5 or
 2593         length(         ""  & striExpr("ijkl") & striExpr("") & striExpr("o")) <> 5 or
 2594         length(striExpr("") & striExpr("ijkl") & striExpr("") & striExpr("o")) <> 5 or
 2595         length(         ""  &          "ijkl"  &          "mn"  &          "" ) <> 6 or
 2596         length(striExpr("") &          "ijkl"  &          "mn"  &          "" ) <> 6 or
 2597         length(         ""  & striExpr("ijkl") &          "mn"  &          "" ) <> 6 or
 2598         length(striExpr("") & striExpr("ijkl") &          "mn"  &          "" ) <> 6 or
 2599         length(         ""  &          "ijkl"  & striExpr("mn") &          "" ) <> 6 or
 2600         length(striExpr("") &          "ijkl"  & striExpr("mn") &          "" ) <> 6 or
 2601         length(         ""  & striExpr("ijkl") & striExpr("mn") &          "" ) <> 6 or
 2602         length(striExpr("") & striExpr("ijkl") & striExpr("mn") &          "" ) <> 6 or
 2603         length(         ""  &          "ijkl"  &          "mn"  & striExpr("")) <> 6 or
 2604         length(striExpr("") &          "ijkl"  &          "mn"  & striExpr("")) <> 6 or
 2605         length(         ""  & striExpr("ijkl") &          "mn"  & striExpr("")) <> 6 or
 2606         length(striExpr("") & striExpr("ijkl") &          "mn"  & striExpr("")) <> 6 or
 2607         length(         ""  &          "ijkl"  & striExpr("mn") & striExpr("")) <> 6 or
 2608         length(striExpr("") &          "ijkl"  & striExpr("mn") & striExpr("")) <> 6 or
 2609         length(         ""  & striExpr("ijkl") & striExpr("mn") & striExpr("")) <> 6 or
 2610         length(striExpr("") & striExpr("ijkl") & striExpr("mn") & striExpr("")) <> 6 or
 2611         length(         ""  &          "ijkl"  &          "mn"  &          "o" ) <> 7 or
 2612         length(striExpr("") &          "ijkl"  &          "mn"  &          "o" ) <> 7 or
 2613         length(         ""  & striExpr("ijkl") &          "mn"  &          "o" ) <> 7 or
 2614         length(striExpr("") & striExpr("ijkl") &          "mn"  &          "o" ) <> 7 or
 2615         length(         ""  &          "ijkl"  & striExpr("mn") &          "o" ) <> 7 or
 2616         length(striExpr("") &          "ijkl"  & striExpr("mn") &          "o" ) <> 7 or
 2617         length(         ""  & striExpr("ijkl") & striExpr("mn") &          "o" ) <> 7 or
 2618         length(striExpr("") & striExpr("ijkl") & striExpr("mn") &          "o" ) <> 7 or
 2619         length(         ""  &          "ijkl"  &          "mn"  & striExpr("o")) <> 7 or
 2620         length(striExpr("") &          "ijkl"  &          "mn"  & striExpr("o")) <> 7 or
 2621         length(         ""  & striExpr("ijkl") &          "mn"  & striExpr("o")) <> 7 or
 2622         length(striExpr("") & striExpr("ijkl") &          "mn"  & striExpr("o")) <> 7 or
 2623         length(         ""  &          "ijkl"  & striExpr("mn") & striExpr("o")) <> 7 or
 2624         length(striExpr("") &          "ijkl"  & striExpr("mn") & striExpr("o")) <> 7 or
 2625         length(         ""  & striExpr("ijkl") & striExpr("mn") & striExpr("o")) <> 7 or
 2626         length(striExpr("") & striExpr("ijkl") & striExpr("mn") & striExpr("o")) <> 7 or
 2627         length(         "abcdefgh"  &          ""  &          ""  &          "" ) <> 8 or
 2628         length(striExpr("abcdefgh") &          ""  &          ""  &          "" ) <> 8 or
 2629         length(         "abcdefgh"  & striExpr("") &          ""  &          "" ) <> 8 or
 2630         length(striExpr("abcdefgh") & striExpr("") &          ""  &          "" ) <> 8 or
 2631         length(         "abcdefgh"  &          ""  & striExpr("") &          "" ) <> 8 or
 2632         length(striExpr("abcdefgh") &          ""  & striExpr("") &          "" ) <> 8 or
 2633         length(         "abcdefgh"  & striExpr("") & striExpr("") &          "" ) <> 8 or
 2634         length(striExpr("abcdefgh") & striExpr("") & striExpr("") &          "" ) <> 8 or
 2635         length(         "abcdefgh"  &          ""  &          ""  & striExpr("")) <> 8 or
 2636         length(striExpr("abcdefgh") &          ""  &          ""  & striExpr("")) <> 8 or
 2637         length(         "abcdefgh"  & striExpr("") &          ""  & striExpr("")) <> 8 or
 2638         length(striExpr("abcdefgh") & striExpr("") &          ""  & striExpr("")) <> 8 or
 2639         length(         "abcdefgh"  &          ""  & striExpr("") & striExpr("")) <> 8 or
 2640         length(striExpr("abcdefgh") &          ""  & striExpr("") & striExpr("")) <> 8 or
 2641         length(         "abcdefgh"  & striExpr("") & striExpr("") & striExpr("")) <> 8 or
 2642         length(striExpr("abcdefgh") & striExpr("") & striExpr("") & striExpr("")) <> 8 or
 2643         length(         "abcdefgh"  &          ""  &          ""  &          "o" ) <> 9 or
 2644         length(striExpr("abcdefgh") &          ""  &          ""  &          "o" ) <> 9 or
 2645         length(         "abcdefgh"  & striExpr("") &          ""  &          "o" ) <> 9 or
 2646         length(striExpr("abcdefgh") & striExpr("") &          ""  &          "o" ) <> 9 or
 2647         length(         "abcdefgh"  &          ""  & striExpr("") &          "o" ) <> 9 or
 2648         length(striExpr("abcdefgh") &          ""  & striExpr("") &          "o" ) <> 9 or
 2649         length(         "abcdefgh"  & striExpr("") & striExpr("") &          "o" ) <> 9 or
 2650         length(striExpr("abcdefgh") & striExpr("") & striExpr("") &          "o" ) <> 9 or
 2651         length(         "abcdefgh"  &          ""  &          ""  & striExpr("o")) <> 9 or
 2652         length(striExpr("abcdefgh") &          ""  &          ""  & striExpr("o")) <> 9 or
 2653         length(         "abcdefgh"  & striExpr("") &          ""  & striExpr("o")) <> 9 or
 2654         length(striExpr("abcdefgh") & striExpr("") &          ""  & striExpr("o")) <> 9 or
 2655         length(         "abcdefgh"  &          ""  & striExpr("") & striExpr("o")) <> 9 or
 2656         length(striExpr("abcdefgh") &          ""  & striExpr("") & striExpr("o")) <> 9 or
 2657         length(         "abcdefgh"  & striExpr("") & striExpr("") & striExpr("o")) <> 9 or
 2658         length(striExpr("abcdefgh") & striExpr("") & striExpr("") & striExpr("o")) <> 9 or
 2659         length(         "abcdefgh"  &          ""  &          "mn"  &          "" ) <> 10 or
 2660         length(striExpr("abcdefgh") &          ""  &          "mn"  &          "" ) <> 10 or
 2661         length(         "abcdefgh"  & striExpr("") &          "mn"  &          "" ) <> 10 or
 2662         length(striExpr("abcdefgh") & striExpr("") &          "mn"  &          "" ) <> 10 or
 2663         length(         "abcdefgh"  &          ""  & striExpr("mn") &          "" ) <> 10 or
 2664         length(striExpr("abcdefgh") &          ""  & striExpr("mn") &          "" ) <> 10 or
 2665         length(         "abcdefgh"  & striExpr("") & striExpr("mn") &          "" ) <> 10 or
 2666         length(striExpr("abcdefgh") & striExpr("") & striExpr("mn") &          "" ) <> 10 or
 2667         length(         "abcdefgh"  &          ""  &          "mn"  & striExpr("")) <> 10 or
 2668         length(striExpr("abcdefgh") &          ""  &          "mn"  & striExpr("")) <> 10 or
 2669         length(         "abcdefgh"  & striExpr("") &          "mn"  & striExpr("")) <> 10 or
 2670         length(striExpr("abcdefgh") & striExpr("") &          "mn"  & striExpr("")) <> 10 or
 2671         length(         "abcdefgh"  &          ""  & striExpr("mn") & striExpr("")) <> 10 or
 2672         length(striExpr("abcdefgh") &          ""  & striExpr("mn") & striExpr("")) <> 10 or
 2673         length(         "abcdefgh"  & striExpr("") & striExpr("mn") & striExpr("")) <> 10 or
 2674         length(striExpr("abcdefgh") & striExpr("") & striExpr("mn") & striExpr("")) <> 10 or
 2675         length(         "abcdefgh"  &          ""  &          "mn"  &          "o" ) <> 11 or
 2676         length(striExpr("abcdefgh") &          ""  &          "mn"  &          "o" ) <> 11 or
 2677         length(         "abcdefgh"  & striExpr("") &          "mn"  &          "o" ) <> 11 or
 2678         length(striExpr("abcdefgh") & striExpr("") &          "mn"  &          "o" ) <> 11 or
 2679         length(         "abcdefgh"  &          ""  & striExpr("mn") &          "o" ) <> 11 or
 2680         length(striExpr("abcdefgh") &          ""  & striExpr("mn") &          "o" ) <> 11 or
 2681         length(         "abcdefgh"  & striExpr("") & striExpr("mn") &          "o" ) <> 11 or
 2682         length(striExpr("abcdefgh") & striExpr("") & striExpr("mn") &          "o" ) <> 11 or
 2683         length(         "abcdefgh"  &          ""  &          "mn"  & striExpr("o")) <> 11 or
 2684         length(striExpr("abcdefgh") &          ""  &          "mn"  & striExpr("o")) <> 11 or
 2685         length(         "abcdefgh"  & striExpr("") &          "mn"  & striExpr("o")) <> 11 or
 2686         length(striExpr("abcdefgh") & striExpr("") &          "mn"  & striExpr("o")) <> 11 or
 2687         length(         "abcdefgh"  &          ""  & striExpr("mn") & striExpr("o")) <> 11 or
 2688         length(striExpr("abcdefgh") &          ""  & striExpr("mn") & striExpr("o")) <> 11 or
 2689         length(         "abcdefgh"  & striExpr("") & striExpr("mn") & striExpr("o")) <> 11 or
 2690         length(striExpr("abcdefgh") & striExpr("") & striExpr("mn") & striExpr("o")) <> 11 or
 2691         length(         "abcdefgh"  &          "ijkl"  &          ""  &          "" ) <> 12 or
 2692         length(striExpr("abcdefgh") &          "ijkl"  &          ""  &          "" ) <> 12 or
 2693         length(         "abcdefgh"  & striExpr("ijkl") &          ""  &          "" ) <> 12 or
 2694         length(striExpr("abcdefgh") & striExpr("ijkl") &          ""  &          "" ) <> 12 or
 2695         length(         "abcdefgh"  &          "ijkl"  & striExpr("") &          "" ) <> 12 or
 2696         length(striExpr("abcdefgh") &          "ijkl"  & striExpr("") &          "" ) <> 12 or
 2697         length(         "abcdefgh"  & striExpr("ijkl") & striExpr("") &          "" ) <> 12 or
 2698         length(striExpr("abcdefgh") & striExpr("ijkl") & striExpr("") &          "" ) <> 12 or
 2699         length(         "abcdefgh"  &          "ijkl"  &          ""  & striExpr("")) <> 12 or
 2700         length(striExpr("abcdefgh") &          "ijkl"  &          ""  & striExpr("")) <> 12 or
 2701         length(         "abcdefgh"  & striExpr("ijkl") &          ""  & striExpr("")) <> 12 or
 2702         length(striExpr("abcdefgh") & striExpr("ijkl") &          ""  & striExpr("")) <> 12 or
 2703         length(         "abcdefgh"  &          "ijkl"  & striExpr("") & striExpr("")) <> 12 or
 2704         length(striExpr("abcdefgh") &          "ijkl"  & striExpr("") & striExpr("")) <> 12 or
 2705         length(         "abcdefgh"  & striExpr("ijkl") & striExpr("") & striExpr("")) <> 12 or
 2706         length(striExpr("abcdefgh") & striExpr("ijkl") & striExpr("") & striExpr("")) <> 12 or
 2707         length(         "abcdefgh"  &          "ijkl"  &          ""  &          "o" ) <> 13 or
 2708         length(striExpr("abcdefgh") &          "ijkl"  &          ""  &          "o" ) <> 13 or
 2709         length(         "abcdefgh"  & striExpr("ijkl") &          ""  &          "o" ) <> 13 or
 2710         length(striExpr("abcdefgh") & striExpr("ijkl") &          ""  &          "o" ) <> 13 or
 2711         length(         "abcdefgh"  &          "ijkl"  & striExpr("") &          "o" ) <> 13 or
 2712         length(striExpr("abcdefgh") &          "ijkl"  & striExpr("") &          "o" ) <> 13 or
 2713         length(         "abcdefgh"  & striExpr("ijkl") & striExpr("") &          "o" ) <> 13 or
 2714         length(striExpr("abcdefgh") & striExpr("ijkl") & striExpr("") &          "o" ) <> 13 or
 2715         length(         "abcdefgh"  &          "ijkl"  &          ""  & striExpr("o")) <> 13 or
 2716         length(striExpr("abcdefgh") &          "ijkl"  &          ""  & striExpr("o")) <> 13 or
 2717         length(         "abcdefgh"  & striExpr("ijkl") &          ""  & striExpr("o")) <> 13 or
 2718         length(striExpr("abcdefgh") & striExpr("ijkl") &          ""  & striExpr("o")) <> 13 or
 2719         length(         "abcdefgh"  &          "ijkl"  & striExpr("") & striExpr("o")) <> 13 or
 2720         length(striExpr("abcdefgh") &          "ijkl"  & striExpr("") & striExpr("o")) <> 13 or
 2721         length(         "abcdefgh"  & striExpr("ijkl") & striExpr("") & striExpr("o")) <> 13 or
 2722         length(striExpr("abcdefgh") & striExpr("ijkl") & striExpr("") & striExpr("o")) <> 13 or
 2723         length(         "abcdefgh"  &          "ijkl"  &          "mn"  &          "" ) <> 14 or
 2724         length(striExpr("abcdefgh") &          "ijkl"  &          "mn"  &          "" ) <> 14 or
 2725         length(         "abcdefgh"  & striExpr("ijkl") &          "mn"  &          "" ) <> 14 or
 2726         length(striExpr("abcdefgh") & striExpr("ijkl") &          "mn"  &          "" ) <> 14 or
 2727         length(         "abcdefgh"  &          "ijkl"  & striExpr("mn") &          "" ) <> 14 or
 2728         length(striExpr("abcdefgh") &          "ijkl"  & striExpr("mn") &          "" ) <> 14 or
 2729         length(         "abcdefgh"  & striExpr("ijkl") & striExpr("mn") &          "" ) <> 14 or
 2730         length(striExpr("abcdefgh") & striExpr("ijkl") & striExpr("mn") &          "" ) <> 14 or
 2731         length(         "abcdefgh"  &          "ijkl"  &          "mn"  & striExpr("")) <> 14 or
 2732         length(striExpr("abcdefgh") &          "ijkl"  &          "mn"  & striExpr("")) <> 14 or
 2733         length(         "abcdefgh"  & striExpr("ijkl") &          "mn"  & striExpr("")) <> 14 or
 2734         length(striExpr("abcdefgh") & striExpr("ijkl") &          "mn"  & striExpr("")) <> 14 or
 2735         length(         "abcdefgh"  &          "ijkl"  & striExpr("mn") & striExpr("")) <> 14 or
 2736         length(striExpr("abcdefgh") &          "ijkl"  & striExpr("mn") & striExpr("")) <> 14 or
 2737         length(         "abcdefgh"  & striExpr("ijkl") & striExpr("mn") & striExpr("")) <> 14 or
 2738         length(striExpr("abcdefgh") & striExpr("ijkl") & striExpr("mn") & striExpr("")) <> 14 or
 2739         length(         "abcdefgh"  &          "ijkl"  &          "mn"  &          "o" ) <> 15 or
 2740         length(striExpr("abcdefgh") &          "ijkl"  &          "mn"  &          "o" ) <> 15 or
 2741         length(         "abcdefgh"  & striExpr("ijkl") &          "mn"  &          "o" ) <> 15 or
 2742         length(striExpr("abcdefgh") & striExpr("ijkl") &          "mn"  &          "o" ) <> 15 or
 2743         length(         "abcdefgh"  &          "ijkl"  & striExpr("mn") &          "o" ) <> 15 or
 2744         length(striExpr("abcdefgh") &          "ijkl"  & striExpr("mn") &          "o" ) <> 15 or
 2745         length(         "abcdefgh"  & striExpr("ijkl") & striExpr("mn") &          "o" ) <> 15 or
 2746         length(striExpr("abcdefgh") & striExpr("ijkl") & striExpr("mn") &          "o" ) <> 15 or
 2747         length(         "abcdefgh"  &          "ijkl"  &          "mn"  & striExpr("o")) <> 15 or
 2748         length(striExpr("abcdefgh") &          "ijkl"  &          "mn"  & striExpr("o")) <> 15 or
 2749         length(         "abcdefgh"  & striExpr("ijkl") &          "mn"  & striExpr("o")) <> 15 or
 2750         length(striExpr("abcdefgh") & striExpr("ijkl") &          "mn"  & striExpr("o")) <> 15 or
 2751         length(         "abcdefgh"  &          "ijkl"  & striExpr("mn") & striExpr("o")) <> 15 or
 2752         length(striExpr("abcdefgh") &          "ijkl"  & striExpr("mn") & striExpr("o")) <> 15 or
 2753         length(         "abcdefgh"  & striExpr("ijkl") & striExpr("mn") & striExpr("o")) <> 15 or
 2754         length(striExpr("abcdefgh") & striExpr("ijkl") & striExpr("mn") & striExpr("o")) <> 15 or
 2755 
 2756         length(         "ab"  &          "cd"  &          "ef"  &          "gh"  &          "ij" ) <> 10 or
 2757         length(striExpr("ab") &          "cd"  &          "ef"  &          "gh"  &          "ij" ) <> 10 or
 2758         length(         "ab"  & striExpr("cd") &          "ef"  &          "gh"  &          "ij" ) <> 10 or
 2759         length(striExpr("ab") & striExpr("cd") &          "ef"  &          "gh"  &          "ij" ) <> 10 or
 2760         length(         "ab"  &          "cd"  & striExpr("ef") &          "gh"  &          "ij" ) <> 10 or
 2761         length(striExpr("ab") &          "cd"  & striExpr("ef") &          "gh"  &          "ij" ) <> 10 or
 2762         length(         "ab"  & striExpr("cd") & striExpr("ef") &          "gh"  &          "ij" ) <> 10 or
 2763         length(striExpr("ab") & striExpr("cd") & striExpr("ef") &          "gh"  &          "ij" ) <> 10 or
 2764         length(         "ab"  &          "cd"  &          "ef"  & striExpr("gh") &          "ij" ) <> 10 or
 2765         length(striExpr("ab") &          "cd"  &          "ef"  & striExpr("gh") &          "ij" ) <> 10 or
 2766         length(         "ab"  & striExpr("cd") &          "ef"  & striExpr("gh") &          "ij" ) <> 10 or
 2767         length(striExpr("ab") & striExpr("cd") &          "ef"  & striExpr("gh") &          "ij" ) <> 10 or
 2768         length(         "ab"  &          "cd"  & striExpr("ef") & striExpr("gh") &          "ij" ) <> 10 or
 2769         length(striExpr("ab") &          "cd"  & striExpr("ef") & striExpr("gh") &          "ij" ) <> 10 or
 2770         length(         "ab"  & striExpr("cd") & striExpr("ef") & striExpr("gh") &          "ij" ) <> 10 or
 2771         length(striExpr("ab") & striExpr("cd") & striExpr("ef") & striExpr("gh") &          "ij" ) <> 10 or
 2772         length(         "ab"  &          "cd"  &          "ef"  &          "gh"  & striExpr("ij")) <> 10 or
 2773         length(striExpr("ab") &          "cd"  &          "ef"  &          "gh"  & striExpr("ij")) <> 10 or
 2774         length(         "ab"  & striExpr("cd") &          "ef"  &          "gh"  & striExpr("ij")) <> 10 or
 2775         length(striExpr("ab") & striExpr("cd") &          "ef"  &          "gh"  & striExpr("ij")) <> 10 or
 2776         length(         "ab"  &          "cd"  & striExpr("ef") &          "gh"  & striExpr("ij")) <> 10 or
 2777         length(striExpr("ab") &          "cd"  & striExpr("ef") &          "gh"  & striExpr("ij")) <> 10 or
 2778         length(         "ab"  & striExpr("cd") & striExpr("ef") &          "gh"  & striExpr("ij")) <> 10 or
 2779         length(striExpr("ab") & striExpr("cd") & striExpr("ef") &          "gh"  & striExpr("ij")) <> 10 or
 2780         length(         "ab"  &          "cd"  &          "ef"  & striExpr("gh") & striExpr("ij")) <> 10 or
 2781         length(striExpr("ab") &          "cd"  &          "ef"  & striExpr("gh") & striExpr("ij")) <> 10 or
 2782         length(         "ab"  & striExpr("cd") &          "ef"  & striExpr("gh") & striExpr("ij")) <> 10 or
 2783         length(striExpr("ab") & striExpr("cd") &          "ef"  & striExpr("gh") & striExpr("ij")) <> 10 or
 2784         length(         "ab"  &          "cd"  & striExpr("ef") & striExpr("gh") & striExpr("ij")) <> 10 or
 2785         length(striExpr("ab") &          "cd"  & striExpr("ef") & striExpr("gh") & striExpr("ij")) <> 10 or
 2786         length(         "ab"  & striExpr("cd") & striExpr("ef") & striExpr("gh") & striExpr("ij")) <> 10 or
 2787         length(striExpr("ab") & striExpr("cd") & striExpr("ef") & striExpr("gh") & striExpr("ij")) <> 10 then
 2788       writeln(" ***** length(STRING) does not work correct.");
 2789       okay := FALSE;
 2790     end if;
 2791     if okay then
 2792       writeln("String length works correct.");
 2793     end if;
 2794   end func;
 2795 
 2796 
 2797 const proc: check_string_index is func
 2798   local
 2799     var boolean: okay is TRUE;
 2800   begin
 2801     if  "1" [ 1 ] <> '1' or
 2802         "1234567890" [  1 ] <> '1' or
 2803         "1234567890" [  2 ] <> '2' or
 2804         "1234567890" [  3 ] <> '3' or
 2805         "1234567890" [  4 ] <> '4' or
 2806         "1234567890" [  5 ] <> '5' or
 2807         "1234567890" [  6 ] <> '6' or
 2808         "1234567890" [  7 ] <> '7' or
 2809         "1234567890" [  8 ] <> '8' or
 2810         "1234567890" [  9 ] <> '9' or
 2811         "1234567890" [ 10 ] <> '0' then
 2812       writeln(" ***** STRING [ INDEX ] does not work correct. (1)");
 2813       okay := FALSE;
 2814     end if;
 2815     if  striExpr("1") [ 1 ] <> '1' or
 2816         striExpr("1234567890") [  1 ] <> '1' or
 2817         striExpr("1234567890") [  2 ] <> '2' or
 2818         striExpr("1234567890") [  3 ] <> '3' or
 2819         striExpr("1234567890") [  4 ] <> '4' or
 2820         striExpr("1234567890") [  5 ] <> '5' or
 2821         striExpr("1234567890") [  6 ] <> '6' or
 2822         striExpr("1234567890") [  7 ] <> '7' or
 2823         striExpr("1234567890") [  8 ] <> '8' or
 2824         striExpr("1234567890") [  9 ] <> '9' or
 2825         striExpr("1234567890") [ 10 ] <> '0' then
 2826       writeln(" ***** STRING [ INDEX ] does not work correct. (2)");
 2827       okay := FALSE;
 2828     end if;
 2829     if  "1" [intExpr( 1 )] <> '1' or
 2830         "1234567890" [intExpr(  1 )] <> '1' or
 2831         "1234567890" [intExpr(  2 )] <> '2' or
 2832         "1234567890" [intExpr(  3 )] <> '3' or
 2833         "1234567890" [intExpr(  4 )] <> '4' or
 2834         "1234567890" [intExpr(  5 )] <> '5' or
 2835         "1234567890" [intExpr(  6 )] <> '6' or
 2836         "1234567890" [intExpr(  7 )] <> '7' or
 2837         "1234567890" [intExpr(  8 )] <> '8' or
 2838         "1234567890" [intExpr(  9 )] <> '9' or
 2839         "1234567890" [intExpr( 10 )] <> '0' then
 2840       writeln(" ***** STRING [ INDEX ] does not work correct. (3)");
 2841       okay := FALSE;
 2842     end if;
 2843     if  striExpr("1") [intExpr( 1 )] <> '1' or
 2844         striExpr("1234567890") [intExpr(  1 )] <> '1' or
 2845         striExpr("1234567890") [intExpr(  2 )] <> '2' or
 2846         striExpr("1234567890") [intExpr(  3 )] <> '3' or
 2847         striExpr("1234567890") [intExpr(  4 )] <> '4' or
 2848         striExpr("1234567890") [intExpr(  5 )] <> '5' or
 2849         striExpr("1234567890") [intExpr(  6 )] <> '6' or
 2850         striExpr("1234567890") [intExpr(  7 )] <> '7' or
 2851         striExpr("1234567890") [intExpr(  8 )] <> '8' or
 2852         striExpr("1234567890") [intExpr(  9 )] <> '9' or
 2853         striExpr("1234567890") [intExpr( 10 )] <> '0' then
 2854       writeln(" ***** STRING [ INDEX ] does not work correct. (4)");
 2855       okay := FALSE;
 2856     end if;
 2857 
 2858     if okay then
 2859       writeln("String indices work correct.");
 2860     end if;
 2861   end func;
 2862 
 2863 
 2864 const func string: headOfEmptyString (in integer: stop) is
 2865   return ""[ .. stop];
 2866 
 2867 
 2868 const func string: headOfString1 (in integer: stop) is
 2869   return "1"[ .. stop];
 2870 
 2871 
 2872 const func string: headFunction (in integer: stop) is
 2873   return "1234567890"[ .. stop];
 2874 
 2875 
 2876 const func string: headFunction (in string: stri) is
 2877   return stri[ .. 1];
 2878 
 2879 
 2880 const func string: headFunction (in string: stri, in integer: stop) is
 2881   return stri[ .. stop];
 2882 
 2883 
 2884 const proc: check_string_head is func
 2885   local
 2886     var boolean: okay is TRUE;
 2887     var boolean: ok is TRUE;
 2888     var string: stri is "";
 2889   begin
 2890     if  "" [ ..             0 ] <> "" or
 2891         "" [ ..             1 ] <> "" or
 2892         "" [ ..             2 ] <> "" or
 2893         "" [ ..             5 ] <> "" or
 2894         "" [ ..             9 ] <> "" or
 2895         "" [ ..            10 ] <> "" or
 2896         "" [ ..            11 ] <> "" or
 2897         "" [ ..            15 ] <> "" or
 2898         "" [ ..  integer.last ] <> "" or
 2899         "1" [ ..             0 ] <> "" or
 2900         "1" [ ..             1 ] <> "1" or
 2901         "1" [ ..             2 ] <> "1" or
 2902         "1" [ ..             5 ] <> "1" or
 2903         "1" [ ..             9 ] <> "1" or
 2904         "1" [ ..            10 ] <> "1" or
 2905         "1" [ ..            11 ] <> "1" or
 2906         "1" [ ..            15 ] <> "1" or
 2907         "1" [ ..  integer.last ] <> "1" or
 2908         "1234567890" [ ..             0 ] <> "" or
 2909         "1234567890" [ ..             1 ] <> "1" or
 2910         "1234567890" [ ..             2 ] <> "12" or
 2911         "1234567890" [ ..             5 ] <> "12345" or
 2912         "1234567890" [ ..             9 ] <> "123456789" or
 2913         "1234567890" [ ..            10 ] <> "1234567890" or
 2914         "1234567890" [ ..            11 ] <> "1234567890" or
 2915         "1234567890" [ ..            15 ] <> "1234567890" or
 2916         "1234567890" [ ..  integer.last ] <> "1234567890" then
 2917       writeln(" ***** STRING [ .. STOP ] does not work correct. (1)");
 2918       okay := FALSE;
 2919     end if;
 2920 
 2921     if  "" [ .. intExpr(            0) ] <> "" or
 2922         "" [ .. intExpr(            1) ] <> "" or
 2923         "" [ .. intExpr(            2) ] <> "" or
 2924         "" [ .. intExpr(            5) ] <> "" or
 2925         "" [ .. intExpr(            9) ] <> "" or
 2926         "" [ .. intExpr(           10) ] <> "" or
 2927         "" [ .. intExpr(           11) ] <> "" or
 2928         "" [ .. intExpr(           15) ] <> "" or
 2929         "" [ .. intExpr( integer.last) ] <> "" or
 2930         "1" [ .. intExpr(            0) ] <> "" or
 2931         "1" [ .. intExpr(            1) ] <> "1" or
 2932         "1" [ .. intExpr(            2) ] <> "1" or
 2933         "1" [ .. intExpr(            5) ] <> "1" or
 2934         "1" [ .. intExpr(            9) ] <> "1" or
 2935         "1" [ .. intExpr(           10) ] <> "1" or
 2936         "1" [ .. intExpr(           11) ] <> "1" or
 2937         "1" [ .. intExpr(           15) ] <> "1" or
 2938         "1" [ .. intExpr( integer.last) ] <> "1" or
 2939         "1234567890" [ .. intExpr(            0) ] <> "" or
 2940         "1234567890" [ .. intExpr(            1) ] <> "1" or
 2941         "1234567890" [ .. intExpr(            2) ] <> "12" or
 2942         "1234567890" [ .. intExpr(            5) ] <> "12345" or
 2943         "1234567890" [ .. intExpr(            9) ] <> "123456789" or
 2944         "1234567890" [ .. intExpr(           10) ] <> "1234567890" or
 2945         "1234567890" [ .. intExpr(           11) ] <> "1234567890" or
 2946         "1234567890" [ .. intExpr(           15) ] <> "1234567890" or
 2947         "1234567890" [ .. intExpr( integer.last) ] <> "1234567890" then
 2948       writeln(" ***** STRING [ .. STOP ] does not work correct. (2)");
 2949       okay := FALSE;
 2950     end if;
 2951 
 2952     if  striExpr("") [ ..             0 ] <> "" or
 2953         striExpr("") [ ..             1 ] <> "" or
 2954         striExpr("") [ ..             2 ] <> "" or
 2955         striExpr("") [ ..             5 ] <> "" or
 2956         striExpr("") [ ..             9 ] <> "" or
 2957         striExpr("") [ ..            10 ] <> "" or
 2958         striExpr("") [ ..            11 ] <> "" or
 2959         striExpr("") [ ..            15 ] <> "" or
 2960         striExpr("") [ ..  integer.last ] <> "" or
 2961         striExpr("1") [ ..             0 ] <> "" or
 2962         striExpr("1") [ ..             1 ] <> "1" or
 2963         striExpr("1") [ ..             2 ] <> "1" or
 2964         striExpr("1") [ ..             5 ] <> "1" or
 2965         striExpr("1") [ ..             9 ] <> "1" or
 2966         striExpr("1") [ ..            10 ] <> "1" or
 2967         striExpr("1") [ ..            11 ] <> "1" or
 2968         striExpr("1") [ ..            15 ] <> "1" or
 2969         striExpr("1") [ ..  integer.last ] <> "1" or
 2970         striExpr("1234567890") [ ..             0 ] <> "" or
 2971         striExpr("1234567890") [ ..             1 ] <> "1" or
 2972         striExpr("1234567890") [ ..             2 ] <> "12" or
 2973         striExpr("1234567890") [ ..             5 ] <> "12345" or
 2974         striExpr("1234567890") [ ..             9 ] <> "123456789" or
 2975         striExpr("1234567890") [ ..            10 ] <> "1234567890" or
 2976         striExpr("1234567890") [ ..            11 ] <> "1234567890" or
 2977         striExpr("1234567890") [ ..            15 ] <> "1234567890" or
 2978         striExpr("1234567890") [ ..  integer.last ] <> "1234567890" then
 2979       writeln(" ***** STRING [ .. STOP ] does not work correct. (3)");
 2980       okay := FALSE;
 2981     end if;
 2982 
 2983     if  striExpr("") [ .. intExpr(            0) ] <> "" or
 2984         striExpr("") [ .. intExpr(            1) ] <> "" or
 2985         striExpr("") [ .. intExpr(            2) ] <> "" or
 2986         striExpr("") [ .. intExpr(            5) ] <> "" or
 2987         striExpr("") [ .. intExpr(            9) ] <> "" or
 2988         striExpr("") [ .. intExpr(           10) ] <> "" or
 2989         striExpr("") [ .. intExpr(           11) ] <> "" or
 2990         striExpr("") [ .. intExpr(           15) ] <> "" or
 2991         striExpr("") [ .. intExpr( integer.last) ] <> "" or
 2992         striExpr("1") [ .. intExpr(            0) ] <> "" or
 2993         striExpr("1") [ .. intExpr(            1) ] <> "1" or
 2994         striExpr("1") [ .. intExpr(            2) ] <> "1" or
 2995         striExpr("1") [ .. intExpr(            5) ] <> "1" or
 2996         striExpr("1") [ .. intExpr(            9) ] <> "1" or
 2997         striExpr("1") [ .. intExpr(           10) ] <> "1" or
 2998         striExpr("1") [ .. intExpr(           11) ] <> "1" or
 2999         striExpr("1") [ .. intExpr(           15) ] <> "1" or
 3000         striExpr("1") [ .. intExpr( integer.last) ] <> "1" or
 3001         striExpr("1234567890") [ .. intExpr(            0) ] <> "" or
 3002         striExpr("1234567890") [ .. intExpr(            1) ] <> "1" or
 3003         striExpr("1234567890") [ .. intExpr(            2) ] <> "12" or
 3004         striExpr("1234567890") [ .. intExpr(            5) ] <> "12345" or
 3005         striExpr("1234567890") [ .. intExpr(            9) ] <> "123456789" or
 3006         striExpr("1234567890") [ .. intExpr(           10) ] <> "1234567890" or
 3007         striExpr("1234567890") [ .. intExpr(           11) ] <> "1234567890" or
 3008         striExpr("1234567890") [ .. intExpr(           15) ] <> "1234567890" or
 3009         striExpr("1234567890") [ .. intExpr( integer.last) ] <> "1234567890" then
 3010       writeln(" ***** STRING [ .. STOP ] does not work correct. (4)");
 3011       okay := FALSE;
 3012     end if;
 3013 
 3014     stri := "" [ ..             0 ]; ok := ok and stri = "";
 3015     stri := "" [ ..             1 ]; ok := ok and stri = "";
 3016     stri := "" [ ..             2 ]; ok := ok and stri = "";
 3017     stri := "" [ ..             5 ]; ok := ok and stri = "";
 3018     stri := "" [ ..             9 ]; ok := ok and stri = "";
 3019     stri := "" [ ..            10 ]; ok := ok and stri = "";
 3020     stri := "" [ ..            11 ]; ok := ok and stri = "";
 3021     stri := "" [ ..            15 ]; ok := ok and stri = "";
 3022     stri := "" [ ..  integer.last ]; ok := ok and stri = "";
 3023     stri := "1" [ ..             0 ]; ok := ok and stri = "";
 3024     stri := "1" [ ..             1 ]; ok := ok and stri = "1";
 3025     stri := "1" [ ..             2 ]; ok := ok and stri = "1";
 3026     stri := "1" [ ..             5 ]; ok := ok and stri = "1";
 3027     stri := "1" [ ..             9 ]; ok := ok and stri = "1";
 3028     stri := "1" [ ..            10 ]; ok := ok and stri = "1";
 3029     stri := "1" [ ..            11 ]; ok := ok and stri = "1";
 3030     stri := "1" [ ..            15 ]; ok := ok and stri = "1";
 3031     stri := "1" [ ..  integer.last ]; ok := ok and stri = "1";
 3032     stri := "1234567890" [ ..             0 ]; ok := ok and stri = "";
 3033     stri := "1234567890" [ ..             1 ]; ok := ok and stri = "1";
 3034     stri := "1234567890" [ ..             2 ]; ok := ok and stri = "12";
 3035     stri := "1234567890" [ ..             5 ]; ok := ok and stri = "12345";
 3036     stri := "1234567890" [ ..             9 ]; ok := ok and stri = "123456789";
 3037     stri := "1234567890" [ ..            10 ]; ok := ok and stri = "1234567890";
 3038     stri := "1234567890" [ ..            11 ]; ok := ok and stri = "1234567890";
 3039     stri := "1234567890" [ ..            15 ]; ok := ok and stri = "1234567890";
 3040     stri := "1234567890" [ ..  integer.last ]; ok := ok and stri = "1234567890";
 3041     if not ok then
 3042       writeln(" ***** stri := STRING [ .. STOP ] does not work correct. (1)");
 3043       okay := FALSE;
 3044     end if;
 3045 
 3046     ok := TRUE;
 3047     stri := "" [ .. intExpr(            0) ]; ok := ok and stri = "";
 3048     stri := "" [ .. intExpr(            1) ]; ok := ok and stri = "";
 3049     stri := "" [ .. intExpr(            2) ]; ok := ok and stri = "";
 3050     stri := "" [ .. intExpr(            5) ]; ok := ok and stri = "";
 3051     stri := "" [ .. intExpr(            9) ]; ok := ok and stri = "";
 3052     stri := "" [ .. intExpr(           10) ]; ok := ok and stri = "";
 3053     stri := "" [ .. intExpr(           11) ]; ok := ok and stri = "";
 3054     stri := "" [ .. intExpr(           15) ]; ok := ok and stri = "";
 3055     stri := "" [ .. intExpr( integer.last) ]; ok := ok and stri = "";
 3056     stri := "1" [ .. intExpr(            0) ]; ok := ok and stri = "";
 3057     stri := "1" [ .. intExpr(            1) ]; ok := ok and stri = "1";
 3058     stri := "1" [ .. intExpr(            2) ]; ok := ok and stri = "1";
 3059     stri := "1" [ .. intExpr(            5) ]; ok := ok and stri = "1";
 3060     stri := "1" [ .. intExpr(            9) ]; ok := ok and stri = "1";
 3061     stri := "1" [ .. intExpr(           10) ]; ok := ok and stri = "1";
 3062     stri := "1" [ .. intExpr(           11) ]; ok := ok and stri = "1";
 3063     stri := "1" [ .. intExpr(           15) ]; ok := ok and stri = "1";
 3064     stri := "1" [ .. intExpr( integer.last) ]; ok := ok and stri = "1";
 3065     stri := "1234567890" [ .. intExpr(            0) ]; ok := ok and stri = "";
 3066     stri := "1234567890" [ .. intExpr(            1) ]; ok := ok and stri = "1";
 3067     stri := "1234567890" [ .. intExpr(            2) ]; ok := ok and stri = "12";
 3068     stri := "1234567890" [ .. intExpr(            5) ]; ok := ok and stri = "12345";
 3069     stri := "1234567890" [ .. intExpr(            9) ]; ok := ok and stri = "123456789";
 3070     stri := "1234567890" [ .. intExpr(           10) ]; ok := ok and stri = "1234567890";
 3071     stri := "1234567890" [ .. intExpr(           11) ]; ok := ok and stri = "1234567890";
 3072     stri := "1234567890" [ .. intExpr(           15) ]; ok := ok and stri = "1234567890";
 3073     stri := "1234567890" [ .. intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 3074     if not ok then
 3075       writeln(" ***** stri := STRING [ .. STOP ] does not work correct. (2)");
 3076       okay := FALSE;
 3077     end if;
 3078 
 3079     ok := TRUE;
 3080     stri := striExpr("") [ ..             0 ]; ok := ok and stri = "";
 3081     stri := striExpr("") [ ..             1 ]; ok := ok and stri = "";
 3082     stri := striExpr("") [ ..             2 ]; ok := ok and stri = "";
 3083     stri := striExpr("") [ ..             5 ]; ok := ok and stri = "";
 3084     stri := striExpr("") [ ..             9 ]; ok := ok and stri = "";
 3085     stri := striExpr("") [ ..            10 ]; ok := ok and stri = "";
 3086     stri := striExpr("") [ ..            11 ]; ok := ok and stri = "";
 3087     stri := striExpr("") [ ..            15 ]; ok := ok and stri = "";
 3088     stri := striExpr("") [ ..  integer.last ]; ok := ok and stri = "";
 3089     stri := striExpr("1") [ ..             0 ]; ok := ok and stri = "";
 3090     stri := striExpr("1") [ ..             1 ]; ok := ok and stri = "1";
 3091     stri := striExpr("1") [ ..             2 ]; ok := ok and stri = "1";
 3092     stri := striExpr("1") [ ..             5 ]; ok := ok and stri = "1";
 3093     stri := striExpr("1") [ ..             9 ]; ok := ok and stri = "1";
 3094     stri := striExpr("1") [ ..            10 ]; ok := ok and stri = "1";
 3095     stri := striExpr("1") [ ..            11 ]; ok := ok and stri = "1";
 3096     stri := striExpr("1") [ ..            15 ]; ok := ok and stri = "1";
 3097     stri := striExpr("1") [ ..  integer.last ]; ok := ok and stri = "1";
 3098     stri := striExpr("1234567890") [ ..             0 ]; ok := ok and stri = "";
 3099     stri := striExpr("1234567890") [ ..             1 ]; ok := ok and stri = "1";
 3100     stri := striExpr("1234567890") [ ..             2 ]; ok := ok and stri = "12";
 3101     stri := striExpr("1234567890") [ ..             5 ]; ok := ok and stri = "12345";
 3102     stri := striExpr("1234567890") [ ..             9 ]; ok := ok and stri = "123456789";
 3103     stri := striExpr("1234567890") [ ..            10 ]; ok := ok and stri = "1234567890";
 3104     stri := striExpr("1234567890") [ ..            11 ]; ok := ok and stri = "1234567890";
 3105     stri := striExpr("1234567890") [ ..            15 ]; ok := ok and stri = "1234567890";
 3106     stri := striExpr("1234567890") [ ..  integer.last ]; ok := ok and stri = "1234567890";
 3107     if not ok then
 3108       writeln(" ***** stri := STRING [ .. STOP ] does not work correct. (3)");
 3109       okay := FALSE;
 3110     end if;
 3111 
 3112     ok := TRUE;
 3113     stri := striExpr("") [ .. intExpr(            0) ]; ok := ok and stri = "";
 3114     stri := striExpr("") [ .. intExpr(            1) ]; ok := ok and stri = "";
 3115     stri := striExpr("") [ .. intExpr(            2) ]; ok := ok and stri = "";
 3116     stri := striExpr("") [ .. intExpr(            5) ]; ok := ok and stri = "";
 3117     stri := striExpr("") [ .. intExpr(            9) ]; ok := ok and stri = "";
 3118     stri := striExpr("") [ .. intExpr(           10) ]; ok := ok and stri = "";
 3119     stri := striExpr("") [ .. intExpr(           11) ]; ok := ok and stri = "";
 3120     stri := striExpr("") [ .. intExpr(           15) ]; ok := ok and stri = "";
 3121     stri := striExpr("") [ .. intExpr( integer.last) ]; ok := ok and stri = "";
 3122     stri := striExpr("1") [ .. intExpr(            0) ]; ok := ok and stri = "";
 3123     stri := striExpr("1") [ .. intExpr(            1) ]; ok := ok and stri = "1";
 3124     stri := striExpr("1") [ .. intExpr(            2) ]; ok := ok and stri = "1";
 3125     stri := striExpr("1") [ .. intExpr(            5) ]; ok := ok and stri = "1";
 3126     stri := striExpr("1") [ .. intExpr(            9) ]; ok := ok and stri = "1";
 3127     stri := striExpr("1") [ .. intExpr(           10) ]; ok := ok and stri = "1";
 3128     stri := striExpr("1") [ .. intExpr(           11) ]; ok := ok and stri = "1";
 3129     stri := striExpr("1") [ .. intExpr(           15) ]; ok := ok and stri = "1";
 3130     stri := striExpr("1") [ .. intExpr( integer.last) ]; ok := ok and stri = "1";
 3131     stri := striExpr("1234567890") [ .. intExpr(            0) ]; ok := ok and stri = "";
 3132     stri := striExpr("1234567890") [ .. intExpr(            1) ]; ok := ok and stri = "1";
 3133     stri := striExpr("1234567890") [ .. intExpr(            2) ]; ok := ok and stri = "12";
 3134     stri := striExpr("1234567890") [ .. intExpr(            5) ]; ok := ok and stri = "12345";
 3135     stri := striExpr("1234567890") [ .. intExpr(            9) ]; ok := ok and stri = "123456789";
 3136     stri := striExpr("1234567890") [ .. intExpr(           10) ]; ok := ok and stri = "1234567890";
 3137     stri := striExpr("1234567890") [ .. intExpr(           11) ]; ok := ok and stri = "1234567890";
 3138     stri := striExpr("1234567890") [ .. intExpr(           15) ]; ok := ok and stri = "1234567890";
 3139     stri := striExpr("1234567890") [ .. intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 3140     if not ok then
 3141       writeln(" ***** stri := STRING [ .. STOP ] does not work correct. (4)");
 3142       okay := FALSE;
 3143     end if;
 3144 
 3145     if  headOfEmptyString(            0) <> "" or
 3146         headOfEmptyString(            1) <> "" or
 3147         headOfEmptyString(            2) <> "" or
 3148         headOfEmptyString(            5) <> "" or
 3149         headOfEmptyString(            9) <> "" or
 3150         headOfEmptyString(           10) <> "" or
 3151         headOfEmptyString(           11) <> "" or
 3152         headOfEmptyString(           15) <> "" or
 3153         headOfEmptyString( integer.last) <> "" or
 3154         headOfEmptyString(intExpr(            0)) <> "" or
 3155         headOfEmptyString(intExpr(            1)) <> "" or
 3156         headOfEmptyString(intExpr(            2)) <> "" or
 3157         headOfEmptyString(intExpr(            5)) <> "" or
 3158         headOfEmptyString(intExpr(            9)) <> "" or
 3159         headOfEmptyString(intExpr(           10)) <> "" or
 3160         headOfEmptyString(intExpr(           11)) <> "" or
 3161         headOfEmptyString(intExpr(           15)) <> "" or
 3162         headOfEmptyString(intExpr( integer.last)) <> "" then
 3163       writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (1)");
 3164       okay := FALSE;
 3165     end if;
 3166 
 3167     if  headOfString1(            0) <> "" or
 3168         headOfString1(            1) <> "1" or
 3169         headOfString1(            2) <> "1" or
 3170         headOfString1(            5) <> "1" or
 3171         headOfString1(            9) <> "1" or
 3172         headOfString1(           10) <> "1" or
 3173         headOfString1(           11) <> "1" or
 3174         headOfString1(           15) <> "1" or
 3175         headOfString1( integer.last) <> "1" or
 3176         headOfString1(intExpr(            0)) <> "" or
 3177         headOfString1(intExpr(            1)) <> "1" or
 3178         headOfString1(intExpr(            2)) <> "1" or
 3179         headOfString1(intExpr(            5)) <> "1" or
 3180         headOfString1(intExpr(            9)) <> "1" or
 3181         headOfString1(intExpr(           10)) <> "1" or
 3182         headOfString1(intExpr(           11)) <> "1" or
 3183         headOfString1(intExpr(           15)) <> "1" or
 3184         headOfString1(intExpr( integer.last)) <> "1" then
 3185       writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (2)");
 3186       okay := FALSE;
 3187     end if;
 3188 
 3189     if  headFunction(            0) <> "" or
 3190         headFunction(            1) <> "1" or
 3191         headFunction(            2) <> "12" or
 3192         headFunction(            5) <> "12345" or
 3193         headFunction(            9) <> "123456789" or
 3194         headFunction(           10) <> "1234567890" or
 3195         headFunction(           11) <> "1234567890" or
 3196         headFunction(           15) <> "1234567890" or
 3197         headFunction( integer.last) <> "1234567890" or
 3198         headFunction(intExpr(            0)) <> "" or
 3199         headFunction(intExpr(            1)) <> "1" or
 3200         headFunction(intExpr(            2)) <> "12" or
 3201         headFunction(intExpr(            5)) <> "12345" or
 3202         headFunction(intExpr(            9)) <> "123456789" or
 3203         headFunction(intExpr(           10)) <> "1234567890" or
 3204         headFunction(intExpr(           11)) <> "1234567890" or
 3205         headFunction(intExpr(           15)) <> "1234567890" or
 3206         headFunction(intExpr( integer.last)) <> "1234567890" then
 3207       writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (3)");
 3208       okay := FALSE;
 3209     end if;
 3210 
 3211     if  headFunction(          "") <> "" or
 3212         headFunction(         "1") <> "1" or
 3213         headFunction("1234567890") <> "1" or
 3214         headFunction(striExpr(          "")) <> "" or
 3215         headFunction(striExpr(         "1")) <> "1" or
 3216         headFunction(striExpr("1234567890")) <> "1" then
 3217       writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (4)");
 3218       okay := FALSE;
 3219     end if;
 3220 
 3221     if  headFunction("",             0) <> "" or
 3222         headFunction("",             1) <> "" or
 3223         headFunction("",             2) <> "" or
 3224         headFunction("",             5) <> "" or
 3225         headFunction("",             9) <> "" or
 3226         headFunction("",            10) <> "" or
 3227         headFunction("",            11) <> "" or
 3228         headFunction("",            15) <> "" or
 3229         headFunction("",  integer.last) <> "" or
 3230         headFunction("1",             0) <> "" or
 3231         headFunction("1",             1) <> "1" or
 3232         headFunction("1",             2) <> "1" or
 3233         headFunction("1",             5) <> "1" or
 3234         headFunction("1",             9) <> "1" or
 3235         headFunction("1",            10) <> "1" or
 3236         headFunction("1",            11) <> "1" or
 3237         headFunction("1",            15) <> "1" or
 3238         headFunction("1",  integer.last) <> "1" or
 3239         headFunction("1234567890",             0) <> "" or
 3240         headFunction("1234567890",             1) <> "1" or
 3241         headFunction("1234567890",             2) <> "12" or
 3242         headFunction("1234567890",             5) <> "12345" or
 3243         headFunction("1234567890",             9) <> "123456789" or
 3244         headFunction("1234567890",            10) <> "1234567890" or
 3245         headFunction("1234567890",            11) <> "1234567890" or
 3246         headFunction("1234567890",            15) <> "1234567890" or
 3247         headFunction("1234567890",  integer.last) <> "1234567890" then
 3248       writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (5)");
 3249       okay := FALSE;
 3250     end if;
 3251 
 3252     if  headFunction("", intExpr(            0)) <> "" or
 3253         headFunction("", intExpr(            1)) <> "" or
 3254         headFunction("", intExpr(            2)) <> "" or
 3255         headFunction("", intExpr(            5)) <> "" or
 3256         headFunction("", intExpr(            9)) <> "" or
 3257         headFunction("", intExpr(           10)) <> "" or
 3258         headFunction("", intExpr(           11)) <> "" or
 3259         headFunction("", intExpr(           15)) <> "" or
 3260         headFunction("", intExpr( integer.last)) <> "" or
 3261         headFunction("1", intExpr(            0)) <> "" or
 3262         headFunction("1", intExpr(            1)) <> "1" or
 3263         headFunction("1", intExpr(            2)) <> "1" or
 3264         headFunction("1", intExpr(            5)) <> "1" or
 3265         headFunction("1", intExpr(            9)) <> "1" or
 3266         headFunction("1", intExpr(           10)) <> "1" or
 3267         headFunction("1", intExpr(           11)) <> "1" or
 3268         headFunction("1", intExpr(           15)) <> "1" or
 3269         headFunction("1", intExpr( integer.last)) <> "1" or
 3270         headFunction("1234567890", intExpr(            0)) <> "" or
 3271         headFunction("1234567890", intExpr(            1)) <> "1" or
 3272         headFunction("1234567890", intExpr(            2)) <> "12" or
 3273         headFunction("1234567890", intExpr(            5)) <> "12345" or
 3274         headFunction("1234567890", intExpr(            9)) <> "123456789" or
 3275         headFunction("1234567890", intExpr(           10)) <> "1234567890" or
 3276         headFunction("1234567890", intExpr(           11)) <> "1234567890" or
 3277         headFunction("1234567890", intExpr(           15)) <> "1234567890" or
 3278         headFunction("1234567890", intExpr( integer.last)) <> "1234567890" then
 3279       writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (6)");
 3280       okay := FALSE;
 3281     end if;
 3282 
 3283     if  headFunction(striExpr(""),             0) <> "" or
 3284         headFunction(striExpr(""),             1) <> "" or
 3285         headFunction(striExpr(""),             2) <> "" or
 3286         headFunction(striExpr(""),             5) <> "" or
 3287         headFunction(striExpr(""),             9) <> "" or
 3288         headFunction(striExpr(""),            10) <> "" or
 3289         headFunction(striExpr(""),            11) <> "" or
 3290         headFunction(striExpr(""),            15) <> "" or
 3291         headFunction(striExpr(""),  integer.last) <> "" or
 3292         headFunction(striExpr("1"),             0) <> "" or
 3293         headFunction(striExpr("1"),             1) <> "1" or
 3294         headFunction(striExpr("1"),             2) <> "1" or
 3295         headFunction(striExpr("1"),             5) <> "1" or
 3296         headFunction(striExpr("1"),             9) <> "1" or
 3297         headFunction(striExpr("1"),            10) <> "1" or
 3298         headFunction(striExpr("1"),            11) <> "1" or
 3299         headFunction(striExpr("1"),            15) <> "1" or
 3300         headFunction(striExpr("1"),  integer.last) <> "1" or
 3301         headFunction(striExpr("1234567890"),             0) <> "" or
 3302         headFunction(striExpr("1234567890"),             1) <> "1" or
 3303         headFunction(striExpr("1234567890"),             2) <> "12" or
 3304         headFunction(striExpr("1234567890"),             5) <> "12345" or
 3305         headFunction(striExpr("1234567890"),             9) <> "123456789" or
 3306         headFunction(striExpr("1234567890"),            10) <> "1234567890" or
 3307         headFunction(striExpr("1234567890"),            11) <> "1234567890" or
 3308         headFunction(striExpr("1234567890"),            15) <> "1234567890" or
 3309         headFunction(striExpr("1234567890"),  integer.last) <> "1234567890" then
 3310       writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (7)");
 3311       okay := FALSE;
 3312     end if;
 3313 
 3314     if  headFunction(striExpr(""), intExpr(            0)) <> "" or
 3315         headFunction(striExpr(""), intExpr(            1)) <> "" or
 3316         headFunction(striExpr(""), intExpr(            2)) <> "" or
 3317         headFunction(striExpr(""), intExpr(            5)) <> "" or
 3318         headFunction(striExpr(""), intExpr(            9)) <> "" or
 3319         headFunction(striExpr(""), intExpr(           10)) <> "" or
 3320         headFunction(striExpr(""), intExpr(           11)) <> "" or
 3321         headFunction(striExpr(""), intExpr(           15)) <> "" or
 3322         headFunction(striExpr(""), intExpr( integer.last)) <> "" or
 3323         headFunction(striExpr("1"), intExpr(            0)) <> "" or
 3324         headFunction(striExpr("1"), intExpr(            1)) <> "1" or
 3325         headFunction(striExpr("1"), intExpr(            2)) <> "1" or
 3326         headFunction(striExpr("1"), intExpr(            5)) <> "1" or
 3327         headFunction(striExpr("1"), intExpr(            9)) <> "1" or
 3328         headFunction(striExpr("1"), intExpr(           10)) <> "1" or
 3329         headFunction(striExpr("1"), intExpr(           11)) <> "1" or
 3330         headFunction(striExpr("1"), intExpr(           15)) <> "1" or
 3331         headFunction(striExpr("1"), intExpr( integer.last)) <> "1" or
 3332         headFunction(striExpr("1234567890"), intExpr(            0)) <> "" or
 3333         headFunction(striExpr("1234567890"), intExpr(            1)) <> "1" or
 3334         headFunction(striExpr("1234567890"), intExpr(            2)) <> "12" or
 3335         headFunction(striExpr("1234567890"), intExpr(            5)) <> "12345" or
 3336         headFunction(striExpr("1234567890"), intExpr(            9)) <> "123456789" or
 3337         headFunction(striExpr("1234567890"), intExpr(           10)) <> "1234567890" or
 3338         headFunction(striExpr("1234567890"), intExpr(           11)) <> "1234567890" or
 3339         headFunction(striExpr("1234567890"), intExpr(           15)) <> "1234567890" or
 3340         headFunction(striExpr("1234567890"), intExpr( integer.last)) <> "1234567890" then
 3341       writeln(" ***** STRING [ .. STOP ] via a function does not work correct. (8)");
 3342       okay := FALSE;
 3343     end if;
 3344 
 3345     if okay then
 3346       writeln("String head works correct.");
 3347     end if;
 3348   end func;
 3349 
 3350 
 3351 const func string: tailOfEmptyString (in integer: stop) is
 3352   return ""[stop .. ];
 3353 
 3354 
 3355 const func string: tailOfString1 (in integer: stop) is
 3356   return "1"[stop .. ];
 3357 
 3358 
 3359 const func string: tailFunction (in integer: start) is
 3360   return "1234567890"[start .. ];
 3361 
 3362 
 3363 const func string: tailFunction (in string: stri) is
 3364   return stri[1 .. ];
 3365 
 3366 
 3367 const func string: tailFunction (in string: stri, in integer: start) is
 3368   return stri[start .. ];
 3369 
 3370 
 3371 const proc: check_string_tail is func
 3372   local
 3373     var boolean: okay is TRUE;
 3374     var boolean: ok is TRUE;
 3375     var string: stri is "";
 3376   begin
 3377     if  "" [             1 .. ] <> "" or
 3378         "" [             2 .. ] <> "" or
 3379         "" [             5 .. ] <> "" or
 3380         "" [             9 .. ] <> "" or
 3381         "" [            10 .. ] <> "" or
 3382         "" [            11 .. ] <> "" or
 3383         "" [            15 .. ] <> "" or
 3384         "" [  integer.last .. ] <> "" or
 3385         "1" [             1 .. ] <> "1" or
 3386         "1" [             2 .. ] <> "" or
 3387         "1" [             5 .. ] <> "" or
 3388         "1" [             9 .. ] <> "" or
 3389         "1" [            10 .. ] <> "" or
 3390         "1" [            11 .. ] <> "" or
 3391         "1" [            15 .. ] <> "" or
 3392         "1" [  integer.last .. ] <> "" or
 3393         "1234567890" [             1 .. ] <> "1234567890" or
 3394         "1234567890" [             2 .. ] <> "234567890" or
 3395         "1234567890" [             5 .. ] <> "567890" or
 3396         "1234567890" [             9 .. ] <> "90" or
 3397         "1234567890" [            10 .. ] <> "0" or
 3398         "1234567890" [            11 .. ] <> "" or
 3399         "1234567890" [            15 .. ] <> "" or
 3400         "1234567890" [  integer.last .. ] <> "" then
 3401       writeln(" ***** STRING [ START .. ] does not work correct. (1)");
 3402       okay := FALSE;
 3403     end if;
 3404 
 3405     if  "" [ intExpr(            1) .. ] <> "" or
 3406         "" [ intExpr(            2) .. ] <> "" or
 3407         "" [ intExpr(            5) .. ] <> "" or
 3408         "" [ intExpr(            9) .. ] <> "" or
 3409         "" [ intExpr(           10) .. ] <> "" or
 3410         "" [ intExpr(           11) .. ] <> "" or
 3411         "" [ intExpr(           15) .. ] <> "" or
 3412         "" [ intExpr( integer.last) .. ] <> "" or
 3413         "1" [ intExpr(            1) .. ] <> "1" or
 3414         "1" [ intExpr(            2) .. ] <> "" or
 3415         "1" [ intExpr(            5) .. ] <> "" or
 3416         "1" [ intExpr(            9) .. ] <> "" or
 3417         "1" [ intExpr(           10) .. ] <> "" or
 3418         "1" [ intExpr(           11) .. ] <> "" or
 3419         "1" [ intExpr(           15) .. ] <> "" or
 3420         "1" [ intExpr( integer.last) .. ] <> "" or
 3421         "1234567890" [ intExpr(            1) .. ] <> "1234567890" or
 3422         "1234567890" [ intExpr(            2) .. ] <> "234567890" or
 3423         "1234567890" [ intExpr(            5) .. ] <> "567890" or
 3424         "1234567890" [ intExpr(            9) .. ] <> "90" or
 3425         "1234567890" [ intExpr(           10) .. ] <> "0" or
 3426         "1234567890" [ intExpr(           11) .. ] <> "" or
 3427         "1234567890" [ intExpr(           15) .. ] <> "" or
 3428         "1234567890" [ intExpr( integer.last) .. ] <> "" then
 3429       writeln(" ***** STRING [ START .. ] does not work correct. (2)");
 3430       okay := FALSE;
 3431     end if;
 3432 
 3433     if  striExpr("") [             1 .. ] <> "" or
 3434         striExpr("") [             2 .. ] <> "" or
 3435         striExpr("") [             5 .. ] <> "" or
 3436         striExpr("") [             9 .. ] <> "" or
 3437         striExpr("") [            10 .. ] <> "" or
 3438         striExpr("") [            11 .. ] <> "" or
 3439         striExpr("") [            15 .. ] <> "" or
 3440         striExpr("") [  integer.last .. ] <> "" or
 3441         striExpr("1") [             1 .. ] <> "1" or
 3442         striExpr("1") [             2 .. ] <> "" or
 3443         striExpr("1") [             5 .. ] <> "" or
 3444         striExpr("1") [             9 .. ] <> "" or
 3445         striExpr("1") [            10 .. ] <> "" or
 3446         striExpr("1") [            11 .. ] <> "" or
 3447         striExpr("1") [            15 .. ] <> "" or
 3448         striExpr("1") [  integer.last .. ] <> "" or
 3449         striExpr("1234567890") [             1 .. ] <> "1234567890" or
 3450         striExpr("1234567890") [             2 .. ] <> "234567890" or
 3451         striExpr("1234567890") [             5 .. ] <> "567890" or
 3452         striExpr("1234567890") [             9 .. ] <> "90" or
 3453         striExpr("1234567890") [            10 .. ] <> "0" or
 3454         striExpr("1234567890") [            11 .. ] <> "" or
 3455         striExpr("1234567890") [            15 .. ] <> "" or
 3456         striExpr("1234567890") [  integer.last .. ] <> "" then
 3457       writeln(" ***** STRING [ START .. ] does not work correct. (3)");
 3458       okay := FALSE;
 3459     end if;
 3460 
 3461     if  striExpr("") [ intExpr(            1) .. ] <> "" or
 3462         striExpr("") [ intExpr(            2) .. ] <> "" or
 3463         striExpr("") [ intExpr(            5) .. ] <> "" or
 3464         striExpr("") [ intExpr(            9) .. ] <> "" or
 3465         striExpr("") [ intExpr(           10) .. ] <> "" or
 3466         striExpr("") [ intExpr(           11) .. ] <> "" or
 3467         striExpr("") [ intExpr(           15) .. ] <> "" or
 3468         striExpr("") [ intExpr( integer.last) .. ] <> "" or
 3469         striExpr("1") [ intExpr(            1) .. ] <> "1" or
 3470         striExpr("1") [ intExpr(            2) .. ] <> "" or
 3471         striExpr("1") [ intExpr(            5) .. ] <> "" or
 3472         striExpr("1") [ intExpr(            9) .. ] <> "" or
 3473         striExpr("1") [ intExpr(           10) .. ] <> "" or
 3474         striExpr("1") [ intExpr(           11) .. ] <> "" or
 3475         striExpr("1") [ intExpr(           15) .. ] <> "" or
 3476         striExpr("1") [ intExpr( integer.last) .. ] <> "" or
 3477         striExpr("1234567890") [ intExpr(            1) .. ] <> "1234567890" or
 3478         striExpr("1234567890") [ intExpr(            2) .. ] <> "234567890" or
 3479         striExpr("1234567890") [ intExpr(            5) .. ] <> "567890" or
 3480         striExpr("1234567890") [ intExpr(            9) .. ] <> "90" or
 3481         striExpr("1234567890") [ intExpr(           10) .. ] <> "0" or
 3482         striExpr("1234567890") [ intExpr(           11) .. ] <> "" or
 3483         striExpr("1234567890") [ intExpr(           15) .. ] <> "" or
 3484         striExpr("1234567890") [ intExpr( integer.last) .. ] <> "" then
 3485       writeln(" ***** STRING [ START .. ] does not work correct. (4)");
 3486       okay := FALSE;
 3487     end if;
 3488 
 3489     stri := "" [             1 .. ]; ok := ok and stri = "";
 3490     stri := "" [             2 .. ]; ok := ok and stri = "";
 3491     stri := "" [             5 .. ]; ok := ok and stri = "";
 3492     stri := "" [             9 .. ]; ok := ok and stri = "";
 3493     stri := "" [            10 .. ]; ok := ok and stri = "";
 3494     stri := "" [            11 .. ]; ok := ok and stri = "";
 3495     stri := "" [            15 .. ]; ok := ok and stri = "";
 3496     stri := "" [  integer.last .. ]; ok := ok and stri = "";
 3497     stri := "1" [             1 .. ]; ok := ok and stri = "1";
 3498     stri := "1" [             2 .. ]; ok := ok and stri = "";
 3499     stri := "1" [             5 .. ]; ok := ok and stri = "";
 3500     stri := "1" [             9 .. ]; ok := ok and stri = "";
 3501     stri := "1" [            10 .. ]; ok := ok and stri = "";
 3502     stri := "1" [            11 .. ]; ok := ok and stri = "";
 3503     stri := "1" [            15 .. ]; ok := ok and stri = "";
 3504     stri := "1" [  integer.last .. ]; ok := ok and stri = "";
 3505     stri := "1234567890" [             1 .. ]; ok := ok and stri = "1234567890";
 3506     stri := "1234567890" [             2 .. ]; ok := ok and stri = "234567890";
 3507     stri := "1234567890" [             5 .. ]; ok := ok and stri = "567890";
 3508     stri := "1234567890" [             9 .. ]; ok := ok and stri = "90";
 3509     stri := "1234567890" [            10 .. ]; ok := ok and stri = "0";
 3510     stri := "1234567890" [            11 .. ]; ok := ok and stri = "";
 3511     stri := "1234567890" [            15 .. ]; ok := ok and stri = "";
 3512     stri := "1234567890" [  integer.last .. ]; ok := ok and stri = "";
 3513     if not ok then
 3514       writeln(" ***** stri := STRING [ START .. ] does not work correct. (1)");
 3515       okay := FALSE;
 3516     end if;
 3517 
 3518     ok := TRUE;
 3519     stri := "" [ intExpr(            1) .. ]; ok := ok and stri = "";
 3520     stri := "" [ intExpr(            2) .. ]; ok := ok and stri = "";
 3521     stri := "" [ intExpr(            5) .. ]; ok := ok and stri = "";
 3522     stri := "" [ intExpr(            9) .. ]; ok := ok and stri = "";
 3523     stri := "" [ intExpr(           10) .. ]; ok := ok and stri = "";
 3524     stri := "" [ intExpr(           11) .. ]; ok := ok and stri = "";
 3525     stri := "" [ intExpr(           15) .. ]; ok := ok and stri = "";
 3526     stri := "" [ intExpr( integer.last) .. ]; ok := ok and stri = "";
 3527     stri := "1" [ intExpr(            1) .. ]; ok := ok and stri = "1";
 3528     stri := "1" [ intExpr(            2) .. ]; ok := ok and stri = "";
 3529     stri := "1" [ intExpr(            5) .. ]; ok := ok and stri = "";
 3530     stri := "1" [ intExpr(            9) .. ]; ok := ok and stri = "";
 3531     stri := "1" [ intExpr(           10) .. ]; ok := ok and stri = "";
 3532     stri := "1" [ intExpr(           11) .. ]; ok := ok and stri = "";
 3533     stri := "1" [ intExpr(           15) .. ]; ok := ok and stri = "";
 3534     stri := "1" [ intExpr( integer.last) .. ]; ok := ok and stri = "";
 3535     stri := "1234567890" [ intExpr(            1) .. ]; ok := ok and stri = "1234567890";
 3536     stri := "1234567890" [ intExpr(            2) .. ]; ok := ok and stri = "234567890";
 3537     stri := "1234567890" [ intExpr(            5) .. ]; ok := ok and stri = "567890";
 3538     stri := "1234567890" [ intExpr(            9) .. ]; ok := ok and stri = "90";
 3539     stri := "1234567890" [ intExpr(           10) .. ]; ok := ok and stri = "0";
 3540     stri := "1234567890" [ intExpr(           11) .. ]; ok := ok and stri = "";
 3541     stri := "1234567890" [ intExpr(           15) .. ]; ok := ok and stri = "";
 3542     stri := "1234567890" [ intExpr( integer.last) .. ]; ok := ok and stri = "";
 3543     if not ok then
 3544       writeln(" ***** stri := STRING [ START .. ] does not work correct. (2)");
 3545       okay := FALSE;
 3546     end if;
 3547 
 3548     ok := TRUE;
 3549     stri := striExpr("") [             1 .. ]; ok := ok and stri = "";
 3550     stri := striExpr("") [             2 .. ]; ok := ok and stri = "";
 3551     stri := striExpr("") [             5 .. ]; ok := ok and stri = "";
 3552     stri := striExpr("") [             9 .. ]; ok := ok and stri = "";
 3553     stri := striExpr("") [            10 .. ]; ok := ok and stri = "";
 3554     stri := striExpr("") [            11 .. ]; ok := ok and stri = "";
 3555     stri := striExpr("") [            15 .. ]; ok := ok and stri = "";
 3556     stri := striExpr("") [  integer.last .. ]; ok := ok and stri = "";
 3557     stri := striExpr("1") [             1 .. ]; ok := ok and stri = "1";
 3558     stri := striExpr("1") [             2 .. ]; ok := ok and stri = "";
 3559     stri := striExpr("1") [             5 .. ]; ok := ok and stri = "";
 3560     stri := striExpr("1") [             9 .. ]; ok := ok and stri = "";
 3561     stri := striExpr("1") [            10 .. ]; ok := ok and stri = "";
 3562     stri := striExpr("1") [            11 .. ]; ok := ok and stri = "";
 3563     stri := striExpr("1") [            15 .. ]; ok := ok and stri = "";
 3564     stri := striExpr("1") [  integer.last .. ]; ok := ok and stri = "";
 3565     stri := striExpr("1234567890") [             1 .. ]; ok := ok and stri = "1234567890";
 3566     stri := striExpr("1234567890") [             2 .. ]; ok := ok and stri = "234567890";
 3567     stri := striExpr("1234567890") [             5 .. ]; ok := ok and stri = "567890";
 3568     stri := striExpr("1234567890") [             9 .. ]; ok := ok and stri = "90";
 3569     stri := striExpr("1234567890") [            10 .. ]; ok := ok and stri = "0";
 3570     stri := striExpr("1234567890") [            11 .. ]; ok := ok and stri = "";
 3571     stri := striExpr("1234567890") [            15 .. ]; ok := ok and stri = "";
 3572     stri := striExpr("1234567890") [  integer.last .. ]; ok := ok and stri = "";
 3573     if not ok then
 3574       writeln(" ***** stri := STRING [ START .. ] does not work correct. (3)");
 3575       okay := FALSE;
 3576     end if;
 3577 
 3578     ok := TRUE;
 3579     stri := striExpr("") [ intExpr(            1) .. ]; ok := ok and stri = "";
 3580     stri := striExpr("") [ intExpr(            2) .. ]; ok := ok and stri = "";
 3581     stri := striExpr("") [ intExpr(            5) .. ]; ok := ok and stri = "";
 3582     stri := striExpr("") [ intExpr(            9) .. ]; ok := ok and stri = "";
 3583     stri := striExpr("") [ intExpr(           10) .. ]; ok := ok and stri = "";
 3584     stri := striExpr("") [ intExpr(           11) .. ]; ok := ok and stri = "";
 3585     stri := striExpr("") [ intExpr(           15) .. ]; ok := ok and stri = "";
 3586     stri := striExpr("") [ intExpr( integer.last) .. ]; ok := ok and stri = "";
 3587     stri := striExpr("1") [ intExpr(            1) .. ]; ok := ok and stri = "1";
 3588     stri := striExpr("1") [ intExpr(            2) .. ]; ok := ok and stri = "";
 3589     stri := striExpr("1") [ intExpr(            5) .. ]; ok := ok and stri = "";
 3590     stri := striExpr("1") [ intExpr(            9) .. ]; ok := ok and stri = "";
 3591     stri := striExpr("1") [ intExpr(           10) .. ]; ok := ok and stri = "";
 3592     stri := striExpr("1") [ intExpr(           11) .. ]; ok := ok and stri = "";
 3593     stri := striExpr("1") [ intExpr(           15) .. ]; ok := ok and stri = "";
 3594     stri := striExpr("1") [ intExpr( integer.last) .. ]; ok := ok and stri = "";
 3595     stri := striExpr("1234567890") [ intExpr(            1) .. ]; ok := ok and stri = "1234567890";
 3596     stri := striExpr("1234567890") [ intExpr(            2) .. ]; ok := ok and stri = "234567890";
 3597     stri := striExpr("1234567890") [ intExpr(            5) .. ]; ok := ok and stri = "567890";
 3598     stri := striExpr("1234567890") [ intExpr(            9) .. ]; ok := ok and stri = "90";
 3599     stri := striExpr("1234567890") [ intExpr(           10) .. ]; ok := ok and stri = "0";
 3600     stri := striExpr("1234567890") [ intExpr(           11) .. ]; ok := ok and stri = "";
 3601     stri := striExpr("1234567890") [ intExpr(           15) .. ]; ok := ok and stri = "";
 3602     stri := striExpr("1234567890") [ intExpr( integer.last) .. ]; ok := ok and stri = "";
 3603     if not ok then
 3604       writeln(" ***** stri := STRING [ START .. ] does not work correct. (4)");
 3605       okay := FALSE;
 3606     end if;
 3607 
 3608     if  tailOfEmptyString(            1) <> "" or
 3609         tailOfEmptyString(            2) <> "" or
 3610         tailOfEmptyString(            5) <> "" or
 3611         tailOfEmptyString(            9) <> "" or
 3612         tailOfEmptyString(           10) <> "" or
 3613         tailOfEmptyString(           11) <> "" or
 3614         tailOfEmptyString(           15) <> "" or
 3615         tailOfEmptyString( integer.last) <> "" or
 3616         tailOfEmptyString(intExpr(            1)) <> "" or
 3617         tailOfEmptyString(intExpr(            2)) <> "" or
 3618         tailOfEmptyString(intExpr(            5)) <> "" or
 3619         tailOfEmptyString(intExpr(            9)) <> "" or
 3620         tailOfEmptyString(intExpr(           10)) <> "" or
 3621         tailOfEmptyString(intExpr(           11)) <> "" or
 3622         tailOfEmptyString(intExpr(           15)) <> "" or
 3623         tailOfEmptyString(intExpr( integer.last)) <> "" then
 3624       writeln(" ***** STRING [ START .. ] via a function does not work correct. (1)");
 3625       okay := FALSE;
 3626     end if;
 3627 
 3628     if  tailOfString1(            1) <> "1" or
 3629         tailOfString1(            2) <> "" or
 3630         tailOfString1(            5) <> "" or
 3631         tailOfString1(            9) <> "" or
 3632         tailOfString1(           10) <> "" or
 3633         tailOfString1(           11) <> "" or
 3634         tailOfString1(           15) <> "" or
 3635         tailOfString1( integer.last) <> "" or
 3636         tailOfString1(intExpr(            1)) <> "1" or
 3637         tailOfString1(intExpr(            2)) <> "" or
 3638         tailOfString1(intExpr(            5)) <> "" or
 3639         tailOfString1(intExpr(            9)) <> "" or
 3640         tailOfString1(intExpr(           10)) <> "" or
 3641         tailOfString1(intExpr(           11)) <> "" or
 3642         tailOfString1(intExpr(           15)) <> "" or
 3643         tailOfString1(intExpr( integer.last)) <> "" then
 3644       writeln(" ***** STRING [ START .. ] via a function does not work correct. (2)");
 3645       okay := FALSE;
 3646     end if;
 3647 
 3648     if  tailFunction(            1) <> "1234567890" or
 3649         tailFunction(            2) <> "234567890" or
 3650         tailFunction(            5) <> "567890" or
 3651         tailFunction(            9) <> "90" or
 3652         tailFunction(           10) <> "0" or
 3653         tailFunction(           11) <> "" or
 3654         tailFunction(           15) <> "" or
 3655         tailFunction( integer.last) <> "" or
 3656         tailFunction(intExpr(            1)) <> "1234567890" or
 3657         tailFunction(intExpr(            2)) <> "234567890" or
 3658         tailFunction(intExpr(            5)) <> "567890" or
 3659         tailFunction(intExpr(            9)) <> "90" or
 3660         tailFunction(intExpr(           10)) <> "0" or
 3661         tailFunction(intExpr(           11)) <> "" or
 3662         tailFunction(intExpr(           15)) <> "" or
 3663         tailFunction(intExpr( integer.last)) <> "" then
 3664       writeln(" ***** STRING [ START .. ] via a function does not work correct. (3)");
 3665       okay := FALSE;
 3666     end if;
 3667 
 3668     if  tailFunction("") <> "" or
 3669         tailFunction("1") <> "1" or
 3670         tailFunction("1234567890") <> "1234567890" or
 3671         tailFunction(striExpr("")) <> "" or
 3672         tailFunction(striExpr("1")) <> "1" or
 3673         tailFunction(striExpr("1234567890")) <> "1234567890" then
 3674       writeln(" ***** STRING [ START .. ] via a function does not work correct. (4)");
 3675       okay := FALSE;
 3676     end if;
 3677 
 3678     if  tailFunction("",             1) <> "" or
 3679         tailFunction("",             2) <> "" or
 3680         tailFunction("",             5) <> "" or
 3681         tailFunction("",             9) <> "" or
 3682         tailFunction("",            10) <> "" or
 3683         tailFunction("",            11) <> "" or
 3684         tailFunction("",            15) <> "" or
 3685         tailFunction("",  integer.last) <> "" or
 3686         tailFunction("1",             1) <> "1" or
 3687         tailFunction("1",             2) <> "" or
 3688         tailFunction("1",             5) <> "" or
 3689         tailFunction("1",             9) <> "" or
 3690         tailFunction("1",            10) <> "" or
 3691         tailFunction("1",            11) <> "" or
 3692         tailFunction("1",            15) <> "" or
 3693         tailFunction("1",  integer.last) <> "" or
 3694         tailFunction("1234567890",             1) <> "1234567890" or
 3695         tailFunction("1234567890",             2) <> "234567890" or
 3696         tailFunction("1234567890",             5) <> "567890" or
 3697         tailFunction("1234567890",             9) <> "90" or
 3698         tailFunction("1234567890",            10) <> "0" or
 3699         tailFunction("1234567890",            11) <> "" or
 3700         tailFunction("1234567890",            15) <> "" or
 3701         tailFunction("1234567890",  integer.last) <> "" then
 3702       writeln(" ***** STRING [ START .. ] via a function does not work correct. (5)");
 3703       okay := FALSE;
 3704     end if;
 3705 
 3706     if  tailFunction("", intExpr(            1)) <> "" or
 3707         tailFunction("", intExpr(            2)) <> "" or
 3708         tailFunction("", intExpr(            5)) <> "" or
 3709         tailFunction("", intExpr(            9)) <> "" or
 3710         tailFunction("", intExpr(           10)) <> "" or
 3711         tailFunction("", intExpr(           11)) <> "" or
 3712         tailFunction("", intExpr(           15)) <> "" or
 3713         tailFunction("", intExpr( integer.last)) <> "" or
 3714         tailFunction("1", intExpr(            1)) <> "1" or
 3715         tailFunction("1", intExpr(            2)) <> "" or
 3716         tailFunction("1", intExpr(            5)) <> "" or
 3717         tailFunction("1", intExpr(            9)) <> "" or
 3718         tailFunction("1", intExpr(           10)) <> "" or
 3719         tailFunction("1", intExpr(           11)) <> "" or
 3720         tailFunction("1", intExpr(           15)) <> "" or
 3721         tailFunction("1", intExpr( integer.last)) <> "" or
 3722         tailFunction("1234567890", intExpr(            1)) <> "1234567890" or
 3723         tailFunction("1234567890", intExpr(            2)) <> "234567890" or
 3724         tailFunction("1234567890", intExpr(            5)) <> "567890" or
 3725         tailFunction("1234567890", intExpr(            9)) <> "90" or
 3726         tailFunction("1234567890", intExpr(           10)) <> "0" or
 3727         tailFunction("1234567890", intExpr(           11)) <> "" or
 3728         tailFunction("1234567890", intExpr(           15)) <> "" or
 3729         tailFunction("1234567890", intExpr( integer.last)) <> "" then
 3730       writeln(" ***** STRING [ START .. ] via a function does not work correct. (6)");
 3731       okay := FALSE;
 3732     end if;
 3733 
 3734     if  tailFunction(striExpr(""),             1) <> "" or
 3735         tailFunction(striExpr(""),             2) <> "" or
 3736         tailFunction(striExpr(""),             5) <> "" or
 3737         tailFunction(striExpr(""),             9) <> "" or
 3738         tailFunction(striExpr(""),            10) <> "" or
 3739         tailFunction(striExpr(""),            11) <> "" or
 3740         tailFunction(striExpr(""),            15) <> "" or
 3741         tailFunction(striExpr(""),  integer.last) <> "" or
 3742         tailFunction(striExpr("1"),             1) <> "1" or
 3743         tailFunction(striExpr("1"),             2) <> "" or
 3744         tailFunction(striExpr("1"),             5) <> "" or
 3745         tailFunction(striExpr("1"),             9) <> "" or
 3746         tailFunction(striExpr("1"),            10) <> "" or
 3747         tailFunction(striExpr("1"),            11) <> "" or
 3748         tailFunction(striExpr("1"),            15) <> "" or
 3749         tailFunction(striExpr("1"),  integer.last) <> "" or
 3750         tailFunction(striExpr("1234567890"),             1) <> "1234567890" or
 3751         tailFunction(striExpr("1234567890"),             2) <> "234567890" or
 3752         tailFunction(striExpr("1234567890"),             5) <> "567890" or
 3753         tailFunction(striExpr("1234567890"),             9) <> "90" or
 3754         tailFunction(striExpr("1234567890"),            10) <> "0" or
 3755         tailFunction(striExpr("1234567890"),            11) <> "" or
 3756         tailFunction(striExpr("1234567890"),            15) <> "" or
 3757         tailFunction(striExpr("1234567890"),  integer.last) <> "" then
 3758       writeln(" ***** STRING [ START .. ] via a function does not work correct. (7)");
 3759       okay := FALSE;
 3760     end if;
 3761 
 3762     if  tailFunction(striExpr(""), intExpr(            1)) <> "" or
 3763         tailFunction(striExpr(""), intExpr(            2)) <> "" or
 3764         tailFunction(striExpr(""), intExpr(            5)) <> "" or
 3765         tailFunction(striExpr(""), intExpr(            9)) <> "" or
 3766         tailFunction(striExpr(""), intExpr(           10)) <> "" or
 3767         tailFunction(striExpr(""), intExpr(           11)) <> "" or
 3768         tailFunction(striExpr(""), intExpr(           15)) <> "" or
 3769         tailFunction(striExpr(""), intExpr( integer.last)) <> "" or
 3770         tailFunction(striExpr("1"), intExpr(            1)) <> "1" or
 3771         tailFunction(striExpr("1"), intExpr(            2)) <> "" or
 3772         tailFunction(striExpr("1"), intExpr(            5)) <> "" or
 3773         tailFunction(striExpr("1"), intExpr(            9)) <> "" or
 3774         tailFunction(striExpr("1"), intExpr(           10)) <> "" or
 3775         tailFunction(striExpr("1"), intExpr(           11)) <> "" or
 3776         tailFunction(striExpr("1"), intExpr(           15)) <> "" or
 3777         tailFunction(striExpr("1"), intExpr( integer.last)) <> "" or
 3778         tailFunction(striExpr("1234567890"), intExpr(            1)) <> "1234567890" or
 3779         tailFunction(striExpr("1234567890"), intExpr(            2)) <> "234567890" or
 3780         tailFunction(striExpr("1234567890"), intExpr(            5)) <> "567890" or
 3781         tailFunction(striExpr("1234567890"), intExpr(            9)) <> "90" or
 3782         tailFunction(striExpr("1234567890"), intExpr(           10)) <> "0" or
 3783         tailFunction(striExpr("1234567890"), intExpr(           11)) <> "" or
 3784         tailFunction(striExpr("1234567890"), intExpr(           15)) <> "" or
 3785         tailFunction(striExpr("1234567890"), intExpr( integer.last)) <> "" then
 3786       writeln(" ***** STRING [ START .. ] via a function does not work correct. (8)");
 3787       okay := FALSE;
 3788     end if;
 3789 
 3790     if okay then
 3791       writeln("String tail works correct.");
 3792     end if;
 3793   end func;
 3794 
 3795 
 3796 const func boolean: check_string_range_expr_1 is func
 3797   result
 3798     var boolean: okay is TRUE;
 3799   begin
 3800     if  "" [             1 ..             0 ] <> "" or
 3801         "" [             1 ..             1 ] <> "" or
 3802         "" [             1 ..             2 ] <> "" or
 3803         "" [             1 ..            15 ] <> "" or
 3804         "" [             1 ..  integer.last ] <> "" or
 3805 
 3806         "" [             5 ..             4 ] <> "" or
 3807         "" [             5 ..             5 ] <> "" or
 3808         "" [             5 ..             6 ] <> "" or
 3809         "" [             5 ..            15 ] <> "" or
 3810         "" [             5 ..  integer.last ] <> "" or
 3811 
 3812         "" [  integer.last ..  integer.last ] <> "" or
 3813 
 3814         "1" [             1 ..             0 ] <> "" or
 3815         "1" [             1 ..             1 ] <> "1" or
 3816         "1" [             1 ..             2 ] <> "1" or
 3817         "1" [             1 ..            15 ] <> "1" or
 3818         "1" [             1 ..  integer.last ] <> "1" or
 3819 
 3820         "1" [             2 ..             1 ] <> "" or
 3821         "1" [             2 ..             4 ] <> "" or
 3822         "1" [             2 ..             5 ] <> "" or
 3823         "1" [             2 ..             6 ] <> "" or
 3824         "1" [             2 ..            15 ] <> "" or
 3825         "1" [             2 ..  integer.last ] <> "" or
 3826 
 3827         "1" [             5 ..             4 ] <> "" or
 3828         "1" [             5 ..             5 ] <> "" or
 3829         "1" [             5 ..             6 ] <> "" or
 3830         "1" [             5 ..            15 ] <> "" or
 3831         "1" [             5 ..  integer.last ] <> "" or
 3832 
 3833         "1" [  integer.last ..  integer.last ] <> "" or
 3834 
 3835         "1234567890" [             1 ..             0 ] <> "" or
 3836         "1234567890" [             1 ..             1 ] <> "1" or
 3837         "1234567890" [             1 ..             5 ] <> "12345" or
 3838         "1234567890" [             1 ..             9 ] <> "123456789" or
 3839         "1234567890" [             1 ..            10 ] <> "1234567890" or
 3840         "1234567890" [             1 ..            11 ] <> "1234567890" or
 3841         "1234567890" [             1 ..            15 ] <> "1234567890" or
 3842         "1234567890" [             1 ..  integer.last ] <> "1234567890" or
 3843 
 3844         "1234567890" [             5 ..             4 ] <> "" or
 3845         "1234567890" [             5 ..             5 ] <> "5" or
 3846         "1234567890" [             5 ..             6 ] <> "56" or
 3847         "1234567890" [             5 ..             9 ] <> "56789" or
 3848         "1234567890" [             5 ..            10 ] <> "567890" or
 3849         "1234567890" [             5 ..            11 ] <> "567890" or
 3850         "1234567890" [             5 ..            15 ] <> "567890" or
 3851         "1234567890" [             5 ..  integer.last ] <> "567890" or
 3852 
 3853         "1234567890" [            10 ..             9 ] <> "" or
 3854         "1234567890" [            10 ..            10 ] <> "0" or
 3855         "1234567890" [            10 ..            11 ] <> "0" or
 3856         "1234567890" [            10 ..            15 ] <> "0" or
 3857         "1234567890" [            10 ..  integer.last ] <> "0" or
 3858 
 3859         "1234567890" [            11 ..            10 ] <> "" or
 3860         "1234567890" [            11 ..            11 ] <> "" or
 3861         "1234567890" [            11 ..            15 ] <> "" or
 3862         "1234567890" [            11 ..  integer.last ] <> "" or
 3863 
 3864         "1234567890" [            15 ..            14 ] <> "" or
 3865         "1234567890" [            15 ..            15 ] <> "" or
 3866         "1234567890" [            15 ..            20 ] <> "" or
 3867         "1234567890" [            15 ..  integer.last ] <> "" or
 3868 
 3869         "1234567890" [  integer.last ..  integer.last ] <> "" then
 3870       writeln(" ***** STRING [ START .. STOP ] does not work correct. (1)");
 3871       okay := FALSE;
 3872     end if;
 3873 
 3874     if  "" [             1 .. intExpr(            0) ] <> "" or
 3875         "" [             1 .. intExpr(            1) ] <> "" or
 3876         "" [             1 .. intExpr(            2) ] <> "" or
 3877         "" [             1 .. intExpr(           15) ] <> "" or
 3878         "" [             1 .. intExpr( integer.last) ] <> "" or
 3879 
 3880         "" [             5 .. intExpr(            4) ] <> "" or
 3881         "" [             5 .. intExpr(            5) ] <> "" or
 3882         "" [             5 .. intExpr(            6) ] <> "" or
 3883         "" [             5 .. intExpr(           15) ] <> "" or
 3884         "" [             5 .. intExpr( integer.last) ] <> "" or
 3885 
 3886         "" [  integer.last .. intExpr( integer.last) ] <> "" or
 3887 
 3888         "1" [             1 .. intExpr(            0) ] <> "" or
 3889         "1" [             1 .. intExpr(            1) ] <> "1" or
 3890         "1" [             1 .. intExpr(            2) ] <> "1" or
 3891         "1" [             1 .. intExpr(           15) ] <> "1" or
 3892         "1" [             1 .. intExpr( integer.last) ] <> "1" or
 3893 
 3894         "1" [             2 .. intExpr(            1) ] <> "" or
 3895         "1" [             2 .. intExpr(            4) ] <> "" or
 3896         "1" [             2 .. intExpr(            5) ] <> "" or
 3897         "1" [             2 .. intExpr(            6) ] <> "" or
 3898         "1" [             2 .. intExpr(           15) ] <> "" or
 3899         "1" [             2 .. intExpr( integer.last) ] <> "" or
 3900 
 3901         "1" [             5 .. intExpr(            4) ] <> "" or
 3902         "1" [             5 .. intExpr(            5) ] <> "" or
 3903         "1" [             5 .. intExpr(            6) ] <> "" or
 3904         "1" [             5 .. intExpr(           15) ] <> "" or
 3905         "1" [             5 .. intExpr( integer.last) ] <> "" or
 3906 
 3907         "1" [  integer.last .. intExpr( integer.last) ] <> "" or
 3908 
 3909         "1234567890" [             1 .. intExpr(            0) ] <> "" or
 3910         "1234567890" [             1 .. intExpr(            1) ] <> "1" or
 3911         "1234567890" [             1 .. intExpr(            5) ] <> "12345" or
 3912         "1234567890" [             1 .. intExpr(            9) ] <> "123456789" or
 3913         "1234567890" [             1 .. intExpr(           10) ] <> "1234567890" or
 3914         "1234567890" [             1 .. intExpr(           11) ] <> "1234567890" or
 3915         "1234567890" [             1 .. intExpr(           15) ] <> "1234567890" or
 3916         "1234567890" [             1 .. intExpr( integer.last) ] <> "1234567890" or
 3917 
 3918         "1234567890" [             5 .. intExpr(            4) ] <> "" or
 3919         "1234567890" [             5 .. intExpr(            5) ] <> "5" or
 3920         "1234567890" [             5 .. intExpr(            6) ] <> "56" or
 3921         "1234567890" [             5 .. intExpr(            9) ] <> "56789" or
 3922         "1234567890" [             5 .. intExpr(           10) ] <> "567890" or
 3923         "1234567890" [             5 .. intExpr(           11) ] <> "567890" or
 3924         "1234567890" [             5 .. intExpr(           15) ] <> "567890" or
 3925         "1234567890" [             5 .. intExpr( integer.last) ] <> "567890" or
 3926 
 3927         "1234567890" [            10 .. intExpr(            9) ] <> "" or
 3928         "1234567890" [            10 .. intExpr(           10) ] <> "0" or
 3929         "1234567890" [            10 .. intExpr(           11) ] <> "0" or
 3930         "1234567890" [            10 .. intExpr(           15) ] <> "0" or
 3931         "1234567890" [            10 .. intExpr( integer.last) ] <> "0" or
 3932 
 3933         "1234567890" [            11 .. intExpr(           10) ] <> "" or
 3934         "1234567890" [            11 .. intExpr(           11) ] <> "" or
 3935         "1234567890" [            11 .. intExpr(           15) ] <> "" or
 3936         "1234567890" [            11 .. intExpr( integer.last) ] <> "" or
 3937 
 3938         "1234567890" [            15 .. intExpr(           14) ] <> "" or
 3939         "1234567890" [            15 .. intExpr(           15) ] <> "" or
 3940         "1234567890" [            15 .. intExpr(           20) ] <> "" or
 3941         "1234567890" [            15 .. intExpr( integer.last) ] <> "" or
 3942 
 3943         "1234567890" [  integer.last .. intExpr( integer.last) ] <> "" then
 3944       writeln(" ***** STRING [ START .. STOP ] does not work correct. (2)");
 3945       okay := FALSE;
 3946     end if;
 3947 
 3948     if  "" [ intExpr(            1) ..             0 ] <> "" or
 3949         "" [ intExpr(            1) ..             1 ] <> "" or
 3950         "" [ intExpr(            1) ..             2 ] <> "" or
 3951         "" [ intExpr(            1) ..            15 ] <> "" or
 3952         "" [ intExpr(            1) ..  integer.last ] <> "" or
 3953 
 3954         "" [ intExpr(            5) ..             4 ] <> "" or
 3955         "" [ intExpr(            5) ..             5 ] <> "" or
 3956         "" [ intExpr(            5) ..             6 ] <> "" or
 3957         "" [ intExpr(            5) ..            15 ] <> "" or
 3958         "" [ intExpr(            5) ..  integer.last ] <> "" or
 3959 
 3960         "" [ intExpr( integer.last) ..  integer.last ] <> "" or
 3961 
 3962         "1" [ intExpr(            1) ..             0 ] <> "" or
 3963         "1" [ intExpr(            1) ..             1 ] <> "1" or
 3964         "1" [ intExpr(            1) ..             2 ] <> "1" or
 3965         "1" [ intExpr(            1) ..            15 ] <> "1" or
 3966         "1" [ intExpr(            1) ..  integer.last ] <> "1" or
 3967 
 3968         "1" [ intExpr(            2) ..             1 ] <> "" or
 3969         "1" [ intExpr(            2) ..             4 ] <> "" or
 3970         "1" [ intExpr(            2) ..             5 ] <> "" or
 3971         "1" [ intExpr(            2) ..             6 ] <> "" or
 3972         "1" [ intExpr(            2) ..            15 ] <> "" or
 3973         "1" [ intExpr(            2) ..  integer.last ] <> "" or
 3974 
 3975         "1" [ intExpr(            5) ..             4 ] <> "" or
 3976         "1" [ intExpr(            5) ..             5 ] <> "" or
 3977         "1" [ intExpr(            5) ..             6 ] <> "" or
 3978         "1" [ intExpr(            5) ..            15 ] <> "" or
 3979         "1" [ intExpr(            5) ..  integer.last ] <> "" or
 3980 
 3981         "1" [ intExpr( integer.last) ..  integer.last ] <> "" or
 3982 
 3983         "1234567890" [ intExpr(            1) ..             0 ] <> "" or
 3984         "1234567890" [ intExpr(            1) ..             1 ] <> "1" or
 3985         "1234567890" [ intExpr(            1) ..             5 ] <> "12345" or
 3986         "1234567890" [ intExpr(            1) ..             9 ] <> "123456789" or
 3987         "1234567890" [ intExpr(            1) ..            10 ] <> "1234567890" or
 3988         "1234567890" [ intExpr(            1) ..            11 ] <> "1234567890" or
 3989         "1234567890" [ intExpr(            1) ..            15 ] <> "1234567890" or
 3990         "1234567890" [ intExpr(            1) ..  integer.last ] <> "1234567890" or
 3991 
 3992         "1234567890" [ intExpr(            5) ..             4 ] <> "" or
 3993         "1234567890" [ intExpr(            5) ..             5 ] <> "5" or
 3994         "1234567890" [ intExpr(            5) ..             6 ] <> "56" or
 3995         "1234567890" [ intExpr(            5) ..             9 ] <> "56789" or
 3996         "1234567890" [ intExpr(            5) ..            10 ] <> "567890" or
 3997         "1234567890" [ intExpr(            5) ..            11 ] <> "567890" or
 3998         "1234567890" [ intExpr(            5) ..            15 ] <> "567890" or
 3999         "1234567890" [ intExpr(            5) ..  integer.last ] <> "567890" or
 4000 
 4001         "1234567890" [ intExpr(           10) ..             9 ] <> "" or
 4002         "1234567890" [ intExpr(           10) ..            10 ] <> "0" or
 4003         "1234567890" [ intExpr(           10) ..            11 ] <> "0" or
 4004         "1234567890" [ intExpr(           10) ..            15 ] <> "0" or
 4005         "1234567890" [ intExpr(           10) ..  integer.last ] <> "0" or
 4006 
 4007         "1234567890" [ intExpr(           11) ..            10 ] <> "" or
 4008         "1234567890" [ intExpr(           11) ..            11 ] <> "" or
 4009         "1234567890" [ intExpr(           11) ..            15 ] <> "" or
 4010         "1234567890" [ intExpr(           11) ..  integer.last ] <> "" or
 4011 
 4012         "1234567890" [ intExpr(           15) ..            14 ] <> "" or
 4013         "1234567890" [ intExpr(           15) ..            15 ] <> "" or
 4014         "1234567890" [ intExpr(           15) ..            20 ] <> "" or
 4015         "1234567890" [ intExpr(           15) ..  integer.last ] <> "" or
 4016 
 4017         "1234567890" [ intExpr( integer.last) ..  integer.last ] <> "" then
 4018       writeln(" ***** STRING [ START .. STOP ] does not work correct. (3)");
 4019       okay := FALSE;
 4020     end if;
 4021 
 4022     if  "" [ intExpr(            1) .. intExpr(            0) ] <> "" or
 4023         "" [ intExpr(            1) .. intExpr(            1) ] <> "" or
 4024         "" [ intExpr(            1) .. intExpr(            2) ] <> "" or
 4025         "" [ intExpr(            1) .. intExpr(           15) ] <> "" or
 4026         "" [ intExpr(            1) .. intExpr( integer.last) ] <> "" or
 4027 
 4028         "" [ intExpr(            5) .. intExpr(            4) ] <> "" or
 4029         "" [ intExpr(            5) .. intExpr(            5) ] <> "" or
 4030         "" [ intExpr(            5) .. intExpr(            6) ] <> "" or
 4031         "" [ intExpr(            5) .. intExpr(           15) ] <> "" or
 4032         "" [ intExpr(            5) .. intExpr( integer.last) ] <> "" or
 4033 
 4034         "" [ intExpr( integer.last) .. intExpr( integer.last) ] <> "" or
 4035 
 4036         "1" [ intExpr(            1) .. intExpr(            0) ] <> "" or
 4037         "1" [ intExpr(            1) .. intExpr(            1) ] <> "1" or
 4038         "1" [ intExpr(            1) .. intExpr(            2) ] <> "1" or
 4039         "1" [ intExpr(            1) .. intExpr(           15) ] <> "1" or
 4040         "1" [ intExpr(            1) .. intExpr( integer.last) ] <> "1" or
 4041 
 4042         "1" [ intExpr(            2) .. intExpr(            1) ] <> "" or
 4043         "1" [ intExpr(            2) .. intExpr(            4) ] <> "" or
 4044         "1" [ intExpr(            2) .. intExpr(            5) ] <> "" or
 4045         "1" [ intExpr(            2) .. intExpr(            6) ] <> "" or
 4046         "1" [ intExpr(            2) .. intExpr(           15) ] <> "" or
 4047         "1" [ intExpr(            2) .. intExpr( integer.last) ] <> "" or
 4048 
 4049         "1" [ intExpr(            5) .. intExpr(            4) ] <> "" or
 4050         "1" [ intExpr(            5) .. intExpr(            5) ] <> "" or
 4051         "1" [ intExpr(            5) .. intExpr(            6) ] <> "" or
 4052         "1" [ intExpr(            5) .. intExpr(           15) ] <> "" or
 4053         "1" [ intExpr(            5) .. intExpr( integer.last) ] <> "" or
 4054 
 4055         "1" [ intExpr( integer.last) .. intExpr( integer.last) ] <> "" or
 4056 
 4057         "1234567890" [ intExpr(            1) .. intExpr(            0) ] <> "" or
 4058         "1234567890" [ intExpr(            1) .. intExpr(            1) ] <> "1" or
 4059         "1234567890" [ intExpr(            1) .. intExpr(            5) ] <> "12345" or
 4060         "1234567890" [ intExpr(            1) .. intExpr(            9) ] <> "123456789" or
 4061         "1234567890" [ intExpr(            1) .. intExpr(           10) ] <> "1234567890" or
 4062         "1234567890" [ intExpr(            1) .. intExpr(           11) ] <> "1234567890" or
 4063         "1234567890" [ intExpr(            1) .. intExpr(           15) ] <> "1234567890" or
 4064         "1234567890" [ intExpr(            1) .. intExpr( integer.last) ] <> "1234567890" or
 4065 
 4066         "1234567890" [ intExpr(            5) .. intExpr(            4) ] <> "" or
 4067         "1234567890" [ intExpr(            5) .. intExpr(            5) ] <> "5" or
 4068         "1234567890" [ intExpr(            5) .. intExpr(            6) ] <> "56" or
 4069         "1234567890" [ intExpr(            5) .. intExpr(            9) ] <> "56789" or
 4070         "1234567890" [ intExpr(            5) .. intExpr(           10) ] <> "567890" or
 4071         "1234567890" [ intExpr(            5) .. intExpr(           11) ] <> "567890" or
 4072         "1234567890" [ intExpr(            5) .. intExpr(           15) ] <> "567890" or
 4073         "1234567890" [ intExpr(            5) .. intExpr( integer.last) ] <> "567890" or
 4074 
 4075         "1234567890" [ intExpr(           10) .. intExpr(            9) ] <> "" or
 4076         "1234567890" [ intExpr(           10) .. intExpr(           10) ] <> "0" or
 4077         "1234567890" [ intExpr(           10) .. intExpr(           11) ] <> "0" or
 4078         "1234567890" [ intExpr(           10) .. intExpr(           15) ] <> "0" or
 4079         "1234567890" [ intExpr(           10) .. intExpr( integer.last) ] <> "0" or
 4080 
 4081         "1234567890" [ intExpr(           11) .. intExpr(           10) ] <> "" or
 4082         "1234567890" [ intExpr(           11) .. intExpr(           11) ] <> "" or
 4083         "1234567890" [ intExpr(           11) .. intExpr(           15) ] <> "" or
 4084         "1234567890" [ intExpr(           11) .. intExpr( integer.last) ] <> "" or
 4085 
 4086         "1234567890" [ intExpr(           15) .. intExpr(           14) ] <> "" or
 4087         "1234567890" [ intExpr(           15) .. intExpr(           15) ] <> "" or
 4088         "1234567890" [ intExpr(           15) .. intExpr(           20) ] <> "" or
 4089         "1234567890" [ intExpr(           15) .. intExpr( integer.last) ] <> "" or
 4090 
 4091         "1234567890" [ intExpr( integer.last) .. intExpr( integer.last) ] <> "" then
 4092       writeln(" ***** STRING [ START .. STOP ] does not work correct. (4)");
 4093       okay := FALSE;
 4094     end if;
 4095   end func;
 4096 
 4097 
 4098 const func boolean: check_string_range_expr_2 is func
 4099   result
 4100     var boolean: okay is TRUE;
 4101   begin
 4102     if  striExpr("") [             1 ..             0 ] <> "" or
 4103         striExpr("") [             1 ..             1 ] <> "" or
 4104         striExpr("") [             1 ..             2 ] <> "" or
 4105         striExpr("") [             1 ..            15 ] <> "" or
 4106         striExpr("") [             1 ..  integer.last ] <> "" or
 4107 
 4108         striExpr("") [             5 ..             4 ] <> "" or
 4109         striExpr("") [             5 ..             5 ] <> "" or
 4110         striExpr("") [             5 ..             6 ] <> "" or
 4111         striExpr("") [             5 ..            15 ] <> "" or
 4112         striExpr("") [             5 ..  integer.last ] <> "" or
 4113 
 4114         striExpr("") [  integer.last ..  integer.last ] <> "" or
 4115 
 4116         striExpr("1") [             1 ..             0 ] <> "" or
 4117         striExpr("1") [             1 ..             1 ] <> "1" or
 4118         striExpr("1") [             1 ..             2 ] <> "1" or
 4119         striExpr("1") [             1 ..            15 ] <> "1" or
 4120         striExpr("1") [             1 ..  integer.last ] <> "1" or
 4121 
 4122         striExpr("1") [             2 ..             1 ] <> "" or
 4123         striExpr("1") [             2 ..             4 ] <> "" or
 4124         striExpr("1") [             2 ..             5 ] <> "" or
 4125         striExpr("1") [             2 ..             6 ] <> "" or
 4126         striExpr("1") [             2 ..            15 ] <> "" or
 4127         striExpr("1") [             2 ..  integer.last ] <> "" or
 4128 
 4129         striExpr("1") [             5 ..             4 ] <> "" or
 4130         striExpr("1") [             5 ..             5 ] <> "" or
 4131         striExpr("1") [             5 ..             6 ] <> "" or
 4132         striExpr("1") [             5 ..            15 ] <> "" or
 4133         striExpr("1") [             5 ..  integer.last ] <> "" or
 4134 
 4135         striExpr("1") [  integer.last ..  integer.last ] <> "" or
 4136 
 4137         striExpr("1234567890") [             1 ..             0 ] <> "" or
 4138         striExpr("1234567890") [             1 ..             1 ] <> "1" or
 4139         striExpr("1234567890") [             1 ..             5 ] <> "12345" or
 4140         striExpr("1234567890") [             1 ..             9 ] <> "123456789" or
 4141         striExpr("1234567890") [             1 ..            10 ] <> "1234567890" or
 4142         striExpr("1234567890") [             1 ..            11 ] <> "1234567890" or
 4143         striExpr("1234567890") [             1 ..            15 ] <> "1234567890" or
 4144         striExpr("1234567890") [             1 ..  integer.last ] <> "1234567890" or
 4145 
 4146         striExpr("1234567890") [             5 ..             4 ] <> "" or
 4147         striExpr("1234567890") [             5 ..             5 ] <> "5" or
 4148         striExpr("1234567890") [             5 ..             6 ] <> "56" or
 4149         striExpr("1234567890") [             5 ..             9 ] <> "56789" or
 4150         striExpr("1234567890") [             5 ..            10 ] <> "567890" or
 4151         striExpr("1234567890") [             5 ..            11 ] <> "567890" or
 4152         striExpr("1234567890") [             5 ..            15 ] <> "567890" or
 4153         striExpr("1234567890") [             5 ..  integer.last ] <> "567890" or
 4154 
 4155         striExpr("1234567890") [            10 ..             9 ] <> "" or
 4156         striExpr("1234567890") [            10 ..            10 ] <> "0" or
 4157         striExpr("1234567890") [            10 ..            11 ] <> "0" or
 4158         striExpr("1234567890") [            10 ..            15 ] <> "0" or
 4159         striExpr("1234567890") [            10 ..  integer.last ] <> "0" or
 4160 
 4161         striExpr("1234567890") [            11 ..            10 ] <> "" or
 4162         striExpr("1234567890") [            11 ..            11 ] <> "" or
 4163         striExpr("1234567890") [            11 ..            15 ] <> "" or
 4164         striExpr("1234567890") [            11 ..  integer.last ] <> "" or
 4165 
 4166         striExpr("1234567890") [            15 ..            14 ] <> "" or
 4167         striExpr("1234567890") [            15 ..            15 ] <> "" or
 4168         striExpr("1234567890") [            15 ..            20 ] <> "" or
 4169         striExpr("1234567890") [            15 ..  integer.last ] <> "" or
 4170 
 4171         striExpr("1234567890") [  integer.last ..  integer.last ] <> "" then
 4172       writeln(" ***** STRING [ START .. STOP ] does not work correct. (5)");
 4173       okay := FALSE;
 4174     end if;
 4175 
 4176     if  striExpr("") [             1 .. intExpr(            0) ] <> "" or
 4177         striExpr("") [             1 .. intExpr(            1) ] <> "" or
 4178         striExpr("") [             1 .. intExpr(            2) ] <> "" or
 4179         striExpr("") [             1 .. intExpr(           15) ] <> "" or
 4180         striExpr("") [             1 .. intExpr( integer.last) ] <> "" or
 4181 
 4182         striExpr("") [             5 .. intExpr(            4) ] <> "" or
 4183         striExpr("") [             5 .. intExpr(            5) ] <> "" or
 4184         striExpr("") [             5 .. intExpr(            6) ] <> "" or
 4185         striExpr("") [             5 .. intExpr(           15) ] <> "" or
 4186         striExpr("") [             5 .. intExpr( integer.last) ] <> "" or
 4187 
 4188         striExpr("") [  integer.last .. intExpr( integer.last) ] <> "" or
 4189 
 4190         striExpr("1") [             1 .. intExpr(            0) ] <> "" or
 4191         striExpr("1") [             1 .. intExpr(            1) ] <> "1" or
 4192         striExpr("1") [             1 .. intExpr(            2) ] <> "1" or
 4193         striExpr("1") [             1 .. intExpr(           15) ] <> "1" or
 4194         striExpr("1") [             1 .. intExpr( integer.last) ] <> "1" or
 4195 
 4196         striExpr("1") [             2 .. intExpr(            1) ] <> "" or
 4197         striExpr("1") [             2 .. intExpr(            4) ] <> "" or
 4198         striExpr("1") [             2 .. intExpr(            5) ] <> "" or
 4199         striExpr("1") [             2 .. intExpr(            6) ] <> "" or
 4200         striExpr("1") [             2 .. intExpr(           15) ] <> "" or
 4201         striExpr("1") [             2 .. intExpr( integer.last) ] <> "" or
 4202 
 4203         striExpr("1") [             5 .. intExpr(            4) ] <> "" or
 4204         striExpr("1") [             5 .. intExpr(            5) ] <> "" or
 4205         striExpr("1") [             5 .. intExpr(            6) ] <> "" or
 4206         striExpr("1") [             5 .. intExpr(           15) ] <> "" or
 4207         striExpr("1") [             5 .. intExpr( integer.last) ] <> "" or
 4208 
 4209         striExpr("1") [  integer.last .. intExpr( integer.last) ] <> "" or
 4210 
 4211         striExpr("1234567890") [             1 .. intExpr(            0) ] <> "" or
 4212         striExpr("1234567890") [             1 .. intExpr(            1) ] <> "1" or
 4213         striExpr("1234567890") [             1 .. intExpr(            5) ] <> "12345" or
 4214         striExpr("1234567890") [             1 .. intExpr(            9) ] <> "123456789" or
 4215         striExpr("1234567890") [             1 .. intExpr(           10) ] <> "1234567890" or
 4216         striExpr("1234567890") [             1 .. intExpr(           11) ] <> "1234567890" or
 4217         striExpr("1234567890") [             1 .. intExpr(           15) ] <> "1234567890" or
 4218         striExpr("1234567890") [             1 .. intExpr( integer.last) ] <> "1234567890" or
 4219 
 4220         striExpr("1234567890") [             5 .. intExpr(            4) ] <> "" or
 4221         striExpr("1234567890") [             5 .. intExpr(            5) ] <> "5" or
 4222         striExpr("1234567890") [             5 .. intExpr(            6) ] <> "56" or
 4223         striExpr("1234567890") [             5 .. intExpr(            9) ] <> "56789" or
 4224         striExpr("1234567890") [             5 .. intExpr(           10) ] <> "567890" or
 4225         striExpr("1234567890") [             5 .. intExpr(           11) ] <> "567890" or
 4226         striExpr("1234567890") [             5 .. intExpr(           15) ] <> "567890" or
 4227         striExpr("1234567890") [             5 .. intExpr( integer.last) ] <> "567890" or
 4228 
 4229         striExpr("1234567890") [            10 .. intExpr(            9) ] <> "" or
 4230         striExpr("1234567890") [            10 .. intExpr(           10) ] <> "0" or
 4231         striExpr("1234567890") [            10 .. intExpr(           11) ] <> "0" or
 4232         striExpr("1234567890") [            10 .. intExpr(           15) ] <> "0" or
 4233         striExpr("1234567890") [            10 .. intExpr( integer.last) ] <> "0" or
 4234 
 4235         striExpr("1234567890") [            11 .. intExpr(           10) ] <> "" or
 4236         striExpr("1234567890") [            11 .. intExpr(           11) ] <> "" or
 4237         striExpr("1234567890") [            11 .. intExpr(           15) ] <> "" or
 4238         striExpr("1234567890") [            11 .. intExpr( integer.last) ] <> "" or
 4239 
 4240         striExpr("1234567890") [            15 .. intExpr(           14) ] <> "" or
 4241         striExpr("1234567890") [            15 .. intExpr(           15) ] <> "" or
 4242         striExpr("1234567890") [            15 .. intExpr(           20) ] <> "" or
 4243         striExpr("1234567890") [            15 .. intExpr( integer.last) ] <> "" or
 4244 
 4245         striExpr("1234567890") [  integer.last .. intExpr( integer.last) ] <> "" then
 4246       writeln(" ***** STRING [ START .. STOP ] does not work correct. (6)");
 4247       okay := FALSE;
 4248     end if;
 4249 
 4250     if  striExpr("") [ intExpr(            1) ..             0 ] <> "" or
 4251         striExpr("") [ intExpr(            1) ..             1 ] <> "" or
 4252         striExpr("") [ intExpr(            1) ..             2 ] <> "" or
 4253         striExpr("") [ intExpr(            1) ..            15 ] <> "" or
 4254         striExpr("") [ intExpr(            1) ..  integer.last ] <> "" or
 4255 
 4256         striExpr("") [ intExpr(            5) ..             4 ] <> "" or
 4257         striExpr("") [ intExpr(            5) ..             5 ] <> "" or
 4258         striExpr("") [ intExpr(            5) ..             6 ] <> "" or
 4259         striExpr("") [ intExpr(            5) ..            15 ] <> "" or
 4260         striExpr("") [ intExpr(            5) ..  integer.last ] <> "" or
 4261 
 4262         striExpr("") [ intExpr( integer.last) ..  integer.last ] <> "" or
 4263 
 4264         striExpr("1") [ intExpr(            1) ..             0 ] <> "" or
 4265         striExpr("1") [ intExpr(            1) ..             1 ] <> "1" or
 4266         striExpr("1") [ intExpr(            1) ..             2 ] <> "1" or
 4267         striExpr("1") [ intExpr(            1) ..            15 ] <> "1" or
 4268         striExpr("1") [ intExpr(            1) ..  integer.last ] <> "1" or
 4269 
 4270         striExpr("1") [ intExpr(            2) ..             1 ] <> "" or
 4271         striExpr("1") [ intExpr(            2) ..             4 ] <> "" or
 4272         striExpr("1") [ intExpr(            2) ..             5 ] <> "" or
 4273         striExpr("1") [ intExpr(            2) ..             6 ] <> "" or
 4274         striExpr("1") [ intExpr(            2) ..            15 ] <> "" or
 4275         striExpr("1") [ intExpr(            2) ..  integer.last ] <> "" or
 4276 
 4277         striExpr("1") [ intExpr(            5) ..             4 ] <> "" or
 4278         striExpr("1") [ intExpr(            5) ..             5 ] <> "" or
 4279         striExpr("1") [ intExpr(            5) ..             6 ] <> "" or
 4280         striExpr("1") [ intExpr(            5) ..            15 ] <> "" or
 4281         striExpr("1") [ intExpr(            5) ..  integer.last ] <> "" or
 4282 
 4283         striExpr("1") [ intExpr( integer.last) ..  integer.last ] <> "" or
 4284 
 4285         striExpr("1234567890") [ intExpr(            1) ..             0 ] <> "" or
 4286         striExpr("1234567890") [ intExpr(            1) ..             1 ] <> "1" or
 4287         striExpr("1234567890") [ intExpr(            1) ..             5 ] <> "12345" or
 4288         striExpr("1234567890") [ intExpr(            1) ..             9 ] <> "123456789" or
 4289         striExpr("1234567890") [ intExpr(            1) ..            10 ] <> "1234567890" or
 4290         striExpr("1234567890") [ intExpr(            1) ..            11 ] <> "1234567890" or
 4291         striExpr("1234567890") [ intExpr(            1) ..            15 ] <> "1234567890" or
 4292         striExpr("1234567890") [ intExpr(            1) ..  integer.last ] <> "1234567890" or
 4293 
 4294         striExpr("1234567890") [ intExpr(            5) ..             4 ] <> "" or
 4295         striExpr("1234567890") [ intExpr(            5) ..             5 ] <> "5" or
 4296         striExpr("1234567890") [ intExpr(            5) ..             6 ] <> "56" or
 4297         striExpr("1234567890") [ intExpr(            5) ..             9 ] <> "56789" or
 4298         striExpr("1234567890") [ intExpr(            5) ..            10 ] <> "567890" or
 4299         striExpr("1234567890") [ intExpr(            5) ..            11 ] <> "567890" or
 4300         striExpr("1234567890") [ intExpr(            5) ..            15 ] <> "567890" or
 4301         striExpr("1234567890") [ intExpr(            5) ..  integer.last ] <> "567890" or
 4302 
 4303         striExpr("1234567890") [ intExpr(           10) ..             9 ] <> "" or
 4304         striExpr("1234567890") [ intExpr(           10) ..            10 ] <> "0" or
 4305         striExpr("1234567890") [ intExpr(           10) ..            11 ] <> "0" or
 4306         striExpr("1234567890") [ intExpr(           10) ..            15 ] <> "0" or
 4307         striExpr("1234567890") [ intExpr(           10) ..  integer.last ] <> "0" or
 4308 
 4309         striExpr("1234567890") [ intExpr(           11) ..            10 ] <> "" or
 4310         striExpr("1234567890") [ intExpr(           11) ..            11 ] <> "" or
 4311         striExpr("1234567890") [ intExpr(           11) ..            15 ] <> "" or
 4312         striExpr("1234567890") [ intExpr(           11) ..  integer.last ] <> "" or
 4313 
 4314         striExpr("1234567890") [ intExpr(           15) ..            14 ] <> "" or
 4315         striExpr("1234567890") [ intExpr(           15) ..            15 ] <> "" or
 4316         striExpr("1234567890") [ intExpr(           15) ..            20 ] <> "" or
 4317         striExpr("1234567890") [ intExpr(           15) ..  integer.last ] <> "" or
 4318 
 4319         striExpr("1234567890") [ intExpr( integer.last) ..  integer.last ] <> "" then
 4320       writeln(" ***** STRING [ START .. STOP ] does not work correct. (7)");
 4321       okay := FALSE;
 4322     end if;
 4323 
 4324     if  striExpr("") [ intExpr(            1) .. intExpr(            0) ] <> "" or
 4325         striExpr("") [ intExpr(            1) .. intExpr(            1) ] <> "" or
 4326         striExpr("") [ intExpr(            1) .. intExpr(            2) ] <> "" or
 4327         striExpr("") [ intExpr(            1) .. intExpr(           15) ] <> "" or
 4328         striExpr("") [ intExpr(            1) .. intExpr( integer.last) ] <> "" or
 4329 
 4330         striExpr("") [ intExpr(            5) .. intExpr(            4) ] <> "" or
 4331         striExpr("") [ intExpr(            5) .. intExpr(            5) ] <> "" or
 4332         striExpr("") [ intExpr(            5) .. intExpr(            6) ] <> "" or
 4333         striExpr("") [ intExpr(            5) .. intExpr(           15) ] <> "" or
 4334         striExpr("") [ intExpr(            5) .. intExpr( integer.last) ] <> "" or
 4335 
 4336         striExpr("") [ intExpr( integer.last) .. intExpr( integer.last) ] <> "" or
 4337 
 4338         striExpr("1") [ intExpr(            1) .. intExpr(            0) ] <> "" or
 4339         striExpr("1") [ intExpr(            1) .. intExpr(            1) ] <> "1" or
 4340         striExpr("1") [ intExpr(            1) .. intExpr(            2) ] <> "1" or
 4341         striExpr("1") [ intExpr(            1) .. intExpr(           15) ] <> "1" or
 4342         striExpr("1") [ intExpr(            1) .. intExpr( integer.last) ] <> "1" or
 4343 
 4344         striExpr("1") [ intExpr(            2) .. intExpr(            1) ] <> "" or
 4345         striExpr("1") [ intExpr(            2) .. intExpr(            4) ] <> "" or
 4346         striExpr("1") [ intExpr(            2) .. intExpr(            5) ] <> "" or
 4347         striExpr("1") [ intExpr(            2) .. intExpr(            6) ] <> "" or
 4348         striExpr("1") [ intExpr(            2) .. intExpr(           15) ] <> "" or
 4349         striExpr("1") [ intExpr(            2) .. intExpr( integer.last) ] <> "" or
 4350 
 4351         striExpr("1") [ intExpr(            5) .. intExpr(            4) ] <> "" or
 4352         striExpr("1") [ intExpr(            5) .. intExpr(            5) ] <> "" or
 4353         striExpr("1") [ intExpr(            5) .. intExpr(            6) ] <> "" or
 4354         striExpr("1") [ intExpr(            5) .. intExpr(           15) ] <> "" or
 4355         striExpr("1") [ intExpr(            5) .. intExpr( integer.last) ] <> "" or
 4356 
 4357         striExpr("1") [ intExpr( integer.last) .. intExpr( integer.last) ] <> "" or
 4358 
 4359         striExpr("1234567890") [ intExpr(            1) .. intExpr(            0) ] <> "" or
 4360         striExpr("1234567890") [ intExpr(            1) .. intExpr(            1) ] <> "1" or
 4361         striExpr("1234567890") [ intExpr(            1) .. intExpr(            5) ] <> "12345" or
 4362         striExpr("1234567890") [ intExpr(            1) .. intExpr(            9) ] <> "123456789" or
 4363         striExpr("1234567890") [ intExpr(            1) .. intExpr(           10) ] <> "1234567890" or
 4364         striExpr("1234567890") [ intExpr(            1) .. intExpr(           11) ] <> "1234567890" or
 4365         striExpr("1234567890") [ intExpr(            1) .. intExpr(           15) ] <> "1234567890" or
 4366         striExpr("1234567890") [ intExpr(            1) .. intExpr( integer.last) ] <> "1234567890" or
 4367 
 4368         striExpr("1234567890") [ intExpr(            5) .. intExpr(            4) ] <> "" or
 4369         striExpr("1234567890") [ intExpr(            5) .. intExpr(            5) ] <> "5" or
 4370         striExpr("1234567890") [ intExpr(            5) .. intExpr(            6) ] <> "56" or
 4371         striExpr("1234567890") [ intExpr(            5) .. intExpr(            9) ] <> "56789" or
 4372         striExpr("1234567890") [ intExpr(            5) .. intExpr(           10) ] <> "567890" or
 4373         striExpr("1234567890") [ intExpr(            5) .. intExpr(           11) ] <> "567890" or
 4374         striExpr("1234567890") [ intExpr(            5) .. intExpr(           15) ] <> "567890" or
 4375         striExpr("1234567890") [ intExpr(            5) .. intExpr( integer.last) ] <> "567890" or
 4376 
 4377         striExpr("1234567890") [ intExpr(           10) .. intExpr(            9) ] <> "" or
 4378         striExpr("1234567890") [ intExpr(           10) .. intExpr(           10) ] <> "0" or
 4379         striExpr("1234567890") [ intExpr(           10) .. intExpr(           11) ] <> "0" or
 4380         striExpr("1234567890") [ intExpr(           10) .. intExpr(           15) ] <> "0" or
 4381         striExpr("1234567890") [ intExpr(           10) .. intExpr( integer.last) ] <> "0" or
 4382 
 4383         striExpr("1234567890") [ intExpr(           11) .. intExpr(           10) ] <> "" or
 4384         striExpr("1234567890") [ intExpr(           11) .. intExpr(           11) ] <> "" or
 4385         striExpr("1234567890") [ intExpr(           11) .. intExpr(           15) ] <> "" or
 4386         striExpr("1234567890") [ intExpr(           11) .. intExpr( integer.last) ] <> "" or
 4387 
 4388         striExpr("1234567890") [ intExpr(           15) .. intExpr(           14) ] <> "" or
 4389         striExpr("1234567890") [ intExpr(           15) .. intExpr(           15) ] <> "" or
 4390         striExpr("1234567890") [ intExpr(           15) .. intExpr(           20) ] <> "" or
 4391         striExpr("1234567890") [ intExpr(           15) .. intExpr( integer.last) ] <> "" or
 4392 
 4393         striExpr("1234567890") [ intExpr( integer.last) .. intExpr( integer.last) ] <> "" then
 4394       writeln(" ***** STRING [ START .. STOP ] does not work correct. (8)");
 4395       okay := FALSE;
 4396     end if;
 4397   end func;
 4398 
 4399 
 4400 const func boolean: check_string_range_assign_1 is func
 4401   result
 4402     var boolean: okay is TRUE;
 4403   local
 4404     var boolean: ok is TRUE;
 4405     var string: stri is "";
 4406   begin
 4407     stri := "" [             1 ..             0 ]; ok := ok and stri = "";
 4408     stri := "" [             1 ..             1 ]; ok := ok and stri = "";
 4409     stri := "" [             1 ..             2 ]; ok := ok and stri = "";
 4410     stri := "" [             1 ..            15 ]; ok := ok and stri = "";
 4411     stri := "" [             1 ..  integer.last ]; ok := ok and stri = "";
 4412 
 4413     stri := "" [             5 ..             4 ]; ok := ok and stri = "";
 4414     stri := "" [             5 ..             5 ]; ok := ok and stri = "";
 4415     stri := "" [             5 ..             6 ]; ok := ok and stri = "";
 4416     stri := "" [             5 ..            15 ]; ok := ok and stri = "";
 4417     stri := "" [             5 ..  integer.last ]; ok := ok and stri = "";
 4418 
 4419     stri := "" [  integer.last ..  integer.last ]; ok := ok and stri = "";
 4420 
 4421     stri := "1" [             1 ..             0 ]; ok := ok and stri = "";
 4422     stri := "1" [             1 ..             1 ]; ok := ok and stri = "1";
 4423     stri := "1" [             1 ..             2 ]; ok := ok and stri = "1";
 4424     stri := "1" [             1 ..            15 ]; ok := ok and stri = "1";
 4425     stri := "1" [             1 ..  integer.last ]; ok := ok and stri = "1";
 4426 
 4427     stri := "1" [             2 ..             1 ]; ok := ok and stri = "";
 4428     stri := "1" [             2 ..             4 ]; ok := ok and stri = "";
 4429     stri := "1" [             2 ..             5 ]; ok := ok and stri = "";
 4430     stri := "1" [             2 ..             6 ]; ok := ok and stri = "";
 4431     stri := "1" [             2 ..            15 ]; ok := ok and stri = "";
 4432     stri := "1" [             2 ..  integer.last ]; ok := ok and stri = "";
 4433 
 4434     stri := "1" [             5 ..             4 ]; ok := ok and stri = "";
 4435     stri := "1" [             5 ..             5 ]; ok := ok and stri = "";
 4436     stri := "1" [             5 ..             6 ]; ok := ok and stri = "";
 4437     stri := "1" [             5 ..            15 ]; ok := ok and stri = "";
 4438     stri := "1" [             5 ..  integer.last ]; ok := ok and stri = "";
 4439 
 4440     stri := "1" [  integer.last ..  integer.last ]; ok := ok and stri = "";
 4441 
 4442     stri := "1234567890" [             1 ..             0 ]; ok := ok and stri = "";
 4443     stri := "1234567890" [             1 ..             1 ]; ok := ok and stri = "1";
 4444     stri := "1234567890" [             1 ..             5 ]; ok := ok and stri = "12345";
 4445     stri := "1234567890" [             1 ..             9 ]; ok := ok and stri = "123456789";
 4446     stri := "1234567890" [             1 ..            10 ]; ok := ok and stri = "1234567890";
 4447     stri := "1234567890" [             1 ..            11 ]; ok := ok and stri = "1234567890";
 4448     stri := "1234567890" [             1 ..            15 ]; ok := ok and stri = "1234567890";
 4449     stri := "1234567890" [             1 ..  integer.last ]; ok := ok and stri = "1234567890";
 4450 
 4451     stri := "1234567890" [             5 ..             4 ]; ok := ok and stri = "";
 4452     stri := "1234567890" [             5 ..             5 ]; ok := ok and stri = "5";
 4453     stri := "1234567890" [             5 ..             6 ]; ok := ok and stri = "56";
 4454     stri := "1234567890" [             5 ..             9 ]; ok := ok and stri = "56789";
 4455     stri := "1234567890" [             5 ..            10 ]; ok := ok and stri = "567890";
 4456     stri := "1234567890" [             5 ..            11 ]; ok := ok and stri = "567890";
 4457     stri := "1234567890" [             5 ..            15 ]; ok := ok and stri = "567890";
 4458     stri := "1234567890" [             5 ..  integer.last ]; ok := ok and stri = "567890";
 4459 
 4460     stri := "1234567890" [            10 ..             9 ]; ok := ok and stri = "";
 4461     stri := "1234567890" [            10 ..            10 ]; ok := ok and stri = "0";
 4462     stri := "1234567890" [            10 ..            11 ]; ok := ok and stri = "0";
 4463     stri := "1234567890" [            10 ..            15 ]; ok := ok and stri = "0";
 4464     stri := "1234567890" [            10 ..  integer.last ]; ok := ok and stri = "0";
 4465 
 4466     stri := "1234567890" [            11 ..            10 ]; ok := ok and stri = "";
 4467     stri := "1234567890" [            11 ..            11 ]; ok := ok and stri = "";
 4468     stri := "1234567890" [            11 ..            15 ]; ok := ok and stri = "";
 4469     stri := "1234567890" [            11 ..  integer.last ]; ok := ok and stri = "";
 4470 
 4471     stri := "1234567890" [            15 ..            14 ]; ok := ok and stri = "";
 4472     stri := "1234567890" [            15 ..            15 ]; ok := ok and stri = "";
 4473     stri := "1234567890" [            15 ..            20 ]; ok := ok and stri = "";
 4474     stri := "1234567890" [            15 ..  integer.last ]; ok := ok and stri = "";
 4475 
 4476     stri := "1234567890" [  integer.last ..  integer.last ]; ok := ok and stri = "";
 4477     if not ok then
 4478       writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (1)");
 4479       okay := FALSE;
 4480     end if;
 4481 
 4482     ok := TRUE;
 4483     stri := "" [             1 .. intExpr(            0) ]; ok := ok and stri = "";
 4484     stri := "" [             1 .. intExpr(            1) ]; ok := ok and stri = "";
 4485     stri := "" [             1 .. intExpr(            2) ]; ok := ok and stri = "";
 4486     stri := "" [             1 .. intExpr(           15) ]; ok := ok and stri = "";
 4487     stri := "" [             1 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4488 
 4489     stri := "" [             5 .. intExpr(            4) ]; ok := ok and stri = "";
 4490     stri := "" [             5 .. intExpr(            5) ]; ok := ok and stri = "";
 4491     stri := "" [             5 .. intExpr(            6) ]; ok := ok and stri = "";
 4492     stri := "" [             5 .. intExpr(           15) ]; ok := ok and stri = "";
 4493     stri := "" [             5 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4494 
 4495     stri := "" [  integer.last .. intExpr( integer.last) ]; ok := ok and stri = "";
 4496 
 4497     stri := "1" [             1 .. intExpr(            0) ]; ok := ok and stri = "";
 4498     stri := "1" [             1 .. intExpr(            1) ]; ok := ok and stri = "1";
 4499     stri := "1" [             1 .. intExpr(            2) ]; ok := ok and stri = "1";
 4500     stri := "1" [             1 .. intExpr(           15) ]; ok := ok and stri = "1";
 4501     stri := "1" [             1 .. intExpr( integer.last) ]; ok := ok and stri = "1";
 4502 
 4503     stri := "1" [             2 .. intExpr(            1) ]; ok := ok and stri = "";
 4504     stri := "1" [             2 .. intExpr(            4) ]; ok := ok and stri = "";
 4505     stri := "1" [             2 .. intExpr(            5) ]; ok := ok and stri = "";
 4506     stri := "1" [             2 .. intExpr(            6) ]; ok := ok and stri = "";
 4507     stri := "1" [             2 .. intExpr(           15) ]; ok := ok and stri = "";
 4508     stri := "1" [             2 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4509 
 4510     stri := "1" [             5 .. intExpr(            4) ]; ok := ok and stri = "";
 4511     stri := "1" [             5 .. intExpr(            5) ]; ok := ok and stri = "";
 4512     stri := "1" [             5 .. intExpr(            6) ]; ok := ok and stri = "";
 4513     stri := "1" [             5 .. intExpr(           15) ]; ok := ok and stri = "";
 4514     stri := "1" [             5 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4515 
 4516     stri := "1" [  integer.last .. intExpr( integer.last) ]; ok := ok and stri = "";
 4517 
 4518     stri := "1234567890" [             1 .. intExpr(            0) ]; ok := ok and stri = "";
 4519     stri := "1234567890" [             1 .. intExpr(            1) ]; ok := ok and stri = "1";
 4520     stri := "1234567890" [             1 .. intExpr(            5) ]; ok := ok and stri = "12345";
 4521     stri := "1234567890" [             1 .. intExpr(            9) ]; ok := ok and stri = "123456789";
 4522     stri := "1234567890" [             1 .. intExpr(           10) ]; ok := ok and stri = "1234567890";
 4523     stri := "1234567890" [             1 .. intExpr(           11) ]; ok := ok and stri = "1234567890";
 4524     stri := "1234567890" [             1 .. intExpr(           15) ]; ok := ok and stri = "1234567890";
 4525     stri := "1234567890" [             1 .. intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 4526 
 4527     stri := "1234567890" [             5 .. intExpr(            4) ]; ok := ok and stri = "";
 4528     stri := "1234567890" [             5 .. intExpr(            5) ]; ok := ok and stri = "5";
 4529     stri := "1234567890" [             5 .. intExpr(            6) ]; ok := ok and stri = "56";
 4530     stri := "1234567890" [             5 .. intExpr(            9) ]; ok := ok and stri = "56789";
 4531     stri := "1234567890" [             5 .. intExpr(           10) ]; ok := ok and stri = "567890";
 4532     stri := "1234567890" [             5 .. intExpr(           11) ]; ok := ok and stri = "567890";
 4533     stri := "1234567890" [             5 .. intExpr(           15) ]; ok := ok and stri = "567890";
 4534     stri := "1234567890" [             5 .. intExpr( integer.last) ]; ok := ok and stri = "567890";
 4535 
 4536     stri := "1234567890" [            10 .. intExpr(            9) ]; ok := ok and stri = "";
 4537     stri := "1234567890" [            10 .. intExpr(           10) ]; ok := ok and stri = "0";
 4538     stri := "1234567890" [            10 .. intExpr(           11) ]; ok := ok and stri = "0";
 4539     stri := "1234567890" [            10 .. intExpr(           15) ]; ok := ok and stri = "0";
 4540     stri := "1234567890" [            10 .. intExpr( integer.last) ]; ok := ok and stri = "0";
 4541 
 4542     stri := "1234567890" [            11 .. intExpr(           10) ]; ok := ok and stri = "";
 4543     stri := "1234567890" [            11 .. intExpr(           11) ]; ok := ok and stri = "";
 4544     stri := "1234567890" [            11 .. intExpr(           15) ]; ok := ok and stri = "";
 4545     stri := "1234567890" [            11 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4546 
 4547     stri := "1234567890" [            15 .. intExpr(           14) ]; ok := ok and stri = "";
 4548     stri := "1234567890" [            15 .. intExpr(           15) ]; ok := ok and stri = "";
 4549     stri := "1234567890" [            15 .. intExpr(           20) ]; ok := ok and stri = "";
 4550     stri := "1234567890" [            15 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4551 
 4552     stri := "1234567890" [  integer.last .. intExpr( integer.last) ]; ok := ok and stri = "";
 4553     if not ok then
 4554       writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (2)");
 4555       okay := FALSE;
 4556     end if;
 4557 
 4558     ok := TRUE;
 4559     stri := "" [ intExpr(            1) ..             0 ]; ok := ok and stri = "";
 4560     stri := "" [ intExpr(            1) ..             1 ]; ok := ok and stri = "";
 4561     stri := "" [ intExpr(            1) ..             2 ]; ok := ok and stri = "";
 4562     stri := "" [ intExpr(            1) ..            15 ]; ok := ok and stri = "";
 4563     stri := "" [ intExpr(            1) ..  integer.last ]; ok := ok and stri = "";
 4564 
 4565     stri := "" [ intExpr(            5) ..             4 ]; ok := ok and stri = "";
 4566     stri := "" [ intExpr(            5) ..             5 ]; ok := ok and stri = "";
 4567     stri := "" [ intExpr(            5) ..             6 ]; ok := ok and stri = "";
 4568     stri := "" [ intExpr(            5) ..            15 ]; ok := ok and stri = "";
 4569     stri := "" [ intExpr(            5) ..  integer.last ]; ok := ok and stri = "";
 4570 
 4571     stri := "" [ intExpr( integer.last) ..  integer.last ]; ok := ok and stri = "";
 4572 
 4573     stri := "1" [ intExpr(            1) ..             0 ]; ok := ok and stri = "";
 4574     stri := "1" [ intExpr(            1) ..             1 ]; ok := ok and stri = "1";
 4575     stri := "1" [ intExpr(            1) ..             2 ]; ok := ok and stri = "1";
 4576     stri := "1" [ intExpr(            1) ..            15 ]; ok := ok and stri = "1";
 4577     stri := "1" [ intExpr(            1) ..  integer.last ]; ok := ok and stri = "1";
 4578 
 4579     stri := "1" [ intExpr(            2) ..             1 ]; ok := ok and stri = "";
 4580     stri := "1" [ intExpr(            2) ..             4 ]; ok := ok and stri = "";
 4581     stri := "1" [ intExpr(            2) ..             5 ]; ok := ok and stri = "";
 4582     stri := "1" [ intExpr(            2) ..             6 ]; ok := ok and stri = "";
 4583     stri := "1" [ intExpr(            2) ..            15 ]; ok := ok and stri = "";
 4584     stri := "1" [ intExpr(            2) ..  integer.last ]; ok := ok and stri = "";
 4585 
 4586     stri := "1" [ intExpr(            5) ..             4 ]; ok := ok and stri = "";
 4587     stri := "1" [ intExpr(            5) ..             5 ]; ok := ok and stri = "";
 4588     stri := "1" [ intExpr(            5) ..             6 ]; ok := ok and stri = "";
 4589     stri := "1" [ intExpr(            5) ..            15 ]; ok := ok and stri = "";
 4590     stri := "1" [ intExpr(            5) ..  integer.last ]; ok := ok and stri = "";
 4591 
 4592     stri := "1" [ intExpr( integer.last) ..  integer.last ]; ok := ok and stri = "";
 4593 
 4594     stri := "1234567890" [ intExpr(            1) ..             0 ]; ok := ok and stri = "";
 4595     stri := "1234567890" [ intExpr(            1) ..             1 ]; ok := ok and stri = "1";
 4596     stri := "1234567890" [ intExpr(            1) ..             5 ]; ok := ok and stri = "12345";
 4597     stri := "1234567890" [ intExpr(            1) ..             9 ]; ok := ok and stri = "123456789";
 4598     stri := "1234567890" [ intExpr(            1) ..            10 ]; ok := ok and stri = "1234567890";
 4599     stri := "1234567890" [ intExpr(            1) ..            11 ]; ok := ok and stri = "1234567890";
 4600     stri := "1234567890" [ intExpr(            1) ..            15 ]; ok := ok and stri = "1234567890";
 4601     stri := "1234567890" [ intExpr(            1) ..  integer.last ]; ok := ok and stri = "1234567890";
 4602 
 4603     stri := "1234567890" [ intExpr(            5) ..             4 ]; ok := ok and stri = "";
 4604     stri := "1234567890" [ intExpr(            5) ..             5 ]; ok := ok and stri = "5";
 4605     stri := "1234567890" [ intExpr(            5) ..             6 ]; ok := ok and stri = "56";
 4606     stri := "1234567890" [ intExpr(            5) ..             9 ]; ok := ok and stri = "56789";
 4607     stri := "1234567890" [ intExpr(            5) ..            10 ]; ok := ok and stri = "567890";
 4608     stri := "1234567890" [ intExpr(            5) ..            11 ]; ok := ok and stri = "567890";
 4609     stri := "1234567890" [ intExpr(            5) ..            15 ]; ok := ok and stri = "567890";
 4610     stri := "1234567890" [ intExpr(            5) ..  integer.last ]; ok := ok and stri = "567890";
 4611 
 4612     stri := "1234567890" [ intExpr(           10) ..             9 ]; ok := ok and stri = "";
 4613     stri := "1234567890" [ intExpr(           10) ..            10 ]; ok := ok and stri = "0";
 4614     stri := "1234567890" [ intExpr(           10) ..            11 ]; ok := ok and stri = "0";
 4615     stri := "1234567890" [ intExpr(           10) ..            15 ]; ok := ok and stri = "0";
 4616     stri := "1234567890" [ intExpr(           10) ..  integer.last ]; ok := ok and stri = "0";
 4617 
 4618     stri := "1234567890" [ intExpr(           11) ..            10 ]; ok := ok and stri = "";
 4619     stri := "1234567890" [ intExpr(           11) ..            11 ]; ok := ok and stri = "";
 4620     stri := "1234567890" [ intExpr(           11) ..            15 ]; ok := ok and stri = "";
 4621     stri := "1234567890" [ intExpr(           11) ..  integer.last ]; ok := ok and stri = "";
 4622 
 4623     stri := "1234567890" [ intExpr(           15) ..            14 ]; ok := ok and stri = "";
 4624     stri := "1234567890" [ intExpr(           15) ..            15 ]; ok := ok and stri = "";
 4625     stri := "1234567890" [ intExpr(           15) ..            20 ]; ok := ok and stri = "";
 4626     stri := "1234567890" [ intExpr(           15) ..  integer.last ]; ok := ok and stri = "";
 4627 
 4628     stri := "1234567890" [ intExpr( integer.last) ..  integer.last ]; ok := ok and stri = "";
 4629     if not ok then
 4630       writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (3)");
 4631       okay := FALSE;
 4632     end if;
 4633 
 4634     ok := TRUE;
 4635     stri := "" [ intExpr(            1) .. intExpr(            0) ]; ok := ok and stri = "";
 4636     stri := "" [ intExpr(            1) .. intExpr(            1) ]; ok := ok and stri = "";
 4637     stri := "" [ intExpr(            1) .. intExpr(            2) ]; ok := ok and stri = "";
 4638     stri := "" [ intExpr(            1) .. intExpr(           15) ]; ok := ok and stri = "";
 4639     stri := "" [ intExpr(            1) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4640 
 4641     stri := "" [ intExpr(            5) .. intExpr(            4) ]; ok := ok and stri = "";
 4642     stri := "" [ intExpr(            5) .. intExpr(            5) ]; ok := ok and stri = "";
 4643     stri := "" [ intExpr(            5) .. intExpr(            6) ]; ok := ok and stri = "";
 4644     stri := "" [ intExpr(            5) .. intExpr(           15) ]; ok := ok and stri = "";
 4645     stri := "" [ intExpr(            5) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4646 
 4647     stri := "" [ intExpr( integer.last) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4648 
 4649     stri := "1" [ intExpr(            1) .. intExpr(            0) ]; ok := ok and stri = "";
 4650     stri := "1" [ intExpr(            1) .. intExpr(            1) ]; ok := ok and stri = "1";
 4651     stri := "1" [ intExpr(            1) .. intExpr(            2) ]; ok := ok and stri = "1";
 4652     stri := "1" [ intExpr(            1) .. intExpr(           15) ]; ok := ok and stri = "1";
 4653     stri := "1" [ intExpr(            1) .. intExpr( integer.last) ]; ok := ok and stri = "1";
 4654 
 4655     stri := "1" [ intExpr(            2) .. intExpr(            1) ]; ok := ok and stri = "";
 4656     stri := "1" [ intExpr(            2) .. intExpr(            4) ]; ok := ok and stri = "";
 4657     stri := "1" [ intExpr(            2) .. intExpr(            5) ]; ok := ok and stri = "";
 4658     stri := "1" [ intExpr(            2) .. intExpr(            6) ]; ok := ok and stri = "";
 4659     stri := "1" [ intExpr(            2) .. intExpr(           15) ]; ok := ok and stri = "";
 4660     stri := "1" [ intExpr(            2) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4661 
 4662     stri := "1" [ intExpr(            5) .. intExpr(            4) ]; ok := ok and stri = "";
 4663     stri := "1" [ intExpr(            5) .. intExpr(            5) ]; ok := ok and stri = "";
 4664     stri := "1" [ intExpr(            5) .. intExpr(            6) ]; ok := ok and stri = "";
 4665     stri := "1" [ intExpr(            5) .. intExpr(           15) ]; ok := ok and stri = "";
 4666     stri := "1" [ intExpr(            5) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4667 
 4668     stri := "1" [ intExpr( integer.last) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4669 
 4670     stri := "1234567890" [ intExpr(            1) .. intExpr(            0) ]; ok := ok and stri = "";
 4671     stri := "1234567890" [ intExpr(            1) .. intExpr(            1) ]; ok := ok and stri = "1";
 4672     stri := "1234567890" [ intExpr(            1) .. intExpr(            5) ]; ok := ok and stri = "12345";
 4673     stri := "1234567890" [ intExpr(            1) .. intExpr(            9) ]; ok := ok and stri = "123456789";
 4674     stri := "1234567890" [ intExpr(            1) .. intExpr(           10) ]; ok := ok and stri = "1234567890";
 4675     stri := "1234567890" [ intExpr(            1) .. intExpr(           11) ]; ok := ok and stri = "1234567890";
 4676     stri := "1234567890" [ intExpr(            1) .. intExpr(           15) ]; ok := ok and stri = "1234567890";
 4677     stri := "1234567890" [ intExpr(            1) .. intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 4678 
 4679     stri := "1234567890" [ intExpr(            5) .. intExpr(            4) ]; ok := ok and stri = "";
 4680     stri := "1234567890" [ intExpr(            5) .. intExpr(            5) ]; ok := ok and stri = "5";
 4681     stri := "1234567890" [ intExpr(            5) .. intExpr(            6) ]; ok := ok and stri = "56";
 4682     stri := "1234567890" [ intExpr(            5) .. intExpr(            9) ]; ok := ok and stri = "56789";
 4683     stri := "1234567890" [ intExpr(            5) .. intExpr(           10) ]; ok := ok and stri = "567890";
 4684     stri := "1234567890" [ intExpr(            5) .. intExpr(           11) ]; ok := ok and stri = "567890";
 4685     stri := "1234567890" [ intExpr(            5) .. intExpr(           15) ]; ok := ok and stri = "567890";
 4686     stri := "1234567890" [ intExpr(            5) .. intExpr( integer.last) ]; ok := ok and stri = "567890";
 4687 
 4688     stri := "1234567890" [ intExpr(           10) .. intExpr(            9) ]; ok := ok and stri = "";
 4689     stri := "1234567890" [ intExpr(           10) .. intExpr(           10) ]; ok := ok and stri = "0";
 4690     stri := "1234567890" [ intExpr(           10) .. intExpr(           11) ]; ok := ok and stri = "0";
 4691     stri := "1234567890" [ intExpr(           10) .. intExpr(           15) ]; ok := ok and stri = "0";
 4692     stri := "1234567890" [ intExpr(           10) .. intExpr( integer.last) ]; ok := ok and stri = "0";
 4693 
 4694     stri := "1234567890" [ intExpr(           11) .. intExpr(           10) ]; ok := ok and stri = "";
 4695     stri := "1234567890" [ intExpr(           11) .. intExpr(           11) ]; ok := ok and stri = "";
 4696     stri := "1234567890" [ intExpr(           11) .. intExpr(           15) ]; ok := ok and stri = "";
 4697     stri := "1234567890" [ intExpr(           11) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4698 
 4699     stri := "1234567890" [ intExpr(           15) .. intExpr(           14) ]; ok := ok and stri = "";
 4700     stri := "1234567890" [ intExpr(           15) .. intExpr(           15) ]; ok := ok and stri = "";
 4701     stri := "1234567890" [ intExpr(           15) .. intExpr(           20) ]; ok := ok and stri = "";
 4702     stri := "1234567890" [ intExpr(           15) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4703 
 4704     stri := "1234567890" [ intExpr( integer.last) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4705     if not ok then
 4706       writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (4)");
 4707       okay := FALSE;
 4708     end if;
 4709   end func;
 4710 
 4711 
 4712 const func boolean: check_string_range_assign_2 is func
 4713   result
 4714     var boolean: okay is TRUE;
 4715   local
 4716     var boolean: ok is TRUE;
 4717     var string: stri is "";
 4718   begin
 4719     stri := striExpr("") [             1 ..             0 ]; ok := ok and stri = "";
 4720     stri := striExpr("") [             1 ..             1 ]; ok := ok and stri = "";
 4721     stri := striExpr("") [             1 ..             2 ]; ok := ok and stri = "";
 4722     stri := striExpr("") [             1 ..            15 ]; ok := ok and stri = "";
 4723     stri := striExpr("") [             1 ..  integer.last ]; ok := ok and stri = "";
 4724 
 4725     stri := striExpr("") [             5 ..             4 ]; ok := ok and stri = "";
 4726     stri := striExpr("") [             5 ..             5 ]; ok := ok and stri = "";
 4727     stri := striExpr("") [             5 ..             6 ]; ok := ok and stri = "";
 4728     stri := striExpr("") [             5 ..            15 ]; ok := ok and stri = "";
 4729     stri := striExpr("") [             5 ..  integer.last ]; ok := ok and stri = "";
 4730 
 4731     stri := striExpr("") [  integer.last ..  integer.last ]; ok := ok and stri = "";
 4732 
 4733     stri := striExpr("1") [             1 ..             0 ]; ok := ok and stri = "";
 4734     stri := striExpr("1") [             1 ..             1 ]; ok := ok and stri = "1";
 4735     stri := striExpr("1") [             1 ..             2 ]; ok := ok and stri = "1";
 4736     stri := striExpr("1") [             1 ..            15 ]; ok := ok and stri = "1";
 4737     stri := striExpr("1") [             1 ..  integer.last ]; ok := ok and stri = "1";
 4738 
 4739     stri := striExpr("1") [             2 ..             1 ]; ok := ok and stri = "";
 4740     stri := striExpr("1") [             2 ..             4 ]; ok := ok and stri = "";
 4741     stri := striExpr("1") [             2 ..             5 ]; ok := ok and stri = "";
 4742     stri := striExpr("1") [             2 ..             6 ]; ok := ok and stri = "";
 4743     stri := striExpr("1") [             2 ..            15 ]; ok := ok and stri = "";
 4744     stri := striExpr("1") [             2 ..  integer.last ]; ok := ok and stri = "";
 4745 
 4746     stri := striExpr("1") [             5 ..             4 ]; ok := ok and stri = "";
 4747     stri := striExpr("1") [             5 ..             5 ]; ok := ok and stri = "";
 4748     stri := striExpr("1") [             5 ..             6 ]; ok := ok and stri = "";
 4749     stri := striExpr("1") [             5 ..            15 ]; ok := ok and stri = "";
 4750     stri := striExpr("1") [             5 ..  integer.last ]; ok := ok and stri = "";
 4751 
 4752     stri := striExpr("1") [  integer.last ..  integer.last ]; ok := ok and stri = "";
 4753 
 4754     stri := striExpr("1234567890") [             1 ..             0 ]; ok := ok and stri = "";
 4755     stri := striExpr("1234567890") [             1 ..             1 ]; ok := ok and stri = "1";
 4756     stri := striExpr("1234567890") [             1 ..             5 ]; ok := ok and stri = "12345";
 4757     stri := striExpr("1234567890") [             1 ..             9 ]; ok := ok and stri = "123456789";
 4758     stri := striExpr("1234567890") [             1 ..            10 ]; ok := ok and stri = "1234567890";
 4759     stri := striExpr("1234567890") [             1 ..            11 ]; ok := ok and stri = "1234567890";
 4760     stri := striExpr("1234567890") [             1 ..            15 ]; ok := ok and stri = "1234567890";
 4761     stri := striExpr("1234567890") [             1 ..  integer.last ]; ok := ok and stri = "1234567890";
 4762 
 4763     stri := striExpr("1234567890") [             5 ..             4 ]; ok := ok and stri = "";
 4764     stri := striExpr("1234567890") [             5 ..             5 ]; ok := ok and stri = "5";
 4765     stri := striExpr("1234567890") [             5 ..             6 ]; ok := ok and stri = "56";
 4766     stri := striExpr("1234567890") [             5 ..             9 ]; ok := ok and stri = "56789";
 4767     stri := striExpr("1234567890") [             5 ..            10 ]; ok := ok and stri = "567890";
 4768     stri := striExpr("1234567890") [             5 ..            11 ]; ok := ok and stri = "567890";
 4769     stri := striExpr("1234567890") [             5 ..            15 ]; ok := ok and stri = "567890";
 4770     stri := striExpr("1234567890") [             5 ..  integer.last ]; ok := ok and stri = "567890";
 4771 
 4772     stri := striExpr("1234567890") [            10 ..             9 ]; ok := ok and stri = "";
 4773     stri := striExpr("1234567890") [            10 ..            10 ]; ok := ok and stri = "0";
 4774     stri := striExpr("1234567890") [            10 ..            11 ]; ok := ok and stri = "0";
 4775     stri := striExpr("1234567890") [            10 ..            15 ]; ok := ok and stri = "0";
 4776     stri := striExpr("1234567890") [            10 ..  integer.last ]; ok := ok and stri = "0";
 4777 
 4778     stri := striExpr("1234567890") [            11 ..            10 ]; ok := ok and stri = "";
 4779     stri := striExpr("1234567890") [            11 ..            11 ]; ok := ok and stri = "";
 4780     stri := striExpr("1234567890") [            11 ..            15 ]; ok := ok and stri = "";
 4781     stri := striExpr("1234567890") [            11 ..  integer.last ]; ok := ok and stri = "";
 4782 
 4783     stri := striExpr("1234567890") [            15 ..            14 ]; ok := ok and stri = "";
 4784     stri := striExpr("1234567890") [            15 ..            15 ]; ok := ok and stri = "";
 4785     stri := striExpr("1234567890") [            15 ..            20 ]; ok := ok and stri = "";
 4786     stri := striExpr("1234567890") [            15 ..  integer.last ]; ok := ok and stri = "";
 4787 
 4788     stri := striExpr("1234567890") [  integer.last ..  integer.last ]; ok := ok and stri = "";
 4789     if not ok then
 4790       writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (5)");
 4791       okay := FALSE;
 4792     end if;
 4793 
 4794     ok := TRUE;
 4795     stri := striExpr("") [             1 .. intExpr(            0) ]; ok := ok and stri = "";
 4796     stri := striExpr("") [             1 .. intExpr(            1) ]; ok := ok and stri = "";
 4797     stri := striExpr("") [             1 .. intExpr(            2) ]; ok := ok and stri = "";
 4798     stri := striExpr("") [             1 .. intExpr(           15) ]; ok := ok and stri = "";
 4799     stri := striExpr("") [             1 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4800 
 4801     stri := striExpr("") [             5 .. intExpr(            4) ]; ok := ok and stri = "";
 4802     stri := striExpr("") [             5 .. intExpr(            5) ]; ok := ok and stri = "";
 4803     stri := striExpr("") [             5 .. intExpr(            6) ]; ok := ok and stri = "";
 4804     stri := striExpr("") [             5 .. intExpr(           15) ]; ok := ok and stri = "";
 4805     stri := striExpr("") [             5 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4806 
 4807     stri := striExpr("") [  integer.last .. intExpr( integer.last) ]; ok := ok and stri = "";
 4808 
 4809     stri := striExpr("1") [             1 .. intExpr(            0) ]; ok := ok and stri = "";
 4810     stri := striExpr("1") [             1 .. intExpr(            1) ]; ok := ok and stri = "1";
 4811     stri := striExpr("1") [             1 .. intExpr(            2) ]; ok := ok and stri = "1";
 4812     stri := striExpr("1") [             1 .. intExpr(           15) ]; ok := ok and stri = "1";
 4813     stri := striExpr("1") [             1 .. intExpr( integer.last) ]; ok := ok and stri = "1";
 4814 
 4815     stri := striExpr("1") [             2 .. intExpr(            1) ]; ok := ok and stri = "";
 4816     stri := striExpr("1") [             2 .. intExpr(            4) ]; ok := ok and stri = "";
 4817     stri := striExpr("1") [             2 .. intExpr(            5) ]; ok := ok and stri = "";
 4818     stri := striExpr("1") [             2 .. intExpr(            6) ]; ok := ok and stri = "";
 4819     stri := striExpr("1") [             2 .. intExpr(           15) ]; ok := ok and stri = "";
 4820     stri := striExpr("1") [             2 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4821 
 4822     stri := striExpr("1") [             5 .. intExpr(            4) ]; ok := ok and stri = "";
 4823     stri := striExpr("1") [             5 .. intExpr(            5) ]; ok := ok and stri = "";
 4824     stri := striExpr("1") [             5 .. intExpr(            6) ]; ok := ok and stri = "";
 4825     stri := striExpr("1") [             5 .. intExpr(           15) ]; ok := ok and stri = "";
 4826     stri := striExpr("1") [             5 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4827 
 4828     stri := striExpr("1") [  integer.last .. intExpr( integer.last) ]; ok := ok and stri = "";
 4829 
 4830     stri := striExpr("1234567890") [             1 .. intExpr(            0) ]; ok := ok and stri = "";
 4831     stri := striExpr("1234567890") [             1 .. intExpr(            1) ]; ok := ok and stri = "1";
 4832     stri := striExpr("1234567890") [             1 .. intExpr(            5) ]; ok := ok and stri = "12345";
 4833     stri := striExpr("1234567890") [             1 .. intExpr(            9) ]; ok := ok and stri = "123456789";
 4834     stri := striExpr("1234567890") [             1 .. intExpr(           10) ]; ok := ok and stri = "1234567890";
 4835     stri := striExpr("1234567890") [             1 .. intExpr(           11) ]; ok := ok and stri = "1234567890";
 4836     stri := striExpr("1234567890") [             1 .. intExpr(           15) ]; ok := ok and stri = "1234567890";
 4837     stri := striExpr("1234567890") [             1 .. intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 4838 
 4839     stri := striExpr("1234567890") [             5 .. intExpr(            4) ]; ok := ok and stri = "";
 4840     stri := striExpr("1234567890") [             5 .. intExpr(            5) ]; ok := ok and stri = "5";
 4841     stri := striExpr("1234567890") [             5 .. intExpr(            6) ]; ok := ok and stri = "56";
 4842     stri := striExpr("1234567890") [             5 .. intExpr(            9) ]; ok := ok and stri = "56789";
 4843     stri := striExpr("1234567890") [             5 .. intExpr(           10) ]; ok := ok and stri = "567890";
 4844     stri := striExpr("1234567890") [             5 .. intExpr(           11) ]; ok := ok and stri = "567890";
 4845     stri := striExpr("1234567890") [             5 .. intExpr(           15) ]; ok := ok and stri = "567890";
 4846     stri := striExpr("1234567890") [             5 .. intExpr( integer.last) ]; ok := ok and stri = "567890";
 4847 
 4848     stri := striExpr("1234567890") [            10 .. intExpr(            9) ]; ok := ok and stri = "";
 4849     stri := striExpr("1234567890") [            10 .. intExpr(           10) ]; ok := ok and stri = "0";
 4850     stri := striExpr("1234567890") [            10 .. intExpr(           11) ]; ok := ok and stri = "0";
 4851     stri := striExpr("1234567890") [            10 .. intExpr(           15) ]; ok := ok and stri = "0";
 4852     stri := striExpr("1234567890") [            10 .. intExpr( integer.last) ]; ok := ok and stri = "0";
 4853 
 4854     stri := striExpr("1234567890") [            11 .. intExpr(           10) ]; ok := ok and stri = "";
 4855     stri := striExpr("1234567890") [            11 .. intExpr(           11) ]; ok := ok and stri = "";
 4856     stri := striExpr("1234567890") [            11 .. intExpr(           15) ]; ok := ok and stri = "";
 4857     stri := striExpr("1234567890") [            11 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4858 
 4859     stri := striExpr("1234567890") [            15 .. intExpr(           14) ]; ok := ok and stri = "";
 4860     stri := striExpr("1234567890") [            15 .. intExpr(           15) ]; ok := ok and stri = "";
 4861     stri := striExpr("1234567890") [            15 .. intExpr(           20) ]; ok := ok and stri = "";
 4862     stri := striExpr("1234567890") [            15 .. intExpr( integer.last) ]; ok := ok and stri = "";
 4863 
 4864     stri := striExpr("1234567890") [  integer.last .. intExpr( integer.last) ]; ok := ok and stri = "";
 4865     if not ok then
 4866       writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (6)");
 4867       okay := FALSE;
 4868     end if;
 4869 
 4870     ok := TRUE;
 4871     stri := striExpr("") [ intExpr(            1) ..             0 ]; ok := ok and stri = "";
 4872     stri := striExpr("") [ intExpr(            1) ..             1 ]; ok := ok and stri = "";
 4873     stri := striExpr("") [ intExpr(            1) ..             2 ]; ok := ok and stri = "";
 4874     stri := striExpr("") [ intExpr(            1) ..            15 ]; ok := ok and stri = "";
 4875     stri := striExpr("") [ intExpr(            1) ..  integer.last ]; ok := ok and stri = "";
 4876 
 4877     stri := striExpr("") [ intExpr(            5) ..             4 ]; ok := ok and stri = "";
 4878     stri := striExpr("") [ intExpr(            5) ..             5 ]; ok := ok and stri = "";
 4879     stri := striExpr("") [ intExpr(            5) ..             6 ]; ok := ok and stri = "";
 4880     stri := striExpr("") [ intExpr(            5) ..            15 ]; ok := ok and stri = "";
 4881     stri := striExpr("") [ intExpr(            5) ..  integer.last ]; ok := ok and stri = "";
 4882 
 4883     stri := striExpr("") [ intExpr( integer.last) ..  integer.last ]; ok := ok and stri = "";
 4884 
 4885     stri := striExpr("1") [ intExpr(            1) ..             0 ]; ok := ok and stri = "";
 4886     stri := striExpr("1") [ intExpr(            1) ..             1 ]; ok := ok and stri = "1";
 4887     stri := striExpr("1") [ intExpr(            1) ..             2 ]; ok := ok and stri = "1";
 4888     stri := striExpr("1") [ intExpr(            1) ..            15 ]; ok := ok and stri = "1";
 4889     stri := striExpr("1") [ intExpr(            1) ..  integer.last ]; ok := ok and stri = "1";
 4890 
 4891     stri := striExpr("1") [ intExpr(            2) ..             1 ]; ok := ok and stri = "";
 4892     stri := striExpr("1") [ intExpr(            2) ..             4 ]; ok := ok and stri = "";
 4893     stri := striExpr("1") [ intExpr(            2) ..             5 ]; ok := ok and stri = "";
 4894     stri := striExpr("1") [ intExpr(            2) ..             6 ]; ok := ok and stri = "";
 4895     stri := striExpr("1") [ intExpr(            2) ..            15 ]; ok := ok and stri = "";
 4896     stri := striExpr("1") [ intExpr(            2) ..  integer.last ]; ok := ok and stri = "";
 4897 
 4898     stri := striExpr("1") [ intExpr(            5) ..             4 ]; ok := ok and stri = "";
 4899     stri := striExpr("1") [ intExpr(            5) ..             5 ]; ok := ok and stri = "";
 4900     stri := striExpr("1") [ intExpr(            5) ..             6 ]; ok := ok and stri = "";
 4901     stri := striExpr("1") [ intExpr(            5) ..            15 ]; ok := ok and stri = "";
 4902     stri := striExpr("1") [ intExpr(            5) ..  integer.last ]; ok := ok and stri = "";
 4903 
 4904     stri := striExpr("1") [ intExpr( integer.last) ..  integer.last ]; ok := ok and stri = "";
 4905 
 4906     stri := striExpr("1234567890") [ intExpr(            1) ..             0 ]; ok := ok and stri = "";
 4907     stri := striExpr("1234567890") [ intExpr(            1) ..             1 ]; ok := ok and stri = "1";
 4908     stri := striExpr("1234567890") [ intExpr(            1) ..             5 ]; ok := ok and stri = "12345";
 4909     stri := striExpr("1234567890") [ intExpr(            1) ..             9 ]; ok := ok and stri = "123456789";
 4910     stri := striExpr("1234567890") [ intExpr(            1) ..            10 ]; ok := ok and stri = "1234567890";
 4911     stri := striExpr("1234567890") [ intExpr(            1) ..            11 ]; ok := ok and stri = "1234567890";
 4912     stri := striExpr("1234567890") [ intExpr(            1) ..            15 ]; ok := ok and stri = "1234567890";
 4913     stri := striExpr("1234567890") [ intExpr(            1) ..  integer.last ]; ok := ok and stri = "1234567890";
 4914 
 4915     stri := striExpr("1234567890") [ intExpr(            5) ..             4 ]; ok := ok and stri = "";
 4916     stri := striExpr("1234567890") [ intExpr(            5) ..             5 ]; ok := ok and stri = "5";
 4917     stri := striExpr("1234567890") [ intExpr(            5) ..             6 ]; ok := ok and stri = "56";
 4918     stri := striExpr("1234567890") [ intExpr(            5) ..             9 ]; ok := ok and stri = "56789";
 4919     stri := striExpr("1234567890") [ intExpr(            5) ..            10 ]; ok := ok and stri = "567890";
 4920     stri := striExpr("1234567890") [ intExpr(            5) ..            11 ]; ok := ok and stri = "567890";
 4921     stri := striExpr("1234567890") [ intExpr(            5) ..            15 ]; ok := ok and stri = "567890";
 4922     stri := striExpr("1234567890") [ intExpr(            5) ..  integer.last ]; ok := ok and stri = "567890";
 4923 
 4924     stri := striExpr("1234567890") [ intExpr(           10) ..             9 ]; ok := ok and stri = "";
 4925     stri := striExpr("1234567890") [ intExpr(           10) ..            10 ]; ok := ok and stri = "0";
 4926     stri := striExpr("1234567890") [ intExpr(           10) ..            11 ]; ok := ok and stri = "0";
 4927     stri := striExpr("1234567890") [ intExpr(           10) ..            15 ]; ok := ok and stri = "0";
 4928     stri := striExpr("1234567890") [ intExpr(           10) ..  integer.last ]; ok := ok and stri = "0";
 4929 
 4930     stri := striExpr("1234567890") [ intExpr(           11) ..            10 ]; ok := ok and stri = "";
 4931     stri := striExpr("1234567890") [ intExpr(           11) ..            11 ]; ok := ok and stri = "";
 4932     stri := striExpr("1234567890") [ intExpr(           11) ..            15 ]; ok := ok and stri = "";
 4933     stri := striExpr("1234567890") [ intExpr(           11) ..  integer.last ]; ok := ok and stri = "";
 4934 
 4935     stri := striExpr("1234567890") [ intExpr(           15) ..            14 ]; ok := ok and stri = "";
 4936     stri := striExpr("1234567890") [ intExpr(           15) ..            15 ]; ok := ok and stri = "";
 4937     stri := striExpr("1234567890") [ intExpr(           15) ..            20 ]; ok := ok and stri = "";
 4938     stri := striExpr("1234567890") [ intExpr(           15) ..  integer.last ]; ok := ok and stri = "";
 4939 
 4940     stri := striExpr("1234567890") [ intExpr( integer.last) ..  integer.last ]; ok := ok and stri = "";
 4941     if not ok then
 4942       writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (7)");
 4943       okay := FALSE;
 4944     end if;
 4945 
 4946     ok := TRUE;
 4947     stri := striExpr("") [ intExpr(            1) .. intExpr(            0) ]; ok := ok and stri = "";
 4948     stri := striExpr("") [ intExpr(            1) .. intExpr(            1) ]; ok := ok and stri = "";
 4949     stri := striExpr("") [ intExpr(            1) .. intExpr(            2) ]; ok := ok and stri = "";
 4950     stri := striExpr("") [ intExpr(            1) .. intExpr(           15) ]; ok := ok and stri = "";
 4951     stri := striExpr("") [ intExpr(            1) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4952 
 4953     stri := striExpr("") [ intExpr(            5) .. intExpr(            4) ]; ok := ok and stri = "";
 4954     stri := striExpr("") [ intExpr(            5) .. intExpr(            5) ]; ok := ok and stri = "";
 4955     stri := striExpr("") [ intExpr(            5) .. intExpr(            6) ]; ok := ok and stri = "";
 4956     stri := striExpr("") [ intExpr(            5) .. intExpr(           15) ]; ok := ok and stri = "";
 4957     stri := striExpr("") [ intExpr(            5) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4958 
 4959     stri := striExpr("") [ intExpr( integer.last) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4960 
 4961     stri := striExpr("1") [ intExpr(            1) .. intExpr(            0) ]; ok := ok and stri = "";
 4962     stri := striExpr("1") [ intExpr(            1) .. intExpr(            1) ]; ok := ok and stri = "1";
 4963     stri := striExpr("1") [ intExpr(            1) .. intExpr(            2) ]; ok := ok and stri = "1";
 4964     stri := striExpr("1") [ intExpr(            1) .. intExpr(           15) ]; ok := ok and stri = "1";
 4965     stri := striExpr("1") [ intExpr(            1) .. intExpr( integer.last) ]; ok := ok and stri = "1";
 4966 
 4967     stri := striExpr("1") [ intExpr(            2) .. intExpr(            1) ]; ok := ok and stri = "";
 4968     stri := striExpr("1") [ intExpr(            2) .. intExpr(            4) ]; ok := ok and stri = "";
 4969     stri := striExpr("1") [ intExpr(            2) .. intExpr(            5) ]; ok := ok and stri = "";
 4970     stri := striExpr("1") [ intExpr(            2) .. intExpr(            6) ]; ok := ok and stri = "";
 4971     stri := striExpr("1") [ intExpr(            2) .. intExpr(           15) ]; ok := ok and stri = "";
 4972     stri := striExpr("1") [ intExpr(            2) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4973 
 4974     stri := striExpr("1") [ intExpr(            5) .. intExpr(            4) ]; ok := ok and stri = "";
 4975     stri := striExpr("1") [ intExpr(            5) .. intExpr(            5) ]; ok := ok and stri = "";
 4976     stri := striExpr("1") [ intExpr(            5) .. intExpr(            6) ]; ok := ok and stri = "";
 4977     stri := striExpr("1") [ intExpr(            5) .. intExpr(           15) ]; ok := ok and stri = "";
 4978     stri := striExpr("1") [ intExpr(            5) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4979 
 4980     stri := striExpr("1") [ intExpr( integer.last) .. intExpr( integer.last) ]; ok := ok and stri = "";
 4981 
 4982     stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(            0) ]; ok := ok and stri = "";
 4983     stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(            1) ]; ok := ok and stri = "1";
 4984     stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(            5) ]; ok := ok and stri = "12345";
 4985     stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(            9) ]; ok := ok and stri = "123456789";
 4986     stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(           10) ]; ok := ok and stri = "1234567890";
 4987     stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(           11) ]; ok := ok and stri = "1234567890";
 4988     stri := striExpr("1234567890") [ intExpr(            1) .. intExpr(           15) ]; ok := ok and stri = "1234567890";
 4989     stri := striExpr("1234567890") [ intExpr(            1) .. intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 4990 
 4991     stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(            4) ]; ok := ok and stri = "";
 4992     stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(            5) ]; ok := ok and stri = "5";
 4993     stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(            6) ]; ok := ok and stri = "56";
 4994     stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(            9) ]; ok := ok and stri = "56789";
 4995     stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(           10) ]; ok := ok and stri = "567890";
 4996     stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(           11) ]; ok := ok and stri = "567890";
 4997     stri := striExpr("1234567890") [ intExpr(            5) .. intExpr(           15) ]; ok := ok and stri = "567890";
 4998     stri := striExpr("1234567890") [ intExpr(            5) .. intExpr( integer.last) ]; ok := ok and stri = "567890";
 4999 
 5000     stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(            9) ]; ok := ok and stri = "";
 5001     stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(           10) ]; ok := ok and stri = "0";
 5002     stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(           11) ]; ok := ok and stri = "0";
 5003     stri := striExpr("1234567890") [ intExpr(           10) .. intExpr(           15) ]; ok := ok and stri = "0";
 5004     stri := striExpr("1234567890") [ intExpr(           10) .. intExpr( integer.last) ]; ok := ok and stri = "0";
 5005 
 5006     stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(           10) ]; ok := ok and stri = "";
 5007     stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(           11) ]; ok := ok and stri = "";
 5008     stri := striExpr("1234567890") [ intExpr(           11) .. intExpr(           15) ]; ok := ok and stri = "";
 5009     stri := striExpr("1234567890") [ intExpr(           11) .. intExpr( integer.last) ]; ok := ok and stri = "";
 5010 
 5011     stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(           14) ]; ok := ok and stri = "";
 5012     stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(           15) ]; ok := ok and stri = "";
 5013     stri := striExpr("1234567890") [ intExpr(           15) .. intExpr(           20) ]; ok := ok and stri = "";
 5014     stri := striExpr("1234567890") [ intExpr(           15) .. intExpr( integer.last) ]; ok := ok and stri = "";
 5015 
 5016     stri := striExpr("1234567890") [ intExpr( integer.last) .. intExpr( integer.last) ]; ok := ok and stri = "";
 5017     if not ok then
 5018       writeln(" ***** stri := STRING [ START .. STOP ] does not work correct. (8)");
 5019       okay := FALSE;
 5020     end if;
 5021   end func;
 5022 
 5023 
 5024 const func string: rangeFunction (in string: stri, in integer: start, in integer: stop) is
 5025   return stri[start .. stop];
 5026 
 5027 
 5028 const func boolean: check_string_range_func_1 is func
 5029   result
 5030     var boolean: okay is TRUE;
 5031   begin
 5032     if  rangeFunction("",             1,             0) <> "" or
 5033         rangeFunction("",             1,             1) <> "" or
 5034         rangeFunction("",             1,             2) <> "" or
 5035         rangeFunction("",             1,            15) <> "" or
 5036         rangeFunction("",             1,  integer.last) <> "" or
 5037 
 5038         rangeFunction("",             5,             4) <> "" or
 5039         rangeFunction("",             5,             5) <> "" or
 5040         rangeFunction("",             5,             6) <> "" or
 5041         rangeFunction("",             5,            15) <> "" or
 5042         rangeFunction("",             5,  integer.last) <> "" or
 5043 
 5044         rangeFunction("",  integer.last,  integer.last) <> "" or
 5045 
 5046         rangeFunction("1",             1,             0) <> "" or
 5047         rangeFunction("1",             1,             1) <> "1" or
 5048         rangeFunction("1",             1,             2) <> "1" or
 5049         rangeFunction("1",             1,            15) <> "1" or
 5050         rangeFunction("1",             1,  integer.last) <> "1" or
 5051 
 5052         rangeFunction("1",             2,             1) <> "" or
 5053         rangeFunction("1",             2,             4) <> "" or
 5054         rangeFunction("1",             2,             5) <> "" or
 5055         rangeFunction("1",             2,             6) <> "" or
 5056         rangeFunction("1",             2,            15) <> "" or
 5057         rangeFunction("1",             2,  integer.last) <> "" or
 5058 
 5059         rangeFunction("1",             5,             4) <> "" or
 5060         rangeFunction("1",             5,             5) <> "" or
 5061         rangeFunction("1",             5,             6) <> "" or
 5062         rangeFunction("1",             5,            15) <> "" or
 5063         rangeFunction("1",             5,  integer.last) <> "" or
 5064 
 5065         rangeFunction("1",  integer.last,  integer.last) <> "" or
 5066 
 5067         rangeFunction("1234567890",             1,             0) <> "" or
 5068         rangeFunction("1234567890",             1,             1) <> "1" or
 5069         rangeFunction("1234567890",             1,             5) <> "12345" or
 5070         rangeFunction("1234567890",             1,             9) <> "123456789" or
 5071         rangeFunction("1234567890",             1,            10) <> "1234567890" or
 5072         rangeFunction("1234567890",             1,            11) <> "1234567890" or
 5073         rangeFunction("1234567890",             1,            15) <> "1234567890" or
 5074         rangeFunction("1234567890",             1,  integer.last) <> "1234567890" or
 5075 
 5076         rangeFunction("1234567890",             5,             4) <> "" or
 5077         rangeFunction("1234567890",             5,             5) <> "5" or
 5078         rangeFunction("1234567890",             5,             6) <> "56" or
 5079         rangeFunction("1234567890",             5,             9) <> "56789" or
 5080         rangeFunction("1234567890",             5,            10) <> "567890" or
 5081         rangeFunction("1234567890",             5,            11) <> "567890" or
 5082         rangeFunction("1234567890",             5,            15) <> "567890" or
 5083         rangeFunction("1234567890",             5,  integer.last) <> "567890" or
 5084 
 5085         rangeFunction("1234567890",            10,             9) <> "" or
 5086         rangeFunction("1234567890",            10,            10) <> "0" or
 5087         rangeFunction("1234567890",            10,            11) <> "0" or
 5088         rangeFunction("1234567890",            10,            15) <> "0" or
 5089         rangeFunction("1234567890",            10,  integer.last) <> "0" or
 5090 
 5091         rangeFunction("1234567890",            11,            10) <> "" or
 5092         rangeFunction("1234567890",            11,            11) <> "" or
 5093         rangeFunction("1234567890",            11,            15) <> "" or
 5094         rangeFunction("1234567890",            11,  integer.last) <> "" or
 5095 
 5096         rangeFunction("1234567890",            15,            14) <> "" or
 5097         rangeFunction("1234567890",            15,            15) <> "" or
 5098         rangeFunction("1234567890",            15,            20) <> "" or
 5099         rangeFunction("1234567890",            15,  integer.last) <> "" or
 5100 
 5101         rangeFunction("1234567890",  integer.last,  integer.last) <> "" then
 5102       writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (1)");
 5103       okay := FALSE;
 5104     end if;
 5105 
 5106     if  rangeFunction("",             1, intExpr(            0)) <> "" or
 5107         rangeFunction("",             1, intExpr(            1)) <> "" or
 5108         rangeFunction("",             1, intExpr(            2)) <> "" or
 5109         rangeFunction("",             1, intExpr(           15)) <> "" or
 5110         rangeFunction("",             1, intExpr( integer.last)) <> "" or
 5111 
 5112         rangeFunction("",             5, intExpr(            4)) <> "" or
 5113         rangeFunction("",             5, intExpr(            5)) <> "" or
 5114         rangeFunction("",             5, intExpr(            6)) <> "" or
 5115         rangeFunction("",             5, intExpr(           15)) <> "" or
 5116         rangeFunction("",             5, intExpr( integer.last)) <> "" or
 5117 
 5118         rangeFunction("",  integer.last, intExpr( integer.last)) <> "" or
 5119 
 5120         rangeFunction("1",             1, intExpr(            0)) <> "" or
 5121         rangeFunction("1",             1, intExpr(            1)) <> "1" or
 5122         rangeFunction("1",             1, intExpr(            2)) <> "1" or
 5123         rangeFunction("1",             1, intExpr(           15)) <> "1" or
 5124         rangeFunction("1",             1, intExpr( integer.last)) <> "1" or
 5125 
 5126         rangeFunction("1",             2, intExpr(            1)) <> "" or
 5127         rangeFunction("1",             2, intExpr(            4)) <> "" or
 5128         rangeFunction("1",             2, intExpr(            5)) <> "" or
 5129         rangeFunction("1",             2, intExpr(            6)) <> "" or
 5130         rangeFunction("1",             2, intExpr(           15)) <> "" or
 5131         rangeFunction("1",             2, intExpr( integer.last)) <> "" or
 5132 
 5133         rangeFunction("1",             5, intExpr(            4)) <> "" or
 5134         rangeFunction("1",             5, intExpr(            5)) <> "" or
 5135         rangeFunction("1",             5, intExpr(            6)) <> "" or
 5136         rangeFunction("1",             5, intExpr(           15)) <> "" or
 5137         rangeFunction("1",             5, intExpr( integer.last)) <> "" or
 5138 
 5139         rangeFunction("1",  integer.last, intExpr( integer.last)) <> "" or
 5140 
 5141         rangeFunction("1234567890",             1, intExpr(            0)) <> "" or
 5142         rangeFunction("1234567890",             1, intExpr(            1)) <> "1" or
 5143         rangeFunction("1234567890",             1, intExpr(            5)) <> "12345" or
 5144         rangeFunction("1234567890",             1, intExpr(            9)) <> "123456789" or
 5145         rangeFunction("1234567890",             1, intExpr(           10)) <> "1234567890" or
 5146         rangeFunction("1234567890",             1, intExpr(           11)) <> "1234567890" or
 5147         rangeFunction("1234567890",             1, intExpr(           15)) <> "1234567890" or
 5148         rangeFunction("1234567890",             1, intExpr( integer.last)) <> "1234567890" or
 5149 
 5150         rangeFunction("1234567890",             5, intExpr(            4)) <> "" or
 5151         rangeFunction("1234567890",             5, intExpr(            5)) <> "5" or
 5152         rangeFunction("1234567890",             5, intExpr(            6)) <> "56" or
 5153         rangeFunction("1234567890",             5, intExpr(            9)) <> "56789" or
 5154         rangeFunction("1234567890",             5, intExpr(           10)) <> "567890" or
 5155         rangeFunction("1234567890",             5, intExpr(           11)) <> "567890" or
 5156         rangeFunction("1234567890",             5, intExpr(           15)) <> "567890" or
 5157         rangeFunction("1234567890",             5, intExpr( integer.last)) <> "567890" or
 5158 
 5159         rangeFunction("1234567890",            10, intExpr(            9)) <> "" or
 5160         rangeFunction("1234567890",            10, intExpr(           10)) <> "0" or
 5161         rangeFunction("1234567890",            10, intExpr(           11)) <> "0" or
 5162         rangeFunction("1234567890",            10, intExpr(           15)) <> "0" or
 5163         rangeFunction("1234567890",            10, intExpr( integer.last)) <> "0" or
 5164 
 5165         rangeFunction("1234567890",            11, intExpr(           10)) <> "" or
 5166         rangeFunction("1234567890",            11, intExpr(           11)) <> "" or
 5167         rangeFunction("1234567890",            11, intExpr(           15)) <> "" or
 5168         rangeFunction("1234567890",            11, intExpr( integer.last)) <> "" or
 5169 
 5170         rangeFunction("1234567890",            15, intExpr(           14)) <> "" or
 5171         rangeFunction("1234567890",            15, intExpr(           15)) <> "" or
 5172         rangeFunction("1234567890",            15, intExpr(           20)) <> "" or
 5173         rangeFunction("1234567890",            15, intExpr( integer.last)) <> "" or
 5174 
 5175         rangeFunction("1234567890",  integer.last, intExpr( integer.last)) <> "" then
 5176       writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (2)");
 5177       okay := FALSE;
 5178     end if;
 5179 
 5180     if  rangeFunction("", intExpr(            1),             0) <> "" or
 5181         rangeFunction("", intExpr(            1),             1) <> "" or
 5182         rangeFunction("", intExpr(            1),             2) <> "" or
 5183         rangeFunction("", intExpr(            1),            15) <> "" or
 5184         rangeFunction("", intExpr(            1),  integer.last) <> "" or
 5185 
 5186         rangeFunction("", intExpr(            5),             4) <> "" or
 5187         rangeFunction("", intExpr(            5),             5) <> "" or
 5188         rangeFunction("", intExpr(            5),             6) <> "" or
 5189         rangeFunction("", intExpr(            5),            15) <> "" or
 5190         rangeFunction("", intExpr(            5),  integer.last) <> "" or
 5191 
 5192         rangeFunction("", intExpr( integer.last),  integer.last) <> "" or
 5193 
 5194         rangeFunction("1", intExpr(            1),             0) <> "" or
 5195         rangeFunction("1", intExpr(            1),             1) <> "1" or
 5196         rangeFunction("1", intExpr(            1),             2) <> "1" or
 5197         rangeFunction("1", intExpr(            1),            15) <> "1" or
 5198         rangeFunction("1", intExpr(            1),  integer.last) <> "1" or
 5199 
 5200         rangeFunction("1", intExpr(            2),             1) <> "" or
 5201         rangeFunction("1", intExpr(            2),             4) <> "" or
 5202         rangeFunction("1", intExpr(            2),             5) <> "" or
 5203         rangeFunction("1", intExpr(            2),             6) <> "" or
 5204         rangeFunction("1", intExpr(            2),            15) <> "" or
 5205         rangeFunction("1", intExpr(            2),  integer.last) <> "" or
 5206 
 5207         rangeFunction("1", intExpr(            5),             4) <> "" or
 5208         rangeFunction("1", intExpr(            5),             5) <> "" or
 5209         rangeFunction("1", intExpr(            5),             6) <> "" or
 5210         rangeFunction("1", intExpr(            5),            15) <> "" or
 5211         rangeFunction("1", intExpr(            5),  integer.last) <> "" or
 5212 
 5213         rangeFunction("1", intExpr( integer.last),  integer.last) <> "" or
 5214 
 5215         rangeFunction("1234567890", intExpr(            1),             0) <> "" or
 5216         rangeFunction("1234567890", intExpr(            1),             1) <> "1" or
 5217         rangeFunction("1234567890", intExpr(            1),             5) <> "12345" or
 5218         rangeFunction("1234567890", intExpr(            1),             9) <> "123456789" or
 5219         rangeFunction("1234567890", intExpr(            1),            10) <> "1234567890" or
 5220         rangeFunction("1234567890", intExpr(            1),            11) <> "1234567890" or
 5221         rangeFunction("1234567890", intExpr(            1),            15) <> "1234567890" or
 5222         rangeFunction("1234567890", intExpr(            1),  integer.last) <> "1234567890" or
 5223 
 5224         rangeFunction("1234567890", intExpr(            5),             4) <> "" or
 5225         rangeFunction("1234567890", intExpr(            5),             5) <> "5" or
 5226         rangeFunction("1234567890", intExpr(            5),             6) <> "56" or
 5227         rangeFunction("1234567890", intExpr(            5),             9) <> "56789" or
 5228         rangeFunction("1234567890", intExpr(            5),            10) <> "567890" or
 5229         rangeFunction("1234567890", intExpr(            5),            11) <> "567890" or
 5230         rangeFunction("1234567890", intExpr(            5),            15) <> "567890" or
 5231         rangeFunction("1234567890", intExpr(            5),  integer.last) <> "567890" or
 5232 
 5233         rangeFunction("1234567890", intExpr(           10),             9) <> "" or
 5234         rangeFunction("1234567890", intExpr(           10),            10) <> "0" or
 5235         rangeFunction("1234567890", intExpr(           10),            11) <> "0" or
 5236         rangeFunction("1234567890", intExpr(           10),            15) <> "0" or
 5237         rangeFunction("1234567890", intExpr(           10),  integer.last) <> "0" or
 5238 
 5239         rangeFunction("1234567890", intExpr(           11),            10) <> "" or
 5240         rangeFunction("1234567890", intExpr(           11),            11) <> "" or
 5241         rangeFunction("1234567890", intExpr(           11),            15) <> "" or
 5242         rangeFunction("1234567890", intExpr(           11),  integer.last) <> "" or
 5243 
 5244         rangeFunction("1234567890", intExpr(           15),            14) <> "" or
 5245         rangeFunction("1234567890", intExpr(           15),            15) <> "" or
 5246         rangeFunction("1234567890", intExpr(           15),            20) <> "" or
 5247         rangeFunction("1234567890", intExpr(           15),  integer.last) <> "" or
 5248 
 5249         rangeFunction("1234567890", intExpr( integer.last),  integer.last) <> "" then
 5250       writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (3)");
 5251       okay := FALSE;
 5252     end if;
 5253 
 5254     if  rangeFunction("", intExpr(            1), intExpr(            0)) <> "" or
 5255         rangeFunction("", intExpr(            1), intExpr(            1)) <> "" or
 5256         rangeFunction("", intExpr(            1), intExpr(            2)) <> "" or
 5257         rangeFunction("", intExpr(            1), intExpr(           15)) <> "" or
 5258         rangeFunction("", intExpr(            1), intExpr( integer.last)) <> "" or
 5259 
 5260         rangeFunction("", intExpr(            5), intExpr(            4)) <> "" or
 5261         rangeFunction("", intExpr(            5), intExpr(            5)) <> "" or
 5262         rangeFunction("", intExpr(            5), intExpr(            6)) <> "" or
 5263         rangeFunction("", intExpr(            5), intExpr(           15)) <> "" or
 5264         rangeFunction("", intExpr(            5), intExpr( integer.last)) <> "" or
 5265 
 5266         rangeFunction("", intExpr( integer.last), intExpr( integer.last)) <> "" or
 5267 
 5268         rangeFunction("1", intExpr(            1), intExpr(            0)) <> "" or
 5269         rangeFunction("1", intExpr(            1), intExpr(            1)) <> "1" or
 5270         rangeFunction("1", intExpr(            1), intExpr(            2)) <> "1" or
 5271         rangeFunction("1", intExpr(            1), intExpr(           15)) <> "1" or
 5272         rangeFunction("1", intExpr(            1), intExpr( integer.last)) <> "1" or
 5273 
 5274         rangeFunction("1", intExpr(            2), intExpr(            1)) <> "" or
 5275         rangeFunction("1", intExpr(            2), intExpr(            4)) <> "" or
 5276         rangeFunction("1", intExpr(            2), intExpr(            5)) <> "" or
 5277         rangeFunction("1", intExpr(            2), intExpr(            6)) <> "" or
 5278         rangeFunction("1", intExpr(            2), intExpr(           15)) <> "" or
 5279         rangeFunction("1", intExpr(            2), intExpr( integer.last)) <> "" or
 5280 
 5281         rangeFunction("1", intExpr(            5), intExpr(            4)) <> "" or
 5282         rangeFunction("1", intExpr(            5), intExpr(            5)) <> "" or
 5283         rangeFunction("1", intExpr(            5), intExpr(            6)) <> "" or
 5284         rangeFunction("1", intExpr(            5), intExpr(           15)) <> "" or
 5285         rangeFunction("1", intExpr(            5), intExpr( integer.last)) <> "" or
 5286 
 5287         rangeFunction("1", intExpr( integer.last), intExpr( integer.last)) <> "" or
 5288 
 5289         rangeFunction("1234567890", intExpr(            1), intExpr(            0)) <> "" or
 5290         rangeFunction("1234567890", intExpr(            1), intExpr(            1)) <> "1" or
 5291         rangeFunction("1234567890", intExpr(            1), intExpr(            5)) <> "12345" or
 5292         rangeFunction("1234567890", intExpr(            1), intExpr(            9)) <> "123456789" or
 5293         rangeFunction("1234567890", intExpr(            1), intExpr(           10)) <> "1234567890" or
 5294         rangeFunction("1234567890", intExpr(            1), intExpr(           11)) <> "1234567890" or
 5295         rangeFunction("1234567890", intExpr(            1), intExpr(           15)) <> "1234567890" or
 5296         rangeFunction("1234567890", intExpr(            1), intExpr( integer.last)) <> "1234567890" or
 5297 
 5298         rangeFunction("1234567890", intExpr(            5), intExpr(            4)) <> "" or
 5299         rangeFunction("1234567890", intExpr(            5), intExpr(            5)) <> "5" or
 5300         rangeFunction("1234567890", intExpr(            5), intExpr(            6)) <> "56" or
 5301         rangeFunction("1234567890", intExpr(            5), intExpr(            9)) <> "56789" or
 5302         rangeFunction("1234567890", intExpr(            5), intExpr(           10)) <> "567890" or
 5303         rangeFunction("1234567890", intExpr(            5), intExpr(           11)) <> "567890" or
 5304         rangeFunction("1234567890", intExpr(            5), intExpr(           15)) <> "567890" or
 5305         rangeFunction("1234567890", intExpr(            5), intExpr( integer.last)) <> "567890" or
 5306 
 5307         rangeFunction("1234567890", intExpr(           10), intExpr(            9)) <> "" or
 5308         rangeFunction("1234567890", intExpr(           10), intExpr(           10)) <> "0" or
 5309         rangeFunction("1234567890", intExpr(           10), intExpr(           11)) <> "0" or
 5310         rangeFunction("1234567890", intExpr(           10), intExpr(           15)) <> "0" or
 5311         rangeFunction("1234567890", intExpr(           10), intExpr( integer.last)) <> "0" or
 5312 
 5313         rangeFunction("1234567890", intExpr(           11), intExpr(           10)) <> "" or
 5314         rangeFunction("1234567890", intExpr(           11), intExpr(           11)) <> "" or
 5315         rangeFunction("1234567890", intExpr(           11), intExpr(           15)) <> "" or
 5316         rangeFunction("1234567890", intExpr(           11), intExpr( integer.last)) <> "" or
 5317 
 5318         rangeFunction("1234567890", intExpr(           15), intExpr(           14)) <> "" or
 5319         rangeFunction("1234567890", intExpr(           15), intExpr(           15)) <> "" or
 5320         rangeFunction("1234567890", intExpr(           15), intExpr(           20)) <> "" or
 5321         rangeFunction("1234567890", intExpr(           15), intExpr( integer.last)) <> "" or
 5322 
 5323         rangeFunction("1234567890", intExpr( integer.last), intExpr( integer.last)) <> "" then
 5324       writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (4)");
 5325       okay := FALSE;
 5326     end if;
 5327   end func;
 5328 
 5329 
 5330 const func boolean: check_string_range_func_2 is func
 5331   result
 5332     var boolean: okay is TRUE;
 5333   begin
 5334     if  rangeFunction(striExpr(""),             1,             0) <> "" or
 5335         rangeFunction(striExpr(""),             1,             1) <> "" or
 5336         rangeFunction(striExpr(""),             1,             2) <> "" or
 5337         rangeFunction(striExpr(""),             1,            15) <> "" or
 5338         rangeFunction(striExpr(""),             1,  integer.last) <> "" or
 5339 
 5340         rangeFunction(striExpr(""),             5,             4) <> "" or
 5341         rangeFunction(striExpr(""),             5,             5) <> "" or
 5342         rangeFunction(striExpr(""),             5,             6) <> "" or
 5343         rangeFunction(striExpr(""),             5,            15) <> "" or
 5344         rangeFunction(striExpr(""),             5,  integer.last) <> "" or
 5345 
 5346         rangeFunction(striExpr(""),  integer.last,  integer.last) <> "" or
 5347 
 5348         rangeFunction(striExpr("1"),             1,             0) <> "" or
 5349         rangeFunction(striExpr("1"),             1,             1) <> "1" or
 5350         rangeFunction(striExpr("1"),             1,             2) <> "1" or
 5351         rangeFunction(striExpr("1"),             1,            15) <> "1" or
 5352         rangeFunction(striExpr("1"),             1,  integer.last) <> "1" or
 5353 
 5354         rangeFunction(striExpr("1"),             2,             1) <> "" or
 5355         rangeFunction(striExpr("1"),             2,             4) <> "" or
 5356         rangeFunction(striExpr("1"),             2,             5) <> "" or
 5357         rangeFunction(striExpr("1"),             2,             6) <> "" or
 5358         rangeFunction(striExpr("1"),             2,            15) <> "" or
 5359         rangeFunction(striExpr("1"),             2,  integer.last) <> "" or
 5360 
 5361         rangeFunction(striExpr("1"),             5,             4) <> "" or
 5362         rangeFunction(striExpr("1"),             5,             5) <> "" or
 5363         rangeFunction(striExpr("1"),             5,             6) <> "" or
 5364         rangeFunction(striExpr("1"),             5,            15) <> "" or
 5365         rangeFunction(striExpr("1"),             5,  integer.last) <> "" or
 5366 
 5367         rangeFunction(striExpr("1"),  integer.last,  integer.last) <> "" or
 5368 
 5369         rangeFunction(striExpr("1234567890"),             1,             0) <> "" or
 5370         rangeFunction(striExpr("1234567890"),             1,             1) <> "1" or
 5371         rangeFunction(striExpr("1234567890"),             1,             5) <> "12345" or
 5372         rangeFunction(striExpr("1234567890"),             1,             9) <> "123456789" or
 5373         rangeFunction(striExpr("1234567890"),             1,            10) <> "1234567890" or
 5374         rangeFunction(striExpr("1234567890"),             1,            11) <> "1234567890" or
 5375         rangeFunction(striExpr("1234567890"),             1,            15) <> "1234567890" or
 5376         rangeFunction(striExpr("1234567890"),             1,  integer.last) <> "1234567890" or
 5377 
 5378         rangeFunction(striExpr("1234567890"),             5,             4) <> "" or
 5379         rangeFunction(striExpr("1234567890"),             5,             5) <> "5" or
 5380         rangeFunction(striExpr("1234567890"),             5,             6) <> "56" or
 5381         rangeFunction(striExpr("1234567890"),             5,             9) <> "56789" or
 5382         rangeFunction(striExpr("1234567890"),             5,            10) <> "567890" or
 5383         rangeFunction(striExpr("1234567890"),             5,            11) <> "567890" or
 5384         rangeFunction(striExpr("1234567890"),             5,            15) <> "567890" or
 5385         rangeFunction(striExpr("1234567890"),             5,  integer.last) <> "567890" or
 5386 
 5387         rangeFunction(striExpr("1234567890"),            10,             9) <> "" or
 5388         rangeFunction(striExpr("1234567890"),            10,            10) <> "0" or
 5389         rangeFunction(striExpr("1234567890"),            10,            11) <> "0" or
 5390         rangeFunction(striExpr("1234567890"),            10,            15) <> "0" or
 5391         rangeFunction(striExpr("1234567890"),            10,  integer.last) <> "0" or
 5392 
 5393         rangeFunction(striExpr("1234567890"),            11,            10) <> "" or
 5394         rangeFunction(striExpr("1234567890"),            11,            11) <> "" or
 5395         rangeFunction(striExpr("1234567890"),            11,            15) <> "" or
 5396         rangeFunction(striExpr("1234567890"),            11,  integer.last) <> "" or
 5397 
 5398         rangeFunction(striExpr("1234567890"),            15,            14) <> "" or
 5399         rangeFunction(striExpr("1234567890"),            15,            15) <> "" or
 5400         rangeFunction(striExpr("1234567890"),            15,            20) <> "" or
 5401         rangeFunction(striExpr("1234567890"),            15,  integer.last) <> "" or
 5402 
 5403         rangeFunction(striExpr("1234567890"),  integer.last,  integer.last) <> "" then
 5404       writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (5)");
 5405       okay := FALSE;
 5406     end if;
 5407 
 5408     if  rangeFunction(striExpr(""),             1, intExpr(            0)) <> "" or
 5409         rangeFunction(striExpr(""),             1, intExpr(            1)) <> "" or
 5410         rangeFunction(striExpr(""),             1, intExpr(            2)) <> "" or
 5411         rangeFunction(striExpr(""),             1, intExpr(           15)) <> "" or
 5412         rangeFunction(striExpr(""),             1, intExpr( integer.last)) <> "" or
 5413 
 5414         rangeFunction(striExpr(""),             5, intExpr(            4)) <> "" or
 5415         rangeFunction(striExpr(""),             5, intExpr(            5)) <> "" or
 5416         rangeFunction(striExpr(""),             5, intExpr(            6)) <> "" or
 5417         rangeFunction(striExpr(""),             5, intExpr(           15)) <> "" or
 5418         rangeFunction(striExpr(""),             5, intExpr( integer.last)) <> "" or
 5419 
 5420         rangeFunction(striExpr(""),  integer.last, intExpr( integer.last)) <> "" or
 5421 
 5422         rangeFunction(striExpr("1"),             1, intExpr(            0)) <> "" or
 5423         rangeFunction(striExpr("1"),             1, intExpr(            1)) <> "1" or
 5424         rangeFunction(striExpr("1"),             1, intExpr(            2)) <> "1" or
 5425         rangeFunction(striExpr("1"),             1, intExpr(           15)) <> "1" or
 5426         rangeFunction(striExpr("1"),             1, intExpr( integer.last)) <> "1" or
 5427 
 5428         rangeFunction(striExpr("1"),             2, intExpr(            1)) <> "" or
 5429         rangeFunction(striExpr("1"),             2, intExpr(            4)) <> "" or
 5430         rangeFunction(striExpr("1"),             2, intExpr(            5)) <> "" or
 5431         rangeFunction(striExpr("1"),             2, intExpr(            6)) <> "" or
 5432         rangeFunction(striExpr("1"),             2, intExpr(           15)) <> "" or
 5433         rangeFunction(striExpr("1"),             2, intExpr( integer.last)) <> "" or
 5434 
 5435         rangeFunction(striExpr("1"),             5, intExpr(            4)) <> "" or
 5436         rangeFunction(striExpr("1"),             5, intExpr(            5)) <> "" or
 5437         rangeFunction(striExpr("1"),             5, intExpr(            6)) <> "" or
 5438         rangeFunction(striExpr("1"),             5, intExpr(           15)) <> "" or
 5439         rangeFunction(striExpr("1"),             5, intExpr( integer.last)) <> "" or
 5440 
 5441         rangeFunction(striExpr("1"),  integer.last, intExpr( integer.last)) <> "" or
 5442 
 5443         rangeFunction(striExpr("1234567890"),             1, intExpr(            0)) <> "" or
 5444         rangeFunction(striExpr("1234567890"),             1, intExpr(            1)) <> "1" or
 5445         rangeFunction(striExpr("1234567890"),             1, intExpr(            5)) <> "12345" or
 5446         rangeFunction(striExpr("1234567890"),             1, intExpr(            9)) <> "123456789" or
 5447         rangeFunction(striExpr("1234567890"),             1, intExpr(           10)) <> "1234567890" or
 5448         rangeFunction(striExpr("1234567890"),             1, intExpr(           11)) <> "1234567890" or
 5449         rangeFunction(striExpr("1234567890"),             1, intExpr(           15)) <> "1234567890" or
 5450         rangeFunction(striExpr("1234567890"),             1, intExpr( integer.last)) <> "1234567890" or
 5451 
 5452         rangeFunction(striExpr("1234567890"),             5, intExpr(            4)) <> "" or
 5453         rangeFunction(striExpr("1234567890"),             5, intExpr(            5)) <> "5" or
 5454         rangeFunction(striExpr("1234567890"),             5, intExpr(            6)) <> "56" or
 5455         rangeFunction(striExpr("1234567890"),             5, intExpr(            9)) <> "56789" or
 5456         rangeFunction(striExpr("1234567890"),             5, intExpr(           10)) <> "567890" or
 5457         rangeFunction(striExpr("1234567890"),             5, intExpr(           11)) <> "567890" or
 5458         rangeFunction(striExpr("1234567890"),             5, intExpr(           15)) <> "567890" or
 5459         rangeFunction(striExpr("1234567890"),             5, intExpr( integer.last)) <> "567890" or
 5460 
 5461         rangeFunction(striExpr("1234567890"),            10, intExpr(            9)) <> "" or
 5462         rangeFunction(striExpr("1234567890"),            10, intExpr(           10)) <> "0" or
 5463         rangeFunction(striExpr("1234567890"),            10, intExpr(           11)) <> "0" or
 5464         rangeFunction(striExpr("1234567890"),            10, intExpr(           15)) <> "0" or
 5465         rangeFunction(striExpr("1234567890"),            10, intExpr( integer.last)) <> "0" or
 5466 
 5467         rangeFunction(striExpr("1234567890"),            11, intExpr(           10)) <> "" or
 5468         rangeFunction(striExpr("1234567890"),            11, intExpr(           11)) <> "" or
 5469         rangeFunction(striExpr("1234567890"),            11, intExpr(           15)) <> "" or
 5470         rangeFunction(striExpr("1234567890"),            11, intExpr( integer.last)) <> "" or
 5471 
 5472         rangeFunction(striExpr("1234567890"),            15, intExpr(           14)) <> "" or
 5473         rangeFunction(striExpr("1234567890"),            15, intExpr(           15)) <> "" or
 5474         rangeFunction(striExpr("1234567890"),            15, intExpr(           20)) <> "" or
 5475         rangeFunction(striExpr("1234567890"),            15, intExpr( integer.last)) <> "" or
 5476 
 5477         rangeFunction(striExpr("1234567890"),  integer.last, intExpr( integer.last)) <> "" then
 5478       writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (6)");
 5479       okay := FALSE;
 5480     end if;
 5481 
 5482     if  rangeFunction(striExpr(""), intExpr(            1),             0) <> "" or
 5483         rangeFunction(striExpr(""), intExpr(            1),             1) <> "" or
 5484         rangeFunction(striExpr(""), intExpr(            1),             2) <> "" or
 5485         rangeFunction(striExpr(""), intExpr(            1),            15) <> "" or
 5486         rangeFunction(striExpr(""), intExpr(            1),  integer.last) <> "" or
 5487 
 5488         rangeFunction(striExpr(""), intExpr(            5),             4) <> "" or
 5489         rangeFunction(striExpr(""), intExpr(            5),             5) <> "" or
 5490         rangeFunction(striExpr(""), intExpr(            5),             6) <> "" or
 5491         rangeFunction(striExpr(""), intExpr(            5),            15) <> "" or
 5492         rangeFunction(striExpr(""), intExpr(            5),  integer.last) <> "" or
 5493 
 5494         rangeFunction(striExpr(""), intExpr( integer.last),  integer.last) <> "" or
 5495 
 5496         rangeFunction(striExpr("1"), intExpr(            1),             0) <> "" or
 5497         rangeFunction(striExpr("1"), intExpr(            1),             1) <> "1" or
 5498         rangeFunction(striExpr("1"), intExpr(            1),             2) <> "1" or
 5499         rangeFunction(striExpr("1"), intExpr(            1),            15) <> "1" or
 5500         rangeFunction(striExpr("1"), intExpr(            1),  integer.last) <> "1" or
 5501 
 5502         rangeFunction(striExpr("1"), intExpr(            2),             1) <> "" or
 5503         rangeFunction(striExpr("1"), intExpr(            2),             4) <> "" or
 5504         rangeFunction(striExpr("1"), intExpr(            2),             5) <> "" or
 5505         rangeFunction(striExpr("1"), intExpr(            2),             6) <> "" or
 5506         rangeFunction(striExpr("1"), intExpr(            2),            15) <> "" or
 5507         rangeFunction(striExpr("1"), intExpr(            2),  integer.last) <> "" or
 5508 
 5509         rangeFunction(striExpr("1"), intExpr(            5),             4) <> "" or
 5510         rangeFunction(striExpr("1"), intExpr(            5),             5) <> "" or
 5511         rangeFunction(striExpr("1"), intExpr(            5),             6) <> "" or
 5512         rangeFunction(striExpr("1"), intExpr(            5),            15) <> "" or
 5513         rangeFunction(striExpr("1"), intExpr(            5),  integer.last) <> "" or
 5514 
 5515         rangeFunction(striExpr("1"), intExpr( integer.last),  integer.last) <> "" or
 5516 
 5517         rangeFunction(striExpr("1234567890"), intExpr(            1),             0) <> "" or
 5518         rangeFunction(striExpr("1234567890"), intExpr(            1),             1) <> "1" or
 5519         rangeFunction(striExpr("1234567890"), intExpr(            1),             5) <> "12345" or
 5520         rangeFunction(striExpr("1234567890"), intExpr(            1),             9) <> "123456789" or
 5521         rangeFunction(striExpr("1234567890"), intExpr(            1),            10) <> "1234567890" or
 5522         rangeFunction(striExpr("1234567890"), intExpr(            1),            11) <> "1234567890" or
 5523         rangeFunction(striExpr("1234567890"), intExpr(            1),            15) <> "1234567890" or
 5524         rangeFunction(striExpr("1234567890"), intExpr(            1),  integer.last) <> "1234567890" or
 5525 
 5526         rangeFunction(striExpr("1234567890"), intExpr(            5),             4) <> "" or
 5527         rangeFunction(striExpr("1234567890"), intExpr(            5),             5) <> "5" or
 5528         rangeFunction(striExpr("1234567890"), intExpr(            5),             6) <> "56" or
 5529         rangeFunction(striExpr("1234567890"), intExpr(            5),             9) <> "56789" or
 5530         rangeFunction(striExpr("1234567890"), intExpr(            5),            10) <> "567890" or
 5531         rangeFunction(striExpr("1234567890"), intExpr(            5),            11) <> "567890" or
 5532         rangeFunction(striExpr("1234567890"), intExpr(            5),            15) <> "567890" or
 5533         rangeFunction(striExpr("1234567890"), intExpr(            5),  integer.last) <> "567890" or
 5534 
 5535         rangeFunction(striExpr("1234567890"), intExpr(           10),             9) <> "" or
 5536         rangeFunction(striExpr("1234567890"), intExpr(           10),            10) <> "0" or
 5537         rangeFunction(striExpr("1234567890"), intExpr(           10),            11) <> "0" or
 5538         rangeFunction(striExpr("1234567890"), intExpr(           10),            15) <> "0" or
 5539         rangeFunction(striExpr("1234567890"), intExpr(           10),  integer.last) <> "0" or
 5540 
 5541         rangeFunction(striExpr("1234567890"), intExpr(           11),            10) <> "" or
 5542         rangeFunction(striExpr("1234567890"), intExpr(           11),            11) <> "" or
 5543         rangeFunction(striExpr("1234567890"), intExpr(           11),            15) <> "" or
 5544         rangeFunction(striExpr("1234567890"), intExpr(           11),  integer.last) <> "" or
 5545 
 5546         rangeFunction(striExpr("1234567890"), intExpr(           15),            14) <> "" or
 5547         rangeFunction(striExpr("1234567890"), intExpr(           15),            15) <> "" or
 5548         rangeFunction(striExpr("1234567890"), intExpr(           15),            20) <> "" or
 5549         rangeFunction(striExpr("1234567890"), intExpr(           15),  integer.last) <> "" or
 5550 
 5551         rangeFunction(striExpr("1234567890"), intExpr( integer.last),  integer.last) <> "" then
 5552       writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (7)");
 5553       okay := FALSE;
 5554     end if;
 5555 
 5556     if  rangeFunction(striExpr(""), intExpr(            1), intExpr(            0)) <> "" or
 5557         rangeFunction(striExpr(""), intExpr(            1), intExpr(            1)) <> "" or
 5558         rangeFunction(striExpr(""), intExpr(            1), intExpr(            2)) <> "" or
 5559         rangeFunction(striExpr(""), intExpr(            1), intExpr(           15)) <> "" or
 5560         rangeFunction(striExpr(""), intExpr(            1), intExpr( integer.last)) <> "" or
 5561 
 5562         rangeFunction(striExpr(""), intExpr(            5), intExpr(            4)) <> "" or
 5563         rangeFunction(striExpr(""), intExpr(            5), intExpr(            5)) <> "" or
 5564         rangeFunction(striExpr(""), intExpr(            5), intExpr(            6)) <> "" or
 5565         rangeFunction(striExpr(""), intExpr(            5), intExpr(           15)) <> "" or
 5566         rangeFunction(striExpr(""), intExpr(            5), intExpr( integer.last)) <> "" or
 5567 
 5568         rangeFunction(striExpr(""), intExpr( integer.last), intExpr( integer.last)) <> "" or
 5569 
 5570         rangeFunction(striExpr("1"), intExpr(            1), intExpr(            0)) <> "" or
 5571         rangeFunction(striExpr("1"), intExpr(            1), intExpr(            1)) <> "1" or
 5572         rangeFunction(striExpr("1"), intExpr(            1), intExpr(            2)) <> "1" or
 5573         rangeFunction(striExpr("1"), intExpr(            1), intExpr(           15)) <> "1" or
 5574         rangeFunction(striExpr("1"), intExpr(            1), intExpr( integer.last)) <> "1" or
 5575 
 5576         rangeFunction(striExpr("1"), intExpr(            2), intExpr(            1)) <> "" or
 5577         rangeFunction(striExpr("1"), intExpr(            2), intExpr(            4)) <> "" or
 5578         rangeFunction(striExpr("1"), intExpr(            2), intExpr(            5)) <> "" or
 5579         rangeFunction(striExpr("1"), intExpr(            2), intExpr(            6)) <> "" or
 5580         rangeFunction(striExpr("1"), intExpr(            2), intExpr(           15)) <> "" or
 5581         rangeFunction(striExpr("1"), intExpr(            2), intExpr( integer.last)) <> "" or
 5582 
 5583         rangeFunction(striExpr("1"), intExpr(            5), intExpr(            4)) <> "" or
 5584         rangeFunction(striExpr("1"), intExpr(            5), intExpr(            5)) <> "" or
 5585         rangeFunction(striExpr("1"), intExpr(            5), intExpr(            6)) <> "" or
 5586         rangeFunction(striExpr("1"), intExpr(            5), intExpr(           15)) <> "" or
 5587         rangeFunction(striExpr("1"), intExpr(            5), intExpr( integer.last)) <> "" or
 5588 
 5589         rangeFunction(striExpr("1"), intExpr( integer.last), intExpr( integer.last)) <> "" or
 5590 
 5591         rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(            0)) <> "" or
 5592         rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(            1)) <> "1" or
 5593         rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(            5)) <> "12345" or
 5594         rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(            9)) <> "123456789" or
 5595         rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(           10)) <> "1234567890" or
 5596         rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(           11)) <> "1234567890" or
 5597         rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr(           15)) <> "1234567890" or
 5598         rangeFunction(striExpr("1234567890"), intExpr(            1), intExpr( integer.last)) <> "1234567890" or
 5599 
 5600         rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(            4)) <> "" or
 5601         rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(            5)) <> "5" or
 5602         rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(            6)) <> "56" or
 5603         rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(            9)) <> "56789" or
 5604         rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(           10)) <> "567890" or
 5605         rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(           11)) <> "567890" or
 5606         rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr(           15)) <> "567890" or
 5607         rangeFunction(striExpr("1234567890"), intExpr(            5), intExpr( integer.last)) <> "567890" or
 5608 
 5609         rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(            9)) <> "" or
 5610         rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(           10)) <> "0" or
 5611         rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(           11)) <> "0" or
 5612         rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr(           15)) <> "0" or
 5613         rangeFunction(striExpr("1234567890"), intExpr(           10), intExpr( integer.last)) <> "0" or
 5614 
 5615         rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(           10)) <> "" or
 5616         rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(           11)) <> "" or
 5617         rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr(           15)) <> "" or
 5618         rangeFunction(striExpr("1234567890"), intExpr(           11), intExpr( integer.last)) <> "" or
 5619 
 5620         rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(           14)) <> "" or
 5621         rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(           15)) <> "" or
 5622         rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr(           20)) <> "" or
 5623         rangeFunction(striExpr("1234567890"), intExpr(           15), intExpr( integer.last)) <> "" or
 5624 
 5625         rangeFunction(striExpr("1234567890"), intExpr( integer.last), intExpr( integer.last)) <> "" then
 5626       writeln(" ***** STRING [ START .. STOP ] via a function does not work correct. (8)");
 5627       okay := FALSE;
 5628     end if;
 5629   end func;
 5630 
 5631 
 5632 const proc: check_string_range is func
 5633   local
 5634     var boolean: okay is TRUE;
 5635   begin
 5636     if not check_string_range_expr_1 then
 5637       okay := FALSE;
 5638     end if;
 5639 
 5640     if not check_string_range_expr_2 then
 5641       okay := FALSE;
 5642     end if;
 5643 
 5644     if not check_string_range_assign_1 then
 5645       okay := FALSE;
 5646     end if;
 5647 
 5648     if not check_string_range_assign_2 then
 5649       okay := FALSE;
 5650     end if;
 5651 
 5652     if not check_string_range_func_1 then
 5653       okay := FALSE;
 5654     end if;
 5655 
 5656     if not check_string_range_func_2 then
 5657       okay := FALSE;
 5658     end if;
 5659 
 5660     if okay then
 5661       writeln("String range works correct.");
 5662     end if;
 5663   end func;
 5664 
 5665 
 5666 const func boolean: check_string_substr_expr_1 is func
 5667   result
 5668     var boolean: okay is TRUE;
 5669   begin
 5670     if  "" [             1 len             0 ] <> "" or
 5671         "" [             1 len             1 ] <> "" or
 5672         "" [             1 len             2 ] <> "" or
 5673         "" [             1 len            15 ] <> "" or
 5674         "" [             1 len  integer.last ] <> "" or
 5675 
 5676         "" [             2 len             0 ] <> "" or
 5677         "" [             2 len             1 ] <> "" or
 5678         "" [             2 len            15 ] <> "" or
 5679         "" [             2 len  integer.last ] <> "" or
 5680 
 5681         "" [            15 len             0 ] <> "" or
 5682         "" [            15 len             1 ] <> "" or
 5683         "" [            15 len             2 ] <> "" or
 5684         "" [            15 len            20 ] <> "" or
 5685         "" [            15 len  integer.last ] <> "" or
 5686 
 5687         "" [  integer.last len             0 ] <> "" or
 5688         "" [  integer.last len             1 ] <> "" or
 5689         "" [  integer.last len             2 ] <> "" or
 5690         "" [  integer.last len            20 ] <> "" or
 5691         "" [  integer.last len  integer.last ] <> "" or
 5692 
 5693         "1" [             1 len             0 ] <> "" or
 5694         "1" [             1 len             1 ] <> "1" or
 5695         "1" [             1 len             2 ] <> "1" or
 5696         "1" [             1 len            15 ] <> "1" or
 5697         "1" [             1 len  integer.last ] <> "1" or
 5698 
 5699         "1" [             2 len             0 ] <> "" or
 5700         "1" [             2 len             1 ] <> "" or
 5701         "1" [             2 len             2 ] <> "" or
 5702         "1" [             2 len            15 ] <> "" or
 5703         "1" [             2 len  integer.last ] <> "" or
 5704 
 5705         "1" [            15 len             0 ] <> "" or
 5706         "1" [            15 len             1 ] <> "" or
 5707         "1" [            15 len             2 ] <> "" or
 5708         "1" [            15 len            20 ] <> "" or
 5709         "1" [            15 len  integer.last ] <> "" or
 5710 
 5711         "1" [  integer.last len             0 ] <> "" or
 5712         "1" [  integer.last len             1 ] <> "" or
 5713         "1" [  integer.last len             2 ] <> "" or
 5714         "1" [  integer.last len            20 ] <> "" or
 5715         "1" [  integer.last len  integer.last ] <> "" or
 5716 
 5717         "1234567890" [             1 len             0 ] <> "" or
 5718         "1234567890" [             1 len             1 ] <> "1" or
 5719         "1234567890" [             1 len             2 ] <> "12" or
 5720         "1234567890" [             1 len             5 ] <> "12345" or
 5721         "1234567890" [             1 len             9 ] <> "123456789" or
 5722         "1234567890" [             1 len            10 ] <> "1234567890" or
 5723         "1234567890" [             1 len            11 ] <> "1234567890" or
 5724         "1234567890" [             1 len            15 ] <> "1234567890" or
 5725         "1234567890" [             1 len  integer.last ] <> "1234567890" or
 5726 
 5727         "1234567890" [             2 len             0 ] <> "" or
 5728         "1234567890" [             2 len             1 ] <> "2" or
 5729         "1234567890" [             2 len             2 ] <> "23" or
 5730         "1234567890" [             2 len             5 ] <> "23456" or
 5731         "1234567890" [             2 len             8 ] <> "23456789" or
 5732         "1234567890" [             2 len             9 ] <> "234567890" or
 5733         "1234567890" [             2 len            10 ] <> "234567890" or
 5734         "1234567890" [             2 len            15 ] <> "234567890" or
 5735         "1234567890" [             2 len  integer.last ] <> "234567890" or
 5736 
 5737         "1234567890" [             5 len             0 ] <> "" or
 5738         "1234567890" [             5 len             1 ] <> "5" or
 5739         "1234567890" [             5 len             2 ] <> "56" or
 5740         "1234567890" [             5 len             5 ] <> "56789" or
 5741         "1234567890" [             5 len             6 ] <> "567890" or
 5742         "1234567890" [             5 len             7 ] <> "567890" or
 5743         "1234567890" [             5 len            15 ] <> "567890" or
 5744         "1234567890" [             5 len  integer.last ] <> "567890" or
 5745 
 5746         "1234567890" [             9 len             0 ] <> "" or
 5747         "1234567890" [             9 len             1 ] <> "9" or
 5748         "1234567890" [             9 len             2 ] <> "90" or
 5749         "1234567890" [             9 len             3 ] <> "90" or
 5750         "1234567890" [             9 len            15 ] <> "90" or
 5751         "1234567890" [             9 len  integer.last ] <> "90" or
 5752 
 5753         "1234567890" [            10 len             0 ] <> "" or
 5754         "1234567890" [            10 len             1 ] <> "0" or
 5755         "1234567890" [            10 len             2 ] <> "0" or
 5756         "1234567890" [            10 len            15 ] <> "0" or
 5757         "1234567890" [            10 len  integer.last ] <> "0" or
 5758 
 5759         "1234567890" [            11 len             0 ] <> "" or
 5760         "1234567890" [            11 len             1 ] <> "" or
 5761         "1234567890" [            11 len             2 ] <> "" or
 5762         "1234567890" [            11 len            15 ] <> "" or
 5763         "1234567890" [            11 len  integer.last ] <> "" or
 5764 
 5765         "1234567890" [            15 len             0 ] <> "" or
 5766         "1234567890" [            15 len             1 ] <> "" or
 5767         "1234567890" [            15 len             2 ] <> "" or
 5768         "1234567890" [            15 len            20 ] <> "" or
 5769         "1234567890" [            15 len  integer.last ] <> "" or
 5770 
 5771         "1234567890" [  integer.last len             0 ] <> "" or
 5772         "1234567890" [  integer.last len             1 ] <> "" or
 5773         "1234567890" [  integer.last len             2 ] <> "" or
 5774         "1234567890" [  integer.last len            20 ] <> "" or
 5775         "1234567890" [  integer.last len  integer.last ] <> "" then
 5776       writeln(" ***** STRING [ START len LENGTH ] does not work correct. (1)");
 5777       okay := FALSE;
 5778     end if;
 5779 
 5780     if  "" [             1 len intExpr(            0) ] <> "" or
 5781         "" [             1 len intExpr(            1) ] <> "" or
 5782         "" [             1 len intExpr(            2) ] <> "" or
 5783         "" [             1 len intExpr(           15) ] <> "" or
 5784         "" [             1 len intExpr( integer.last) ] <> "" or
 5785 
 5786         "" [             2 len intExpr(            0) ] <> "" or
 5787         "" [             2 len intExpr(            1) ] <> "" or
 5788         "" [             2 len intExpr(           15) ] <> "" or
 5789         "" [             2 len intExpr( integer.last) ] <> "" or
 5790 
 5791         "" [            15 len intExpr(            0) ] <> "" or
 5792         "" [            15 len intExpr(            1) ] <> "" or
 5793         "" [            15 len intExpr(            2) ] <> "" or
 5794         "" [            15 len intExpr(           20) ] <> "" or
 5795         "" [            15 len intExpr( integer.last) ] <> "" or
 5796 
 5797         "" [  integer.last len intExpr(            0) ] <> "" or
 5798         "" [  integer.last len intExpr(            1) ] <> "" or
 5799         "" [  integer.last len intExpr(            2) ] <> "" or
 5800         "" [  integer.last len intExpr(           20) ] <> "" or
 5801         "" [  integer.last len intExpr( integer.last) ] <> "" or
 5802 
 5803         "1" [             1 len intExpr(            0) ] <> "" or
 5804         "1" [             1 len intExpr(            1) ] <> "1" or
 5805         "1" [             1 len intExpr(            2) ] <> "1" or
 5806         "1" [             1 len intExpr(           15) ] <> "1" or
 5807         "1" [             1 len intExpr( integer.last) ] <> "1" or
 5808 
 5809         "1" [             2 len intExpr(            0) ] <> "" or
 5810         "1" [             2 len intExpr(            1) ] <> "" or
 5811         "1" [             2 len intExpr(            2) ] <> "" or
 5812         "1" [             2 len intExpr(           15) ] <> "" or
 5813         "1" [             2 len intExpr( integer.last) ] <> "" or
 5814 
 5815         "1" [            15 len intExpr(            0) ] <> "" or
 5816         "1" [            15 len intExpr(            1) ] <> "" or
 5817         "1" [            15 len intExpr(            2) ] <> "" or
 5818         "1" [            15 len intExpr(           20) ] <> "" or
 5819         "1" [            15 len intExpr( integer.last) ] <> "" or
 5820 
 5821         "1" [  integer.last len intExpr(            0) ] <> "" or
 5822         "1" [  integer.last len intExpr(            1) ] <> "" or
 5823         "1" [  integer.last len intExpr(            2) ] <> "" or
 5824         "1" [  integer.last len intExpr(           20) ] <> "" or
 5825         "1" [  integer.last len intExpr( integer.last) ] <> "" or
 5826 
 5827         "1234567890" [             1 len intExpr(            0) ] <> "" or
 5828         "1234567890" [             1 len intExpr(            1) ] <> "1" or
 5829         "1234567890" [             1 len intExpr(            2) ] <> "12" or
 5830         "1234567890" [             1 len intExpr(            5) ] <> "12345" or
 5831         "1234567890" [             1 len intExpr(            9) ] <> "123456789" or
 5832         "1234567890" [             1 len intExpr(           10) ] <> "1234567890" or
 5833         "1234567890" [             1 len intExpr(           11) ] <> "1234567890" or
 5834         "1234567890" [             1 len intExpr(           15) ] <> "1234567890" or
 5835         "1234567890" [             1 len intExpr( integer.last) ] <> "1234567890" or
 5836 
 5837         "1234567890" [             2 len intExpr(            0) ] <> "" or
 5838         "1234567890" [             2 len intExpr(            1) ] <> "2" or
 5839         "1234567890" [             2 len intExpr(            2) ] <> "23" or
 5840         "1234567890" [             2 len intExpr(            5) ] <> "23456" or
 5841         "1234567890" [             2 len intExpr(            8) ] <> "23456789" or
 5842         "1234567890" [             2 len intExpr(            9) ] <> "234567890" or
 5843         "1234567890" [             2 len intExpr(           10) ] <> "234567890" or
 5844         "1234567890" [             2 len intExpr(           15) ] <> "234567890" or
 5845         "1234567890" [             2 len intExpr( integer.last) ] <> "234567890" or
 5846 
 5847         "1234567890" [             5 len intExpr(            0) ] <> "" or
 5848         "1234567890" [             5 len intExpr(            1) ] <> "5" or
 5849         "1234567890" [             5 len intExpr(            2) ] <> "56" or
 5850         "1234567890" [             5 len intExpr(            5) ] <> "56789" or
 5851         "1234567890" [             5 len intExpr(            6) ] <> "567890" or
 5852         "1234567890" [             5 len intExpr(            7) ] <> "567890" or
 5853         "1234567890" [             5 len intExpr(           15) ] <> "567890" or
 5854         "1234567890" [             5 len intExpr( integer.last) ] <> "567890" or
 5855 
 5856         "1234567890" [             9 len intExpr(            0) ] <> "" or
 5857         "1234567890" [             9 len intExpr(            1) ] <> "9" or
 5858         "1234567890" [             9 len intExpr(            2) ] <> "90" or
 5859         "1234567890" [             9 len intExpr(            3) ] <> "90" or
 5860         "1234567890" [             9 len intExpr(           15) ] <> "90" or
 5861         "1234567890" [             9 len intExpr( integer.last) ] <> "90" or
 5862 
 5863         "1234567890" [            10 len intExpr(            0) ] <> "" or
 5864         "1234567890" [            10 len intExpr(            1) ] <> "0" or
 5865         "1234567890" [            10 len intExpr(            2) ] <> "0" or
 5866         "1234567890" [            10 len intExpr(           15) ] <> "0" or
 5867         "1234567890" [            10 len intExpr( integer.last) ] <> "0" or
 5868 
 5869         "1234567890" [            11 len intExpr(            0) ] <> "" or
 5870         "1234567890" [            11 len intExpr(            1) ] <> "" or
 5871         "1234567890" [            11 len intExpr(            2) ] <> "" or
 5872         "1234567890" [            11 len intExpr(           15) ] <> "" or
 5873         "1234567890" [            11 len intExpr( integer.last) ] <> "" or
 5874 
 5875         "1234567890" [            15 len intExpr(            0) ] <> "" or
 5876         "1234567890" [            15 len intExpr(            1) ] <> "" or
 5877         "1234567890" [            15 len intExpr(            2) ] <> "" or
 5878         "1234567890" [            15 len intExpr(           20) ] <> "" or
 5879         "1234567890" [            15 len intExpr( integer.last) ] <> "" or
 5880 
 5881         "1234567890" [  integer.last len intExpr(            0) ] <> "" or
 5882         "1234567890" [  integer.last len intExpr(            1) ] <> "" or
 5883         "1234567890" [  integer.last len intExpr(            2) ] <> "" or
 5884         "1234567890" [  integer.last len intExpr(           20) ] <> "" or
 5885         "1234567890" [  integer.last len intExpr( integer.last) ] <> "" then
 5886       writeln(" ***** STRING [ START len LENGTH ] does not work correct. (2)");
 5887       okay := FALSE;
 5888     end if;
 5889 
 5890     if  "" [ intExpr(            1) len             0 ] <> "" or
 5891         "" [ intExpr(            1) len             1 ] <> "" or
 5892         "" [ intExpr(            1) len             2 ] <> "" or
 5893         "" [ intExpr(            1) len            15 ] <> "" or
 5894         "" [ intExpr(            1) len  integer.last ] <> "" or
 5895 
 5896         "" [ intExpr(            2) len             0 ] <> "" or
 5897         "" [ intExpr(            2) len             1 ] <> "" or
 5898         "" [ intExpr(            2) len            15 ] <> "" or
 5899         "" [ intExpr(            2) len  integer.last ] <> "" or
 5900 
 5901         "" [ intExpr(           15) len             0 ] <> "" or
 5902         "" [ intExpr(           15) len             1 ] <> "" or
 5903         "" [ intExpr(           15) len             2 ] <> "" or
 5904         "" [ intExpr(           15) len            20 ] <> "" or
 5905         "" [ intExpr(           15) len  integer.last ] <> "" or
 5906 
 5907         "" [ intExpr( integer.last) len             0 ] <> "" or
 5908         "" [ intExpr( integer.last) len             1 ] <> "" or
 5909         "" [ intExpr( integer.last) len             2 ] <> "" or
 5910         "" [ intExpr( integer.last) len            20 ] <> "" or
 5911         "" [ intExpr( integer.last) len  integer.last ] <> "" or
 5912 
 5913         "1" [ intExpr(            1) len             0 ] <> "" or
 5914         "1" [ intExpr(            1) len             1 ] <> "1" or
 5915         "1" [ intExpr(            1) len             2 ] <> "1" or
 5916         "1" [ intExpr(            1) len            15 ] <> "1" or
 5917         "1" [ intExpr(            1) len  integer.last ] <> "1" or
 5918 
 5919         "1" [ intExpr(            2) len             0 ] <> "" or
 5920         "1" [ intExpr(            2) len             1 ] <> "" or
 5921         "1" [ intExpr(            2) len             2 ] <> "" or
 5922         "1" [ intExpr(            2) len            15 ] <> "" or
 5923         "1" [ intExpr(            2) len  integer.last ] <> "" or
 5924 
 5925         "1" [ intExpr(           15) len             0 ] <> "" or
 5926         "1" [ intExpr(           15) len             1 ] <> "" or
 5927         "1" [ intExpr(           15) len             2 ] <> "" or
 5928         "1" [ intExpr(           15) len            20 ] <> "" or
 5929         "1" [ intExpr(           15) len  integer.last ] <> "" or
 5930 
 5931         "1" [ intExpr( integer.last) len             0 ] <> "" or
 5932         "1" [ intExpr( integer.last) len             1 ] <> "" or
 5933         "1" [ intExpr( integer.last) len             2 ] <> "" or
 5934         "1" [ intExpr( integer.last) len            20 ] <> "" or
 5935         "1" [ intExpr( integer.last) len  integer.last ] <> "" or
 5936 
 5937         "1234567890" [ intExpr(            1) len             0 ] <> "" or
 5938         "1234567890" [ intExpr(            1) len             1 ] <> "1" or
 5939         "1234567890" [ intExpr(            1) len             2 ] <> "12" or
 5940         "1234567890" [ intExpr(            1) len             5 ] <> "12345" or
 5941         "1234567890" [ intExpr(            1) len             9 ] <> "123456789" or
 5942         "1234567890" [ intExpr(            1) len            10 ] <> "1234567890" or
 5943         "1234567890" [ intExpr(            1) len            11 ] <> "1234567890" or
 5944         "1234567890" [ intExpr(            1) len            15 ] <> "1234567890" or
 5945         "1234567890" [ intExpr(            1) len  integer.last ] <> "1234567890" or
 5946 
 5947         "1234567890" [ intExpr(            2) len             0 ] <> "" or
 5948         "1234567890" [ intExpr(            2) len             1 ] <> "2" or
 5949         "1234567890" [ intExpr(            2) len             2 ] <> "23" or
 5950         "1234567890" [ intExpr(            2) len             5 ] <> "23456" or
 5951         "1234567890" [ intExpr(            2) len             8 ] <> "23456789" or
 5952         "1234567890" [ intExpr(            2) len             9 ] <> "234567890" or
 5953         "1234567890" [ intExpr(            2) len            10 ] <> "234567890" or
 5954         "1234567890" [ intExpr(            2) len            15 ] <> "234567890" or
 5955         "1234567890" [ intExpr(            2) len  integer.last ] <> "234567890" or
 5956 
 5957         "1234567890" [ intExpr(            5) len             0 ] <> "" or
 5958         "1234567890" [ intExpr(            5) len             1 ] <> "5" or
 5959         "1234567890" [ intExpr(            5) len             2 ] <> "56" or
 5960         "1234567890" [ intExpr(            5) len             5 ] <> "56789" or
 5961         "1234567890" [ intExpr(            5) len             6 ] <> "567890" or
 5962         "1234567890" [ intExpr(            5) len             7 ] <> "567890" or
 5963         "1234567890" [ intExpr(            5) len            15 ] <> "567890" or
 5964         "1234567890" [ intExpr(            5) len  integer.last ] <> "567890" or
 5965 
 5966         "1234567890" [ intExpr(            9) len             0 ] <> "" or
 5967         "1234567890" [ intExpr(            9) len             1 ] <> "9" or
 5968         "1234567890" [ intExpr(            9) len             2 ] <> "90" or
 5969         "1234567890" [ intExpr(            9) len             3 ] <> "90" or
 5970         "1234567890" [ intExpr(            9) len            15 ] <> "90" or
 5971         "1234567890" [ intExpr(            9) len  integer.last ] <> "90" or
 5972 
 5973         "1234567890" [ intExpr(           10) len             0 ] <> "" or
 5974         "1234567890" [ intExpr(           10) len             1 ] <> "0" or
 5975         "1234567890" [ intExpr(           10) len             2 ] <> "0" or
 5976         "1234567890" [ intExpr(           10) len            15 ] <> "0" or
 5977         "1234567890" [ intExpr(           10) len  integer.last ] <> "0" or
 5978 
 5979         "1234567890" [ intExpr(           11) len             0 ] <> "" or
 5980         "1234567890" [ intExpr(           11) len             1 ] <> "" or
 5981         "1234567890" [ intExpr(           11) len             2 ] <> "" or
 5982         "1234567890" [ intExpr(           11) len            15 ] <> "" or
 5983         "1234567890" [ intExpr(           11) len  integer.last ] <> "" or
 5984 
 5985         "1234567890" [ intExpr(           15) len             0 ] <> "" or
 5986         "1234567890" [ intExpr(           15) len             1 ] <> "" or
 5987         "1234567890" [ intExpr(           15) len             2 ] <> "" or
 5988         "1234567890" [ intExpr(           15) len            20 ] <> "" or
 5989         "1234567890" [ intExpr(           15) len  integer.last ] <> "" or
 5990 
 5991         "1234567890" [ intExpr( integer.last) len             0 ] <> "" or
 5992         "1234567890" [ intExpr( integer.last) len             1 ] <> "" or
 5993         "1234567890" [ intExpr( integer.last) len             2 ] <> "" or
 5994         "1234567890" [ intExpr( integer.last) len            20 ] <> "" or
 5995         "1234567890" [ intExpr( integer.last) len  integer.last ] <> "" then
 5996       writeln(" ***** STRING [ START len LENGTH ] does not work correct. (3)");
 5997       okay := FALSE;
 5998     end if;
 5999 
 6000     if  "" [ intExpr(            1) len intExpr(            0) ] <> "" or
 6001         "" [ intExpr(            1) len intExpr(            1) ] <> "" or
 6002         "" [ intExpr(            1) len intExpr(            2) ] <> "" or
 6003         "" [ intExpr(            1) len intExpr(           15) ] <> "" or
 6004         "" [ intExpr(            1) len intExpr( integer.last) ] <> "" or
 6005 
 6006         "" [ intExpr(            2) len intExpr(            0) ] <> "" or
 6007         "" [ intExpr(            2) len intExpr(            1) ] <> "" or
 6008         "" [ intExpr(            2) len intExpr(           15) ] <> "" or
 6009         "" [ intExpr(            2) len intExpr( integer.last) ] <> "" or
 6010 
 6011         "" [ intExpr(           15) len intExpr(            0) ] <> "" or
 6012         "" [ intExpr(           15) len intExpr(            1) ] <> "" or
 6013         "" [ intExpr(           15) len intExpr(            2) ] <> "" or
 6014         "" [ intExpr(           15) len intExpr(           20) ] <> "" or
 6015         "" [ intExpr(           15) len intExpr( integer.last) ] <> "" or
 6016 
 6017         "" [ intExpr( integer.last) len intExpr(            0) ] <> "" or
 6018         "" [ intExpr( integer.last) len intExpr(            1) ] <> "" or
 6019         "" [ intExpr( integer.last) len intExpr(            2) ] <> "" or
 6020         "" [ intExpr( integer.last) len intExpr(           20) ] <> "" or
 6021         "" [ intExpr( integer.last) len intExpr( integer.last) ] <> "" or
 6022 
 6023         "1" [ intExpr(            1) len intExpr(            0) ] <> "" or
 6024         "1" [ intExpr(            1) len intExpr(            1) ] <> "1" or
 6025         "1" [ intExpr(            1) len intExpr(            2) ] <> "1" or
 6026         "1" [ intExpr(            1) len intExpr(           15) ] <> "1" or
 6027         "1" [ intExpr(            1) len intExpr( integer.last) ] <> "1" or
 6028 
 6029         "1" [ intExpr(            2) len intExpr(            0) ] <> "" or
 6030         "1" [ intExpr(            2) len intExpr(            1) ] <> "" or
 6031         "1" [ intExpr(            2) len intExpr(            2) ] <> "" or
 6032         "1" [ intExpr(            2) len intExpr(           15) ] <> "" or
 6033         "1" [ intExpr(            2) len intExpr( integer.last) ] <> "" or
 6034 
 6035         "1" [ intExpr(           15) len intExpr(            0) ] <> "" or
 6036         "1" [ intExpr(           15) len intExpr(            1) ] <> "" or
 6037         "1" [ intExpr(           15) len intExpr(            2) ] <> "" or
 6038         "1" [ intExpr(           15) len intExpr(           20) ] <> "" or
 6039         "1" [ intExpr(           15) len intExpr( integer.last) ] <> "" or
 6040 
 6041         "1" [ intExpr( integer.last) len intExpr(            0) ] <> "" or
 6042         "1" [ intExpr( integer.last) len intExpr(            1) ] <> "" or
 6043         "1" [ intExpr( integer.last) len intExpr(            2) ] <> "" or
 6044         "1" [ intExpr( integer.last) len intExpr(           20) ] <> "" or
 6045         "1" [ intExpr( integer.last) len intExpr( integer.last) ] <> "" or
 6046 
 6047         "1234567890" [ intExpr(            1) len intExpr(            0) ] <> "" or
 6048         "1234567890" [ intExpr(            1) len intExpr(            1) ] <> "1" or
 6049         "1234567890" [ intExpr(            1) len intExpr(            2) ] <> "12" or
 6050         "1234567890" [ intExpr(            1) len intExpr(            5) ] <> "12345" or
 6051         "1234567890" [ intExpr(            1) len intExpr(            9) ] <> "123456789" or
 6052         "1234567890" [ intExpr(            1) len intExpr(           10) ] <> "1234567890" or
 6053         "1234567890" [ intExpr(            1) len intExpr(           11) ] <> "1234567890" or
 6054         "1234567890" [ intExpr(            1) len intExpr(           15) ] <> "1234567890" or
 6055         "1234567890" [ intExpr(            1) len intExpr( integer.last) ] <> "1234567890" or
 6056 
 6057         "1234567890" [ intExpr(            2) len intExpr(            0) ] <> "" or
 6058         "1234567890" [ intExpr(            2) len intExpr(            1) ] <> "2" or
 6059         "1234567890" [ intExpr(            2) len intExpr(            2) ] <> "23" or
 6060         "1234567890" [ intExpr(            2) len intExpr(            5) ] <> "23456" or
 6061         "1234567890" [ intExpr(            2) len intExpr(            8) ] <> "23456789" or
 6062         "1234567890" [ intExpr(            2) len intExpr(            9) ] <> "234567890" or
 6063         "1234567890" [ intExpr(            2) len intExpr(           10) ] <> "234567890" or
 6064         "1234567890" [ intExpr(            2) len intExpr(           15) ] <> "234567890" or
 6065         "1234567890" [ intExpr(            2) len intExpr( integer.last) ] <> "234567890" or
 6066 
 6067         "1234567890" [ intExpr(            5) len intExpr(            0) ] <> "" or
 6068         "1234567890" [ intExpr(            5) len intExpr(            1) ] <> "5" or
 6069         "1234567890" [ intExpr(            5) len intExpr(            2) ] <> "56" or
 6070         "1234567890" [ intExpr(            5) len intExpr(            5) ] <> "56789" or
 6071         "1234567890" [ intExpr(            5) len intExpr(            6) ] <> "567890" or
 6072         "1234567890" [ intExpr(            5) len intExpr(            7) ] <> "567890" or
 6073         "1234567890" [ intExpr(            5) len intExpr(           15) ] <> "567890" or
 6074         "1234567890" [ intExpr(            5) len intExpr( integer.last) ] <> "567890" or
 6075 
 6076         "1234567890" [ intExpr(            9) len intExpr(            0) ] <> "" or
 6077         "1234567890" [ intExpr(            9) len intExpr(            1) ] <> "9" or
 6078         "1234567890" [ intExpr(            9) len intExpr(            2) ] <> "90" or
 6079         "1234567890" [ intExpr(            9) len intExpr(            3) ] <> "90" or
 6080         "1234567890" [ intExpr(            9) len intExpr(           15) ] <> "90" or
 6081         "1234567890" [ intExpr(            9) len intExpr( integer.last) ] <> "90" or
 6082 
 6083         "1234567890" [ intExpr(           10) len intExpr(            0) ] <> "" or
 6084         "1234567890" [ intExpr(           10) len intExpr(            1) ] <> "0" or
 6085         "1234567890" [ intExpr(           10) len intExpr(            2) ] <> "0" or
 6086         "1234567890" [ intExpr(           10) len intExpr(           15) ] <> "0" or
 6087         "1234567890" [ intExpr(           10) len intExpr( integer.last) ] <> "0" or
 6088 
 6089         "1234567890" [ intExpr(           11) len intExpr(            0) ] <> "" or
 6090         "1234567890" [ intExpr(           11) len intExpr(            1) ] <> "" or
 6091         "1234567890" [ intExpr(           11) len intExpr(            2) ] <> "" or
 6092         "1234567890" [ intExpr(           11) len intExpr(           15) ] <> "" or
 6093         "1234567890" [ intExpr(           11) len intExpr( integer.last) ] <> "" or
 6094 
 6095         "1234567890" [ intExpr(           15) len intExpr(            0) ] <> "" or
 6096         "1234567890" [ intExpr(           15) len intExpr(            1) ] <> "" or
 6097         "1234567890" [ intExpr(           15) len intExpr(            2) ] <> "" or
 6098         "1234567890" [ intExpr(           15) len intExpr(           20) ] <> "" or
 6099         "1234567890" [ intExpr(           15) len intExpr( integer.last) ] <> "" or
 6100 
 6101         "1234567890" [ intExpr( integer.last) len intExpr(            0) ] <> "" or
 6102         "1234567890" [ intExpr( integer.last) len intExpr(            1) ] <> "" or
 6103         "1234567890" [ intExpr( integer.last) len intExpr(            2) ] <> "" or
 6104         "1234567890" [ intExpr( integer.last) len intExpr(           20) ] <> "" or
 6105         "1234567890" [ intExpr( integer.last) len intExpr( integer.last) ] <> "" then
 6106       writeln(" ***** STRING [ START len LENGTH ] does not work correct. (4)");
 6107       okay := FALSE;
 6108     end if;
 6109   end func;
 6110 
 6111 
 6112 const func boolean: check_string_substr_expr_2 is func
 6113   result
 6114     var boolean: okay is TRUE;
 6115   begin
 6116     if  striExpr("") [             1 len             0 ] <> "" or
 6117         striExpr("") [             1 len             1 ] <> "" or
 6118         striExpr("") [             1 len             2 ] <> "" or
 6119         striExpr("") [             1 len            15 ] <> "" or
 6120         striExpr("") [             1 len  integer.last ] <> "" or
 6121 
 6122         striExpr("") [             2 len             0 ] <> "" or
 6123         striExpr("") [             2 len             1 ] <> "" or
 6124         striExpr("") [             2 len            15 ] <> "" or
 6125         striExpr("") [             2 len  integer.last ] <> "" or
 6126 
 6127         striExpr("") [            15 len             0 ] <> "" or
 6128         striExpr("") [            15 len             1 ] <> "" or
 6129         striExpr("") [            15 len             2 ] <> "" or
 6130         striExpr("") [            15 len            20 ] <> "" or
 6131         striExpr("") [            15 len  integer.last ] <> "" or
 6132 
 6133         striExpr("") [  integer.last len             0 ] <> "" or
 6134         striExpr("") [  integer.last len             1 ] <> "" or
 6135         striExpr("") [  integer.last len             2 ] <> "" or
 6136         striExpr("") [  integer.last len            20 ] <> "" or
 6137         striExpr("") [  integer.last len  integer.last ] <> "" or
 6138 
 6139         striExpr("1") [             1 len             0 ] <> "" or
 6140         striExpr("1") [             1 len             1 ] <> "1" or
 6141         striExpr("1") [             1 len             2 ] <> "1" or
 6142         striExpr("1") [             1 len            15 ] <> "1" or
 6143         striExpr("1") [             1 len  integer.last ] <> "1" or
 6144 
 6145         striExpr("1") [             2 len             0 ] <> "" or
 6146         striExpr("1") [             2 len             1 ] <> "" or
 6147         striExpr("1") [             2 len             2 ] <> "" or
 6148         striExpr("1") [             2 len            15 ] <> "" or
 6149         striExpr("1") [             2 len  integer.last ] <> "" or
 6150 
 6151         striExpr("1") [            15 len             0 ] <> "" or
 6152         striExpr("1") [            15 len             1 ] <> "" or
 6153         striExpr("1") [            15 len             2 ] <> "" or
 6154         striExpr("1") [            15 len            20 ] <> "" or
 6155         striExpr("1") [            15 len  integer.last ] <> "" or
 6156 
 6157         striExpr("1") [  integer.last len             0 ] <> "" or
 6158         striExpr("1") [  integer.last len             1 ] <> "" or
 6159         striExpr("1") [  integer.last len             2 ] <> "" or
 6160         striExpr("1") [  integer.last len            20 ] <> "" or
 6161         striExpr("1") [  integer.last len  integer.last ] <> "" or
 6162 
 6163         striExpr("1234567890") [             1 len             0 ] <> "" or
 6164         striExpr("1234567890") [             1 len             1 ] <> "1" or
 6165         striExpr("1234567890") [             1 len             2 ] <> "12" or
 6166         striExpr("1234567890") [             1 len             5 ] <> "12345" or
 6167         striExpr("1234567890") [             1 len             9 ] <> "123456789" or
 6168         striExpr("1234567890") [             1 len            10 ] <> "1234567890" or
 6169         striExpr("1234567890") [             1 len            11 ] <> "1234567890" or
 6170         striExpr("1234567890") [             1 len            15 ] <> "1234567890" or
 6171         striExpr("1234567890") [             1 len  integer.last ] <> "1234567890" or
 6172 
 6173         striExpr("1234567890") [             2 len             0 ] <> "" or
 6174         striExpr("1234567890") [             2 len             1 ] <> "2" or
 6175         striExpr("1234567890") [             2 len             2 ] <> "23" or
 6176         striExpr("1234567890") [             2 len             5 ] <> "23456" or
 6177         striExpr("1234567890") [             2 len             8 ] <> "23456789" or
 6178         striExpr("1234567890") [             2 len             9 ] <> "234567890" or
 6179         striExpr("1234567890") [             2 len            10 ] <> "234567890" or
 6180         striExpr("1234567890") [             2 len            15 ] <> "234567890" or
 6181         striExpr("1234567890") [             2 len  integer.last ] <> "234567890" or
 6182 
 6183         striExpr("1234567890") [             5 len             0 ] <> "" or
 6184         striExpr("1234567890") [             5 len             1 ] <> "5" or
 6185         striExpr("1234567890") [             5 len             2 ] <> "56" or
 6186         striExpr("1234567890") [             5 len             5 ] <> "56789" or
 6187         striExpr("1234567890") [             5 len             6 ] <> "567890" or
 6188         striExpr("1234567890") [             5 len             7 ] <> "567890" or
 6189         striExpr("1234567890") [             5 len            15 ] <> "567890" or
 6190         striExpr("1234567890") [             5 len  integer.last ] <> "567890" or
 6191 
 6192         striExpr("1234567890") [             9 len             0 ] <> "" or
 6193         striExpr("1234567890") [             9 len             1 ] <> "9" or
 6194         striExpr("1234567890") [             9 len             2 ] <> "90" or
 6195         striExpr("1234567890") [             9 len             3 ] <> "90" or
 6196         striExpr("1234567890") [             9 len            15 ] <> "90" or
 6197         striExpr("1234567890") [             9 len  integer.last ] <> "90" or
 6198 
 6199         striExpr("1234567890") [            10 len             0 ] <> "" or
 6200         striExpr("1234567890") [            10 len             1 ] <> "0" or
 6201         striExpr("1234567890") [            10 len             2 ] <> "0" or
 6202         striExpr("1234567890") [            10 len            15 ] <> "0" or
 6203         striExpr("1234567890") [            10 len  integer.last ] <> "0" or
 6204 
 6205         striExpr("1234567890") [            11 len             0 ] <> "" or
 6206         striExpr("1234567890") [            11 len             1 ] <> "" or
 6207         striExpr("1234567890") [            11 len             2 ] <> "" or
 6208         striExpr("1234567890") [            11 len            15 ] <> "" or
 6209         striExpr("1234567890") [            11 len  integer.last ] <> "" or
 6210 
 6211         striExpr("1234567890") [            15 len             0 ] <> "" or
 6212         striExpr("1234567890") [            15 len             1 ] <> "" or
 6213         striExpr("1234567890") [            15 len             2 ] <> "" or
 6214         striExpr("1234567890") [            15 len            20 ] <> "" or
 6215         striExpr("1234567890") [            15 len  integer.last ] <> "" or
 6216 
 6217         striExpr("1234567890") [  integer.last len             0 ] <> "" or
 6218         striExpr("1234567890") [  integer.last len             1 ] <> "" or
 6219         striExpr("1234567890") [  integer.last len             2 ] <> "" or
 6220         striExpr("1234567890") [  integer.last len            20 ] <> "" or
 6221         striExpr("1234567890") [  integer.last len  integer.last ] <> "" then
 6222       writeln(" ***** STRING [ START len LENGTH ] does not work correct. (5)");
 6223       okay := FALSE;
 6224     end if;
 6225 
 6226     if  striExpr("") [             1 len intExpr(            0) ] <> "" or
 6227         striExpr("") [             1 len intExpr(            1) ] <> "" or
 6228         striExpr("") [             1 len intExpr(            2) ] <> "" or
 6229         striExpr("") [             1 len intExpr(           15) ] <> "" or
 6230         striExpr("") [             1 len intExpr( integer.last) ] <> "" or
 6231 
 6232         striExpr("") [             2 len intExpr(            0) ] <> "" or
 6233         striExpr("") [             2 len intExpr(            1) ] <> "" or
 6234         striExpr("") [             2 len intExpr(           15) ] <> "" or
 6235         striExpr("") [             2 len intExpr( integer.last) ] <> "" or
 6236 
 6237         striExpr("") [            15 len intExpr(            0) ] <> "" or
 6238         striExpr("") [            15 len intExpr(            1) ] <> "" or
 6239         striExpr("") [            15 len intExpr(            2) ] <> "" or
 6240         striExpr("") [            15 len intExpr(           20) ] <> "" or
 6241         striExpr("") [            15 len intExpr( integer.last) ] <> "" or
 6242 
 6243         striExpr("") [  integer.last len intExpr(            0) ] <> "" or
 6244         striExpr("") [  integer.last len intExpr(            1) ] <> "" or
 6245         striExpr("") [  integer.last len intExpr(            2) ] <> "" or
 6246         striExpr("") [  integer.last len intExpr(           20) ] <> "" or
 6247         striExpr("") [  integer.last len intExpr( integer.last) ] <> "" or
 6248 
 6249         striExpr("1") [             1 len intExpr(            0) ] <> "" or
 6250         striExpr("1") [             1 len intExpr(            1) ] <> "1" or
 6251         striExpr("1") [             1 len intExpr(            2) ] <> "1" or
 6252         striExpr("1") [             1 len intExpr(           15) ] <> "1" or
 6253         striExpr("1") [             1 len intExpr( integer.last) ] <> "1" or
 6254 
 6255         striExpr("1") [             2 len intExpr(            0) ] <> "" or
 6256         striExpr("1") [             2 len intExpr(            1) ] <> "" or
 6257         striExpr("1") [             2 len intExpr(            2) ] <> "" or
 6258         striExpr("1") [             2 len intExpr(           15) ] <> "" or
 6259         striExpr("1") [             2 len intExpr( integer.last) ] <> "" or
 6260 
 6261         striExpr("1") [            15 len intExpr(            0) ] <> "" or
 6262         striExpr("1") [            15 len intExpr(            1) ] <> "" or
 6263         striExpr("1") [            15 len intExpr(            2) ] <> "" or
 6264         striExpr("1") [            15 len intExpr(           20) ] <> "" or
 6265         striExpr("1") [            15 len intExpr( integer.last) ] <> "" or
 6266 
 6267         striExpr("1") [  integer.last len intExpr(            0) ] <> "" or
 6268         striExpr("1") [  integer.last len intExpr(            1) ] <> "" or
 6269         striExpr("1") [  integer.last len intExpr(            2) ] <> "" or
 6270         striExpr("1") [  integer.last len intExpr(           20) ] <> "" or
 6271         striExpr("1") [  integer.last len intExpr( integer.last) ] <> "" or
 6272 
 6273         striExpr("1234567890") [             1 len intExpr(            0) ] <> "" or
 6274         striExpr("1234567890") [             1 len intExpr(            1) ] <> "1" or
 6275         striExpr("1234567890") [             1 len intExpr(            2) ] <> "12" or
 6276         striExpr("1234567890") [             1 len intExpr(            5) ] <> "12345" or
 6277         striExpr("1234567890") [             1 len intExpr(            9) ] <> "123456789" or
 6278         striExpr("1234567890") [             1 len intExpr(           10) ] <> "1234567890" or
 6279         striExpr("1234567890") [             1 len intExpr(           11) ] <> "1234567890" or
 6280         striExpr("1234567890") [             1 len intExpr(           15) ] <> "1234567890" or
 6281         striExpr("1234567890") [             1 len intExpr( integer.last) ] <> "1234567890" or
 6282 
 6283         striExpr("1234567890") [             2 len intExpr(            0) ] <> "" or
 6284         striExpr("1234567890") [             2 len intExpr(            1) ] <> "2" or
 6285         striExpr("1234567890") [             2 len intExpr(            2) ] <> "23" or
 6286         striExpr("1234567890") [             2 len intExpr(            5) ] <> "23456" or
 6287         striExpr("1234567890") [             2 len intExpr(            8) ] <> "23456789" or
 6288         striExpr("1234567890") [             2 len intExpr(            9) ] <> "234567890" or
 6289         striExpr("1234567890") [             2 len intExpr(           10) ] <> "234567890" or
 6290         striExpr("1234567890") [             2 len intExpr(           15) ] <> "234567890" or
 6291         striExpr("1234567890") [             2 len intExpr( integer.last) ] <> "234567890" or
 6292 
 6293         striExpr("1234567890") [             5 len intExpr(            0) ] <> "" or
 6294         striExpr("1234567890") [             5 len intExpr(            1) ] <> "5" or
 6295         striExpr("1234567890") [             5 len intExpr(            2) ] <> "56" or
 6296         striExpr("1234567890") [             5 len intExpr(            5) ] <> "56789" or
 6297         striExpr("1234567890") [             5 len intExpr(            6) ] <> "567890" or
 6298         striExpr("1234567890") [             5 len intExpr(            7) ] <> "567890" or
 6299         striExpr("1234567890") [             5 len intExpr(           15) ] <> "567890" or
 6300         striExpr("1234567890") [             5 len intExpr( integer.last) ] <> "567890" or
 6301 
 6302         striExpr("1234567890") [             9 len intExpr(            0) ] <> "" or
 6303         striExpr("1234567890") [             9 len intExpr(            1) ] <> "9" or
 6304         striExpr("1234567890") [             9 len intExpr(            2) ] <> "90" or
 6305         striExpr("1234567890") [             9 len intExpr(            3) ] <> "90" or
 6306         striExpr("1234567890") [             9 len intExpr(           15) ] <> "90" or
 6307         striExpr("1234567890") [             9 len intExpr( integer.last) ] <> "90" or
 6308 
 6309         striExpr("1234567890") [            10 len intExpr(            0) ] <> "" or
 6310         striExpr("1234567890") [            10 len intExpr(            1) ] <> "0" or
 6311         striExpr("1234567890") [            10 len intExpr(            2) ] <> "0" or
 6312         striExpr("1234567890") [            10 len intExpr(           15) ] <> "0" or
 6313         striExpr("1234567890") [            10 len intExpr( integer.last) ] <> "0" or
 6314 
 6315         striExpr("1234567890") [            11 len intExpr(            0) ] <> "" or
 6316         striExpr("1234567890") [            11 len intExpr(            1) ] <> "" or
 6317         striExpr("1234567890") [            11 len intExpr(            2) ] <> "" or
 6318         striExpr("1234567890") [            11 len intExpr(           15) ] <> "" or
 6319         striExpr("1234567890") [            11 len intExpr( integer.last) ] <> "" or
 6320 
 6321         striExpr("1234567890") [            15 len intExpr(            0) ] <> "" or
 6322         striExpr("1234567890") [            15 len intExpr(            1) ] <> "" or
 6323         striExpr("1234567890") [            15 len intExpr(            2) ] <> "" or
 6324         striExpr("1234567890") [            15 len intExpr(           20) ] <> "" or
 6325         striExpr("1234567890") [            15 len intExpr( integer.last) ] <> "" or
 6326 
 6327         striExpr("1234567890") [  integer.last len intExpr(            0) ] <> "" or
 6328         striExpr("1234567890") [  integer.last len intExpr(            1) ] <> "" or
 6329         striExpr("1234567890") [  integer.last len intExpr(            2) ] <> "" or
 6330         striExpr("1234567890") [  integer.last len intExpr(           20) ] <> "" or
 6331         striExpr("1234567890") [  integer.last len intExpr( integer.last) ] <> "" then
 6332       writeln(" ***** STRING [ START len LENGTH ] does not work correct. (6)");
 6333       okay := FALSE;
 6334     end if;
 6335 
 6336     if  striExpr("") [ intExpr(            1) len             0 ] <> "" or
 6337         striExpr("") [ intExpr(            1) len             1 ] <> "" or
 6338         striExpr("") [ intExpr(            1) len             2 ] <> "" or
 6339         striExpr("") [ intExpr(            1) len            15 ] <> "" or
 6340         striExpr("") [ intExpr(            1) len  integer.last ] <> "" or
 6341 
 6342         striExpr("") [ intExpr(            2) len             0 ] <> "" or
 6343         striExpr("") [ intExpr(            2) len             1 ] <> "" or
 6344         striExpr("") [ intExpr(            2) len            15 ] <> "" or
 6345         striExpr("") [ intExpr(            2) len  integer.last ] <> "" or
 6346 
 6347         striExpr("") [ intExpr(           15) len             0 ] <> "" or
 6348         striExpr("") [ intExpr(           15) len             1 ] <> "" or
 6349         striExpr("") [ intExpr(           15) len             2 ] <> "" or
 6350         striExpr("") [ intExpr(           15) len            20 ] <> "" or
 6351         striExpr("") [ intExpr(           15) len  integer.last ] <> "" or
 6352 
 6353         striExpr("") [ intExpr( integer.last) len             0 ] <> "" or
 6354         striExpr("") [ intExpr( integer.last) len             1 ] <> "" or
 6355         striExpr("") [ intExpr( integer.last) len             2 ] <> "" or
 6356         striExpr("") [ intExpr( integer.last) len            20 ] <> "" or
 6357         striExpr("") [ intExpr( integer.last) len  integer.last ] <> "" or
 6358 
 6359         striExpr("1") [ intExpr(            1) len             0 ] <> "" or
 6360         striExpr("1") [ intExpr(            1) len             1 ] <> "1" or
 6361         striExpr("1") [ intExpr(            1) len             2 ] <> "1" or
 6362         striExpr("1") [ intExpr(            1) len            15 ] <> "1" or
 6363         striExpr("1") [ intExpr(            1) len  integer.last ] <> "1" or
 6364 
 6365         striExpr("1") [ intExpr(            2) len             0 ] <> "" or
 6366         striExpr("1") [ intExpr(            2) len             1 ] <> "" or
 6367         striExpr("1") [ intExpr(            2) len             2 ] <> "" or
 6368         striExpr("1") [ intExpr(            2) len            15 ] <> "" or
 6369         striExpr("1") [ intExpr(            2) len  integer.last ] <> "" or
 6370 
 6371         striExpr("1") [ intExpr(           15) len             0 ] <> "" or
 6372         striExpr("1") [ intExpr(           15) len             1 ] <> "" or
 6373         striExpr("1") [ intExpr(           15) len             2 ] <> "" or
 6374         striExpr("1") [ intExpr(           15) len            20 ] <> "" or
 6375         striExpr("1") [ intExpr(           15) len  integer.last ] <> "" or
 6376 
 6377         striExpr("1") [ intExpr( integer.last) len             0 ] <> "" or
 6378         striExpr("1") [ intExpr( integer.last) len             1 ] <> "" or
 6379         striExpr("1") [ intExpr( integer.last) len             2 ] <> "" or
 6380         striExpr("1") [ intExpr( integer.last) len            20 ] <> "" or
 6381         striExpr("1") [ intExpr( integer.last) len  integer.last ] <> "" or
 6382 
 6383         striExpr("1234567890") [ intExpr(            1) len             0 ] <> "" or
 6384         striExpr("1234567890") [ intExpr(            1) len             1 ] <> "1" or
 6385         striExpr("1234567890") [ intExpr(            1) len             2 ] <> "12" or
 6386         striExpr("1234567890") [ intExpr(            1) len             5 ] <> "12345" or
 6387         striExpr("1234567890") [ intExpr(            1) len             9 ] <> "123456789" or
 6388         striExpr("1234567890") [ intExpr(            1) len            10 ] <> "1234567890" or
 6389         striExpr("1234567890") [ intExpr(            1) len            11 ] <> "1234567890" or
 6390         striExpr("1234567890") [ intExpr(            1) len            15 ] <> "1234567890" or
 6391         striExpr("1234567890") [ intExpr(            1) len  integer.last ] <> "1234567890" or
 6392 
 6393         striExpr("1234567890") [ intExpr(            2) len             0 ] <> "" or
 6394         striExpr("1234567890") [ intExpr(            2) len             1 ] <> "2" or
 6395         striExpr("1234567890") [ intExpr(            2) len             2 ] <> "23" or
 6396         striExpr("1234567890") [ intExpr(            2) len             5 ] <> "23456" or
 6397         striExpr("1234567890") [ intExpr(            2) len             8 ] <> "23456789" or
 6398         striExpr("1234567890") [ intExpr(            2) len             9 ] <> "234567890" or
 6399         striExpr("1234567890") [ intExpr(            2) len            10 ] <> "234567890" or
 6400         striExpr("1234567890") [ intExpr(            2) len            15 ] <> "234567890" or
 6401         striExpr("1234567890") [ intExpr(            2) len  integer.last ] <> "234567890" or
 6402 
 6403         striExpr("1234567890") [ intExpr(            5) len             0 ] <> "" or
 6404         striExpr("1234567890") [ intExpr(            5) len             1 ] <> "5" or
 6405         striExpr("1234567890") [ intExpr(            5) len             2 ] <> "56" or
 6406         striExpr("1234567890") [ intExpr(            5) len             5 ] <> "56789" or
 6407         striExpr("1234567890") [ intExpr(            5) len             6 ] <> "567890" or
 6408         striExpr("1234567890") [ intExpr(            5) len             7 ] <> "567890" or
 6409         striExpr("1234567890") [ intExpr(            5) len            15 ] <> "567890" or
 6410         striExpr("1234567890") [ intExpr(            5) len  integer.last ] <> "567890" or
 6411 
 6412         striExpr("1234567890") [ intExpr(            9) len             0 ] <> "" or
 6413         striExpr("1234567890") [ intExpr(            9) len             1 ] <> "9" or
 6414         striExpr("1234567890") [ intExpr(            9) len             2 ] <> "90" or
 6415         striExpr("1234567890") [ intExpr(            9) len             3 ] <> "90" or
 6416         striExpr("1234567890") [ intExpr(            9) len            15 ] <> "90" or
 6417         striExpr("1234567890") [ intExpr(            9) len  integer.last ] <> "90" or
 6418 
 6419         striExpr("1234567890") [ intExpr(           10) len             0 ] <> "" or
 6420         striExpr("1234567890") [ intExpr(           10) len             1 ] <> "0" or
 6421         striExpr("1234567890") [ intExpr(           10) len             2 ] <> "0" or
 6422         striExpr("1234567890") [ intExpr(           10) len            15 ] <> "0" or
 6423         striExpr("1234567890") [ intExpr(           10) len  integer.last ] <> "0" or
 6424 
 6425         striExpr("1234567890") [ intExpr(           11) len             0 ] <> "" or
 6426         striExpr("1234567890") [ intExpr(           11) len             1 ] <> "" or
 6427         striExpr("1234567890") [ intExpr(           11) len             2 ] <> "" or
 6428         striExpr("1234567890") [ intExpr(           11) len            15 ] <> "" or
 6429         striExpr("1234567890") [ intExpr(           11) len  integer.last ] <> "" or
 6430 
 6431         striExpr("1234567890") [ intExpr(           15) len             0 ] <> "" or
 6432         striExpr("1234567890") [ intExpr(           15) len             1 ] <> "" or
 6433         striExpr("1234567890") [ intExpr(           15) len             2 ] <> "" or
 6434         striExpr("1234567890") [ intExpr(           15) len            20 ] <> "" or
 6435         striExpr("1234567890") [ intExpr(           15) len  integer.last ] <> "" or
 6436 
 6437         striExpr("1234567890") [ intExpr( integer.last) len             0 ] <> "" or
 6438         striExpr("1234567890") [ intExpr( integer.last) len             1 ] <> "" or
 6439         striExpr("1234567890") [ intExpr( integer.last) len             2 ] <> "" or
 6440         striExpr("1234567890") [ intExpr( integer.last) len            20 ] <> "" or
 6441         striExpr("1234567890") [ intExpr( integer.last) len  integer.last ] <> "" then
 6442       writeln(" ***** STRING [ START len LENGTH ] does not work correct. (7)");
 6443       okay := FALSE;
 6444     end if;
 6445 
 6446     if  striExpr("") [ intExpr(            1) len intExpr(            0) ] <> "" or
 6447         striExpr("") [ intExpr(            1) len intExpr(            1) ] <> "" or
 6448         striExpr("") [ intExpr(            1) len intExpr(            2) ] <> "" or
 6449         striExpr("") [ intExpr(            1) len intExpr(           15) ] <> "" or
 6450         striExpr("") [ intExpr(            1) len intExpr( integer.last) ] <> "" or
 6451 
 6452         striExpr("") [ intExpr(            2) len intExpr(            0) ] <> "" or
 6453         striExpr("") [ intExpr(            2) len intExpr(            1) ] <> "" or
 6454         striExpr("") [ intExpr(            2) len intExpr(           15) ] <> "" or
 6455         striExpr("") [ intExpr(            2) len intExpr( integer.last) ] <> "" or
 6456 
 6457         striExpr("") [ intExpr(           15) len intExpr(            0) ] <> "" or
 6458         striExpr("") [ intExpr(           15) len intExpr(            1) ] <> "" or
 6459         striExpr("") [ intExpr(           15) len intExpr(            2) ] <> "" or
 6460         striExpr("") [ intExpr(           15) len intExpr(           20) ] <> "" or
 6461         striExpr("") [ intExpr(           15) len intExpr( integer.last) ] <> "" or
 6462 
 6463         striExpr("") [ intExpr( integer.last) len intExpr(            0) ] <> "" or
 6464         striExpr("") [ intExpr( integer.last) len intExpr(            1) ] <> "" or
 6465         striExpr("") [ intExpr( integer.last) len intExpr(            2) ] <> "" or
 6466         striExpr("") [ intExpr( integer.last) len intExpr(           20) ] <> "" or
 6467         striExpr("") [ intExpr( integer.last) len intExpr( integer.last) ] <> "" or
 6468 
 6469         striExpr("1") [ intExpr(            1) len intExpr(            0) ] <> "" or
 6470         striExpr("1") [ intExpr(            1) len intExpr(            1) ] <> "1" or
 6471         striExpr("1") [ intExpr(            1) len intExpr(            2) ] <> "1" or
 6472         striExpr("1") [ intExpr(            1) len intExpr(           15) ] <> "1" or
 6473         striExpr("1") [ intExpr(            1) len intExpr( integer.last) ] <> "1" or
 6474 
 6475         striExpr("1") [ intExpr(            2) len intExpr(            0) ] <> "" or
 6476         striExpr("1") [ intExpr(            2) len intExpr(            1) ] <> "" or
 6477         striExpr("1") [ intExpr(            2) len intExpr(            2) ] <> "" or
 6478         striExpr("1") [ intExpr(            2) len intExpr(           15) ] <> "" or
 6479         striExpr("1") [ intExpr(            2) len intExpr( integer.last) ] <> "" or
 6480 
 6481         striExpr("1") [ intExpr(           15) len intExpr(            0) ] <> "" or
 6482         striExpr("1") [ intExpr(           15) len intExpr(            1) ] <> "" or
 6483         striExpr("1") [ intExpr(           15) len intExpr(            2) ] <> "" or
 6484         striExpr("1") [ intExpr(           15) len intExpr(           20) ] <> "" or
 6485         striExpr("1") [ intExpr(           15) len intExpr( integer.last) ] <> "" or
 6486 
 6487         striExpr("1") [ intExpr( integer.last) len intExpr(            0) ] <> "" or
 6488         striExpr("1") [ intExpr( integer.last) len intExpr(            1) ] <> "" or
 6489         striExpr("1") [ intExpr( integer.last) len intExpr(            2) ] <> "" or
 6490         striExpr("1") [ intExpr( integer.last) len intExpr(           20) ] <> "" or
 6491         striExpr("1") [ intExpr( integer.last) len intExpr( integer.last) ] <> "" or
 6492 
 6493         striExpr("1234567890") [ intExpr(            1) len intExpr(            0) ] <> "" or
 6494         striExpr("1234567890") [ intExpr(            1) len intExpr(            1) ] <> "1" or
 6495         striExpr("1234567890") [ intExpr(            1) len intExpr(            2) ] <> "12" or
 6496         striExpr("1234567890") [ intExpr(            1) len intExpr(            5) ] <> "12345" or
 6497         striExpr("1234567890") [ intExpr(            1) len intExpr(            9) ] <> "123456789" or
 6498         striExpr("1234567890") [ intExpr(            1) len intExpr(           10) ] <> "1234567890" or
 6499         striExpr("1234567890") [ intExpr(            1) len intExpr(           11) ] <> "1234567890" or
 6500         striExpr("1234567890") [ intExpr(            1) len intExpr(           15) ] <> "1234567890" or
 6501         striExpr("1234567890") [ intExpr(            1) len intExpr( integer.last) ] <> "1234567890" or
 6502 
 6503         striExpr("1234567890") [ intExpr(            2) len intExpr(            0) ] <> "" or
 6504         striExpr("1234567890") [ intExpr(            2) len intExpr(            1) ] <> "2" or
 6505         striExpr("1234567890") [ intExpr(            2) len intExpr(            2) ] <> "23" or
 6506         striExpr("1234567890") [ intExpr(            2) len intExpr(            5) ] <> "23456" or
 6507         striExpr("1234567890") [ intExpr(            2) len intExpr(            8) ] <> "23456789" or
 6508         striExpr("1234567890") [ intExpr(            2) len intExpr(            9) ] <> "234567890" or
 6509         striExpr("1234567890") [ intExpr(            2) len intExpr(           10) ] <> "234567890" or
 6510         striExpr("1234567890") [ intExpr(            2) len intExpr(           15) ] <> "234567890" or
 6511         striExpr("1234567890") [ intExpr(            2) len intExpr( integer.last) ] <> "234567890" or
 6512 
 6513         striExpr("1234567890") [ intExpr(            5) len intExpr(            0) ] <> "" or
 6514         striExpr("1234567890") [ intExpr(            5) len intExpr(            1) ] <> "5" or
 6515         striExpr("1234567890") [ intExpr(            5) len intExpr(            2) ] <> "56" or
 6516         striExpr("1234567890") [ intExpr(            5) len intExpr(            5) ] <> "56789" or
 6517         striExpr("1234567890") [ intExpr(            5) len intExpr(            6) ] <> "567890" or
 6518         striExpr("1234567890") [ intExpr(            5) len intExpr(            7) ] <> "567890" or
 6519         striExpr("1234567890") [ intExpr(            5) len intExpr(           15) ] <> "567890" or
 6520         striExpr("1234567890") [ intExpr(            5) len intExpr( integer.last) ] <> "567890" or
 6521 
 6522         striExpr("1234567890") [ intExpr(            9) len intExpr(            0) ] <> "" or
 6523         striExpr("1234567890") [ intExpr(            9) len intExpr(            1) ] <> "9" or
 6524         striExpr("1234567890") [ intExpr(            9) len intExpr(            2) ] <> "90" or
 6525         striExpr("1234567890") [ intExpr(            9) len intExpr(            3) ] <> "90" or
 6526         striExpr("1234567890") [ intExpr(            9) len intExpr(           15) ] <> "90" or
 6527         striExpr("1234567890") [ intExpr(            9) len intExpr( integer.last) ] <> "90" or
 6528 
 6529         striExpr("1234567890") [ intExpr(           10) len intExpr(            0) ] <> "" or
 6530         striExpr("1234567890") [ intExpr(           10) len intExpr(            1) ] <> "0" or
 6531         striExpr("1234567890") [ intExpr(           10) len intExpr(            2) ] <> "0" or
 6532         striExpr("1234567890") [ intExpr(           10) len intExpr(           15) ] <> "0" or
 6533         striExpr("1234567890") [ intExpr(           10) len intExpr( integer.last) ] <> "0" or
 6534 
 6535         striExpr("1234567890") [ intExpr(           11) len intExpr(            0) ] <> "" or
 6536         striExpr("1234567890") [ intExpr(           11) len intExpr(            1) ] <> "" or
 6537         striExpr("1234567890") [ intExpr(           11) len intExpr(            2) ] <> "" or
 6538         striExpr("1234567890") [ intExpr(           11) len intExpr(           15) ] <> "" or
 6539         striExpr("1234567890") [ intExpr(           11) len intExpr( integer.last) ] <> "" or
 6540 
 6541         striExpr("1234567890") [ intExpr(           15) len intExpr(            0) ] <> "" or
 6542         striExpr("1234567890") [ intExpr(           15) len intExpr(            1) ] <> "" or
 6543         striExpr("1234567890") [ intExpr(           15) len intExpr(            2) ] <> "" or
 6544         striExpr("1234567890") [ intExpr(           15) len intExpr(           20) ] <> "" or
 6545         striExpr("1234567890") [ intExpr(           15) len intExpr( integer.last) ] <> "" or
 6546 
 6547         striExpr("1234567890") [ intExpr( integer.last) len intExpr(            0) ] <> "" or
 6548         striExpr("1234567890") [ intExpr( integer.last) len intExpr(            1) ] <> "" or
 6549         striExpr("1234567890") [ intExpr( integer.last) len intExpr(            2) ] <> "" or
 6550         striExpr("1234567890") [ intExpr( integer.last) len intExpr(           20) ] <> "" or
 6551         striExpr("1234567890") [ intExpr( integer.last) len intExpr( integer.last) ] <> "" then
 6552       writeln(" ***** STRING [ START len LENGTH ] does not work correct. (8)");
 6553       okay := FALSE;
 6554     end if;
 6555   end func;
 6556 
 6557 
 6558 const func boolean: check_string_substr_assign_1 is func
 6559   result
 6560     var boolean: okay is TRUE;
 6561   local
 6562     var boolean: ok is TRUE;
 6563     var string: stri is "";
 6564   begin
 6565     stri := "" [             1 len             0 ]; ok := ok and stri = "";
 6566     stri := "" [             1 len             1 ]; ok := ok and stri = "";
 6567     stri := "" [             1 len             2 ]; ok := ok and stri = "";
 6568     stri := "" [             1 len            15 ]; ok := ok and stri = "";
 6569     stri := "" [             1 len  integer.last ]; ok := ok and stri = "";
 6570 
 6571     stri := "" [             2 len             0 ]; ok := ok and stri = "";
 6572     stri := "" [             2 len             1 ]; ok := ok and stri = "";
 6573     stri := "" [             2 len            15 ]; ok := ok and stri = "";
 6574     stri := "" [             2 len  integer.last ]; ok := ok and stri = "";
 6575 
 6576     stri := "" [            15 len             0 ]; ok := ok and stri = "";
 6577     stri := "" [            15 len             1 ]; ok := ok and stri = "";
 6578     stri := "" [            15 len             2 ]; ok := ok and stri = "";
 6579     stri := "" [            15 len            20 ]; ok := ok and stri = "";
 6580     stri := "" [            15 len  integer.last ]; ok := ok and stri = "";
 6581 
 6582     stri := "" [  integer.last len             0 ]; ok := ok and stri = "";
 6583     stri := "" [  integer.last len             1 ]; ok := ok and stri = "";
 6584     stri := "" [  integer.last len             2 ]; ok := ok and stri = "";
 6585     stri := "" [  integer.last len            20 ]; ok := ok and stri = "";
 6586     stri := "" [  integer.last len  integer.last ]; ok := ok and stri = "";
 6587 
 6588     stri := "1" [             1 len             0 ]; ok := ok and stri = "";
 6589     stri := "1" [             1 len             1 ]; ok := ok and stri = "1";
 6590     stri := "1" [             1 len             2 ]; ok := ok and stri = "1";
 6591     stri := "1" [             1 len            15 ]; ok := ok and stri = "1";
 6592     stri := "1" [             1 len  integer.last ]; ok := ok and stri = "1";
 6593 
 6594     stri := "1" [             2 len             0 ]; ok := ok and stri = "";
 6595     stri := "1" [             2 len             1 ]; ok := ok and stri = "";
 6596     stri := "1" [             2 len             2 ]; ok := ok and stri = "";
 6597     stri := "1" [             2 len            15 ]; ok := ok and stri = "";
 6598     stri := "1" [             2 len  integer.last ]; ok := ok and stri = "";
 6599 
 6600     stri := "1" [            15 len             0 ]; ok := ok and stri = "";
 6601     stri := "1" [            15 len             1 ]; ok := ok and stri = "";
 6602     stri := "1" [            15 len             2 ]; ok := ok and stri = "";
 6603     stri := "1" [            15 len            20 ]; ok := ok and stri = "";
 6604     stri := "1" [            15 len  integer.last ]; ok := ok and stri = "";
 6605 
 6606     stri := "1" [  integer.last len             0 ]; ok := ok and stri = "";
 6607     stri := "1" [  integer.last len             1 ]; ok := ok and stri = "";
 6608     stri := "1" [  integer.last len             2 ]; ok := ok and stri = "";
 6609     stri := "1" [  integer.last len            20 ]; ok := ok and stri = "";
 6610     stri := "1" [  integer.last len  integer.last ]; ok := ok and stri = "";
 6611 
 6612     stri := "1234567890" [             1 len             0 ]; ok := ok and stri = "";
 6613     stri := "1234567890" [             1 len             1 ]; ok := ok and stri = "1";
 6614     stri := "1234567890" [             1 len             2 ]; ok := ok and stri = "12";
 6615     stri := "1234567890" [             1 len             5 ]; ok := ok and stri = "12345";
 6616     stri := "1234567890" [             1 len             9 ]; ok := ok and stri = "123456789";
 6617     stri := "1234567890" [             1 len            10 ]; ok := ok and stri = "1234567890";
 6618     stri := "1234567890" [             1 len            11 ]; ok := ok and stri = "1234567890";
 6619     stri := "1234567890" [             1 len            15 ]; ok := ok and stri = "1234567890";
 6620     stri := "1234567890" [             1 len  integer.last ]; ok := ok and stri = "1234567890";
 6621 
 6622     stri := "1234567890" [             2 len             0 ]; ok := ok and stri = "";
 6623     stri := "1234567890" [             2 len             1 ]; ok := ok and stri = "2";
 6624     stri := "1234567890" [             2 len             2 ]; ok := ok and stri = "23";
 6625     stri := "1234567890" [             2 len             5 ]; ok := ok and stri = "23456";
 6626     stri := "1234567890" [             2 len             8 ]; ok := ok and stri = "23456789";
 6627     stri := "1234567890" [             2 len             9 ]; ok := ok and stri = "234567890";
 6628     stri := "1234567890" [             2 len            10 ]; ok := ok and stri = "234567890";
 6629     stri := "1234567890" [             2 len            15 ]; ok := ok and stri = "234567890";
 6630     stri := "1234567890" [             2 len  integer.last ]; ok := ok and stri = "234567890";
 6631 
 6632     stri := "1234567890" [             5 len             0 ]; ok := ok and stri = "";
 6633     stri := "1234567890" [             5 len             1 ]; ok := ok and stri = "5";
 6634     stri := "1234567890" [             5 len             2 ]; ok := ok and stri = "56";
 6635     stri := "1234567890" [             5 len             5 ]; ok := ok and stri = "56789";
 6636     stri := "1234567890" [             5 len             6 ]; ok := ok and stri = "567890";
 6637     stri := "1234567890" [             5 len             7 ]; ok := ok and stri = "567890";
 6638     stri := "1234567890" [             5 len            15 ]; ok := ok and stri = "567890";
 6639     stri := "1234567890" [             5 len  integer.last ]; ok := ok and stri = "567890";
 6640 
 6641     stri := "1234567890" [             9 len             0 ]; ok := ok and stri = "";
 6642     stri := "1234567890" [             9 len             1 ]; ok := ok and stri = "9";
 6643     stri := "1234567890" [             9 len             2 ]; ok := ok and stri = "90";
 6644     stri := "1234567890" [             9 len             3 ]; ok := ok and stri = "90";
 6645     stri := "1234567890" [             9 len            15 ]; ok := ok and stri = "90";
 6646     stri := "1234567890" [             9 len  integer.last ]; ok := ok and stri = "90";
 6647 
 6648     stri := "1234567890" [            10 len             0 ]; ok := ok and stri = "";
 6649     stri := "1234567890" [            10 len             1 ]; ok := ok and stri = "0";
 6650     stri := "1234567890" [            10 len             2 ]; ok := ok and stri = "0";
 6651     stri := "1234567890" [            10 len            15 ]; ok := ok and stri = "0";
 6652     stri := "1234567890" [            10 len  integer.last ]; ok := ok and stri = "0";
 6653 
 6654     stri := "1234567890" [            11 len             0 ]; ok := ok and stri = "";
 6655     stri := "1234567890" [            11 len             1 ]; ok := ok and stri = "";
 6656     stri := "1234567890" [            11 len             2 ]; ok := ok and stri = "";
 6657     stri := "1234567890" [            11 len            15 ]; ok := ok and stri = "";
 6658     stri := "1234567890" [            11 len  integer.last ]; ok := ok and stri = "";
 6659 
 6660     stri := "1234567890" [            15 len             0 ]; ok := ok and stri = "";
 6661     stri := "1234567890" [            15 len             1 ]; ok := ok and stri = "";
 6662     stri := "1234567890" [            15 len             2 ]; ok := ok and stri = "";
 6663     stri := "1234567890" [            15 len            20 ]; ok := ok and stri = "";
 6664     stri := "1234567890" [            15 len  integer.last ]; ok := ok and stri = "";
 6665 
 6666     stri := "1234567890" [  integer.last len             0 ]; ok := ok and stri = "";
 6667     stri := "1234567890" [  integer.last len             1 ]; ok := ok and stri = "";
 6668     stri := "1234567890" [  integer.last len             2 ]; ok := ok and stri = "";
 6669     stri := "1234567890" [  integer.last len            20 ]; ok := ok and stri = "";
 6670     stri := "1234567890" [  integer.last len  integer.last ]; ok := ok and stri = "";
 6671     if not ok then
 6672       writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (1)");
 6673       okay := FALSE;
 6674     end if;
 6675 
 6676     ok := TRUE;
 6677     stri := "" [             1 len intExpr(            0) ]; ok := ok and stri = "";
 6678     stri := "" [             1 len intExpr(            1) ]; ok := ok and stri = "";
 6679     stri := "" [             1 len intExpr(            2) ]; ok := ok and stri = "";
 6680     stri := "" [             1 len intExpr(           15) ]; ok := ok and stri = "";
 6681     stri := "" [             1 len intExpr( integer.last) ]; ok := ok and stri = "";
 6682 
 6683     stri := "" [             2 len intExpr(            0) ]; ok := ok and stri = "";
 6684     stri := "" [             2 len intExpr(            1) ]; ok := ok and stri = "";
 6685     stri := "" [             2 len intExpr(           15) ]; ok := ok and stri = "";
 6686     stri := "" [             2 len intExpr( integer.last) ]; ok := ok and stri = "";
 6687 
 6688     stri := "" [            15 len intExpr(            0) ]; ok := ok and stri = "";
 6689     stri := "" [            15 len intExpr(            1) ]; ok := ok and stri = "";
 6690     stri := "" [            15 len intExpr(            2) ]; ok := ok and stri = "";
 6691     stri := "" [            15 len intExpr(           20) ]; ok := ok and stri = "";
 6692     stri := "" [            15 len intExpr( integer.last) ]; ok := ok and stri = "";
 6693 
 6694     stri := "" [  integer.last len intExpr(            0) ]; ok := ok and stri = "";
 6695     stri := "" [  integer.last len intExpr(            1) ]; ok := ok and stri = "";
 6696     stri := "" [  integer.last len intExpr(            2) ]; ok := ok and stri = "";
 6697     stri := "" [  integer.last len intExpr(           20) ]; ok := ok and stri = "";
 6698     stri := "" [  integer.last len intExpr( integer.last) ]; ok := ok and stri = "";
 6699 
 6700     stri := "1" [             1 len intExpr(            0) ]; ok := ok and stri = "";
 6701     stri := "1" [             1 len intExpr(            1) ]; ok := ok and stri = "1";
 6702     stri := "1" [             1 len intExpr(            2) ]; ok := ok and stri = "1";
 6703     stri := "1" [             1 len intExpr(           15) ]; ok := ok and stri = "1";
 6704     stri := "1" [             1 len intExpr( integer.last) ]; ok := ok and stri = "1";
 6705 
 6706     stri := "1" [             2 len intExpr(            0) ]; ok := ok and stri = "";
 6707     stri := "1" [             2 len intExpr(            1) ]; ok := ok and stri = "";
 6708     stri := "1" [             2 len intExpr(            2) ]; ok := ok and stri = "";
 6709     stri := "1" [             2 len intExpr(           15) ]; ok := ok and stri = "";
 6710     stri := "1" [             2 len intExpr( integer.last) ]; ok := ok and stri = "";
 6711 
 6712     stri := "1" [            15 len intExpr(            0) ]; ok := ok and stri = "";
 6713     stri := "1" [            15 len intExpr(            1) ]; ok := ok and stri = "";
 6714     stri := "1" [            15 len intExpr(            2) ]; ok := ok and stri = "";
 6715     stri := "1" [            15 len intExpr(           20) ]; ok := ok and stri = "";
 6716     stri := "1" [            15 len intExpr( integer.last) ]; ok := ok and stri = "";
 6717 
 6718     stri := "1" [  integer.last len intExpr(            0) ]; ok := ok and stri = "";
 6719     stri := "1" [  integer.last len intExpr(            1) ]; ok := ok and stri = "";
 6720     stri := "1" [  integer.last len intExpr(            2) ]; ok := ok and stri = "";
 6721     stri := "1" [  integer.last len intExpr(           20) ]; ok := ok and stri = "";
 6722     stri := "1" [  integer.last len intExpr( integer.last) ]; ok := ok and stri = "";
 6723 
 6724     stri := "1234567890" [             1 len intExpr(            0) ]; ok := ok and stri = "";
 6725     stri := "1234567890" [             1 len intExpr(            1) ]; ok := ok and stri = "1";
 6726     stri := "1234567890" [             1 len intExpr(            2) ]; ok := ok and stri = "12";
 6727     stri := "1234567890" [             1 len intExpr(            5) ]; ok := ok and stri = "12345";
 6728     stri := "1234567890" [             1 len intExpr(            9) ]; ok := ok and stri = "123456789";
 6729     stri := "1234567890" [             1 len intExpr(           10) ]; ok := ok and stri = "1234567890";
 6730     stri := "1234567890" [             1 len intExpr(           11) ]; ok := ok and stri = "1234567890";
 6731     stri := "1234567890" [             1 len intExpr(           15) ]; ok := ok and stri = "1234567890";
 6732     stri := "1234567890" [             1 len intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 6733 
 6734     stri := "1234567890" [             2 len intExpr(            0) ]; ok := ok and stri = "";
 6735     stri := "1234567890" [             2 len intExpr(            1) ]; ok := ok and stri = "2";
 6736     stri := "1234567890" [             2 len intExpr(            2) ]; ok := ok and stri = "23";
 6737     stri := "1234567890" [             2 len intExpr(            5) ]; ok := ok and stri = "23456";
 6738     stri := "1234567890" [             2 len intExpr(            8) ]; ok := ok and stri = "23456789";
 6739     stri := "1234567890" [             2 len intExpr(            9) ]; ok := ok and stri = "234567890";
 6740     stri := "1234567890" [             2 len intExpr(           10) ]; ok := ok and stri = "234567890";
 6741     stri := "1234567890" [             2 len intExpr(           15) ]; ok := ok and stri = "234567890";
 6742     stri := "1234567890" [             2 len intExpr( integer.last) ]; ok := ok and stri = "234567890";
 6743 
 6744     stri := "1234567890" [             5 len intExpr(            0) ]; ok := ok and stri = "";
 6745     stri := "1234567890" [             5 len intExpr(            1) ]; ok := ok and stri = "5";
 6746     stri := "1234567890" [             5 len intExpr(            2) ]; ok := ok and stri = "56";
 6747     stri := "1234567890" [             5 len intExpr(            5) ]; ok := ok and stri = "56789";
 6748     stri := "1234567890" [             5 len intExpr(            6) ]; ok := ok and stri = "567890";
 6749     stri := "1234567890" [             5 len intExpr(            7) ]; ok := ok and stri = "567890";
 6750     stri := "1234567890" [             5 len intExpr(           15) ]; ok := ok and stri = "567890";
 6751     stri := "1234567890" [             5 len intExpr( integer.last) ]; ok := ok and stri = "567890";
 6752 
 6753     stri := "1234567890" [             9 len intExpr(            0) ]; ok := ok and stri = "";
 6754     stri := "1234567890" [             9 len intExpr(            1) ]; ok := ok and stri = "9";
 6755     stri := "1234567890" [             9 len intExpr(            2) ]; ok := ok and stri = "90";
 6756     stri := "1234567890" [             9 len intExpr(            3) ]; ok := ok and stri = "90";
 6757     stri := "1234567890" [             9 len intExpr(           15) ]; ok := ok and stri = "90";
 6758     stri := "1234567890" [             9 len intExpr( integer.last) ]; ok := ok and stri = "90";
 6759 
 6760     stri := "1234567890" [            10 len intExpr(            0) ]; ok := ok and stri = "";
 6761     stri := "1234567890" [            10 len intExpr(            1) ]; ok := ok and stri = "0";
 6762     stri := "1234567890" [            10 len intExpr(            2) ]; ok := ok and stri = "0";
 6763     stri := "1234567890" [            10 len intExpr(           15) ]; ok := ok and stri = "0";
 6764     stri := "1234567890" [            10 len intExpr( integer.last) ]; ok := ok and stri = "0";
 6765 
 6766     stri := "1234567890" [            11 len intExpr(            0) ]; ok := ok and stri = "";
 6767     stri := "1234567890" [            11 len intExpr(            1) ]; ok := ok and stri = "";
 6768     stri := "1234567890" [            11 len intExpr(            2) ]; ok := ok and stri = "";
 6769     stri := "1234567890" [            11 len intExpr(           15) ]; ok := ok and stri = "";
 6770     stri := "1234567890" [            11 len intExpr( integer.last) ]; ok := ok and stri = "";
 6771 
 6772     stri := "1234567890" [            15 len intExpr(            0) ]; ok := ok and stri = "";
 6773     stri := "1234567890" [            15 len intExpr(            1) ]; ok := ok and stri = "";
 6774     stri := "1234567890" [            15 len intExpr(            2) ]; ok := ok and stri = "";
 6775     stri := "1234567890" [            15 len intExpr(           20) ]; ok := ok and stri = "";
 6776     stri := "1234567890" [            15 len intExpr( integer.last) ]; ok := ok and stri = "";
 6777 
 6778     stri := "1234567890" [  integer.last len intExpr(            0) ]; ok := ok and stri = "";
 6779     stri := "1234567890" [  integer.last len intExpr(            1) ]; ok := ok and stri = "";
 6780     stri := "1234567890" [  integer.last len intExpr(            2) ]; ok := ok and stri = "";
 6781     stri := "1234567890" [  integer.last len intExpr(           20) ]; ok := ok and stri = "";
 6782     stri := "1234567890" [  integer.last len intExpr( integer.last) ]; ok := ok and stri = "";
 6783     if not ok then
 6784       writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (2)");
 6785       okay := FALSE;
 6786     end if;
 6787 
 6788     ok := TRUE;
 6789     stri := "" [ intExpr(            1) len             0 ]; ok := ok and stri = "";
 6790     stri := "" [ intExpr(            1) len             1 ]; ok := ok and stri = "";
 6791     stri := "" [ intExpr(            1) len             2 ]; ok := ok and stri = "";
 6792     stri := "" [ intExpr(            1) len            15 ]; ok := ok and stri = "";
 6793     stri := "" [ intExpr(            1) len  integer.last ]; ok := ok and stri = "";
 6794 
 6795     stri := "" [ intExpr(            2) len             0 ]; ok := ok and stri = "";
 6796     stri := "" [ intExpr(            2) len             1 ]; ok := ok and stri = "";
 6797     stri := "" [ intExpr(            2) len            15 ]; ok := ok and stri = "";
 6798     stri := "" [ intExpr(            2) len  integer.last ]; ok := ok and stri = "";
 6799 
 6800     stri := "" [ intExpr(           15) len             0 ]; ok := ok and stri = "";
 6801     stri := "" [ intExpr(           15) len             1 ]; ok := ok and stri = "";
 6802     stri := "" [ intExpr(           15) len             2 ]; ok := ok and stri = "";
 6803     stri := "" [ intExpr(           15) len            20 ]; ok := ok and stri = "";
 6804     stri := "" [ intExpr(           15) len  integer.last ]; ok := ok and stri = "";
 6805 
 6806     stri := "" [ intExpr( integer.last) len             0 ]; ok := ok and stri = "";
 6807     stri := "" [ intExpr( integer.last) len             1 ]; ok := ok and stri = "";
 6808     stri := "" [ intExpr( integer.last) len             2 ]; ok := ok and stri = "";
 6809     stri := "" [ intExpr( integer.last) len            20 ]; ok := ok and stri = "";
 6810     stri := "" [ intExpr( integer.last) len  integer.last ]; ok := ok and stri = "";
 6811 
 6812     stri := "1" [ intExpr(            1) len             0 ]; ok := ok and stri = "";
 6813     stri := "1" [ intExpr(            1) len             1 ]; ok := ok and stri = "1";
 6814     stri := "1" [ intExpr(            1) len             2 ]; ok := ok and stri = "1";
 6815     stri := "1" [ intExpr(            1) len            15 ]; ok := ok and stri = "1";
 6816     stri := "1" [ intExpr(            1) len  integer.last ]; ok := ok and stri = "1";
 6817 
 6818     stri := "1" [ intExpr(            2) len             0 ]; ok := ok and stri = "";
 6819     stri := "1" [ intExpr(            2) len             1 ]; ok := ok and stri = "";
 6820     stri := "1" [ intExpr(            2) len             2 ]; ok := ok and stri = "";
 6821     stri := "1" [ intExpr(            2) len            15 ]; ok := ok and stri = "";
 6822     stri := "1" [ intExpr(            2) len  integer.last ]; ok := ok and stri = "";
 6823 
 6824     stri := "1" [ intExpr(           15) len             0 ]; ok := ok and stri = "";
 6825     stri := "1" [ intExpr(           15) len             1 ]; ok := ok and stri = "";
 6826     stri := "1" [ intExpr(           15) len             2 ]; ok := ok and stri = "";
 6827     stri := "1" [ intExpr(           15) len            20 ]; ok := ok and stri = "";
 6828     stri := "1" [ intExpr(           15) len  integer.last ]; ok := ok and stri = "";
 6829 
 6830     stri := "1" [ intExpr( integer.last) len             0 ]; ok := ok and stri = "";
 6831     stri := "1" [ intExpr( integer.last) len             1 ]; ok := ok and stri = "";
 6832     stri := "1" [ intExpr( integer.last) len             2 ]; ok := ok and stri = "";
 6833     stri := "1" [ intExpr( integer.last) len            20 ]; ok := ok and stri = "";
 6834     stri := "1" [ intExpr( integer.last) len  integer.last ]; ok := ok and stri = "";
 6835 
 6836     stri := "1234567890" [ intExpr(            1) len             0 ]; ok := ok and stri = "";
 6837     stri := "1234567890" [ intExpr(            1) len             1 ]; ok := ok and stri = "1";
 6838     stri := "1234567890" [ intExpr(            1) len             2 ]; ok := ok and stri = "12";
 6839     stri := "1234567890" [ intExpr(            1) len             5 ]; ok := ok and stri = "12345";
 6840     stri := "1234567890" [ intExpr(            1) len             9 ]; ok := ok and stri = "123456789";
 6841     stri := "1234567890" [ intExpr(            1) len            10 ]; ok := ok and stri = "1234567890";
 6842     stri := "1234567890" [ intExpr(            1) len            11 ]; ok := ok and stri = "1234567890";
 6843     stri := "1234567890" [ intExpr(            1) len            15 ]; ok := ok and stri = "1234567890";
 6844     stri := "1234567890" [ intExpr(            1) len  integer.last ]; ok := ok and stri = "1234567890";
 6845 
 6846     stri := "1234567890" [ intExpr(            2) len             0 ]; ok := ok and stri = "";
 6847     stri := "1234567890" [ intExpr(            2) len             1 ]; ok := ok and stri = "2";
 6848     stri := "1234567890" [ intExpr(            2) len             2 ]; ok := ok and stri = "23";
 6849     stri := "1234567890" [ intExpr(            2) len             5 ]; ok := ok and stri = "23456";
 6850     stri := "1234567890" [ intExpr(            2) len             8 ]; ok := ok and stri = "23456789";
 6851     stri := "1234567890" [ intExpr(            2) len             9 ]; ok := ok and stri = "234567890";
 6852     stri := "1234567890" [ intExpr(            2) len            10 ]; ok := ok and stri = "234567890";
 6853     stri := "1234567890" [ intExpr(            2) len            15 ]; ok := ok and stri = "234567890";
 6854     stri := "1234567890" [ intExpr(            2) len  integer.last ]; ok := ok and stri = "234567890";
 6855 
 6856     stri := "1234567890" [ intExpr(            5) len             0 ]; ok := ok and stri = "";
 6857     stri := "1234567890" [ intExpr(            5) len             1 ]; ok := ok and stri = "5";
 6858     stri := "1234567890" [ intExpr(            5) len             2 ]; ok := ok and stri = "56";
 6859     stri := "1234567890" [ intExpr(            5) len             5 ]; ok := ok and stri = "56789";
 6860     stri := "1234567890" [ intExpr(            5) len             6 ]; ok := ok and stri = "567890";
 6861     stri := "1234567890" [ intExpr(            5) len             7 ]; ok := ok and stri = "567890";
 6862     stri := "1234567890" [ intExpr(            5) len            15 ]; ok := ok and stri = "567890";
 6863     stri := "1234567890" [ intExpr(            5) len  integer.last ]; ok := ok and stri = "567890";
 6864 
 6865     stri := "1234567890" [ intExpr(            9) len             0 ]; ok := ok and stri = "";
 6866     stri := "1234567890" [ intExpr(            9) len             1 ]; ok := ok and stri = "9";
 6867     stri := "1234567890" [ intExpr(            9) len             2 ]; ok := ok and stri = "90";
 6868     stri := "1234567890" [ intExpr(            9) len             3 ]; ok := ok and stri = "90";
 6869     stri := "1234567890" [ intExpr(            9) len            15 ]; ok := ok and stri = "90";
 6870     stri := "1234567890" [ intExpr(            9) len  integer.last ]; ok := ok and stri = "90";
 6871 
 6872     stri := "1234567890" [ intExpr(           10) len             0 ]; ok := ok and stri = "";
 6873     stri := "1234567890" [ intExpr(           10) len             1 ]; ok := ok and stri = "0";
 6874     stri := "1234567890" [ intExpr(           10) len             2 ]; ok := ok and stri = "0";
 6875     stri := "1234567890" [ intExpr(           10) len            15 ]; ok := ok and stri = "0";
 6876     stri := "1234567890" [ intExpr(           10) len  integer.last ]; ok := ok and stri = "0";
 6877 
 6878     stri := "1234567890" [ intExpr(           11) len             0 ]; ok := ok and stri = "";
 6879     stri := "1234567890" [ intExpr(           11) len             1 ]; ok := ok and stri = "";
 6880     stri := "1234567890" [ intExpr(           11) len             2 ]; ok := ok and stri = "";
 6881     stri := "1234567890" [ intExpr(           11) len            15 ]; ok := ok and stri = "";
 6882     stri := "1234567890" [ intExpr(           11) len  integer.last ]; ok := ok and stri = "";
 6883 
 6884     stri := "1234567890" [ intExpr(           15) len             0 ]; ok := ok and stri = "";
 6885     stri := "1234567890" [ intExpr(           15) len             1 ]; ok := ok and stri = "";
 6886     stri := "1234567890" [ intExpr(           15) len             2 ]; ok := ok and stri = "";
 6887     stri := "1234567890" [ intExpr(           15) len            20 ]; ok := ok and stri = "";
 6888     stri := "1234567890" [ intExpr(           15) len  integer.last ]; ok := ok and stri = "";
 6889 
 6890     stri := "1234567890" [ intExpr( integer.last) len             0 ]; ok := ok and stri = "";
 6891     stri := "1234567890" [ intExpr( integer.last) len             1 ]; ok := ok and stri = "";
 6892     stri := "1234567890" [ intExpr( integer.last) len             2 ]; ok := ok and stri = "";
 6893     stri := "1234567890" [ intExpr( integer.last) len            20 ]; ok := ok and stri = "";
 6894     stri := "1234567890" [ intExpr( integer.last) len  integer.last ]; ok := ok and stri = "";
 6895     if not ok then
 6896       writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (3)");
 6897       okay := FALSE;
 6898     end if;
 6899 
 6900     ok := TRUE;
 6901     stri := "" [ intExpr(            1) len intExpr(            0) ]; ok := ok and stri = "";
 6902     stri := "" [ intExpr(            1) len intExpr(            1) ]; ok := ok and stri = "";
 6903     stri := "" [ intExpr(            1) len intExpr(            2) ]; ok := ok and stri = "";
 6904     stri := "" [ intExpr(            1) len intExpr(           15) ]; ok := ok and stri = "";
 6905     stri := "" [ intExpr(            1) len intExpr( integer.last) ]; ok := ok and stri = "";
 6906 
 6907     stri := "" [ intExpr(            2) len intExpr(            0) ]; ok := ok and stri = "";
 6908     stri := "" [ intExpr(            2) len intExpr(            1) ]; ok := ok and stri = "";
 6909     stri := "" [ intExpr(            2) len intExpr(           15) ]; ok := ok and stri = "";
 6910     stri := "" [ intExpr(            2) len intExpr( integer.last) ]; ok := ok and stri = "";
 6911 
 6912     stri := "" [ intExpr(           15) len intExpr(            0) ]; ok := ok and stri = "";
 6913     stri := "" [ intExpr(           15) len intExpr(            1) ]; ok := ok and stri = "";
 6914     stri := "" [ intExpr(           15) len intExpr(            2) ]; ok := ok and stri = "";
 6915     stri := "" [ intExpr(           15) len intExpr(           20) ]; ok := ok and stri = "";
 6916     stri := "" [ intExpr(           15) len intExpr( integer.last) ]; ok := ok and stri = "";
 6917 
 6918     stri := "" [ intExpr( integer.last) len intExpr(            0) ]; ok := ok and stri = "";
 6919     stri := "" [ intExpr( integer.last) len intExpr(            1) ]; ok := ok and stri = "";
 6920     stri := "" [ intExpr( integer.last) len intExpr(            2) ]; ok := ok and stri = "";
 6921     stri := "" [ intExpr( integer.last) len intExpr(           20) ]; ok := ok and stri = "";
 6922     stri := "" [ intExpr( integer.last) len intExpr( integer.last) ]; ok := ok and stri = "";
 6923 
 6924     stri := "1" [ intExpr(            1) len intExpr(            0) ]; ok := ok and stri = "";
 6925     stri := "1" [ intExpr(            1) len intExpr(            1) ]; ok := ok and stri = "1";
 6926     stri := "1" [ intExpr(            1) len intExpr(            2) ]; ok := ok and stri = "1";
 6927     stri := "1" [ intExpr(            1) len intExpr(           15) ]; ok := ok and stri = "1";
 6928     stri := "1" [ intExpr(            1) len intExpr( integer.last) ]; ok := ok and stri = "1";
 6929 
 6930     stri := "1" [ intExpr(            2) len intExpr(            0) ]; ok := ok and stri = "";
 6931     stri := "1" [ intExpr(            2) len intExpr(            1) ]; ok := ok and stri = "";
 6932     stri := "1" [ intExpr(            2) len intExpr(            2) ]; ok := ok and stri = "";
 6933     stri := "1" [ intExpr(            2) len intExpr(           15) ]; ok := ok and stri = "";
 6934     stri := "1" [ intExpr(            2) len intExpr( integer.last) ]; ok := ok and stri = "";
 6935 
 6936     stri := "1" [ intExpr(           15) len intExpr(            0) ]; ok := ok and stri = "";
 6937     stri := "1" [ intExpr(           15) len intExpr(            1) ]; ok := ok and stri = "";
 6938     stri := "1" [ intExpr(           15) len intExpr(            2) ]; ok := ok and stri = "";
 6939     stri := "1" [ intExpr(           15) len intExpr(           20) ]; ok := ok and stri = "";
 6940     stri := "1" [ intExpr(           15) len intExpr( integer.last) ]; ok := ok and stri = "";
 6941 
 6942     stri := "1" [ intExpr( integer.last) len intExpr(            0) ]; ok := ok and stri = "";
 6943     stri := "1" [ intExpr( integer.last) len intExpr(            1) ]; ok := ok and stri = "";
 6944     stri := "1" [ intExpr( integer.last) len intExpr(            2) ]; ok := ok and stri = "";
 6945     stri := "1" [ intExpr( integer.last) len intExpr(           20) ]; ok := ok and stri = "";
 6946     stri := "1" [ intExpr( integer.last) len intExpr( integer.last) ]; ok := ok and stri = "";
 6947 
 6948     stri := "1234567890" [ intExpr(            1) len intExpr(            0) ]; ok := ok and stri = "";
 6949     stri := "1234567890" [ intExpr(            1) len intExpr(            1) ]; ok := ok and stri = "1";
 6950     stri := "1234567890" [ intExpr(            1) len intExpr(            2) ]; ok := ok and stri = "12";
 6951     stri := "1234567890" [ intExpr(            1) len intExpr(            5) ]; ok := ok and stri = "12345";
 6952     stri := "1234567890" [ intExpr(            1) len intExpr(            9) ]; ok := ok and stri = "123456789";
 6953     stri := "1234567890" [ intExpr(            1) len intExpr(           10) ]; ok := ok and stri = "1234567890";
 6954     stri := "1234567890" [ intExpr(            1) len intExpr(           11) ]; ok := ok and stri = "1234567890";
 6955     stri := "1234567890" [ intExpr(            1) len intExpr(           15) ]; ok := ok and stri = "1234567890";
 6956     stri := "1234567890" [ intExpr(            1) len intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 6957 
 6958     stri := "1234567890" [ intExpr(            2) len intExpr(            0) ]; ok := ok and stri = "";
 6959     stri := "1234567890" [ intExpr(            2) len intExpr(            1) ]; ok := ok and stri = "2";
 6960     stri := "1234567890" [ intExpr(            2) len intExpr(            2) ]; ok := ok and stri = "23";
 6961     stri := "1234567890" [ intExpr(            2) len intExpr(            5) ]; ok := ok and stri = "23456";
 6962     stri := "1234567890" [ intExpr(            2) len intExpr(            8) ]; ok := ok and stri = "23456789";
 6963     stri := "1234567890" [ intExpr(            2) len intExpr(            9) ]; ok := ok and stri = "234567890";
 6964     stri := "1234567890" [ intExpr(            2) len intExpr(           10) ]; ok := ok and stri = "234567890";
 6965     stri := "1234567890" [ intExpr(            2) len intExpr(           15) ]; ok := ok and stri = "234567890";
 6966     stri := "1234567890" [ intExpr(            2) len intExpr( integer.last) ]; ok := ok and stri = "234567890";
 6967 
 6968     stri := "1234567890" [ intExpr(            5) len intExpr(            0) ]; ok := ok and stri = "";
 6969     stri := "1234567890" [ intExpr(            5) len intExpr(            1) ]; ok := ok and stri = "5";
 6970     stri := "1234567890" [ intExpr(            5) len intExpr(            2) ]; ok := ok and stri = "56";
 6971     stri := "1234567890" [ intExpr(            5) len intExpr(            5) ]; ok := ok and stri = "56789";
 6972     stri := "1234567890" [ intExpr(            5) len intExpr(            6) ]; ok := ok and stri = "567890";
 6973     stri := "1234567890" [ intExpr(            5) len intExpr(            7) ]; ok := ok and stri = "567890";
 6974     stri := "1234567890" [ intExpr(            5) len intExpr(           15) ]; ok := ok and stri = "567890";
 6975     stri := "1234567890" [ intExpr(            5) len intExpr( integer.last) ]; ok := ok and stri = "567890";
 6976 
 6977     stri := "1234567890" [ intExpr(            9) len intExpr(            0) ]; ok := ok and stri = "";
 6978     stri := "1234567890" [ intExpr(            9) len intExpr(            1) ]; ok := ok and stri = "9";
 6979     stri := "1234567890" [ intExpr(            9) len intExpr(            2) ]; ok := ok and stri = "90";
 6980     stri := "1234567890" [ intExpr(            9) len intExpr(            3) ]; ok := ok and stri = "90";
 6981     stri := "1234567890" [ intExpr(            9) len intExpr(           15) ]; ok := ok and stri = "90";
 6982     stri := "1234567890" [ intExpr(            9) len intExpr( integer.last) ]; ok := ok and stri = "90";
 6983 
 6984     stri := "1234567890" [ intExpr(           10) len intExpr(            0) ]; ok := ok and stri = "";
 6985     stri := "1234567890" [ intExpr(           10) len intExpr(            1) ]; ok := ok and stri = "0";
 6986     stri := "1234567890" [ intExpr(           10) len intExpr(            2) ]; ok := ok and stri = "0";
 6987     stri := "1234567890" [ intExpr(           10) len intExpr(           15) ]; ok := ok and stri = "0";
 6988     stri := "1234567890" [ intExpr(           10) len intExpr( integer.last) ]; ok := ok and stri = "0";
 6989 
 6990     stri := "1234567890" [ intExpr(           11) len intExpr(            0) ]; ok := ok and stri = "";
 6991     stri := "1234567890" [ intExpr(           11) len intExpr(            1) ]; ok := ok and stri = "";
 6992     stri := "1234567890" [ intExpr(           11) len intExpr(            2) ]; ok := ok and stri = "";
 6993     stri := "1234567890" [ intExpr(           11) len intExpr(           15) ]; ok := ok and stri = "";
 6994     stri := "1234567890" [ intExpr(           11) len intExpr( integer.last) ]; ok := ok and stri = "";
 6995 
 6996     stri := "1234567890" [ intExpr(           15) len intExpr(            0) ]; ok := ok and stri = "";
 6997     stri := "1234567890" [ intExpr(           15) len intExpr(            1) ]; ok := ok and stri = "";
 6998     stri := "1234567890" [ intExpr(           15) len intExpr(            2) ]; ok := ok and stri = "";
 6999     stri := "1234567890" [ intExpr(           15) len intExpr(           20) ]; ok := ok and stri = "";
 7000     stri := "1234567890" [ intExpr(           15) len intExpr( integer.last) ]; ok := ok and stri = "";
 7001 
 7002     stri := "1234567890" [ intExpr( integer.last) len intExpr(            0) ]; ok := ok and stri = "";
 7003     stri := "1234567890" [ intExpr( integer.last) len intExpr(            1) ]; ok := ok and stri = "";
 7004     stri := "1234567890" [ intExpr( integer.last) len intExpr(            2) ]; ok := ok and stri = "";
 7005     stri := "1234567890" [ intExpr( integer.last) len intExpr(           20) ]; ok := ok and stri = "";
 7006     stri := "1234567890" [ intExpr( integer.last) len intExpr( integer.last) ]; ok := ok and stri = "";
 7007     if not ok then
 7008       writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (4)");
 7009       okay := FALSE;
 7010     end if;
 7011   end func;
 7012 
 7013 
 7014 const func boolean: check_string_substr_assign_2 is func
 7015   result
 7016     var boolean: okay is TRUE;
 7017   local
 7018     var boolean: ok is TRUE;
 7019     var string: stri is "";
 7020   begin
 7021     stri := striExpr("") [             1 len             0 ]; ok := ok and stri = "";
 7022     stri := striExpr("") [             1 len             1 ]; ok := ok and stri = "";
 7023     stri := striExpr("") [             1 len             2 ]; ok := ok and stri = "";
 7024     stri := striExpr("") [             1 len            15 ]; ok := ok and stri = "";
 7025     stri := striExpr("") [             1 len  integer.last ]; ok := ok and stri = "";
 7026 
 7027     stri := striExpr("") [             2 len             0 ]; ok := ok and stri = "";
 7028     stri := striExpr("") [             2 len             1 ]; ok := ok and stri = "";
 7029     stri := striExpr("") [             2 len            15 ]; ok := ok and stri = "";
 7030     stri := striExpr("") [             2 len  integer.last ]; ok := ok and stri = "";
 7031 
 7032     stri := striExpr("") [            15 len             0 ]; ok := ok and stri = "";
 7033     stri := striExpr("") [            15 len             1 ]; ok := ok and stri = "";
 7034     stri := striExpr("") [            15 len             2 ]; ok := ok and stri = "";
 7035     stri := striExpr("") [            15 len            20 ]; ok := ok and stri = "";
 7036     stri := striExpr("") [            15 len  integer.last ]; ok := ok and stri = "";
 7037 
 7038     stri := striExpr("") [  integer.last len             0 ]; ok := ok and stri = "";
 7039     stri := striExpr("") [  integer.last len             1 ]; ok := ok and stri = "";
 7040     stri := striExpr("") [  integer.last len             2 ]; ok := ok and stri = "";
 7041     stri := striExpr("") [  integer.last len            20 ]; ok := ok and stri = "";
 7042     stri := striExpr("") [  integer.last len  integer.last ]; ok := ok and stri = "";
 7043 
 7044     stri := striExpr("1") [             1 len             0 ]; ok := ok and stri = "";
 7045     stri := striExpr("1") [             1 len             1 ]; ok := ok and stri = "1";
 7046     stri := striExpr("1") [             1 len             2 ]; ok := ok and stri = "1";
 7047     stri := striExpr("1") [             1 len            15 ]; ok := ok and stri = "1";
 7048     stri := striExpr("1") [             1 len  integer.last ]; ok := ok and stri = "1";
 7049 
 7050     stri := striExpr("1") [             2 len             0 ]; ok := ok and stri = "";
 7051     stri := striExpr("1") [             2 len             1 ]; ok := ok and stri = "";
 7052     stri := striExpr("1") [             2 len             2 ]; ok := ok and stri = "";
 7053     stri := striExpr("1") [             2 len            15 ]; ok := ok and stri = "";
 7054     stri := striExpr("1") [             2 len  integer.last ]; ok := ok and stri = "";
 7055 
 7056     stri := striExpr("1") [            15 len             0 ]; ok := ok and stri = "";
 7057     stri := striExpr("1") [            15 len             1 ]; ok := ok and stri = "";
 7058     stri := striExpr("1") [            15 len             2 ]; ok := ok and stri = "";
 7059     stri := striExpr("1") [            15 len            20 ]; ok := ok and stri = "";
 7060     stri := striExpr("1") [            15 len  integer.last ]; ok := ok and stri = "";
 7061 
 7062     stri := striExpr("1") [  integer.last len             0 ]; ok := ok and stri = "";
 7063     stri := striExpr("1") [  integer.last len             1 ]; ok := ok and stri = "";
 7064     stri := striExpr("1") [  integer.last len             2 ]; ok := ok and stri = "";
 7065     stri := striExpr("1") [  integer.last len            20 ]; ok := ok and stri = "";
 7066     stri := striExpr("1") [  integer.last len  integer.last ]; ok := ok and stri = "";
 7067 
 7068     stri := striExpr("1234567890") [             1 len             0 ]; ok := ok and stri = "";
 7069     stri := striExpr("1234567890") [             1 len             1 ]; ok := ok and stri = "1";
 7070     stri := striExpr("1234567890") [             1 len             2 ]; ok := ok and stri = "12";
 7071     stri := striExpr("1234567890") [             1 len             5 ]; ok := ok and stri = "12345";
 7072     stri := striExpr("1234567890") [             1 len             9 ]; ok := ok and stri = "123456789";
 7073     stri := striExpr("1234567890") [             1 len            10 ]; ok := ok and stri = "1234567890";
 7074     stri := striExpr("1234567890") [             1 len            11 ]; ok := ok and stri = "1234567890";
 7075     stri := striExpr("1234567890") [             1 len            15 ]; ok := ok and stri = "1234567890";
 7076     stri := striExpr("1234567890") [             1 len  integer.last ]; ok := ok and stri = "1234567890";
 7077 
 7078     stri := striExpr("1234567890") [             2 len             0 ]; ok := ok and stri = "";
 7079     stri := striExpr("1234567890") [             2 len             1 ]; ok := ok and stri = "2";
 7080     stri := striExpr("1234567890") [             2 len             2 ]; ok := ok and stri = "23";
 7081     stri := striExpr("1234567890") [             2 len             5 ]; ok := ok and stri = "23456";
 7082     stri := striExpr("1234567890") [             2 len             8 ]; ok := ok and stri = "23456789";
 7083     stri := striExpr("1234567890") [             2 len             9 ]; ok := ok and stri = "234567890";
 7084     stri := striExpr("1234567890") [             2 len            10 ]; ok := ok and stri = "234567890";
 7085     stri := striExpr("1234567890") [             2 len            15 ]; ok := ok and stri = "234567890";
 7086     stri := striExpr("1234567890") [             2 len  integer.last ]; ok := ok and stri = "234567890";
 7087 
 7088     stri := striExpr("1234567890") [             5 len             0 ]; ok := ok and stri = "";
 7089     stri := striExpr("1234567890") [             5 len             1 ]; ok := ok and stri = "5";
 7090     stri := striExpr("1234567890") [             5 len             2 ]; ok := ok and stri = "56";
 7091     stri := striExpr("1234567890") [             5 len             5 ]; ok := ok and stri = "56789";
 7092     stri := striExpr("1234567890") [             5 len             6 ]; ok := ok and stri = "567890";
 7093     stri := striExpr("1234567890") [             5 len             7 ]; ok := ok and stri = "567890";
 7094     stri := striExpr("1234567890") [             5 len            15 ]; ok := ok and stri = "567890";
 7095     stri := striExpr("1234567890") [             5 len  integer.last ]; ok := ok and stri = "567890";
 7096 
 7097     stri := striExpr("1234567890") [             9 len             0 ]; ok := ok and stri = "";
 7098     stri := striExpr("1234567890") [             9 len             1 ]; ok := ok and stri = "9";
 7099     stri := striExpr("1234567890") [             9 len             2 ]; ok := ok and stri = "90";
 7100     stri := striExpr("1234567890") [             9 len             3 ]; ok := ok and stri = "90";
 7101     stri := striExpr("1234567890") [             9 len            15 ]; ok := ok and stri = "90";
 7102     stri := striExpr("1234567890") [             9 len  integer.last ]; ok := ok and stri = "90";
 7103 
 7104     stri := striExpr("1234567890") [            10 len             0 ]; ok := ok and stri = "";
 7105     stri := striExpr("1234567890") [            10 len             1 ]; ok := ok and stri = "0";
 7106     stri := striExpr("1234567890") [            10 len             2 ]; ok := ok and stri = "0";
 7107     stri := striExpr("1234567890") [            10 len            15 ]; ok := ok and stri = "0";
 7108     stri := striExpr("1234567890") [            10 len  integer.last ]; ok := ok and stri = "0";
 7109 
 7110     stri := striExpr("1234567890") [            11 len             0 ]; ok := ok and stri = "";
 7111     stri := striExpr("1234567890") [            11 len             1 ]; ok := ok and stri = "";
 7112     stri := striExpr("1234567890") [            11 len             2 ]; ok := ok and stri = "";
 7113     stri := striExpr("1234567890") [            11 len            15 ]; ok := ok and stri = "";
 7114     stri := striExpr("1234567890") [            11 len  integer.last ]; ok := ok and stri = "";
 7115 
 7116     stri := striExpr("1234567890") [            15 len             0 ]; ok := ok and stri = "";
 7117     stri := striExpr("1234567890") [            15 len             1 ]; ok := ok and stri = "";
 7118     stri := striExpr("1234567890") [            15 len             2 ]; ok := ok and stri = "";
 7119     stri := striExpr("1234567890") [            15 len            20 ]; ok := ok and stri = "";
 7120     stri := striExpr("1234567890") [            15 len  integer.last ]; ok := ok and stri = "";
 7121 
 7122     stri := striExpr("1234567890") [  integer.last len             0 ]; ok := ok and stri = "";
 7123     stri := striExpr("1234567890") [  integer.last len             1 ]; ok := ok and stri = "";
 7124     stri := striExpr("1234567890") [  integer.last len             2 ]; ok := ok and stri = "";
 7125     stri := striExpr("1234567890") [  integer.last len            20 ]; ok := ok and stri = "";
 7126     stri := striExpr("1234567890") [  integer.last len  integer.last ]; ok := ok and stri = "";
 7127     if not ok then
 7128       writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (5)");
 7129       okay := FALSE;
 7130     end if;
 7131 
 7132     ok := TRUE;
 7133     stri := striExpr("") [             1 len intExpr(            0) ]; ok := ok and stri = "";
 7134     stri := striExpr("") [             1 len intExpr(            1) ]; ok := ok and stri = "";
 7135     stri := striExpr("") [             1 len intExpr(            2) ]; ok := ok and stri = "";
 7136     stri := striExpr("") [             1 len intExpr(           15) ]; ok := ok and stri = "";
 7137     stri := striExpr("") [             1 len intExpr( integer.last) ]; ok := ok and stri = "";
 7138 
 7139     stri := striExpr("") [             2 len intExpr(            0) ]; ok := ok and stri = "";
 7140     stri := striExpr("") [             2 len intExpr(            1) ]; ok := ok and stri = "";
 7141     stri := striExpr("") [             2 len intExpr(           15) ]; ok := ok and stri = "";
 7142     stri := striExpr("") [             2 len intExpr( integer.last) ]; ok := ok and stri = "";
 7143 
 7144     stri := striExpr("") [            15 len intExpr(            0) ]; ok := ok and stri = "";
 7145     stri := striExpr("") [            15 len intExpr(            1) ]; ok := ok and stri = "";
 7146     stri := striExpr("") [            15 len intExpr(            2) ]; ok := ok and stri = "";
 7147     stri := striExpr("") [            15 len intExpr(           20) ]; ok := ok and stri = "";
 7148     stri := striExpr("") [            15 len intExpr( integer.last) ]; ok := ok and stri = "";
 7149 
 7150     stri := striExpr("") [  integer.last len intExpr(            0) ]; ok := ok and stri = "";
 7151     stri := striExpr("") [  integer.last len intExpr(            1) ]; ok := ok and stri = "";
 7152     stri := striExpr("") [  integer.last len intExpr(            2) ]; ok := ok and stri = "";
 7153     stri := striExpr("") [  integer.last len intExpr(           20) ]; ok := ok and stri = "";
 7154     stri := striExpr("") [  integer.last len intExpr( integer.last) ]; ok := ok and stri = "";
 7155 
 7156     stri := striExpr("1") [             1 len intExpr(            0) ]; ok := ok and stri = "";
 7157     stri := striExpr("1") [             1 len intExpr(            1) ]; ok := ok and stri = "1";
 7158     stri := striExpr("1") [             1 len intExpr(            2) ]; ok := ok and stri = "1";
 7159     stri := striExpr("1") [             1 len intExpr(           15) ]; ok := ok and stri = "1";
 7160     stri := striExpr("1") [             1 len intExpr( integer.last) ]; ok := ok and stri = "1";
 7161 
 7162     stri := striExpr("1") [             2 len intExpr(            0) ]; ok := ok and stri = "";
 7163     stri := striExpr("1") [             2 len intExpr(            1) ]; ok := ok and stri = "";
 7164     stri := striExpr("1") [             2 len intExpr(            2) ]; ok := ok and stri = "";
 7165     stri := striExpr("1") [             2 len intExpr(           15) ]; ok := ok and stri = "";
 7166     stri := striExpr("1") [             2 len intExpr( integer.last) ]; ok := ok and stri = "";
 7167 
 7168     stri := striExpr("1") [            15 len intExpr(            0) ]; ok := ok and stri = "";
 7169     stri := striExpr("1") [            15 len intExpr(            1) ]; ok := ok and stri = "";
 7170     stri := striExpr("1") [            15 len intExpr(            2) ]; ok := ok and stri = "";
 7171     stri := striExpr("1") [            15 len intExpr(           20) ]; ok := ok and stri = "";
 7172     stri := striExpr("1") [            15 len intExpr( integer.last) ]; ok := ok and stri = "";
 7173 
 7174     stri := striExpr("1") [  integer.last len intExpr(            0) ]; ok := ok and stri = "";
 7175     stri := striExpr("1") [  integer.last len intExpr(            1) ]; ok := ok and stri = "";
 7176     stri := striExpr("1") [  integer.last len intExpr(            2) ]; ok := ok and stri = "";
 7177     stri := striExpr("1") [  integer.last len intExpr(           20) ]; ok := ok and stri = "";
 7178     stri := striExpr("1") [  integer.last len intExpr( integer.last) ]; ok := ok and stri = "";
 7179 
 7180     stri := striExpr("1234567890") [             1 len intExpr(            0) ]; ok := ok and stri = "";
 7181     stri := striExpr("1234567890") [             1 len intExpr(            1) ]; ok := ok and stri = "1";
 7182     stri := striExpr("1234567890") [             1 len intExpr(            2) ]; ok := ok and stri = "12";
 7183     stri := striExpr("1234567890") [             1 len intExpr(            5) ]; ok := ok and stri = "12345";
 7184     stri := striExpr("1234567890") [             1 len intExpr(            9) ]; ok := ok and stri = "123456789";
 7185     stri := striExpr("1234567890") [             1 len intExpr(           10) ]; ok := ok and stri = "1234567890";
 7186     stri := striExpr("1234567890") [             1 len intExpr(           11) ]; ok := ok and stri = "1234567890";
 7187     stri := striExpr("1234567890") [             1 len intExpr(           15) ]; ok := ok and stri = "1234567890";
 7188     stri := striExpr("1234567890") [             1 len intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 7189 
 7190     stri := striExpr("1234567890") [             2 len intExpr(            0) ]; ok := ok and stri = "";
 7191     stri := striExpr("1234567890") [             2 len intExpr(            1) ]; ok := ok and stri = "2";
 7192     stri := striExpr("1234567890") [             2 len intExpr(            2) ]; ok := ok and stri = "23";
 7193     stri := striExpr("1234567890") [             2 len intExpr(            5) ]; ok := ok and stri = "23456";
 7194     stri := striExpr("1234567890") [             2 len intExpr(            8) ]; ok := ok and stri = "23456789";
 7195     stri := striExpr("1234567890") [             2 len intExpr(            9) ]; ok := ok and stri = "234567890";
 7196     stri := striExpr("1234567890") [             2 len intExpr(           10) ]; ok := ok and stri = "234567890";
 7197     stri := striExpr("1234567890") [             2 len intExpr(           15) ]; ok := ok and stri = "234567890";
 7198     stri := striExpr("1234567890") [             2 len intExpr( integer.last) ]; ok := ok and stri = "234567890";
 7199 
 7200     stri := striExpr("1234567890") [             5 len intExpr(            0) ]; ok := ok and stri = "";
 7201     stri := striExpr("1234567890") [             5 len intExpr(            1) ]; ok := ok and stri = "5";
 7202     stri := striExpr("1234567890") [             5 len intExpr(            2) ]; ok := ok and stri = "56";
 7203     stri := striExpr("1234567890") [             5 len intExpr(            5) ]; ok := ok and stri = "56789";
 7204     stri := striExpr("1234567890") [             5 len intExpr(            6) ]; ok := ok and stri = "567890";
 7205     stri := striExpr("1234567890") [             5 len intExpr(            7) ]; ok := ok and stri = "567890";
 7206     stri := striExpr("1234567890") [             5 len intExpr(           15) ]; ok := ok and stri = "567890";
 7207     stri := striExpr("1234567890") [             5 len intExpr( integer.last) ]; ok := ok and stri = "567890";
 7208 
 7209     stri := striExpr("1234567890") [             9 len intExpr(            0) ]; ok := ok and stri = "";
 7210     stri := striExpr("1234567890") [             9 len intExpr(            1) ]; ok := ok and stri = "9";
 7211     stri := striExpr("1234567890") [             9 len intExpr(            2) ]; ok := ok and stri = "90";
 7212     stri := striExpr("1234567890") [             9 len intExpr(            3) ]; ok := ok and stri = "90";
 7213     stri := striExpr("1234567890") [             9 len intExpr(           15) ]; ok := ok and stri = "90";
 7214     stri := striExpr("1234567890") [             9 len intExpr( integer.last) ]; ok := ok and stri = "90";
 7215 
 7216     stri := striExpr("1234567890") [            10 len intExpr(            0) ]; ok := ok and stri = "";
 7217     stri := striExpr("1234567890") [            10 len intExpr(            1) ]; ok := ok and stri = "0";
 7218     stri := striExpr("1234567890") [            10 len intExpr(            2) ]; ok := ok and stri = "0";
 7219     stri := striExpr("1234567890") [            10 len intExpr(           15) ]; ok := ok and stri = "0";
 7220     stri := striExpr("1234567890") [            10 len intExpr( integer.last) ]; ok := ok and stri = "0";
 7221 
 7222     stri := striExpr("1234567890") [            11 len intExpr(            0) ]; ok := ok and stri = "";
 7223     stri := striExpr("1234567890") [            11 len intExpr(            1) ]; ok := ok and stri = "";
 7224     stri := striExpr("1234567890") [            11 len intExpr(            2) ]; ok := ok and stri = "";
 7225     stri := striExpr("1234567890") [            11 len intExpr(           15) ]; ok := ok and stri = "";
 7226     stri := striExpr("1234567890") [            11 len intExpr( integer.last) ]; ok := ok and stri = "";
 7227 
 7228     stri := striExpr("1234567890") [            15 len intExpr(            0) ]; ok := ok and stri = "";
 7229     stri := striExpr("1234567890") [            15 len intExpr(            1) ]; ok := ok and stri = "";
 7230     stri := striExpr("1234567890") [            15 len intExpr(            2) ]; ok := ok and stri = "";
 7231     stri := striExpr("1234567890") [            15 len intExpr(           20) ]; ok := ok and stri = "";
 7232     stri := striExpr("1234567890") [            15 len intExpr( integer.last) ]; ok := ok and stri = "";
 7233 
 7234     stri := striExpr("1234567890") [  integer.last len intExpr(            0) ]; ok := ok and stri = "";
 7235     stri := striExpr("1234567890") [  integer.last len intExpr(            1) ]; ok := ok and stri = "";
 7236     stri := striExpr("1234567890") [  integer.last len intExpr(            2) ]; ok := ok and stri = "";
 7237     stri := striExpr("1234567890") [  integer.last len intExpr(           20) ]; ok := ok and stri = "";
 7238     stri := striExpr("1234567890") [  integer.last len intExpr( integer.last) ]; ok := ok and stri = "";
 7239     if not ok then
 7240       writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (6)");
 7241       okay := FALSE;
 7242     end if;
 7243 
 7244     ok := TRUE;
 7245     stri := striExpr("") [ intExpr(            1) len             0 ]; ok := ok and stri = "";
 7246     stri := striExpr("") [ intExpr(            1) len             1 ]; ok := ok and stri = "";
 7247     stri := striExpr("") [ intExpr(            1) len             2 ]; ok := ok and stri = "";
 7248     stri := striExpr("") [ intExpr(            1) len            15 ]; ok := ok and stri = "";
 7249     stri := striExpr("") [ intExpr(            1) len  integer.last ]; ok := ok and stri = "";
 7250 
 7251     stri := striExpr("") [ intExpr(            2) len             0 ]; ok := ok and stri = "";
 7252     stri := striExpr("") [ intExpr(            2) len             1 ]; ok := ok and stri = "";
 7253     stri := striExpr("") [ intExpr(            2) len            15 ]; ok := ok and stri = "";
 7254     stri := striExpr("") [ intExpr(            2) len  integer.last ]; ok := ok and stri = "";
 7255 
 7256     stri := striExpr("") [ intExpr(           15) len             0 ]; ok := ok and stri = "";
 7257     stri := striExpr("") [ intExpr(           15) len             1 ]; ok := ok and stri = "";
 7258     stri := striExpr("") [ intExpr(           15) len             2 ]; ok := ok and stri = "";
 7259     stri := striExpr("") [ intExpr(           15) len            20 ]; ok := ok and stri = "";
 7260     stri := striExpr("") [ intExpr(           15) len  integer.last ]; ok := ok and stri = "";
 7261 
 7262     stri := striExpr("") [ intExpr( integer.last) len             0 ]; ok := ok and stri = "";
 7263     stri := striExpr("") [ intExpr( integer.last) len             1 ]; ok := ok and stri = "";
 7264     stri := striExpr("") [ intExpr( integer.last) len             2 ]; ok := ok and stri = "";
 7265     stri := striExpr("") [ intExpr( integer.last) len            20 ]; ok := ok and stri = "";
 7266     stri := striExpr("") [ intExpr( integer.last) len  integer.last ]; ok := ok and stri = "";
 7267 
 7268     stri := striExpr("1") [ intExpr(            1) len             0 ]; ok := ok and stri = "";
 7269     stri := striExpr("1") [ intExpr(            1) len             1 ]; ok := ok and stri = "1";
 7270     stri := striExpr("1") [ intExpr(            1) len             2 ]; ok := ok and stri = "1";
 7271     stri := striExpr("1") [ intExpr(            1) len            15 ]; ok := ok and stri = "1";
 7272     stri := striExpr("1") [ intExpr(            1) len  integer.last ]; ok := ok and stri = "1";
 7273 
 7274     stri := striExpr("1") [ intExpr(            2) len             0 ]; ok := ok and stri = "";
 7275     stri := striExpr("1") [ intExpr(            2) len             1 ]; ok := ok and stri = "";
 7276     stri := striExpr("1") [ intExpr(            2) len             2 ]; ok := ok and stri = "";
 7277     stri := striExpr("1") [ intExpr(            2) len            15 ]; ok := ok and stri = "";
 7278     stri := striExpr("1") [ intExpr(            2) len  integer.last ]; ok := ok and stri = "";
 7279 
 7280     stri := striExpr("1") [ intExpr(           15) len             0 ]; ok := ok and stri = "";
 7281     stri := striExpr("1") [ intExpr(           15) len             1 ]; ok := ok and stri = "";
 7282     stri := striExpr("1") [ intExpr(           15) len             2 ]; ok := ok and stri = "";
 7283     stri := striExpr("1") [ intExpr(           15) len            20 ]; ok := ok and stri = "";
 7284     stri := striExpr("1") [ intExpr(           15) len  integer.last ]; ok := ok and stri = "";
 7285 
 7286     stri := striExpr("1") [ intExpr( integer.last) len             0 ]; ok := ok and stri = "";
 7287     stri := striExpr("1") [ intExpr( integer.last) len             1 ]; ok := ok and stri = "";
 7288     stri := striExpr("1") [ intExpr( integer.last) len             2 ]; ok := ok and stri = "";
 7289     stri := striExpr("1") [ intExpr( integer.last) len            20 ]; ok := ok and stri = "";
 7290     stri := striExpr("1") [ intExpr( integer.last) len  integer.last ]; ok := ok and stri = "";
 7291 
 7292     stri := striExpr("1234567890") [ intExpr(            1) len             0 ]; ok := ok and stri = "";
 7293     stri := striExpr("1234567890") [ intExpr(            1) len             1 ]; ok := ok and stri = "1";
 7294     stri := striExpr("1234567890") [ intExpr(            1) len             2 ]; ok := ok and stri = "12";
 7295     stri := striExpr("1234567890") [ intExpr(            1) len             5 ]; ok := ok and stri = "12345";
 7296     stri := striExpr("1234567890") [ intExpr(            1) len             9 ]; ok := ok and stri = "123456789";
 7297     stri := striExpr("1234567890") [ intExpr(            1) len            10 ]; ok := ok and stri = "1234567890";
 7298     stri := striExpr("1234567890") [ intExpr(            1) len            11 ]; ok := ok and stri = "1234567890";
 7299     stri := striExpr("1234567890") [ intExpr(            1) len            15 ]; ok := ok and stri = "1234567890";
 7300     stri := striExpr("1234567890") [ intExpr(            1) len  integer.last ]; ok := ok and stri = "1234567890";
 7301 
 7302     stri := striExpr("1234567890") [ intExpr(            2) len             0 ]; ok := ok and stri = "";
 7303     stri := striExpr("1234567890") [ intExpr(            2) len             1 ]; ok := ok and stri = "2";
 7304     stri := striExpr("1234567890") [ intExpr(            2) len             2 ]; ok := ok and stri = "23";
 7305     stri := striExpr("1234567890") [ intExpr(            2) len             5 ]; ok := ok and stri = "23456";
 7306     stri := striExpr("1234567890") [ intExpr(            2) len             8 ]; ok := ok and stri = "23456789";
 7307     stri := striExpr("1234567890") [ intExpr(            2) len             9 ]; ok := ok and stri = "234567890";
 7308     stri := striExpr("1234567890") [ intExpr(            2) len            10 ]; ok := ok and stri = "234567890";
 7309     stri := striExpr("1234567890") [ intExpr(            2) len            15 ]; ok := ok and stri = "234567890";
 7310     stri := striExpr("1234567890") [ intExpr(            2) len  integer.last ]; ok := ok and stri = "234567890";
 7311 
 7312     stri := striExpr("1234567890") [ intExpr(            5) len             0 ]; ok := ok and stri = "";
 7313     stri := striExpr("1234567890") [ intExpr(            5) len             1 ]; ok := ok and stri = "5";
 7314     stri := striExpr("1234567890") [ intExpr(            5) len             2 ]; ok := ok and stri = "56";
 7315     stri := striExpr("1234567890") [ intExpr(            5) len             5 ]; ok := ok and stri = "56789";
 7316     stri := striExpr("1234567890") [ intExpr(            5) len             6 ]; ok := ok and stri = "567890";
 7317     stri := striExpr("1234567890") [ intExpr(            5) len             7 ]; ok := ok and stri = "567890";
 7318     stri := striExpr("1234567890") [ intExpr(            5) len            15 ]; ok := ok and stri = "567890";
 7319     stri := striExpr("1234567890") [ intExpr(            5) len  integer.last ]; ok := ok and stri = "567890";
 7320 
 7321     stri := striExpr("1234567890") [ intExpr(            9) len             0 ]; ok := ok and stri = "";
 7322     stri := striExpr("1234567890") [ intExpr(            9) len             1 ]; ok := ok and stri = "9";
 7323     stri := striExpr("1234567890") [ intExpr(            9) len             2 ]; ok := ok and stri = "90";
 7324     stri := striExpr("1234567890") [ intExpr(            9) len             3 ]; ok := ok and stri = "90";
 7325     stri := striExpr("1234567890") [ intExpr(            9) len            15 ]; ok := ok and stri = "90";
 7326     stri := striExpr("1234567890") [ intExpr(            9) len  integer.last ]; ok := ok and stri = "90";
 7327 
 7328     stri := striExpr("1234567890") [ intExpr(           10) len             0 ]; ok := ok and stri = "";
 7329     stri := striExpr("1234567890") [ intExpr(           10) len             1 ]; ok := ok and stri = "0";
 7330     stri := striExpr("1234567890") [ intExpr(           10) len             2 ]; ok := ok and stri = "0";
 7331     stri := striExpr("1234567890") [ intExpr(           10) len            15 ]; ok := ok and stri = "0";
 7332     stri := striExpr("1234567890") [ intExpr(           10) len  integer.last ]; ok := ok and stri = "0";
 7333 
 7334     stri := striExpr("1234567890") [ intExpr(           11) len             0 ]; ok := ok and stri = "";
 7335     stri := striExpr("1234567890") [ intExpr(           11) len             1 ]; ok := ok and stri = "";
 7336     stri := striExpr("1234567890") [ intExpr(           11) len             2 ]; ok := ok and stri = "";
 7337     stri := striExpr("1234567890") [ intExpr(           11) len            15 ]; ok := ok and stri = "";
 7338     stri := striExpr("1234567890") [ intExpr(           11) len  integer.last ]; ok := ok and stri = "";
 7339 
 7340     stri := striExpr("1234567890") [ intExpr(           15) len             0 ]; ok := ok and stri = "";
 7341     stri := striExpr("1234567890") [ intExpr(           15) len             1 ]; ok := ok and stri = "";
 7342     stri := striExpr("1234567890") [ intExpr(           15) len             2 ]; ok := ok and stri = "";
 7343     stri := striExpr("1234567890") [ intExpr(           15) len            20 ]; ok := ok and stri = "";
 7344     stri := striExpr("1234567890") [ intExpr(           15) len  integer.last ]; ok := ok and stri = "";
 7345 
 7346     stri := striExpr("1234567890") [ intExpr( integer.last) len             0 ]; ok := ok and stri = "";
 7347     stri := striExpr("1234567890") [ intExpr( integer.last) len             1 ]; ok := ok and stri = "";
 7348     stri := striExpr("1234567890") [ intExpr( integer.last) len             2 ]; ok := ok and stri = "";
 7349     stri := striExpr("1234567890") [ intExpr( integer.last) len            20 ]; ok := ok and stri = "";
 7350     stri := striExpr("1234567890") [ intExpr( integer.last) len  integer.last ]; ok := ok and stri = "";
 7351     if not ok then
 7352       writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (7)");
 7353       okay := FALSE;
 7354     end if;
 7355 
 7356     ok := TRUE;
 7357     stri := striExpr("") [ intExpr(            1) len intExpr(            0) ]; ok := ok and stri = "";
 7358     stri := striExpr("") [ intExpr(            1) len intExpr(            1) ]; ok := ok and stri = "";
 7359     stri := striExpr("") [ intExpr(            1) len intExpr(            2) ]; ok := ok and stri = "";
 7360     stri := striExpr("") [ intExpr(            1) len intExpr(           15) ]; ok := ok and stri = "";
 7361     stri := striExpr("") [ intExpr(            1) len intExpr( integer.last) ]; ok := ok and stri = "";
 7362 
 7363     stri := striExpr("") [ intExpr(            2) len intExpr(            0) ]; ok := ok and stri = "";
 7364     stri := striExpr("") [ intExpr(            2) len intExpr(            1) ]; ok := ok and stri = "";
 7365     stri := striExpr("") [ intExpr(            2) len intExpr(           15) ]; ok := ok and stri = "";
 7366     stri := striExpr("") [ intExpr(            2) len intExpr( integer.last) ]; ok := ok and stri = "";
 7367 
 7368     stri := striExpr("") [ intExpr(           15) len intExpr(            0) ]; ok := ok and stri = "";
 7369     stri := striExpr("") [ intExpr(           15) len intExpr(            1) ]; ok := ok and stri = "";
 7370     stri := striExpr("") [ intExpr(           15) len intExpr(            2) ]; ok := ok and stri = "";
 7371     stri := striExpr("") [ intExpr(           15) len intExpr(           20) ]; ok := ok and stri = "";
 7372     stri := striExpr("") [ intExpr(           15) len intExpr( integer.last) ]; ok := ok and stri = "";
 7373 
 7374     stri := striExpr("") [ intExpr( integer.last) len intExpr(            0) ]; ok := ok and stri = "";
 7375     stri := striExpr("") [ intExpr( integer.last) len intExpr(            1) ]; ok := ok and stri = "";
 7376     stri := striExpr("") [ intExpr( integer.last) len intExpr(            2) ]; ok := ok and stri = "";
 7377     stri := striExpr("") [ intExpr( integer.last) len intExpr(           20) ]; ok := ok and stri = "";
 7378     stri := striExpr("") [ intExpr( integer.last) len intExpr( integer.last) ]; ok := ok and stri = "";
 7379 
 7380     stri := striExpr("1") [ intExpr(            1) len intExpr(            0) ]; ok := ok and stri = "";
 7381     stri := striExpr("1") [ intExpr(            1) len intExpr(            1) ]; ok := ok and stri = "1";
 7382     stri := striExpr("1") [ intExpr(            1) len intExpr(            2) ]; ok := ok and stri = "1";
 7383     stri := striExpr("1") [ intExpr(            1) len intExpr(           15) ]; ok := ok and stri = "1";
 7384     stri := striExpr("1") [ intExpr(            1) len intExpr( integer.last) ]; ok := ok and stri = "1";
 7385 
 7386     stri := striExpr("1") [ intExpr(            2) len intExpr(            0) ]; ok := ok and stri = "";
 7387     stri := striExpr("1") [ intExpr(            2) len intExpr(            1) ]; ok := ok and stri = "";
 7388     stri := striExpr("1") [ intExpr(            2) len intExpr(            2) ]; ok := ok and stri = "";
 7389     stri := striExpr("1") [ intExpr(            2) len intExpr(           15) ]; ok := ok and stri = "";
 7390     stri := striExpr("1") [ intExpr(            2) len intExpr( integer.last) ]; ok := ok and stri = "";
 7391 
 7392     stri := striExpr("1") [ intExpr(           15) len intExpr(            0) ]; ok := ok and stri = "";
 7393     stri := striExpr("1") [ intExpr(           15) len intExpr(            1) ]; ok := ok and stri = "";
 7394     stri := striExpr("1") [ intExpr(           15) len intExpr(            2) ]; ok := ok and stri = "";
 7395     stri := striExpr("1") [ intExpr(           15) len intExpr(           20) ]; ok := ok and stri = "";
 7396     stri := striExpr("1") [ intExpr(           15) len intExpr( integer.last) ]; ok := ok and stri = "";
 7397 
 7398     stri := striExpr("1") [ intExpr( integer.last) len intExpr(            0) ]; ok := ok and stri = "";
 7399     stri := striExpr("1") [ intExpr( integer.last) len intExpr(            1) ]; ok := ok and stri = "";
 7400     stri := striExpr("1") [ intExpr( integer.last) len intExpr(            2) ]; ok := ok and stri = "";
 7401     stri := striExpr("1") [ intExpr( integer.last) len intExpr(           20) ]; ok := ok and stri = "";
 7402     stri := striExpr("1") [ intExpr( integer.last) len intExpr( integer.last) ]; ok := ok and stri = "";
 7403 
 7404     stri := striExpr("1234567890") [ intExpr(            1) len intExpr(            0) ]; ok := ok and stri = "";
 7405     stri := striExpr("1234567890") [ intExpr(            1) len intExpr(            1) ]; ok := ok and stri = "1";
 7406     stri := striExpr("1234567890") [ intExpr(            1) len intExpr(            2) ]; ok := ok and stri = "12";
 7407     stri := striExpr("1234567890") [ intExpr(            1) len intExpr(            5) ]; ok := ok and stri = "12345";
 7408     stri := striExpr("1234567890") [ intExpr(            1) len intExpr(            9) ]; ok := ok and stri = "123456789";
 7409     stri := striExpr("1234567890") [ intExpr(            1) len intExpr(           10) ]; ok := ok and stri = "1234567890";
 7410     stri := striExpr("1234567890") [ intExpr(            1) len intExpr(           11) ]; ok := ok and stri = "1234567890";
 7411     stri := striExpr("1234567890") [ intExpr(            1) len intExpr(           15) ]; ok := ok and stri = "1234567890";
 7412     stri := striExpr("1234567890") [ intExpr(            1) len intExpr( integer.last) ]; ok := ok and stri = "1234567890";
 7413 
 7414     stri := striExpr("1234567890") [ intExpr(            2) len intExpr(            0) ]; ok := ok and stri = "";
 7415     stri := striExpr("1234567890") [ intExpr(            2) len intExpr(            1) ]; ok := ok and stri = "2";
 7416     stri := striExpr("1234567890") [ intExpr(            2) len intExpr(            2) ]; ok := ok and stri = "23";
 7417     stri := striExpr("1234567890") [ intExpr(            2) len intExpr(            5) ]; ok := ok and stri = "23456";
 7418     stri := striExpr("1234567890") [ intExpr(            2) len intExpr(            8) ]; ok := ok and stri = "23456789";
 7419     stri := striExpr("1234567890") [ intExpr(            2) len intExpr(            9) ]; ok := ok and stri = "234567890";
 7420     stri := striExpr("1234567890") [ intExpr(            2) len intExpr(           10) ]; ok := ok and stri = "234567890";
 7421     stri := striExpr("1234567890") [ intExpr(            2) len intExpr(           15) ]; ok := ok and stri = "234567890";
 7422     stri := striExpr("1234567890") [ intExpr(            2) len intExpr( integer.last) ]; ok := ok and stri = "234567890";
 7423 
 7424     stri := striExpr("1234567890") [ intExpr(            5) len intExpr(            0) ]; ok := ok and stri = "";
 7425     stri := striExpr("1234567890") [ intExpr(            5) len intExpr(            1) ]; ok := ok and stri = "5";
 7426     stri := striExpr("1234567890") [ intExpr(            5) len intExpr(            2) ]; ok := ok and stri = "56";
 7427     stri := striExpr("1234567890") [ intExpr(            5) len intExpr(            5) ]; ok := ok and stri = "56789";
 7428     stri := striExpr("1234567890") [ intExpr(            5) len intExpr(            6) ]; ok := ok and stri = "567890";
 7429     stri := striExpr("1234567890") [ intExpr(            5) len intExpr(            7) ]; ok := ok and stri = "567890";
 7430     stri := striExpr("1234567890") [ intExpr(            5) len intExpr(           15) ]; ok := ok and stri = "567890";
 7431     stri := striExpr("1234567890") [ intExpr(            5) len intExpr( integer.last) ]; ok := ok and stri = "567890";
 7432 
 7433     stri := striExpr("1234567890") [ intExpr(            9) len intExpr(            0) ]; ok := ok and stri = "";
 7434     stri := striExpr("1234567890") [ intExpr(            9) len intExpr(            1) ]; ok := ok and stri = "9";
 7435     stri := striExpr("1234567890") [ intExpr(            9) len intExpr(            2) ]; ok := ok and stri = "90";
 7436     stri := striExpr("1234567890") [ intExpr(            9) len intExpr(            3) ]; ok := ok and stri = "90";
 7437     stri := striExpr("1234567890") [ intExpr(            9) len intExpr(           15) ]; ok := ok and stri = "90";
 7438     stri := striExpr("1234567890") [ intExpr(            9) len intExpr( integer.last) ]; ok := ok and stri = "90";
 7439 
 7440     stri := striExpr("1234567890") [ intExpr(           10) len intExpr(            0) ]; ok := ok and stri = "";
 7441     stri := striExpr("1234567890") [ intExpr(           10) len intExpr(            1) ]; ok := ok and stri = "0";
 7442     stri := striExpr("1234567890") [ intExpr(           10) len intExpr(            2) ]; ok := ok and stri = "0";
 7443     stri := striExpr("1234567890") [ intExpr(           10) len intExpr(           15) ]; ok := ok and stri = "0";
 7444     stri := striExpr("1234567890") [ intExpr(           10) len intExpr( integer.last) ]; ok := ok and stri = "0";
 7445 
 7446     stri := striExpr("1234567890") [ intExpr(           11) len intExpr(            0) ]; ok := ok and stri = "";
 7447     stri := striExpr("1234567890") [ intExpr(           11) len intExpr(            1) ]; ok := ok and stri = "";
 7448     stri := striExpr("1234567890") [ intExpr(           11) len intExpr(            2) ]; ok := ok and stri = "";
 7449     stri := striExpr("1234567890") [ intExpr(           11) len intExpr(           15) ]; ok := ok and stri = "";
 7450     stri := striExpr("1234567890") [ intExpr(           11) len intExpr( integer.last) ]; ok := ok and stri = "";
 7451 
 7452     stri := striExpr("1234567890") [ intExpr(           15) len intExpr(            0) ]; ok := ok and stri = "";
 7453     stri := striExpr("1234567890") [ intExpr(           15) len intExpr(            1) ]; ok := ok and stri = "";
 7454     stri := striExpr("1234567890") [ intExpr(           15) len intExpr(            2) ]; ok := ok and stri = "";
 7455     stri := striExpr("1234567890") [ intExpr(           15) len intExpr(           20) ]; ok := ok and stri = "";
 7456     stri := striExpr("1234567890") [ intExpr(           15) len intExpr( integer.last) ]; ok := ok and stri = "";
 7457 
 7458     stri := striExpr("1234567890") [ intExpr( integer.last) len intExpr(            0) ]; ok := ok and stri = "";
 7459     stri := striExpr("1234567890") [ intExpr( integer.last) len intExpr(            1) ]; ok := ok and stri = "";
 7460     stri := striExpr("1234567890") [ intExpr( integer.last) len intExpr(            2) ]; ok := ok and stri = "";
 7461     stri := striExpr("1234567890") [ intExpr( integer.last) len intExpr(           20) ]; ok := ok and stri = "";
 7462     stri := striExpr("1234567890") [ intExpr( integer.last) len intExpr( integer.last) ]; ok := ok and stri = "";
 7463     if not ok then
 7464       writeln(" ***** stri := STRING [ START len LENGTH ] does not work correct. (8)");
 7465       okay := FALSE;
 7466     end if;
 7467   end func;
 7468 
 7469 
 7470 const func string: substrFunction (in string: stri, in integer: start) is
 7471   return stri[start len 1];
 7472 
 7473 
 7474 const func string: substrFunction (in string: stri, in integer: start, in integer: length) is
 7475   return stri[start len length];
 7476 
 7477 
 7478 const func boolean: check_string_substr_func_1 is func
 7479   result
 7480     var boolean: okay is TRUE;
 7481   begin
 7482     if  substrFunction("",             1) <> "" or
 7483         substrFunction("",             2) <> "" or
 7484         substrFunction("",            15) <> "" or
 7485         substrFunction("",  integer.last) <> "" or
 7486         substrFunction("1",             1) <> "1" or
 7487         substrFunction("1",             2) <> "" or
 7488         substrFunction("1",            15) <> "" or
 7489         substrFunction("1",  integer.last) <> "" or
 7490         substrFunction("1234567890",             1) <> "1" or
 7491         substrFunction("1234567890",             2) <> "2" or
 7492         substrFunction("1234567890",             5) <> "5" or
 7493         substrFunction("1234567890",             9) <> "9" or
 7494         substrFunction("1234567890",            10) <> "0" or
 7495         substrFunction("1234567890",            11) <> "" or
 7496         substrFunction("1234567890",            15) <> "" or
 7497         substrFunction("1234567890",  integer.last) <> "" then
 7498       writeln(" ***** STRING [ START len 1 ] via a function does not work correct. (1)");
 7499       okay := FALSE;
 7500     end if;
 7501 
 7502     if  substrFunction("", intExpr(            1)) <> "" or
 7503         substrFunction("", intExpr(            2)) <> "" or
 7504         substrFunction("", intExpr(           15)) <> "" or
 7505         substrFunction("", intExpr( integer.last)) <> "" or
 7506         substrFunction("1", intExpr(            1)) <> "1" or
 7507         substrFunction("1", intExpr(            2)) <> "" or
 7508         substrFunction("1", intExpr(           15)) <> "" or
 7509         substrFunction("1", intExpr( integer.last)) <> "" or
 7510         substrFunction("1234567890", intExpr(            1)) <> "1" or
 7511         substrFunction("1234567890", intExpr(            2)) <> "2" or
 7512         substrFunction("1234567890", intExpr(            5)) <> "5" or
 7513         substrFunction("1234567890", intExpr(            9)) <> "9" or
 7514         substrFunction("1234567890", intExpr(           10)) <> "0" or
 7515         substrFunction("1234567890", intExpr(           11)) <> "" or
 7516         substrFunction("1234567890", intExpr(           15)) <> "" or
 7517         substrFunction("1234567890", intExpr( integer.last)) <> "" then
 7518       writeln(" ***** STRING [ START len 1 ] via a function does not work correct. (2)");
 7519       okay := FALSE;
 7520     end if;
 7521 
 7522     if  substrFunction(striExpr(""),             1) <> "" or
 7523         substrFunction(striExpr(""),             2) <> "" or
 7524         substrFunction(striExpr(""),            15) <> "" or
 7525         substrFunction(striExpr(""),  integer.last) <> "" or
 7526         substrFunction(striExpr("1"),             1) <> "1" or
 7527         substrFunction(striExpr("1"),             2) <> "" or
 7528         substrFunction(striExpr("1"),            15) <> "" or
 7529         substrFunction(striExpr("1"),  integer.last) <> "" or
 7530         substrFunction(striExpr("1234567890"),             1) <> "1" or
 7531         substrFunction(striExpr("1234567890"),             2) <> "2" or
 7532         substrFunction(striExpr("1234567890"),             5) <> "5" or
 7533         substrFunction(striExpr("1234567890"),             9) <> "9" or
 7534         substrFunction(striExpr("1234567890"),            10) <> "0" or
 7535         substrFunction(striExpr("1234567890"),            11) <> "" or
 7536         substrFunction(striExpr("1234567890"),            15) <> "" or
 7537         substrFunction(striExpr("1234567890"),  integer.last) <> "" then
 7538       writeln(" ***** STRING [ START len 1 ] via a function does not work correct. (3)");
 7539       okay := FALSE;
 7540     end if;
 7541 
 7542     if  substrFunction(striExpr(""), intExpr(            1)) <> "" or
 7543         substrFunction(striExpr(""), intExpr(            2)) <> "" or
 7544         substrFunction(striExpr(""), intExpr(           15)) <> "" or
 7545         substrFunction(striExpr(""), intExpr( integer.last)) <> "" or
 7546         substrFunction(striExpr("1"), intExpr(            1)) <> "1" or
 7547         substrFunction(striExpr("1"), intExpr(            2)) <> "" or
 7548         substrFunction(striExpr("1"), intExpr(           15)) <> "" or
 7549         substrFunction(striExpr("1"), intExpr( integer.last)) <> "" or
 7550         substrFunction(striExpr("1234567890"), intExpr(            1)) <> "1" or
 7551         substrFunction(striExpr("1234567890"), intExpr(            2)) <> "2" or
 7552         substrFunction(striExpr("1234567890"), intExpr(            5)) <> "5" or
 7553         substrFunction(striExpr("1234567890"), intExpr(            9)) <> "9" or
 7554         substrFunction(striExpr("1234567890"), intExpr(           10)) <> "0" or
 7555         substrFunction(striExpr("1234567890"), intExpr(           11)) <> "" or
 7556         substrFunction(striExpr("1234567890"), intExpr(           15)) <> "" or
 7557         substrFunction(striExpr("1234567890"), intExpr( integer.last)) <> "" then
 7558       writeln(" ***** STRING [ START len 1 ] via a function does not work correct. (4)");
 7559       okay := FALSE;
 7560     end if;
 7561 
 7562     if  substrFunction("",             1,             0) <> "" or
 7563         substrFunction("",             1,             1) <> "" or
 7564         substrFunction("",             1,             2) <> "" or
 7565         substrFunction("",             1,            15) <> "" or
 7566         substrFunction("",             1,  integer.last) <> "" or
 7567 
 7568         substrFunction("",             2,             0) <> "" or
 7569         substrFunction("",             2,             1) <> "" or
 7570         substrFunction("",             2,            15) <> "" or
 7571         substrFunction("",             2,  integer.last) <> "" or
 7572 
 7573         substrFunction("",            15,             0) <> "" or
 7574         substrFunction("",            15,             1) <> "" or
 7575         substrFunction("",            15,             2) <> "" or
 7576         substrFunction("",            15,            20) <> "" or
 7577         substrFunction("",            15,  integer.last) <> "" or
 7578 
 7579         substrFunction("",  integer.last,             0) <> "" or
 7580         substrFunction("",  integer.last,             1) <> "" or
 7581         substrFunction("",  integer.last,             2) <> "" or
 7582         substrFunction("",  integer.last,            20) <> "" or
 7583         substrFunction("",  integer.last,  integer.last) <> "" or
 7584 
 7585         substrFunction("1",             1,             0) <> "" or
 7586         substrFunction("1",             1,             1) <> "1" or
 7587         substrFunction("1",             1,             2) <> "1" or
 7588         substrFunction("1",             1,            15) <> "1" or
 7589         substrFunction("1",             1,  integer.last) <> "1" or
 7590 
 7591         substrFunction("1",             2,             0) <> "" or
 7592         substrFunction("1",             2,             1) <> "" or
 7593         substrFunction("1",             2,             2) <> "" or
 7594         substrFunction("1",             2,            15) <> "" or
 7595         substrFunction("1",             2,  integer.last) <> "" or
 7596 
 7597         substrFunction("1",            15,             0) <> "" or
 7598         substrFunction("1",            15,             1) <> "" or
 7599         substrFunction("1",            15,             2) <> "" or
 7600         substrFunction("1",            15,            20) <> "" or
 7601         substrFunction("1",            15,  integer.last) <> "" or
 7602 
 7603         substrFunction("1",  integer.last,             0) <> "" or
 7604         substrFunction("1",  integer.last,             1) <> "" or
 7605         substrFunction("1",  integer.last,             2) <> "" or
 7606         substrFunction("1",  integer.last,            20) <> "" or
 7607         substrFunction("1",  integer.last,  integer.last) <> "" or
 7608 
 7609         substrFunction("1234567890",             1,             0) <> "" or
 7610         substrFunction("1234567890",             1,             1) <> "1" or
 7611         substrFunction("1234567890",             1,             2) <> "12" or
 7612         substrFunction("1234567890",             1,             5) <> "12345" or
 7613         substrFunction("1234567890",             1,             9) <> "123456789" or
 7614         substrFunction("1234567890",             1,            10) <> "1234567890" or
 7615         substrFunction("1234567890",             1,            11) <> "1234567890" or
 7616         substrFunction("1234567890",             1,            15) <> "1234567890" or
 7617         substrFunction("1234567890",             1,  integer.last) <> "1234567890" or
 7618 
 7619         substrFunction("1234567890",             2,             0) <> "" or
 7620         substrFunction("1234567890",             2,             1) <> "2" or
 7621         substrFunction("1234567890",             2,             2) <> "23" or
 7622         substrFunction("1234567890",             2,             5) <> "23456" or
 7623         substrFunction("1234567890",             2,             8) <> "23456789" or
 7624         substrFunction("1234567890",             2,             9) <> "234567890" or
 7625         substrFunction("1234567890",             2,            10) <> "234567890" or
 7626         substrFunction("1234567890",             2,            15) <> "234567890" or
 7627         substrFunction("1234567890",             2,  integer.last) <> "234567890" or
 7628 
 7629         substrFunction("1234567890",             5,             0) <> "" or
 7630         substrFunction("1234567890",             5,             1) <> "5" or
 7631         substrFunction("1234567890",             5,             2) <> "56" or
 7632         substrFunction("1234567890",             5,             5) <> "56789" or
 7633         substrFunction("1234567890",             5,             6) <> "567890" or
 7634         substrFunction("1234567890",             5,             7) <> "567890" or
 7635         substrFunction("1234567890",             5,            15) <> "567890" or
 7636         substrFunction("1234567890",             5,  integer.last) <> "567890" or
 7637 
 7638         substrFunction("1234567890",             9,             0) <> "" or
 7639         substrFunction("1234567890",             9,             1) <> "9" or
 7640         substrFunction("1234567890",             9,             2) <> "90" or
 7641         substrFunction("1234567890",             9,             3) <> "90" or
 7642         substrFunction("1234567890",             9,            15) <> "90" or
 7643         substrFunction("1234567890",             9,  integer.last) <> "90" or
 7644 
 7645         substrFunction("1234567890",            10,             0) <> "" or
 7646         substrFunction("1234567890",            10,             1) <> "0" or
 7647         substrFunction("1234567890",            10,             2) <> "0" or
 7648         substrFunction("1234567890",            10,            15) <> "0" or
 7649         substrFunction("1234567890",            10,  integer.last) <> "0" or
 7650 
 7651         substrFunction("1234567890",            11,             0) <> "" or
 7652         substrFunction("1234567890",            11,             1) <> "" or
 7653         substrFunction("1234567890",            11,             2) <> "" or
 7654         substrFunction("1234567890",            11,            15) <> "" or
 7655         substrFunction("1234567890",            11,  integer.last) <> "" or
 7656 
 7657         substrFunction("1234567890",            15,             0) <> "" or
 7658         substrFunction("1234567890",            15,             1) <> "" or
 7659         substrFunction("1234567890",            15,             2) <> "" or
 7660         substrFunction("1234567890",            15,            20) <> "" or
 7661         substrFunction("1234567890",            15,  integer.last) <> "" or
 7662 
 7663         substrFunction("1234567890",  integer.last,             0) <> "" or
 7664         substrFunction("1234567890",  integer.last,             1) <> "" or
 7665         substrFunction("1234567890",  integer.last,             2) <> "" or
 7666         substrFunction("1234567890",  integer.last,            20) <> "" or
 7667         substrFunction("1234567890",  integer.last,  integer.last) <> "" then
 7668       writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (1)");
 7669       okay := FALSE;
 7670     end if;
 7671 
 7672     if  substrFunction("",             1, intExpr(            0)) <> "" or
 7673         substrFunction("",             1, intExpr(            1)) <> "" or
 7674         substrFunction("",             1, intExpr(            2)) <> "" or
 7675         substrFunction("",             1, intExpr(           15)) <> "" or
 7676         substrFunction("",             1, intExpr( integer.last)) <> "" or
 7677 
 7678         substrFunction("",             2, intExpr(            0)) <> "" or
 7679         substrFunction("",             2, intExpr(            1)) <> "" or
 7680         substrFunction("",             2, intExpr(           15)) <> "" or
 7681         substrFunction("",             2, intExpr( integer.last)) <> "" or
 7682 
 7683         substrFunction("",            15, intExpr(            0)) <> "" or
 7684         substrFunction("",            15, intExpr(            1)) <> "" or
 7685         substrFunction("",            15, intExpr(            2)) <> "" or
 7686         substrFunction("",            15, intExpr(           20)) <> "" or
 7687         substrFunction("",            15, intExpr( integer.last)) <> "" or
 7688 
 7689         substrFunction("",  integer.last, intExpr(            0)) <> "" or
 7690         substrFunction("",  integer.last, intExpr(            1)) <> "" or
 7691         substrFunction("",  integer.last, intExpr(            2)) <> "" or
 7692         substrFunction("",  integer.last, intExpr(           20)) <> "" or
 7693         substrFunction("",  integer.last, intExpr( integer.last)) <> "" or
 7694 
 7695         substrFunction("1",             1, intExpr(            0)) <> "" or
 7696         substrFunction("1",             1, intExpr(            1)) <> "1" or
 7697         substrFunction("1",             1, intExpr(            2)) <> "1" or
 7698         substrFunction("1",             1, intExpr(           15)) <> "1" or
 7699         substrFunction("1",             1, intExpr( integer.last)) <> "1" or
 7700 
 7701         substrFunction("1",             2, intExpr(            0)) <> "" or
 7702         substrFunction("1",             2, intExpr(            1)) <> "" or
 7703         substrFunction("1",             2, intExpr(            2)) <> "" or
 7704         substrFunction("1",             2, intExpr(           15)) <> "" or
 7705         substrFunction("1",             2, intExpr( integer.last)) <> "" or
 7706 
 7707         substrFunction("1",            15, intExpr(            0)) <> "" or
 7708         substrFunction("1",            15, intExpr(            1)) <> "" or
 7709         substrFunction("1",            15, intExpr(            2)) <> "" or
 7710         substrFunction("1",            15, intExpr(           20)) <> "" or
 7711         substrFunction("1",            15, intExpr( integer.last)) <> "" or
 7712 
 7713         substrFunction("1",  integer.last, intExpr(            0)) <> "" or
 7714         substrFunction("1",  integer.last, intExpr(            1)) <> "" or
 7715         substrFunction("1",  integer.last, intExpr(            2)) <> "" or
 7716         substrFunction("1",  integer.last, intExpr(           20)) <> "" or
 7717         substrFunction("1",  integer.last, intExpr( integer.last)) <> "" or
 7718 
 7719         substrFunction("1234567890",             1, intExpr(            0)) <> "" or
 7720         substrFunction("1234567890",             1, intExpr(            1)) <> "1" or
 7721         substrFunction("1234567890",             1, intExpr(            2)) <> "12" or
 7722         substrFunction("1234567890",             1, intExpr(            5)) <> "12345" or
 7723         substrFunction("1234567890",             1, intExpr(            9)) <> "123456789" or
 7724         substrFunction("1234567890",             1, intExpr(           10)) <> "1234567890" or
 7725         substrFunction("1234567890",             1, intExpr(           11)) <> "1234567890" or
 7726         substrFunction("1234567890",             1, intExpr(           15)) <> "1234567890" or
 7727         substrFunction("1234567890",             1, intExpr( integer.last)) <> "1234567890" or
 7728 
 7729         substrFunction("1234567890",             2, intExpr(            0)) <> "" or
 7730         substrFunction("1234567890",             2, intExpr(            1)) <> "2" or
 7731         substrFunction("1234567890",             2, intExpr(            2)) <> "23" or
 7732         substrFunction("1234567890",             2, intExpr(            5)) <> "23456" or
 7733         substrFunction("1234567890",             2, intExpr(            8)) <> "23456789" or
 7734         substrFunction("1234567890",             2, intExpr(            9)) <> "234567890" or
 7735         substrFunction("1234567890",             2, intExpr(           10)) <> "234567890" or
 7736         substrFunction("1234567890",             2, intExpr(           15)) <> "234567890" or
 7737         substrFunction("1234567890",             2, intExpr( integer.last)) <> "234567890" or
 7738 
 7739         substrFunction("1234567890",             5, intExpr(            0)) <> "" or
 7740         substrFunction("1234567890",             5, intExpr(            1)) <> "5" or
 7741         substrFunction("1234567890",             5, intExpr(            2)) <> "56" or
 7742         substrFunction("1234567890",             5, intExpr(            5)) <> "56789" or
 7743         substrFunction("1234567890",             5, intExpr(            6)) <> "567890" or
 7744         substrFunction("1234567890",             5, intExpr(            7)) <> "567890" or
 7745         substrFunction("1234567890",             5, intExpr(           15)) <> "567890" or
 7746         substrFunction("1234567890",             5, intExpr( integer.last)) <> "567890" or
 7747 
 7748         substrFunction("1234567890",             9, intExpr(            0)) <> "" or
 7749         substrFunction("1234567890",             9, intExpr(            1)) <> "9" or
 7750         substrFunction("1234567890",             9, intExpr(            2)) <> "90" or
 7751         substrFunction("1234567890",             9, intExpr(            3)) <> "90" or
 7752         substrFunction("1234567890",             9, intExpr(           15)) <> "90" or
 7753         substrFunction("1234567890",             9, intExpr( integer.last)) <> "90" or
 7754 
 7755         substrFunction("1234567890",            10, intExpr(            0)) <> "" or
 7756         substrFunction("1234567890",            10, intExpr(            1)) <> "0" or
 7757         substrFunction("1234567890",            10, intExpr(            2)) <> "0" or
 7758         substrFunction("1234567890",            10, intExpr(           15)) <> "0" or
 7759         substrFunction("1234567890",            10, intExpr( integer.last)) <> "0" or
 7760 
 7761         substrFunction("1234567890",            11, intExpr(            0)) <> "" or
 7762         substrFunction("1234567890",            11, intExpr(            1)) <> "" or
 7763         substrFunction("1234567890",            11, intExpr(            2)) <> "" or
 7764         substrFunction("1234567890",            11, intExpr(           15)) <> "" or
 7765         substrFunction("1234567890",            11, intExpr( integer.last)) <> "" or
 7766 
 7767         substrFunction("1234567890",            15, intExpr(            0)) <> "" or
 7768         substrFunction("1234567890",            15, intExpr(            1)) <> "" or
 7769         substrFunction("1234567890",            15, intExpr(            2)) <> "" or
 7770         substrFunction("1234567890",            15, intExpr(           20)) <> "" or
 7771         substrFunction("1234567890",            15, intExpr( integer.last)) <> "" or
 7772 
 7773         substrFunction("1234567890",  integer.last, intExpr(            0)) <> "" or
 7774         substrFunction("1234567890",  integer.last, intExpr(            1)) <> "" or
 7775         substrFunction("1234567890",  integer.last, intExpr(            2)) <> "" or
 7776         substrFunction("1234567890",  integer.last, intExpr(           20)) <> "" or
 7777         substrFunction("1234567890",  integer.last, intExpr( integer.last)) <> "" then
 7778       writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (2)");
 7779       okay := FALSE;
 7780     end if;
 7781 
 7782     if  substrFunction("", intExpr(            1),             0) <> "" or
 7783         substrFunction("", intExpr(            1),             1) <> "" or
 7784         substrFunction("", intExpr(            1),             2) <> "" or
 7785         substrFunction("", intExpr(            1),            15) <> "" or
 7786         substrFunction("", intExpr(            1),  integer.last) <> "" or
 7787 
 7788         substrFunction("", intExpr(            2),             0) <> "" or
 7789         substrFunction("", intExpr(            2),             1) <> "" or
 7790         substrFunction("", intExpr(            2),            15) <> "" or
 7791         substrFunction("", intExpr(            2),  integer.last) <> "" or
 7792 
 7793         substrFunction("", intExpr(           15),             0) <> "" or
 7794         substrFunction("", intExpr(           15),             1) <> "" or
 7795         substrFunction("", intExpr(           15),             2) <> "" or
 7796         substrFunction("", intExpr(           15),            20) <> "" or
 7797         substrFunction("", intExpr(           15),  integer.last) <> "" or
 7798 
 7799         substrFunction("", intExpr( integer.last),             0) <> "" or
 7800         substrFunction("", intExpr( integer.last),             1) <> "" or
 7801         substrFunction("", intExpr( integer.last),             2) <> "" or
 7802         substrFunction("", intExpr( integer.last),            20) <> "" or
 7803         substrFunction("", intExpr( integer.last),  integer.last) <> "" or
 7804 
 7805         substrFunction("1", intExpr(            1),             0) <> "" or
 7806         substrFunction("1", intExpr(            1),             1) <> "1" or
 7807         substrFunction("1", intExpr(            1),             2) <> "1" or
 7808         substrFunction("1", intExpr(            1),            15) <> "1" or
 7809         substrFunction("1", intExpr(            1),  integer.last) <> "1" or
 7810 
 7811         substrFunction("1", intExpr(            2),             0) <> "" or
 7812         substrFunction("1", intExpr(            2),             1) <> "" or
 7813         substrFunction("1", intExpr(            2),             2) <> "" or
 7814         substrFunction("1", intExpr(            2),            15) <> "" or
 7815         substrFunction("1", intExpr(            2),  integer.last) <> "" or
 7816 
 7817         substrFunction("1", intExpr(           15),             0) <> "" or
 7818         substrFunction("1", intExpr(           15),             1) <> "" or
 7819         substrFunction("1", intExpr(           15),             2) <> "" or
 7820         substrFunction("1", intExpr(           15),            20) <> "" or
 7821         substrFunction("1", intExpr(           15),  integer.last) <> "" or
 7822 
 7823         substrFunction("1", intExpr( integer.last),             0) <> "" or
 7824         substrFunction("1", intExpr( integer.last),             1) <> "" or
 7825         substrFunction("1", intExpr( integer.last),             2) <> "" or
 7826         substrFunction("1", intExpr( integer.last),            20) <> "" or
 7827         substrFunction("1", intExpr( integer.last),  integer.last) <> "" or
 7828 
 7829         substrFunction("1234567890", intExpr(            1),             0) <> "" or
 7830         substrFunction("1234567890", intExpr(            1),             1) <> "1" or
 7831         substrFunction("1234567890", intExpr(            1),             2) <> "12" or
 7832         substrFunction("1234567890", intExpr(            1),             5) <> "12345" or
 7833         substrFunction("1234567890", intExpr(            1),             9) <> "123456789" or
 7834         substrFunction("1234567890", intExpr(            1),            10) <> "1234567890" or
 7835         substrFunction("1234567890", intExpr(            1),            11) <> "1234567890" or
 7836         substrFunction("1234567890", intExpr(            1),            15) <> "1234567890" or
 7837         substrFunction("1234567890", intExpr(            1),  integer.last) <> "1234567890" or
 7838 
 7839         substrFunction("1234567890", intExpr(            2),             0) <> "" or
 7840         substrFunction("1234567890", intExpr(            2),             1) <> "2" or
 7841         substrFunction("1234567890", intExpr(            2),             2) <> "23" or
 7842         substrFunction("1234567890", intExpr(            2),             5) <> "23456" or
 7843         substrFunction("1234567890", intExpr(            2),             8) <> "23456789" or
 7844         substrFunction("1234567890", intExpr(            2),             9) <> "234567890" or
 7845         substrFunction("1234567890", intExpr(            2),            10) <> "234567890" or
 7846         substrFunction("1234567890", intExpr(            2),            15) <> "234567890" or
 7847         substrFunction("1234567890", intExpr(            2),  integer.last) <> "234567890" or
 7848 
 7849         substrFunction("1234567890", intExpr(            5),             0) <> "" or
 7850         substrFunction("1234567890", intExpr(            5),             1) <> "5" or
 7851         substrFunction("1234567890", intExpr(            5),             2) <> "56" or
 7852         substrFunction("1234567890", intExpr(            5),             5) <> "56789" or
 7853         substrFunction("1234567890", intExpr(            5),             6) <> "567890" or
 7854         substrFunction("1234567890", intExpr(            5),             7) <> "567890" or
 7855         substrFunction("1234567890", intExpr(            5),            15) <> "567890" or
 7856         substrFunction("1234567890", intExpr(            5),  integer.last) <> "567890" or
 7857 
 7858         substrFunction("1234567890", intExpr(            9),             0) <> "" or
 7859         substrFunction("1234567890", intExpr(            9),             1) <> "9" or
 7860         substrFunction("1234567890", intExpr(            9),             2) <> "90" or
 7861         substrFunction("1234567890", intExpr(            9),             3) <> "90" or
 7862         substrFunction("1234567890", intExpr(            9),            15) <> "90" or
 7863         substrFunction("1234567890", intExpr(            9),  integer.last) <> "90" or
 7864 
 7865         substrFunction("1234567890", intExpr(           10),             0) <> "" or
 7866         substrFunction("1234567890", intExpr(           10),             1) <> "0" or
 7867         substrFunction("1234567890", intExpr(           10),             2) <> "0" or
 7868         substrFunction("1234567890", intExpr(           10),            15) <> "0" or
 7869         substrFunction("1234567890", intExpr(           10),  integer.last) <> "0" or
 7870 
 7871         substrFunction("1234567890", intExpr(           11),             0) <> "" or
 7872         substrFunction("1234567890", intExpr(           11),             1) <> "" or
 7873         substrFunction("1234567890", intExpr(           11),             2) <> "" or
 7874         substrFunction("1234567890", intExpr(           11),            15) <> "" or
 7875         substrFunction("1234567890", intExpr(           11),  integer.last) <> "" or
 7876 
 7877         substrFunction("1234567890", intExpr(           15),             0) <> "" or
 7878         substrFunction("1234567890", intExpr(           15),             1) <> "" or
 7879         substrFunction("1234567890", intExpr(           15),             2) <> "" or
 7880         substrFunction("1234567890", intExpr(           15),            20) <> "" or
 7881         substrFunction("1234567890", intExpr(           15),  integer.last) <> "" or
 7882 
 7883         substrFunction("1234567890", intExpr( integer.last),             0) <> "" or
 7884         substrFunction("1234567890", intExpr( integer.last),             1) <> "" or
 7885         substrFunction("1234567890", intExpr( integer.last),             2) <> "" or
 7886         substrFunction("1234567890", intExpr( integer.last),            20) <> "" or
 7887         substrFunction("1234567890", intExpr( integer.last),  integer.last) <> "" then
 7888       writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (3)");
 7889       okay := FALSE;
 7890     end if;
 7891 
 7892     if  substrFunction("", intExpr(            1), intExpr(            0)) <> "" or
 7893         substrFunction("", intExpr(            1), intExpr(            1)) <> "" or
 7894         substrFunction("", intExpr(            1), intExpr(            2)) <> "" or
 7895         substrFunction("", intExpr(            1), intExpr(           15)) <> "" or
 7896         substrFunction("", intExpr(            1), intExpr( integer.last)) <> "" or
 7897 
 7898         substrFunction("", intExpr(            2), intExpr(            0)) <> "" or
 7899         substrFunction("", intExpr(            2), intExpr(            1)) <> "" or
 7900         substrFunction("", intExpr(            2), intExpr(           15)) <> "" or
 7901         substrFunction("", intExpr(            2), intExpr( integer.last)) <> "" or
 7902 
 7903         substrFunction("", intExpr(           15), intExpr(            0)) <> "" or
 7904         substrFunction("", intExpr(           15), intExpr(            1)) <> "" or
 7905         substrFunction("", intExpr(           15), intExpr(            2)) <> "" or
 7906         substrFunction("", intExpr(           15), intExpr(           20)) <> "" or
 7907         substrFunction("", intExpr(           15), intExpr( integer.last)) <> "" or
 7908 
 7909         substrFunction("", intExpr( integer.last), intExpr(            0)) <> "" or
 7910         substrFunction("", intExpr( integer.last), intExpr(            1)) <> "" or
 7911         substrFunction("", intExpr( integer.last), intExpr(            2)) <> "" or
 7912         substrFunction("", intExpr( integer.last), intExpr(           20)) <> "" or
 7913         substrFunction("", intExpr( integer.last), intExpr( integer.last)) <> "" or
 7914 
 7915         substrFunction("1", intExpr(            1), intExpr(            0)) <> "" or
 7916         substrFunction("1", intExpr(            1), intExpr(            1)) <> "1" or
 7917         substrFunction("1", intExpr(            1), intExpr(            2)) <> "1" or
 7918         substrFunction("1", intExpr(            1), intExpr(           15)) <> "1" or
 7919         substrFunction("1", intExpr(            1), intExpr( integer.last)) <> "1" or
 7920 
 7921         substrFunction("1", intExpr(            2), intExpr(            0)) <> "" or
 7922         substrFunction("1", intExpr(            2), intExpr(            1)) <> "" or
 7923         substrFunction("1", intExpr(            2), intExpr(            2)) <> "" or
 7924         substrFunction("1", intExpr(            2), intExpr(           15)) <> "" or
 7925         substrFunction("1", intExpr(            2), intExpr( integer.last)) <> "" or
 7926 
 7927         substrFunction("1", intExpr(           15), intExpr(            0)) <> "" or
 7928         substrFunction("1", intExpr(           15), intExpr(            1)) <> "" or
 7929         substrFunction("1", intExpr(           15), intExpr(            2)) <> "" or
 7930         substrFunction("1", intExpr(           15), intExpr(           20)) <> "" or
 7931         substrFunction("1", intExpr(           15), intExpr( integer.last)) <> "" or
 7932 
 7933         substrFunction("1", intExpr( integer.last), intExpr(            0)) <> "" or
 7934         substrFunction("1", intExpr( integer.last), intExpr(            1)) <> "" or
 7935         substrFunction("1", intExpr( integer.last), intExpr(            2)) <> "" or
 7936         substrFunction("1", intExpr( integer.last), intExpr(           20)) <> "" or
 7937         substrFunction("1", intExpr( integer.last), intExpr( integer.last)) <> "" or
 7938 
 7939         substrFunction("1234567890", intExpr(            1), intExpr(            0)) <> "" or
 7940         substrFunction("1234567890", intExpr(            1), intExpr(            1)) <> "1" or
 7941         substrFunction("1234567890", intExpr(            1), intExpr(            2)) <> "12" or
 7942         substrFunction("1234567890", intExpr(            1), intExpr(            5)) <> "12345" or
 7943         substrFunction("1234567890", intExpr(            1), intExpr(            9)) <> "123456789" or
 7944         substrFunction("1234567890", intExpr(            1), intExpr(           10)) <> "1234567890" or
 7945         substrFunction("1234567890", intExpr(            1), intExpr(           11)) <> "1234567890" or
 7946         substrFunction("1234567890", intExpr(            1), intExpr(           15)) <> "1234567890" or
 7947         substrFunction("1234567890", intExpr(            1), intExpr( integer.last)) <> "1234567890" or
 7948 
 7949         substrFunction("1234567890", intExpr(            2), intExpr(            0)) <> "" or
 7950         substrFunction("1234567890", intExpr(            2), intExpr(            1)) <> "2" or
 7951         substrFunction("1234567890", intExpr(            2), intExpr(            2)) <> "23" or
 7952         substrFunction("1234567890", intExpr(            2), intExpr(            5)) <> "23456" or
 7953         substrFunction("1234567890", intExpr(            2), intExpr(            8)) <> "23456789" or
 7954         substrFunction("1234567890", intExpr(            2), intExpr(            9)) <> "234567890" or
 7955         substrFunction("1234567890", intExpr(            2), intExpr(           10)) <> "234567890" or
 7956         substrFunction("1234567890", intExpr(            2), intExpr(           15)) <> "234567890" or
 7957         substrFunction("1234567890", intExpr(            2), intExpr( integer.last)) <> "234567890" or
 7958 
 7959         substrFunction("1234567890", intExpr(            5), intExpr(            0)) <> "" or
 7960         substrFunction("1234567890", intExpr(            5), intExpr(            1)) <> "5" or
 7961         substrFunction("1234567890", intExpr(            5), intExpr(            2)) <> "56" or
 7962         substrFunction("1234567890", intExpr(            5), intExpr(            5)) <> "56789" or
 7963         substrFunction("1234567890", intExpr(            5), intExpr(            6)) <> "567890" or
 7964         substrFunction("1234567890", intExpr(            5), intExpr(            7)) <> "567890" or
 7965         substrFunction("1234567890", intExpr(            5), intExpr(           15)) <> "567890" or
 7966         substrFunction("1234567890", intExpr(            5), intExpr( integer.last)) <> "567890" or
 7967 
 7968         substrFunction("1234567890", intExpr(            9), intExpr(            0)) <> "" or
 7969         substrFunction("1234567890", intExpr(            9), intExpr(            1)) <> "9" or
 7970         substrFunction("1234567890", intExpr(            9), intExpr(            2)) <> "90" or
 7971         substrFunction("1234567890", intExpr(            9), intExpr(            3)) <> "90" or
 7972         substrFunction("1234567890", intExpr(            9), intExpr(           15)) <> "90" or
 7973         substrFunction("1234567890", intExpr(            9), intExpr( integer.last)) <> "90" or
 7974 
 7975         substrFunction("1234567890", intExpr(           10), intExpr(            0)) <> "" or
 7976         substrFunction("1234567890", intExpr(           10), intExpr(            1)) <> "0" or
 7977         substrFunction("1234567890", intExpr(           10), intExpr(            2)) <> "0" or
 7978         substrFunction("1234567890", intExpr(           10), intExpr(           15)) <> "0" or
 7979         substrFunction("1234567890", intExpr(           10), intExpr( integer.last)) <> "0" or
 7980 
 7981         substrFunction("1234567890", intExpr(           11), intExpr(            0)) <> "" or
 7982         substrFunction("1234567890", intExpr(           11), intExpr(            1)) <> "" or
 7983         substrFunction("1234567890", intExpr(           11), intExpr(            2)) <> "" or
 7984         substrFunction("1234567890", intExpr(           11), intExpr(           15)) <> "" or
 7985         substrFunction("1234567890", intExpr(           11), intExpr( integer.last)) <> "" or
 7986 
 7987         substrFunction("1234567890", intExpr(           15), intExpr(            0)) <> "" or
 7988         substrFunction("1234567890", intExpr(           15), intExpr(            1)) <> "" or
 7989         substrFunction("1234567890", intExpr(           15), intExpr(            2)) <> "" or
 7990         substrFunction("1234567890", intExpr(           15), intExpr(           20)) <> "" or
 7991         substrFunction("1234567890", intExpr(           15), intExpr( integer.last)) <> "" or
 7992 
 7993         substrFunction("1234567890", intExpr( integer.last), intExpr(            0)) <> "" or
 7994         substrFunction("1234567890", intExpr( integer.last), intExpr(            1)) <> "" or
 7995         substrFunction("1234567890", intExpr( integer.last), intExpr(            2)) <> "" or
 7996         substrFunction("1234567890", intExpr( integer.last), intExpr(           20)) <> "" or
 7997         substrFunction("1234567890", intExpr( integer.last), intExpr( integer.last)) <> "" then
 7998       writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (4)");
 7999       okay := FALSE;
 8000     end if;
 8001   end func;
 8002 
 8003 
 8004 const func boolean: check_string_substr_func_2 is func
 8005   result
 8006     var boolean: okay is TRUE;
 8007   begin
 8008     if  substrFunction(striExpr(""),             1,             0) <> "" or
 8009         substrFunction(striExpr(""),             1,             1) <> "" or
 8010         substrFunction(striExpr(""),             1,             2) <> "" or
 8011         substrFunction(striExpr(""),             1,            15) <> "" or
 8012         substrFunction(striExpr(""),             1,  integer.last) <> "" or
 8013 
 8014         substrFunction(striExpr(""),             2,             0) <> "" or
 8015         substrFunction(striExpr(""),             2,             1) <> "" or
 8016         substrFunction(striExpr(""),             2,            15) <> "" or
 8017         substrFunction(striExpr(""),             2,  integer.last) <> "" or
 8018 
 8019         substrFunction(striExpr(""),            15,             0) <> "" or
 8020         substrFunction(striExpr(""),            15,             1) <> "" or
 8021         substrFunction(striExpr(""),            15,             2) <> "" or
 8022         substrFunction(striExpr(""),            15,            20) <> "" or
 8023         substrFunction(striExpr(""),            15,  integer.last) <> "" or
 8024 
 8025         substrFunction(striExpr(""),  integer.last,             0) <> "" or
 8026         substrFunction(striExpr(""),  integer.last,             1) <> "" or
 8027         substrFunction(striExpr(""),  integer.last,             2) <> "" or
 8028         substrFunction(striExpr(""),  integer.last,            20) <> "" or
 8029         substrFunction(striExpr(""),  integer.last,  integer.last) <> "" or
 8030 
 8031         substrFunction(striExpr("1"),             1,             0) <> "" or
 8032         substrFunction(striExpr("1"),             1,             1) <> "1" or
 8033         substrFunction(striExpr("1"),             1,             2) <> "1" or
 8034         substrFunction(striExpr("1"),             1,            15) <> "1" or
 8035         substrFunction(striExpr("1"),             1,  integer.last) <> "1" or
 8036 
 8037         substrFunction(striExpr("1"),             2,             0) <> "" or
 8038         substrFunction(striExpr("1"),             2,             1) <> "" or
 8039         substrFunction(striExpr("1"),             2,             2) <> "" or
 8040         substrFunction(striExpr("1"),             2,            15) <> "" or
 8041         substrFunction(striExpr("1"),             2,  integer.last) <> "" or
 8042 
 8043         substrFunction(striExpr("1"),            15,             0) <> "" or
 8044         substrFunction(striExpr("1"),            15,             1) <> "" or
 8045         substrFunction(striExpr("1"),            15,             2) <> "" or
 8046         substrFunction(striExpr("1"),            15,            20) <> "" or
 8047         substrFunction(striExpr("1"),            15,  integer.last) <> "" or
 8048 
 8049         substrFunction(striExpr("1"),  integer.last,             0) <> "" or
 8050         substrFunction(striExpr("1"),  integer.last,             1) <> "" or
 8051         substrFunction(striExpr("1"),  integer.last,             2) <> "" or
 8052         substrFunction(striExpr("1"),  integer.last,            20) <> "" or
 8053         substrFunction(striExpr("1"),  integer.last,  integer.last) <> "" or
 8054 
 8055         substrFunction(striExpr("1234567890"),             1,             0) <> "" or
 8056         substrFunction(striExpr("1234567890"),             1,             1) <> "1" or
 8057         substrFunction(striExpr("1234567890"),             1,             2) <> "12" or
 8058         substrFunction(striExpr("1234567890"),             1,             5) <> "12345" or
 8059         substrFunction(striExpr("1234567890"),             1,             9) <> "123456789" or
 8060         substrFunction(striExpr("1234567890"),             1,            10) <> "1234567890" or
 8061         substrFunction(striExpr("1234567890"),             1,            11) <> "1234567890" or
 8062         substrFunction(striExpr("1234567890"),             1,            15) <> "1234567890" or
 8063         substrFunction(striExpr("1234567890"),             1,  integer.last) <> "1234567890" or
 8064 
 8065         substrFunction(striExpr("1234567890"),             2,             0) <> "" or
 8066         substrFunction(striExpr("1234567890"),             2,             1) <> "2" or
 8067         substrFunction(striExpr("1234567890"),             2,             2) <> "23" or
 8068         substrFunction(striExpr("1234567890"),             2,             5) <> "23456" or
 8069         substrFunction(striExpr("1234567890"),             2,             8) <> "23456789" or
 8070         substrFunction(striExpr("1234567890"),             2,             9) <> "234567890" or
 8071         substrFunction(striExpr("1234567890"),             2,            10) <> "234567890" or
 8072         substrFunction(striExpr("1234567890"),             2,            15) <> "234567890" or
 8073         substrFunction(striExpr("1234567890"),             2,  integer.last) <> "234567890" or
 8074 
 8075         substrFunction(striExpr("1234567890"),             5,             0) <> "" or
 8076         substrFunction(striExpr("1234567890"),             5,             1) <> "5" or
 8077         substrFunction(striExpr("1234567890"),             5,             2) <> "56" or
 8078         substrFunction(striExpr("1234567890"),             5,             5) <> "56789" or
 8079         substrFunction(striExpr("1234567890"),             5,             6) <> "567890" or
 8080         substrFunction(striExpr("1234567890"),             5,             7) <> "567890" or
 8081         substrFunction(striExpr("1234567890"),             5,            15) <> "567890" or
 8082         substrFunction(striExpr("1234567890"),             5,  integer.last) <> "567890" or
 8083 
 8084         substrFunction(striExpr("1234567890"),             9,             0) <> "" or
 8085         substrFunction(striExpr("1234567890"),             9,             1) <> "9" or
 8086         substrFunction(striExpr("1234567890"),             9,             2) <> "90" or
 8087         substrFunction(striExpr("1234567890"),             9,             3) <> "90" or
 8088         substrFunction(striExpr("1234567890"),             9,            15) <> "90" or
 8089         substrFunction(striExpr("1234567890"),             9,  integer.last) <> "90" or
 8090 
 8091         substrFunction(striExpr("1234567890"),            10,             0) <> "" or
 8092         substrFunction(striExpr("1234567890"),            10,             1) <> "0" or
 8093         substrFunction(striExpr("1234567890"),            10,             2) <> "0" or
 8094         substrFunction(striExpr("1234567890"),            10,            15) <> "0" or
 8095         substrFunction(striExpr("1234567890"),            10,  integer.last) <> "0" or
 8096 
 8097         substrFunction(striExpr("1234567890"),            11,             0) <> "" or
 8098         substrFunction(striExpr("1234567890"),            11,             1) <> "" or
 8099         substrFunction(striExpr("1234567890"),            11,             2) <> "" or
 8100         substrFunction(striExpr("1234567890"),            11,            15) <> "" or
 8101         substrFunction(striExpr("1234567890"),            11,  integer.last) <> "" or
 8102 
 8103         substrFunction(striExpr("1234567890"),            15,             0) <> "" or
 8104         substrFunction(striExpr("1234567890"),            15,             1) <> "" or
 8105         substrFunction(striExpr("1234567890"),            15,             2) <> "" or
 8106         substrFunction(striExpr("1234567890"),            15,            20) <> "" or
 8107         substrFunction(striExpr("1234567890"),            15,  integer.last) <> "" or
 8108 
 8109         substrFunction(striExpr("1234567890"),  integer.last,             0) <> "" or
 8110         substrFunction(striExpr("1234567890"),  integer.last,             1) <> "" or
 8111         substrFunction(striExpr("1234567890"),  integer.last,             2) <> "" or
 8112         substrFunction(striExpr("1234567890"),  integer.last,            20) <> "" or
 8113         substrFunction(striExpr("1234567890"),  integer.last,  integer.last) <> "" then
 8114       writeln(" ***** STRING [ START len LENGTH ] via a function does not work correct. (5)");
 8115       okay := FALSE;
 8116     end if;
 8117 
 8118     if  substrFunction(striExpr(""),             1, intExpr(            0)) <> "" or
 8119         substrFunction(striExpr(""),             1, intExpr(            1)) <> "" or
 8120         substrFunction(striExpr(""),             1, intExpr(            2)) <> "" or
 8121         substrFunction(striExpr(""),             1, intExpr(           15)) <> "" or
 8122         substrFunction(striExpr(""),             1, intExpr( integer.last)) <> "" or
 8123 
 8124         substrFunction(striExpr(""),             2, intExpr(            0)) <> "" or
 8125         substrFunction(striExpr(""),             2, intExpr(            1)) <> "" or
 8126         substrFunction(striExpr(""),             2, intExpr(           15)) <> "" or
 8127         substrFunction(striExpr(""),             2, intExpr( integer.last)) <> "" or
 8128 
 8129         substrFunction(striExpr(""),            15, intExpr(            0)) <> "" or
 8130         substrFunction(striExpr(""),            15, intExpr(            1)) <> "" or
 8131         substrFunction(striExpr(""),            15, intExpr(            2)) <> "" or
 8132         substrFunction(striExpr(""),            15, intExpr(           20)) <> "" or
 8133         substrFunction(striExpr(""),            15, intExpr( integer.last)) <> "" or
 8134 
 8135         substrFunction(striExpr(""),  integer.last, intExpr(            0)) <> "" or
 8136         substrFunction(striExpr(""),  integer.last, intExpr(            1)) <> "" or
 8137         substrFunction(striExpr(""),  integer.last, intExpr(            2)) <> "" or
 8138         substrFunction(striExpr(""),  integer.last, intExpr(           20)) <> "" or
 8139         substrFunction(striExpr(""),  integer.last, intExpr( integer.last)) <> "" or
 8140 
 8141         substrFunction(striExpr("1"),             1, intExpr(            0)) <> "" or
 8142         substrFunction(striExpr("1"),             1, intExpr(            1)) <> "1" or
 8143         substrFunction(striExpr("1"),             1, intExpr(            2)) <> "1" or
 8144         substrFunction(striExpr("1"),             1, intExpr(           15)) <> "1" or
 8145         substrFunction(striExpr("1"),             1, intExpr( integer.last)) <> "1" or
 8146 
 8147         substrFunction(striExpr("1"),             2, intExpr(            0)) <> "" or
 8148         substrFunction(striExpr("1"),             2, intExpr(            1)) <> "" or
 8149         substrFunction(striExpr("1"),             2, intExpr(            2)) <> "" or
 8150         substrFunction(striExpr("1"),             2, intExpr(           15)) <> "" or
 8151         substrFunction(striExpr("1"),             2, intExpr( integer.last)) <> "" or
 8152 
 8153         substrFunction(striExpr("1"),            15, intExpr(            0)) <> "" or
 8154         substrFunction(striExpr("1"),            15, intExpr(            1)) <> "" or
 8155         substrFunction(striExpr("1"),            15, intExpr(            2)) <> "" or
 8156         substrFunction(striExpr("1"),            15, intExpr(           20)) <> "" or
 8157         substrFunction(striExpr("1"),            15, intExpr( integer.last)) <> "" or
 8158 
 8159         substrFunction(striExpr("1"),  integer.last, intExpr(            0)) <> "" or
 8160         substrFunction(striExpr("1"),  integer.last, intExpr(            1)) <> "" or
 8161         substrFunction(striExpr("1"),  integer.last, intExpr(            2)) <> "" or
 8162         substrFunction(striExpr("1"),  integer.last, intExpr(           20)) <> "" or
 8163         substrFunction(striExpr("1"),  integer.last, intExpr( integer.last)) <> "" or
 8164 
 8165         substrFunction(striExpr("1234567890"),             1, intExpr(            0)) <> "" or
 8166         substrFunction(striExpr("1234567890"),             1, intExpr(            1)) <> "1" or
 8167         substrFunction(striExpr("1234567890"),             1, intExpr(            2)) <> "12" or
 8168         substrFunction(striExpr("1234567890"),             1, intExpr(            5)) <> "12345" or
 8169         substrFunction(striExpr("1234567890"),             1, intExpr(            9)) <> "123456789" or
 8170         substrFunction(striExpr("1234567890"),             1, intExpr(           10)) <> "1234567890" or
 8171         substrFunction(striExpr("1234567890"),             1, intExpr(           11)) <> "1234567890" or
 8172         substrFunction(striExpr("1234567890"),             1, intExpr(           15)) <> "1234567890" or
 8173         substrFunction(striExpr("1234567890"),             1, intExpr( integer.last)) <> "1234567890" or
 8174 
 8175         substrFunction(striExpr("1234567890"),             2, intExpr(            0)) <> "" or
 8176         substrFunction(striExpr("1234567890"),             2, intExpr(            1)) <> "2" or
 8177         substrFunction(striExpr("1234567890"),             2, intExpr(            2)) <> "23" or
 8178         substrFunction(striExpr("1234567890"),             2, intExpr(            5)) <> "23456" or
 8179         substrFunction(striExpr("1234567890"),             2, intExpr(            8)) <> "23456789" or
 8180         substrFunction(striExpr("1234567890"),             2, intExpr(            9)) <> "234567890" or
 8181         substrFunction(striExpr("1234567890"),             2, intExpr(           10)) <> "234567890" or
 8182         substrFunction(striExpr("1234567890"),             2, intExpr(           15)) <> "234567890" or
 8183         substrFunction(striExpr("1234567890"),             2, intExpr( integer.last)) <> "234567890" or
 8184 
 8185         substrFunction(striExpr("1234567890"),             5, intExpr(            0)) <> "" or
 8186         substrFunction(striExpr("1234567890"),             5, intExpr(            1)) <> "5" or
 8187         substrFunction(striExpr("1234567890"),             5, intExpr(            2)) <> "56" or
 8188         substrFunction(striExpr("1234567890"),             5, intExpr(            5)) <> "56789" or
 8189         substrFunction(striExpr("1234567890"),             5, intExpr(            6)) <> "567890" or
 8190         substrFunction(striExpr("1234567890"),             5, intExpr(            7)) <> "567890" or
 8191         substrFunction(striExpr("1234567890"),             5, intExpr(           15)) <> "567890" or
 8192         substrFunction(striExpr("1234567890"),             5, intExpr( integer.last)) <> "567890" or
 8193 
 8194         substrFunction(striExpr("1234567890"),             9, intExpr(            0)) <> "" or
 8195         substrFunction(striExpr("1234567890"),             9, intExpr(            1)) <> "9" or
 8196         substrFunction(striExpr("1234567890"),             9, intExpr(            2)) <> "90" or
 8197         substrFunction(striExpr("1234567890"),             9, intExpr(            3)) <> "90" or
 8198         substrFunction(striExpr("1234567890"),             9, intExpr(           15)) <> "90" or
 8199         substrFunction(striExpr("1234567890"),             9, intExpr( integer.last)) <> "90" or
 8200 
 8201         substrFunction(striExpr("1234567890"),            10, intExpr(            0)) <> "" or
 8202         substrFunction(striExpr("1234567890"),            10, intExpr(            1)) <> "0" or
 8203         substrFunction(striExpr("1234567890"),            10, intExpr(            2)) <> "0" or
 8204         substrFunction(striExpr("1234567890"),            10, intExpr(           15)) <> "0" or
 8205         substrFunction(striExpr("1234567890"),            10, intExpr( integer.last)) <> "0" or
 8206 
 8207         substrFunction(striExpr("1234567890"),            11, intExpr(            0)) <> "" or
 8208         substrFunction(striExpr("1234567890"),            11,