Error 173 called program file not found in drive / directory SQLADR avec Oracle 11g

Bonjour les cobolistes,


Je viens d'installer un client oracle 11g afin de faire des tests de comptabilité pour une migration d'oracle 10 vers là 11.

Installation Ok, compilation du programme OK. Au lancement de mon programme, je reçois une erreur à la connexion 173 called program file not found in drive / directory SQLADR. J'ai lancé ensuite un PROCOB afin d'avoir un peu plus d'information sur l'erreur et apparemment la precompiler ne sait pas ouvrir un cpy (structure d'une table DB).

Workstation : win Xp 32 bits, NetExpress 3.0.14

  • Information en plus "Cannot find module 'SQLADR'"

  • These newer versions of Oracle have never been certified by Oracle with these older product releases such as Net Express 3.0.

    The 173 error on SQLADR can normally be resolved by using one of the following methods:

    1.  Add the LITLINK directlive to the compile and then add the Oracle library to the link step.

    On my system the Oracle library can be found here:


    where crg is the user name and dbhome_1 is the Oracle home.


    2. Add the directive INITCALL"ORASQL11" to the compile


  • 1. I find the Library on C:\app\rg1899\product\11.2.0\client_1\precom\lib.

    2. How to add the directive initcall "ORASQL11"?


  • You would use either the LITLINK directive or the INITCALL"ORASQL11" directive but not both.

    If you are linking to the library C:\app\rg1899\product\11.2.0\client_1\precomp\lib\orasql11.lib then you need to add the LITLINK directive to your compile.

    If you are not linking to the POracle library then you need to add the INITCALL"ORASQL11" directive to your compile.

    Where you add compiler directives depends on your current method of building.

    If you are using a Net Express project then you can add these under Project-->Properties in the compiler directives box. If you are building from the command line using a .bat file then these might be in a directives file like cobol.dir or you might be specifying them on the command line.

    You should currently have directibves that turn on procobol support that look like the following. You can add the new directive to the same location.




    p(cobsql) CSQLT=ORACLE8 MAKESYN VERBOSE KEEPCBL  END-C ENDP initcall"orasql11";

  • I put the string in this screen?

    Thanks in advance

  • Yes you can put either LITLINK or INITCALL"ORASQL11" in that box between ENSUITE(3) and the ending semi-colon.

    Since the procobol directives are not included here they must be set somewhere else.

    Again, Net Express 3.0 has never been tested with the newer Oracle releases so I strongly encourage you to upgrade your compiler version to Net Express 5.1 or to Visual COBOL.


  • After the modification, I have this new error: GetProcessImageNameA not found in the Library PSAPI.DLL.

    Api's version: 5.1.2600.5512.

    Thanks in advance

  • Question:

    Was this application compiling and running successfully on this same computer before moving from Oracle 10 to Oracle 11 or are you also changing to a new OS, etc.?

    I ask because you really should not have to change anything else other than the version of the Oracle library that you link to or the version of the Oracle .dll that you load

    If this was working before with Oracle 10 then you should not have to add any new compiler directives at all but you should just need to modify the current settings to point to the new library names.

    GetProcessImageFileNameA is a Windows API function that is located in either kernel32.lib or PSAPI.lib depending on the OS that you are using.

    Please see the following from Microsoft:

  • Verified Answer

    Which method did you use, LITLINK or INITCALL"ORASQL11"?

    I would recommend that you try LITLINK as there may be an issue with INITCALL"ORASQL11" with Oracle 11.

    Please try LITLINK and add the orasql11.lib to the link and see if you get the same problem with the GetProcessImageFileNameA error.