|
sublime78ska=K2GnTyEPumIAvxtiuMwx3w@public.gmane.org wrote: > > Is it possible to call from a C pgm an ILE/RPG subprocedure which returns a 20 > position character? When it returns I get a pointer error. I tried returning > the address with %addr(filename), which didn't end in error but the value >wasn't > correct. > > Here's the c pgm: > ... > char * getHist(char[], const char[]); > ... > here's the rpg procedure: > ... > D getHist pi 20 > ... Phil, you can either have the C program expect a structure or have the RPG procedure return a pointer. typedef struct char20 { char c[20]; } char20_t char20_t getHist(char[], const char[]); char20_t retval; filename = &retval; retval = getHist(isodate, "OCT"); Or you could have the RPG procedure return a pointer as long as it returned a pointer to static storage. D getHist pi * ... D filename s 20 static ... C return %addr(filename) By the way, you can avoid the #pragma map by specifying EXTPROC('getHist') on your RPG procedure. I think it was in V4R2 that RPG started allowing that.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.