# use AROS_LIB/INCLUDES
[AROS-Contrib.git] / regina / BUGS
blob9ee21415974708fd088920616b7b47015b21ac6b
1 This file explains, usually via sample code, some bugs that exist in
2 this release of Regina. The smaller this file the better!
3 Outstanding bugs are first; fixed ones at the end of this file.
5 /*--------------------------------------------------------------------
6  * INTERPRET "return" does not work correctly. If a value is returned
7  * it does work correctly.
8  * Reported by: Paul G. Barnett
9  * Bug Number:  020
10  * Fixed by:
11  * Fixed in:
12  */
13 Interpret "Return"
14 Say "should not get here!"
15 Return 1
17 /*--------------------------------------------------------------------
18  * LINES() BIF on transient streams return 1 when really at EOF
19  * Run program below as:
20  * regina test.rex BUGS
21  * and as
22  * cat BUGS | regina test.rex
23  * Reported by: Mark Hessling
24  * Bug Number:  021
25  * Fixed by:
26  * Fixed in:
27  */
28 /* test.rex */
29 Parse Arg fn
30 numlines = 0
31 Do While(Lines(fn) > 0)
32    line = Linein(fn)
33    numlines = numlines + 1
34 End
35 Say numlines 'in file'
37 /*--------------------------------------------------------------------
38  * Regina appears to read complete data files into memory in some
39  * operations.  More details to be specified.
40  * Reported by: ???
41  * Bug Number:  024
42  * Fixed by:
43  * Fixed in:
44  */
46 /*--------------------------------------------------------------------
47  * Clauses in the Interpret command are not traced correctly.
48  * Reported by: Dennis Bareis
49  * Bug Number:  025
50  * Fixed by:
51  * Fixed in:
52  */
54 /*--------------------------------------------------------------------
55  * TRACE R and TRACE I produce incorrect results in various
56  * circumstances.
57  * Reported by: Various
58  * Bug Number:  
59  * Fixed by:
60  * Fixed in:
61  */
63 /*--------------------------------------------------------------------
64  * Regina is inconsistent with the ANSI standard when it comes to
65  * treatment of whitespace in various circumstances.
66  * Reported by: Dennis Baeris
67  * Bug Number:  20000505-73993
68  * Fixed by:
69  * Fixed in:
70  */
72 a = '0a'x
73 b = ' '
75 if a = b then say 'incorrect'
76 else say 'ANSI correct'
78 if strip(a) == strip(b) then say 'ANSI correct'
79 else say 'incorrect'
81 /*--------------------------------------------------------------------
82  * Regina does not trap conditions in externally called routines
83  * Reported by: Mark Hessling
84  * Bug Number:  
85  * Fixed by:
86  * Fixed in:
87  */
88 /* a1.rex */
89 signal on syntax
90 call 'a2' 'an err'
91 return 0
93 syntax:
94 say 'syntax at' sigl
95 exit 1
97 /* a2.rex - must be in REGINA_MACROS */
98 parse arg aa
99 say 'in a2' aa
100 say date('x')
101 return
103 Should result in:
104 ----------------
105 in a2 an err
106 syntax at 3
108 ======================================================================
109 ============================= FIXED ==================================
110 ======================================================================
112 /*--------------------------------------------------------------------
113  * Subroutines cannot have leading numerics in their name.
114  * Reported by: Frank M. Ramaekers Jr.
115  * Bug Number:  001
116  * Fixed by:    Mark Hessling
117  * Fixed in:    0.08e
118  */
119 Say 'starting...'
120 rc = 1000_my_proc( "value" )
121 Return
123 1000_my_proc: Procedure
124 Parse Arg parm .
125 Say parm
126 Return 0
128 /*--------------------------------------------------------------------
129  * Calling CHAROUT with the newline character, '0a'x, would result in
130  * a CR and LF being output. This only happens under DOS, OS/2 and
131  * Win32 platforms.
132  * Reported by: Dennis Bareis
133  * Bug Number:  002
134  * Fixed by:    Mark Hessling
135  * Fixed in:    0.08e
136  */
137 newl = '0a'x
138 Call charout "myfile", "Line 1" || newl
139 Return
141 /*--------------------------------------------------------------------
142  * Line continuation character; ',' followed by CRLF in source file
143  * would give syntax error.
144  * Reported by: Florian Grosse-Coosmann
145  * Bug Number:  003
146  * Fixed by:    Mark Hessling
147  * Fixed in:    0.08e
148  */
149 Say 'Hello', /* line ends in CRLF pair */
150     'world'
151 Return
153 /*--------------------------------------------------------------------
154  * The value of the last token parsed with PARSE contains incorrect
155  * leading space(s).
156  * Reported by: Dennis Bareis
157  * Bug Number:  004
158  * Fixed by:    Florian Grosse-Coosmann
159  * Fixed in:    0.08f
160  */
161 a = 'one  two  three'
162 Parse Var a one two three
163 Say '<' || three || '>'
165 /*--------------------------------------------------------------------
166  * The value returned by CHARS BIF was incorrect especially after a
167  * LINEIN call.  The result is the example following would never end.
168  * Reported by: Yuri Shemanin
169  * Bug Number:  005
170  * Fixed by:    Yuri Shemanin
171  * Fixed in:    0.08f
172  */
173 f = 'junk'
174 Do While Chars(f) <> 0
175   l = Linein(f)
178 /*--------------------------------------------------------------------
179  * On some platforms, if operating system command redirection was
180  * done using >FIFO, and the current directory was not writeable by
181  * the user, the command would fail. The cause is that the tmpnam()
182  * C library function is broken on several compilers.
183  * Added workaround to use environment variables, TMP, TEMP or TMPDIR.
184  * Reported by: ???
185  * Bug Number:  006
186  * Fixed by:    Mark Hessling
187  * Fixed in:    0.08f
188  */
190 /*--------------------------------------------------------------------
191  * On platforms that did not have a C library function, alloca()
192  * Regina would leak memory.  This has now been fixed by inclusion
193  * of our own alloca() function if one doesn't exist.
194  * Reported by: Mark Hessling
195  * Bug Number:  007
196  * Fixed by:    Mark Hessling
197  * Fixed in:    0.08f
198  */
200 /*--------------------------------------------------------------------
201  * A bug in the Win95/98 command processor results in any call to
202  * an operating system command ALWAYS return 0, even though the
203  * command fails.
204  * This change attempts to circumvent this bug, but it can't in all
205  * circumstances.  If the operating system command called is an
206  * executable file, and there is no output/input redirection, then
207  * the return code from the executable program will be returned. Any
208  * internal COMMAND.COM command, such as COPY, will ALWAYS return 0;
209  * there is no way around this until M$ fix there COMMAND.COM.
210  * If you use JP Software's 4DOS for NT, then you will have no problems
211  * as it correctly returns the error from the internal command.
212  * Reported by: Michael Sundermann
213  * Bug Number:  008
214  * Fixed by:    Michael Sundermann
215  * Fixed in:    0.08f
216  */
218 /*--------------------------------------------------------------------
219  * The result of the expression (0 = zero) should be 1, but Regina
220  * returns 0
221  * Reported by: Dan Hofferth
222  * Bug Number:  009
223  * Fixed by: Florian Grosse-Coosman
224  * Fixed in: 0.08f
225  */
226 zero = 0.000
227 say ( 0 = zero )  /* should say 1, but 0 */
229 /*--------------------------------------------------------------------
230  * A numeric variable "exposed" by a procedure and subsequently used
231  * in a loop within the procedure that exposed it, gets an erroneous
232  * value.
233  * Reported by: rick@emma.panam.wimsey.com
234  * Bug Number:  010
235  * Fixed by:    Florian Grosse-Coosmann
236  * Fixed in:    0.08f
237  */
238 num = 0
239 Call my_proc
240 Say 'num = ' num ';should be 6'
241 Return
243 my_proc: Procedure Expose num
244 Say 'num = ' num ';should be 0'
245 Do 3
246    num = num + 1
248 Say 'num = ' num ';should be 3'
249 num = num + 3
250 Say 'num = ' num ';should be 6'
251 Return
253 /*--------------------------------------------------------------------
254  * An error with dropping variables...
255  * Reported by: Dennis Bareis
256  * Bug Number:  011
257  * Fixed by:    Mark Hessling
258  * Fixed in:    0.08f
259  */
260 call SaveInfo  "Fred", "FredsValue";
261 call SaveInfo  "Fred", "FredsValue2";
262 call HandleUndefCommand "Fred";
263 call SaveInfo  "Fred", "FredsValue3";
264 say 'Passed!!!';
265 exit(0);
267 HandleUndefCommand:
268    SavedAs = "Define." || arg(1);
269    say '';
270    say '0.DROPPING "' || SavedAs || '"';
271    if  symbol(SavedAs) = 'VAR' then
272        drop(SavedAs)
273    return;
274 SaveInfo:
275    /*--- Check if variable previously existed ------------------------*/
276    say '';
277    say '0.SETTING - ' || arg(1) || ' to "' || arg(2) || '"';
278    SavedAs = "Define." || arg(1);
279    if  symbol(SavedAs) = 'VAR' then
280        say '1.Already Existed';
281    else
282        say '1.New info';
284    /*--- Save info ---------------------------------------------------*/
285    ExecutingCmd = SavedAs || ' = arg(2)'
286    say '2.Executing: "' || ExecutingCmd || '"'
287    interpret ExecutingCmd;
289    /*--- Check variable again! ---------------------------------------*/
290    if  symbol(SavedAs) = 'VAR' then
291    do
292        interpret 'ItsValue = ' || SavedAs;
293        say '3.Variable exists, value = "' || ItsValue || '"'
294    end
295    else
296    do
297        say '3.JUST SET VAR YET - Variable does not exist - WRONG!';
298        exit(1);
299    end;
300    return;
302                ********************
303 OUTPUT (note Define.FRED seems to exist TWICE in multiple cases):
305 0.SETTING - Fred to "FredsValue"
306 1.New info
307 2.Executing: "Define.Fred = arg(2)"
308 3.Variable exists, value = "FredsValue"
310 0.SETTING - Fred to "FredsValue2"
311 1.Already Existed
312 2.Executing: "Define.Fred = arg(2)"
313 3.Variable exists, value = "FredsValue2"
315 0.DROPPING "Define.Fred"
317 0.SETTING - Fred to "FredsValue3"
318 1.New info
319 2.Executing: "Define.Fred = arg(2)"
320 3.JUST SET VAR YET - Variable does not exist - WRONG!
322                ^^^^^^^^^^^^^^^^^^^^
323 Dumping variables to <stdout>
324    Variables from bin no 0
325    >>> Variable: EXECUTINGCMD Value: [Define.Fred = arg(2)]
326    Variables from bin no 107
327    >>> Stem    : Define. Default: [<none>]  Values:
328       Sub-bin no 161
329       >>> Tail: FRED Value: []
330    >>> Stem    : DEFINE. Default: [<none>]  Values:
331       Sub-bin no 161
332       >>> Tail: FRED Value: [FredsValue3]
333    Variables from bin no 109
334    >>> Variable: ITSVALUE Value: [FredsValue2]
335    Variables from bin no 175
336    >>> Variable: SIGL Value: [8]
337    Variables from bin no 231
338    >>> Variable: SAVEDAS Value: [Define.Fred]
340                ^^^^^^^^^^^^^^^^^^^^
342 /*--------------------------------------------------------------------
343  * Allow "stderr" to be used to refer to stderr in STREAM BIF.
344  * Reported by: Dennis Bareis
345  * Bug Number:  012
346  * Fixed by:    Mark Hessling
347  * Fixed in:    0.08f
348  */
349 rc = Stream('stderr', 'C', 'QUERY EXISTS')
351 /*--------------------------------------------------------------------
352  * The internal variable SIGL gets updated prematurely.
353  * Reported by: Dennis Bareis
354  * Bug Number:  013
355  * Fixed by:    Florian Grosse-Coosmann
356  * Fixed in:    0.08f
357  */
359 Call Alabel
360 Return
362 ALabel:
363 Call AnotherLabel SIGL
364 Return
366 AnotherLabel:
367 Parse Arg lineo
368 Say lineno
369 Return
371 /*--------------------------------------------------------------------
372  * A syntax error in a Rexx script passed to the RexxStart() API via
373  * the "instore" option, will exit the program, rather than return an
374  * error.
375  * Reported by: Mark Hessling
376  * Bug Number:  014
377  * Fixed by:    Florian Grosse-Coosmann
378  * Fixed in:    0.08f
379  */
381 /*--------------------------------------------------------------------
382  * The VALUE() BIF would not set values of compound variables correctly
383  * if the variable is specified in lower case.
384  * Reported by: Jeff Parlant and Dennis Bareis
385  * Bug Number:  015
386  * Fixed by:    Mark Hessling
387  * Fixed in:    0.08g
388  */
390 stemname = 'foo.'
391 foo.0 = 1
392 foo.1 = 'something'
393 call func
394 say foo.0
395 say foo.1
396 exit 0
398 func: procedure expose stemname (stemname)
399 /* trace ?i */
400 do i = 1 to value(stemname||0)
401    r = value(stemname||i,'something else')
403 return 0
405 /*--------------------------------------------------------------------
406  * The value of the last argument to a procedure when using the ARG() BIF
407  * has an incorrect trailing space.
408  * Reported by: Mark Hessling
409  * Bug Number:  016
410  * Fixed by: Mark Hessling
411  * Fixed in: 0.08g
412  */
414 Call proc '123', '456'
415 Return
417 proc:
418 Say '<' || arg(1) || '>' /* displays <123>  */
419 Say '<' || arg(2) || '>' /* displays <456 > */
420 Return
422 /*--------------------------------------------------------------------
423  * INTERPRET "return Func()" does not work correctly.
424  * Reported by: Paul G. Barnett
425  * Bug Number:  017
426  * Fixed by: Mark Hessling
427  * Fixed in: 0.08g - See Bug 020
428  */
429 Interpret "Return F1()"
430 Say "should not get here!"
431 Return
432 F1: Procedure
433 Say "in F1"
434 Return 0
436 /*--------------------------------------------------------------------
437  * File names in Regina are always case sensitive, even on non-Unix
438  * platforms.  This can result in incorrect read/write pointers when
439  * referencing a file by name with different case.
440  * Reported by: Jackie Cooper
441  * Bug Number:  018
442  * Fixed by: Mark Hessling
443  * Fixed in: 0.08g
444  */
445 myfile = 'abc'
446 myupperfile = 'ABC'
447 Call Lineout, myfile, 'Line1'
448 Call Lineout, myupperfile, 'Line2'
449 Call Lineout, myfile
450 numlines = 0
451 Do While(Lines(myfile)>0)
452    numlines = numlines + 1
454 Say 'Should be 2 lines, but got only' numlines
455 Return
457 /*--------------------------------------------------------------------
458  * Setting Rexx variables using VALUE BIF produce inconsistent results.
459  * Reported by: Dennis Baeris
460  * Bug Number:  019
461  * Fixed by:    Mark Hessling
462  * Fixed in:    0.08h
463  */
464 call value "Upd.3", "text";
465 say 'a) Upd.3="' || Upd.3          || '"';
466 say 'b) Upd.3="' || value("Upd.3") || '"';
467 say 'c) Upd.3="' || value("UPD.3") || '"';
469 Before fix, output was:
470 a) Upd.3="UPD.3"
471 b) Upd.3="text"
472 c) Upd.3="text"
474 after fix:
475 a) Upd.3="text"
476 b) Upd.3="text"
477 c) Upd.3="text"
479 /*--------------------------------------------------------------------
480  * Need to fix API call RexxVariablePool() to handle RXSHV_FETCH, RXSHV_SET
481  * and RXSHV_DROPV correctly.  They currently behave the same way as
482  * RXSHV_SYFET, RXSHV_SYSET and RXSHV_SYDRO respectively. ie the variables
483  * are treated symbolically rather than explicitly.
484  * Reported by: Mark Hessling
485  * Bug Number:  022
486  * Fixed By:    Jim Hasslacher, Jr.
487  * Fixed in:    0.08h
488  */
490 /*--------------------------------------------------------------------
491  * Assignment on compound variables does not work.
492  * Reported by: Mike Ruskai
493  * Bug Number:  026
494  * Fixed by:    No fix required.
495  * Fixed in:    Checked in 0.08h
496  * Comments:    Regina follows the ANSI standard when assigning one
497  *              stem variable to another.
498  *              Confusion arises between the way that Object Rexx
499  *              assigns one stem variable to another; Object Rexx does
500  *              NOT follow the ANSI standard.  In Object Rexx, a.=b.
501  *              creates a reference from a. to b.; ie a. is the same
502  *              stem as b.
503  */
504 foobar.1='One'
505 foobar.2='Two'
506 drop foobar.5
507 say 'FOOBAR.1 set to "One", FOOBAR.2 set to "Two", FOOBAR.5 dropped'
508 say 'assigning newstem1. to foobar. ...'
509 newstem1. = foobar.
510 say 'dropping newstem1.4'
511 drop newstem1.4
512 Say 'NEWSTEM1.1 Value:'  '"'newstem1.1'" should be "FOOBAR."'
513 Say 'NEWSTEM1.2 Value:'  '"'newstem1.2'" should be "FOOBAR."'
514 Say 'NEWSTEM1.3 Value:'  '"'newstem1.3'" should be "FOOBAR."'
515 Say 'NEWSTEM1.4 Value:'  '"'newstem1.4'" should be "NEWSTEM1.4"' '<-dropped'
516 Say 'NEWSTEM1.5 Value:'  '"'newstem1.5'" should be "FOOBAR."'
517 say 'assigning newstem2. to newstem1. ...'
518 newstem2. = newstem1.
519 say 'dropping newstem2.4'
520 drop newstem2.4
521 Say 'NEWSTEM2.1 Value:' '"'newstem2.1'" should be "FOOBAR."'
522 Say 'NEWSTEM2.2 Value:' '"'newstem2.2'" should be "FOOBAR."'
523 Say 'NEWSTEM2.3 Value:' '"'newstem2.3'" should be "FOOBAR."'
524 Say 'NEWSTEM2.4 Value:' '"'newstem2.4'" should be "NEWSTEM2.4"' '<-dropped'
525 Say 'NEWSTEM2.5 Value:' '"'newstem2.5'" should be "FOOBAR."'
526 /* with default value for source stem */
527 foobar1. = 'default'
528 foobar1.1='One'
529 foobar1.2='Two'
530 drop foobar1.5
531 say 'FOOBAR1. set to "default", FOOBAR1.1 set to "One", FOOBAR1.2 set to "Two", FOOBAR1.5 dropped'
532 say 'assigning newstem. to foobar. ...'
533 newstem. = foobar1.
534 say 'dropping newstem.4'
535 drop newstem.4
536 Say 'NEWSTEM.1 Value:' '"'newstem.1'" should be "default"'
537 Say 'NEWSTEM.2 Value:' '"'newstem.2'" should be "default"'
538 Say 'NEWSTEM.3 Value:' '"'newstem.3'" should be "default"'
539 Say 'NEWSTEM.4 Value:' '"'newstem.4'" should be "NEWSTEM.4"' '<-dropped'
540 Say 'NEWSTEM.5 Value:' '"'newstem.5'" should be "default"'
541 Say 'NEWSTEM.6 Value:' '"'newstem.6'" should be "default"'
543 /*--------------------------------------------------------------------
544  * Inconsistent, invalid return values from STREAM (QUERY EXISTS) when
545  * using the EMX port of Regina under OS/2. This bug possible on other
546  * platforms.
547  * Reported by: Dennis Baeris
548  * Bug Number:  027
549  * Fixed by:    Mark Hessling
550  * Fixed in:    0.08h
551  */
552 fn = 'bug027.txt'
553 Call Stream fn, 'C', 'OPEN WRITE REPLACE'
554 Call Lineout fn,'One line'
555 Call Stream fn, 'C', 'CLOSE'
556 line = Linein(fn)
557 Say 'Linein(fn) returned:' '"'line'"' 'should be return "One Line"'
558 stat = Stream(fn,'S')
559 Say 'Stream(fn,"S") returned:' '"'stat'"' 'should be return "READY"'
560 line = Linein(fn)
561 Say 'Linein(fn) returned:' '"'line'"' 'should be return ""'
562 stat = Stream(fn,'S')
563 Say 'Stream(fn,"S") returned:' '"'stat'"' 'should be return "NOTREADY"'
565 /*--------------------------------------------------------------------
566  * If Regina was invoked through the SAA interface, and the script named in
567  * the invocation did not exist, the error message did not correctly name
568  * it, or crashed.
569  * Reported By: Jim Hasslacher, Jr.
570  * Bug Number:  029
571  * Fixed By:    Jim Hasslacher, Jr.
572  * Fixed in:    0.08h
573  */
575 /*--------------------------------------------------------------------
576  * Odd behaviour with DELWORD BIF.
577  * Line 1 gives '0' and this is correct (no '10' in the string).
578  * Line 3 makes the same string as used in line 1 and puts it into a.
579  * Line 4 now gives 3 !!!! Yet there is no '10' in there at all
580  * The rest is just to prove my point the length of the string doensn't change
581  * but after the strip all works as it should...
582  * I think the problem occurs when the first character of the searchstring and
583  * that of the deleted word are the same.
584  *   MH - the problem occurs if the word following the word to be deleted is
585  *   1 character shorter than the word being deleted and starts with the
586  *   same characters as the word being deleted.  Seems the check for a word
587  *   at the end of the string checks 1 character past the end of the string.
588  * Reported By: Thomas Zobl
589  * Bug Number:  030
590  * Fixed By:    Mark Hessling
591  * Fixed in:    0.08h
592  */
593 Say Wordpos('10','2 11 1')
595 b = '2 11 10 1'
596 a = Delword('2 11 10 1',3,1)
597 Say Wordpos('10',a)
599 Say Length(a)
600 a = Strip(a)
601 Say Wordpos('10',a)
602 Say Length(a)
604 /*--------------------------------------------------------------------
605  * Passing a lower or mixed case variable name to RexxVariablePool() when
606  * setting a Rexx variable fails.
608  * Reported By: Bill Potvin, II
609  * Bug Number:  031
610  * Fixed By:    Mark Hessling
611  * Fixed in:    0.08h
612  */
613 Returncode = SysFileTree("*","Files.")
614 say files.0 /* always returns FILES.0 */
616 /*--------------------------------------------------------------------
617  * When registering an external function from within the API, an attempt
618  * to register a function that is already loaded results in a return code
619  * of 1 NOT the correct value of 10 (RXFUNC_DEFINED).
621  * Reported By: Bill Potvin, II
622  * Bug Number:  033
623  * Fixed By:    Mark Hessling
624  * Fixed in:    0.08h
625  */
627 /*--------------------------------------------------------------------
628  * The STREAM BIF using QUERY EXISTS incorrectly returns a file name
629  * when the file does not exist under some circumstances.
630  * If in directory e:\regina and a file exists: e:\config.sys, then
631  * Stream('e:\config.sys', 'C', 'QUERY EXISTS') returns:
632  *  e:\regina\config.sys
634  * Reported By: Dennis Baeris
635  * Bug Number:  034
636  * Fixed By:    Mark Hessling
637  * Fixed in:    0.08h
638  */
640 /*--------------------------------------------------------------------
641  * The following code causes Regina to crash.
642  * Reported by: Florian Grosse-Coosmann
643  * Bug Number:  032
644  * Fixed By:    Florian Grosse-Coosmann
645  * Fixed in:    0.08h
646  */
647 Name = "Florian"
648 call MyName Name
649 call MyName2 Name
650 return 0
652 MyName:
653 say "Name =" Name ||  ",arg =" arg(1)
654 Name = "Coosmann"
655 say "Name =" Name ||  ",arg =" arg(1)
656 return
658 MyName2:
659 say "Name =" Name ||  ",arg =" arg(1)
660 Name = "Grosse-Coosmann"
661 say "Name =" Name ||  ",arg =" arg(1)
662 return
664 /*--------------------------------------------------------------------
665  * When calling an external subroutine and it is found by use of
666  * REGINA_MACROS environment variable, PARSE SOURCE does not return
667  * the filename of the file.
669  * Reported By: Steve Menschel
670  * Bug Number:  19991129-86098
671  * Fixed By:    Mark Hessling
672  * Fixed in:    0.08h
673  */
675 /*--------------------------------------------------------------------
676  * Access to the external environment when using regina.dll under OS/2
677  * was not possible.
678  * This was due to the way that regina.exe was incorrectly built.
680  * Reported By: Paul G Barnett
681  * Bug Number:  035
682  * Fixed By:    Mark Hessling
683  * Fixed in:    0.08h
684  */
686 /*--------------------------------------------------------------------
687  * Regina incorrectly handles DATE('L') for fractional seconds.
688  * The behaviour would result in consecutively displayed times like:
689  * 17:33:12.498812
690  * 17:33:13.512540
691  * 17:33:13.982322
692  * 17:33:13.049183
694  * Reported By: Dennis Baeris
695  * Bug Number:  ?????
696  * Fixed By:    Mark Hessling
697  * Fixed in:    2.0
698  */
700 /*--------------------------------------------------------------------
701  * CALL with parameters fails in various situations with syntax error.
702  * Reported by: Dennis Baeris
703  * Bug Number:  023
704  * Fixed by:    Anders Christensen
705  * Fixed in:    2.0
706  */
707 myargs = 'arg1 arg2'
708 Call "myprog" myargs /* syntax error */
709 Call "myprog"myargs  /* works */
710 Call Fred'1234'  /* syntax error */
712 /*--------------------------------------------------------------------
713  * Regina incorrectly results in parse error when EXIT called with
714  * non-numeric parameter.
715  * eg. EXIT "fred"
717  * Reported By: Dennis Baeris
718  * Bug Number:  20000323-75678
719  * Fixed By:    Mark Hessling
720  * Fixed in:    2.0
721  */
723 /*--------------------------------------------------------------------
724  * Regina get error when calling RETURN from top-level with a
725  * non-numeric parameter.
726  * eg. RETURN "fred"
728  * Reported By: Gerard Schildberger
729  * Bug Number:  20000325-12811
730  * Fixed By:    Mark Hessling
731  * Fixed in:    2.0
732  */
734 /*--------------------------------------------------------------------
735  * RANDOM would only return a maximum value of 32767 on many platforms.
737  * Reported By: Alan Bardgett
738  * Bug Number:  20000128-69102
739  * Fixed By:    Mark Hessling
740  * Fixed in:    2.0
741  */
743 /*--------------------------------------------------------------------
744  * The Regina parser incorrectly parses the sample code below, and
745  * returns the following error:
746  * Error 15 running "/home/mark/Regina-0.08h/bug030.rex", line 1: Invalid hexadecimal or binary constant
747  * Error 15.3: Only 0-9, a-f, A-F, and blank are valid in hexadecimal string; found "'<'x"
748  * Reported By: Mark Hessling
749  * Bug Number:  19991216-29512
750  * Fixed By: ??? pointed out that it is not a bug.
751  * Fixed in: 3.0.
752  */
753 Say '<'x'>'
755 /*--------------------------------------------------------------------
756  * The Regina parser incorrectly parses the sample code below, and
757  * returns the following error:
758  * Error 14 running "/home/mark/Regina-0.08h/bug29512.rex", line 2: Incomplete DO/IF/SELECT"
759  * If the '?' is protected by parentheses, it works.
760  * Reported By: Toby ?
761  * Bug Number:  19991216-29512
762  * Fixed By: ??
763  * Fixed in: ??
764  */
765 If (?) > 0 Then say 'OK'
766 If ? > 0 Then say 'OK'
768 /*--------------------------------------------------------------------
769  * Following code still fails with syntax error.
770  * Reported by: Mark Hessling
771  * Bug Number:  20000319-63722
772  * Fixed by:
773  * Fixed in:
774  */
775 Call Fred'1234'  /* syntax error */
777 /*--------------------------------------------------------------------
778  * Regina crashes with following code:
779  * Reported by: Mark Hessling
780  * Bug Number:  36
781  * Fixed by:
782  * Fixed in:
783  */
784 Signal on syntax
786 Say fred()
787 Return
789 fred:
790 Return /* should return a value!! */
792 syntax:
793 Say Condition( 'D' )
794 Exit