home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rex22emx.zip / BUGS next >
Text File  |  2000-06-26  |  24KB  |  750 lines

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