That is the same method I used when I had the similar problem:
calling a given XPLINK C routine from PL1.
I wrote a NON-XPLINK C function which called the XPLINK function
via fetch (). I was able to call the NON-XPLINK function from PL/1.
excerpt from the "glue" function:
/**********************************************************/
/* */
/* Funktionspointer-Typedef fuer externe Funktion */
/* */
/**********************************************************/
typedef int (*funcptr) (char *is,
int *ilg,
char *os,
int *olg,
char *key,
int *klg);
// in the main function ...
static funcptr pfunc = NULL;
if (pfunc == NULL)
{
printf ("fetch module\n");
pfunc = (funcptr) fetch ("NWPDDRDE");
if (pfunc == NULL)
{
printf("ERROR: fetch failed\n");
}
}
rc = (*pfunc) (pein -> ibuffer,
&(pein -> ilaenge),
pein -> obuffer,
&(pein -> olaenge),
pein -> key,
&(pein -> klaenge));
Kind regards
Bernd
Am 22.09.2014 23:21, schrieb Sam Siegel:
Let me know if it works.
On Mon, Sep 22, 2014 at 12:14 PM, Kirk Wolf <[email protected]> wrote:
Sam,
This is a really good suggestion.... I have used fetch() from non-XPLINK C
before to call XPLINK C in a separate enclave, so I know that that works.
It may be more COBOL than I can handle, though... :-)
Kirk Wolf
Dovetailed Technologies
http://dovetail.com
On Mon, Sep 22, 2014 at 10:32 AM, Sam Siegel <[email protected]> wrote:
To obtain the address of an XPLINK C/C++ routine which can be called
from a
NON-XPLINK program, look at the fetch() function in the C/C++ run time
library reference.
When calling "fetch()" from COBOL, the COBOL code will have to use the
RETURNING facility of the CALL statement to get the address of the C/C++
program. The variable populated by RETURNING facility will need to be a
FUNCTION POINTER or a redefinition of a FUNCTION POINTER.
The COBOL code will then need to call the "returned program" via the
FUNCTION POINTER variable. See COBOL language reference and COBOL
program
guide for additional details.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN