The case of the wrong case…
This has been a bit of a detective story so I thought I’d mention it here in case it helps anyone.
As part of my efforts to move my web based ISPF interface to the stand alone IBM HTTP server I needed to run the REXX execs under USS. Now to be honest I rarely ever touch USS on z/OS but that’s where I needed to be so that’s where I am.
I typically write my REXX execs in lower case so I might end up with one exec invoking another with something like this:
Where myfunc is another REXX exec in the standard search order (SYSPROC and SYSEXEC typically). This works fine because even though the function name is written in lower case, REXX converts it to upper case and that matches the member name in the library just fine. Everything works great.
BUT! Move over to USS land and things are not so simple. REXX in USS land is case sensitive. Using the example above, I had created the ‘myfunc’ exec file in USS with a lower case file name and was surprised when the calling exec could not find it.
Eventually (after two days) I found that by default, REXX makes function names coded like this into UPPER CASE before searching for them (I knew this, I had just forgotten about it) so REXX was searching for a file called ‘MYFUNC’ whilst the file I had created was called ‘myfunc’. Not the same animal in a case sensitive environment.
I could make all my exec file names upper case to address this, but in the event you need to call a lower case function name you can code it like this:
And amazingly it will now find the lower case exec file.