tags:

views:

549

answers:

3

We need to get data out of an older accounting system. We have received a dll that gives us access to the data we need. It includes a type library that we have imported.

If we run our test application from the same directory as the accounting system, everything works fine. If we try to run our application from a different directory, we get the following error:

Dynamically Bound RTS
Runtime DLL 'OOPS', version 3.1, entry point oops not recorded in registry, not found or incompatible with requirements of dynamically bound COBOL program. Dynamic binding of RTS requires: Runtime DLL 'OOLSM', at least Version 3.1

Can anybody provide some helpful information on this?

Are we supposed to have some kind of cobol runtime in our directory? Or in the path? Or registered in the registry?

Thanks,
-Vegar

Updates:
Setting the system %path% to include the path to the accounting system seems to do the trick. Including it as a user variable did not have the same effect for some reason.

+1  A: 

If it works from the accounting app's directory, but not a different one, the first thing I'd try is adding that directory to your path.

Bruce McGee
I thought I had tried that already, but doing a second test, it sure takes me one step forward.
Vegar
I get a new error, though: "Load error: finale 'm99finale'. error code 173, pc = 0, call = 1, seg = 0."
Vegar
+2  A: 

What Cobol are you using? I had done this for year with Microfocus NetExpress 3.1, and all works just fine. I write COBOL DLL to access COBOL data files, and also write Delphi DLL to add new features to old COBOL systens.

And yes, I use to set the runtime path, that is environment variable called COBDIR, there are others,but usually %PATH% and %COBDIR%is enough.

If you give more detais about what COBOL compiler are you using, and how is the dll interface that you are calling, will me ore easy to help you.

And maybe "Dependence Walker" can help you to identify what run time files are missing, if it is. http://www.dependencywalker.com/

Cesar Romero
This was interesting! Since we have received a dll, I'm not sure how it was made, but I sure gonna ask.On our test machine, COBDIR is defined as a user variable. The path to the accounting system is also defined as a user variable. Moving it into a system variable seems to do the trick.
Vegar
I always set as system variable.
Cesar Romero
Sounds like Cesar's suggestion got you the rest of the way, right?
Bruce McGee
A: 

Unless it is already loaded into memory, Windows looks for DLL's that a program is requesting in every location listed in its PATH environment variable, and also in the directory the application is located within.

Mick
It is true, but COBOL uses RUNTIME, and the files the DLL COBOL are looking for should be at %COBDIR% system variable.
Cesar Romero