Skip to main content

Problem:

Investigating 173 error on calls to COBOL callable shared objects (CSO) and third party products

Resolution:

The first thing to look at is to check that the third party product is 32-bit if you are using the 32-bit version of the COBOL product or 64-bit if you are using the 64-bit version of the COBOL product.

If your application uses more than one third party product, cut it down to a version that only includes the third party product that is giving you problems.  Once that is working you can start adding other products to your application.

Check the third party documentation for libraries that have to be linked to your application. Sometimes your third party product provides 2 versions, one threaded and one non-threaded. Choose carefully the one that matches your application.

If you are migrating from .int/.gnt code to callable shared objects, please notice that callable shared objects are executables to the OS and unlike .int or .gnt files, they need execution permissions to be able to be loaded by an application.

If you add the -U flag to your cob command to build the application, it will report all the unresolved references. If there are any, it means that you need to add the correct library that resolves the appropriate entry.

It may be useful to check the libraries that you are linking with the 'nm' command.   Check if the entry that is generating the 173 error is contained in any of them. To see what libraries you are including in your executable, execute the command:

ldd myexecutable

On AIX 4 use  "dump -Hv $binary_name"

This will list the libraries. The first ones reported will be the COBOL libraries and after that your third party product libraries.

To check where the entry may be contained, execute the 'nm' command on each one of the listed libraries.

You may resolve your problem by adding the found library with -l flag to your cob command line.

Old KB# 7239