You can find a COBOL module having a specific PROGRAM-ID by using a C
function cob_resolve, which takes the module name as a string
and returns a pointer to the module function.
cob_resolve returns NULL if there is no module. In this case,
the function cob_resolve_error returns the error message.
Let's see an example:
---- hello-dynamic.c -------------------
#include <libcob.h>
static int (*say)(char *hello, char *world);
int
main()
{
int ret;
char hello[6] = "Hello ";
char world[6] = "World!";
cob_init(0, NULL);
/* find the module with PROGRAM-ID "say". */
say = cob_resolve("say");
/* if there is no such module, show error and exit */
if (say == NULL) {
fprintf(stderr, "%s\n", cob_resolve_error ());
exit(1);
}
/* call the module found and exit with the return code */
ret = say(hello, world);
return ret;
}
----------------------------------------
Compile these programs as follows:
$ cc -c `cob-config --cflags` hello-dynamic.c
$ cobc -o hello hello-dynamic.o
$ cobc -m say.cob
$ export COB_LIBRARY_PATH=.
$ ./hello
Hello World!