#763 Old program can't load new ooRexx

v4.0
closed
Mark Miesfeld
APIs (66)
5
2012-08-14
2009-07-15
DougL
No

I use an old programming editor (LPEX) which I've heavily customized and which optionally uses Rexx as it's scripting language,
but it doesn't seem to be able to load ooRexx 4.0.0. The editor starts but with the Rexx option disabled.
After starting the editor, I looked at file access times and it appears that the editor caused at least the following to be read:
rexxapi.dll, rexx.dll, orexxole.dll, rexxutil.dll.
I don't know how the editor tries to interface to Rexx and don't have any lower-level debugging tools installed to find any more information.
I rebooted a couple of times but still no luck.

I've now fallen back to ooRexx 3.2.0 by simply running it's installation program and without rebooting, and can use the editor normally again.
I sure would like to be able to use 4.0.0 since it seems faster and has nice features, so I hope you can help!

Discussion

  • Mark Miesfeld
    Mark Miesfeld
    2009-07-15

    Wow, LPEX. I used that on OS/2 and wrote a lot of customizations for it in C.

    It seems like you are on Windows. Is there any way I could get a copy of LPEX to take a look at how it acts with ooRexx 4.0.0.

    Otherwise, you're probably our of luck on this. 4.0.0 should be binary compatible with anything that worked with 3.2.0. If this is a case we overlooked something, it could probably be fixed, if we could figure out what it was. But, just a blind doesn't work will not help much.

     
  • Rick McGuire
    Rick McGuire
    2009-07-15

    I have a suspicion that LPEX might have been using some of the undocumented APIs. If we figure out what they were using, we might be able to stub something out to ge this to work, but since it's something of a black box, this might be difficult to do.

     
  • Rick McGuire
    Rick McGuire
    2009-07-15

    I think I have a good guess on what's missing. I scanned the 3.2.0 code for "LPEX", and look what I found:

    / special flag for the LPEX message loop problem /
    extern BOOL UseMessageLoop = TRUE;

    This is used by the undocumented API we removed that allowed this to be flipped:

    BOOL APIENTRY RexxSetProcessMessages(BOOL onoff)
    {
    BOOL old;
    old = UseMessageLoop;
    UseMessageLoop = onoff;
    return old;
    }

    This seriously does not apply any more, but I suspect we could try adding a stub for this. This is a Windows-specific thing we wouldn't need to add for other platforms.

     
  • Mark Miesfeld
    Mark Miesfeld
    2009-07-15

    Oh yeah, I remember that now. Doug e-mailed and I think I'll be able to arrange a way to test. I'll give it a shot Rick and let you know.

     
  • Mark Miesfeld
    Mark Miesfeld
    2009-07-16

    Well, RexxSetProcessMessages() is definitely called by LPEX. I added that function and had it write a line to a file, and sure enough it wrote to the file.

    An easier way, I guess, is to use depends on the executable and profile it. I came up with this list of functions called by LPEX:

    RexxStart
    RexxVariablePool
    RexxSetHalt
    RexxRegisterSubcomExe
    RexxRegisterExitExe
    RexxDeregisterSubcom
    RexxDeregisterExit
    RexxSetProcessMessages
    RexxShutDownAPI

    All of which are present, once RexxSetProcessMessages() is added.

    I'm not 100% sure this is enough to fix it, because the instructions Doug gave me to invoke a Rexx macro don't work. But, that could easily be user error on my part.

    Added a stub for the RexxSetProcessMessages() function:
    Committed revision 4929.

     


Anonymous


Cancel   Add attachments