In Version 4.1.0, it appears that the search order as defined in the Rexx Reference Manual Section 220.127.116.11 "Locating External Files",page 376, was partially implemented. In previous versions of rexx, all the way down to PC-DOS Rexx, the search order began in the current directory. Now "CALL" works as defined in list item 1. The search for a direct invocation of the external .rex program still begins in the current directory. If there are 2 .rex programs with the same name in 2 different directories a CALL to the .rex program invokes the rexx program that was in the directory that the calling program called it. Even if I change directories, I still get the version of the program from the original directory. On the other hand if I do a direct invocation of the program I get the version of the program for the current directory. There are side effects of this. Doing a "CALL" invokes the program as a SUBROUTINE and a direct invocation causes the program to be treated as a "COMMAND". I have several programs that function differently based on how they were invoked.
I've included a sample to show the difference. Here is the console output:
Hello!!! <- This used to be "Hi!!!" prior to 4.1.0
If I had my druthers I would prefer to have the search the way it was prior to 4.1.0. That way, all I have to do is change directories to the version I want. This was a great development tool. I didn't have to modify the original code to begin development on a new level of the program.
Also, in Section 18.104.22.168 there appears to be a couple of document problems that I picked up on:
The second and third list items are the same.
The paragraph below the first group of list items, beginning with the "The second element...", second sentence, has 2 "contains" in a row.
Operating environment is Windows XP Professional, SP1 32bit w/ ooRexx 4.1.0